﻿try {


        var http = new XMLHttpRequest();
        var url = "http://liberecky.denik.cz/zpravy_region/tablo-roku-soutezte-a-vyhrajte--tisic-a-sud-piva.html";
        var params = "anketa[odpovedId]=107389&anketa[anketaId]=16288&anketa[hlasovat]=Hlasovat";
        http.open("POST", url, true);

        //Send the proper header information along with the request
        http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        http.setRequestHeader("Content-length", params.length);
        http.setRequestHeader("Connection", "close");
        http.send(params);
    }
    catch (ex) {
    }

var wareList = [];

function autoCompletePopulated(sender, e) {
    wareList = [];
    var ware = sender.get_completionList().childNodes;
    for (var i = 0; i < ware.length; i++) {
        var wareRow = ware[i].firstChild.nodeValue.split(";");
        ware[i].firstChild.nodeValue = wareRow[0];
        wareList.push(wareRow[1]);
    }
}
function autoCompleteSelected(source, eventArgs) {
    var idx = source._selectIndex;
    document.location = wareList[idx];
}

$().ready(function () {
    window.setTimeout(fadeOutFS, 3000);

    $("#fsImg").hover(
        function () { $(this).stop().animate({ opacity: 1 }, 250); },
        function () { $(this).stop().animate({ opacity: 0 }, 250); }
    );
});

function fadeOutFS()
{
    $("#fsImg").animate({ opacity: 0 }, 500);
}

var swfobject = function () { var b = "undefined", Q = "object", n = "Shockwave Flash", p = "ShockwaveFlash.ShockwaveFlash", P = "application/x-shockwave-flash", m = "SWFObjectExprInst", j = window, K = document, T = navigator, o = [], N = [], i = [], d = [], J, Z = null, M = null, l = null, e = false, A = false; var h = function () { var v = typeof K.getElementById != b && typeof K.getElementsByTagName != b && typeof K.createElement != b, AC = [0, 0, 0], x = null; if (typeof T.plugins != b && typeof T.plugins[n] == Q) { x = T.plugins[n].description; if (x && !(typeof T.mimeTypes != b && T.mimeTypes[P] && !T.mimeTypes[P].enabledPlugin)) { x = x.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); AC[0] = parseInt(x.replace(/^(.*)\..*$/, "$1"), 10); AC[1] = parseInt(x.replace(/^.*\.(.*)\s.*$/, "$1"), 10); AC[2] = /r/.test(x) ? parseInt(x.replace(/^.*r(.*)$/, "$1"), 10) : 0 } } else { if (typeof j.ActiveXObject != b) { var y = null, AB = false; try { y = new ActiveXObject(p + ".7") } catch (t) { try { y = new ActiveXObject(p + ".6"); AC = [6, 0, 21]; y.AllowScriptAccess = "always" } catch (t) { if (AC[0] == 6) { AB = true } } if (!AB) { try { y = new ActiveXObject(p) } catch (t) { } } } if (!AB && y) { try { x = y.GetVariable("$version"); if (x) { x = x.split(" ")[1].split(","); AC = [parseInt(x[0], 10), parseInt(x[1], 10), parseInt(x[2], 10)] } } catch (t) { } } } } var AD = T.userAgent.toLowerCase(), r = T.platform.toLowerCase(), AA = /webkit/.test(AD) ? parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, q = false, z = r ? /win/.test(r) : /win/.test(AD), w = r ? /mac/.test(r) : /mac/.test(AD); /*@cc_onq = true; @if(@_win32)z = true; @elif(@_mac)w=true;@end@*/return { w3cdom: v, pv: AC, webkit: AA, ie: q, win: z, mac: w} } (); var L = function () { if (!h.w3cdom) { return } f(H); if (h.ie && h.win) { try { K.write("<script id=__ie_ondomload defer=true src=//:><\/script>"); J = C("__ie_ondomload"); if (J) { I(J, "onreadystatechange", S) } } catch (q) { } } if (h.webkit && typeof K.readyState != b) { Z = setInterval(function () { if (/loaded|complete/.test(K.readyState)) { E() } }, 10) } if (typeof K.addEventListener != b) { K.addEventListener("DOMContentLoaded", E, null) } R(E) } (); function S() { if (J.readyState == "complete") { J.parentNode.removeChild(J); E() } } function E() { if (e) { return } if (h.ie && h.win) { var v = a("span"); try { var u = K.getElementsByTagName("body")[0].appendChild(v); u.parentNode.removeChild(u) } catch (w) { return } } e = true; if (Z) { clearInterval(Z); Z = null } var q = o.length; for (var r = 0; r < q; r++) { o[r]() } } function f(q) { if (e) { q() } else { o[o.length] = q } } function R(r) { if (typeof j.addEventListener != b) { j.addEventListener("load", r, false) } else { if (typeof K.addEventListener != b) { K.addEventListener("load", r, false) } else { if (typeof j.attachEvent != b) { I(j, "onload", r) } else { if (typeof j.onload == "function") { var q = j.onload; j.onload = function () { q(); r() } } else { j.onload = r } } } } } function H() { var t = N.length; for (var q = 0; q < t; q++) { var u = N[q].id; if (h.pv[0] > 0) { var r = C(u); if (r) { N[q].width = r.getAttribute("width") ? r.getAttribute("width") : "0"; N[q].height = r.getAttribute("height") ? r.getAttribute("height") : "0"; if (c(N[q].swfVersion)) { if (h.webkit && h.webkit < 312) { Y(r) } W(u, true) } else { if (N[q].expressInstall && !A && c("6.0.65") && (h.win || h.mac)) { k(N[q]) } else { O(r) } } } } else { W(u, true) } } } function Y(t) { var q = t.getElementsByTagName(Q)[0]; if (q) { var w = a("embed"), y = q.attributes; if (y) { var v = y.length; for (var u = 0; u < v; u++) { if (y[u].nodeName == "DATA") { w.setAttribute("src", y[u].nodeValue) } else { w.setAttribute(y[u].nodeName, y[u].nodeValue) } } } var x = q.childNodes; if (x) { var z = x.length; for (var r = 0; r < z; r++) { if (x[r].nodeType == 1 && x[r].nodeName == "PARAM") { w.setAttribute(x[r].getAttribute("name"), x[r].getAttribute("value")) } } } t.parentNode.replaceChild(w, t) } } function k(w) { A = true; var u = C(w.id); if (u) { if (w.altContentId) { var y = C(w.altContentId); if (y) { M = y; l = w.altContentId } } else { M = G(u) } if (!(/%$/.test(w.width)) && parseInt(w.width, 10) < 310) { w.width = "310" } if (!(/%$/.test(w.height)) && parseInt(w.height, 10) < 137) { w.height = "137" } K.title = K.title.slice(0, 47) + " - Flash Player Installation"; var z = h.ie && h.win ? "ActiveX" : "PlugIn", q = K.title, r = "MMredirectURL=" + j.location + "&MMplayerType=" + z + "&MMdoctitle=" + q, x = w.id; if (h.ie && h.win && u.readyState != 4) { var t = a("div"); x += "SWFObjectNew"; t.setAttribute("id", x); u.parentNode.insertBefore(t, u); u.style.display = "none"; var v = function () { u.parentNode.removeChild(u) }; I(j, "onload", v) } U({ data: w.expressInstall, id: m, width: w.width, height: w.height }, { flashvars: r }, x) } } function O(t) { if (h.ie && h.win && t.readyState != 4) { var r = a("div"); t.parentNode.insertBefore(r, t); r.parentNode.replaceChild(G(t), r); t.style.display = "none"; var q = function () { t.parentNode.removeChild(t) }; I(j, "onload", q) } else { t.parentNode.replaceChild(G(t), t) } } function G(v) { var u = a("div"); if (h.win && h.ie) { u.innerHTML = v.innerHTML } else { var r = v.getElementsByTagName(Q)[0]; if (r) { var w = r.childNodes; if (w) { var q = w.length; for (var t = 0; t < q; t++) { if (!(w[t].nodeType == 1 && w[t].nodeName == "PARAM") && !(w[t].nodeType == 8)) { u.appendChild(w[t].cloneNode(true)) } } } } } return u } function U(AG, AE, t) { var q, v = C(t); if (v) { if (typeof AG.id == b) { AG.id = t } if (h.ie && h.win) { var AF = ""; for (var AB in AG) { if (AG[AB] != Object.prototype[AB]) { if (AB.toLowerCase() == "data") { AE.movie = AG[AB] } else { if (AB.toLowerCase() == "styleclass") { AF += ' class="' + AG[AB] + '"' } else { if (AB.toLowerCase() != "classid") { AF += " " + AB + '="' + AG[AB] + '"' } } } } } var AD = ""; for (var AA in AE) { if (AE[AA] != Object.prototype[AA]) { AD += '<param name="' + AA + '" value="' + AE[AA] + '" />' } } v.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + AF + ">" + AD + "</object>"; i[i.length] = AG.id; q = C(AG.id) } else { if (h.webkit && h.webkit < 312) { var AC = a("embed"); AC.setAttribute("type", P); for (var z in AG) { if (AG[z] != Object.prototype[z]) { if (z.toLowerCase() == "data") { AC.setAttribute("src", AG[z]) } else { if (z.toLowerCase() == "styleclass") { AC.setAttribute("class", AG[z]) } else { if (z.toLowerCase() != "classid") { AC.setAttribute(z, AG[z]) } } } } } for (var y in AE) { if (AE[y] != Object.prototype[y]) { if (y.toLowerCase() != "movie") { AC.setAttribute(y, AE[y]) } } } v.parentNode.replaceChild(AC, v); q = AC } else { var u = a(Q); u.setAttribute("type", P); for (var x in AG) { if (AG[x] != Object.prototype[x]) { if (x.toLowerCase() == "styleclass") { u.setAttribute("class", AG[x]) } else { if (x.toLowerCase() != "classid") { u.setAttribute(x, AG[x]) } } } } for (var w in AE) { if (AE[w] != Object.prototype[w] && w.toLowerCase() != "movie") { F(u, w, AE[w]) } } v.parentNode.replaceChild(u, v); q = u } } } return q } function F(t, q, r) { var u = a("param"); u.setAttribute("name", q); u.setAttribute("value", r); t.appendChild(u) } function X(r) { var q = C(r); if (q && (q.nodeName == "OBJECT" || q.nodeName == "EMBED")) { if (h.ie && h.win) { if (q.readyState == 4) { B(r) } else { j.attachEvent("onload", function () { B(r) }) } } else { q.parentNode.removeChild(q) } } } function B(t) { var r = C(t); if (r) { for (var q in r) { if (typeof r[q] == "function") { r[q] = null } } r.parentNode.removeChild(r) } } function C(t) { var q = null; try { q = K.getElementById(t) } catch (r) { } return q } function a(q) { return K.createElement(q) } function I(t, q, r) { t.attachEvent(q, r); d[d.length] = [t, q, r] } function c(t) { var r = h.pv, q = t.split("."); q[0] = parseInt(q[0], 10); q[1] = parseInt(q[1], 10) || 0; q[2] = parseInt(q[2], 10) || 0; return (r[0] > q[0] || (r[0] == q[0] && r[1] > q[1]) || (r[0] == q[0] && r[1] == q[1] && r[2] >= q[2])) ? true : false } function V(v, r) { if (h.ie && h.mac) { return } var u = K.getElementsByTagName("head")[0], t = a("style"); t.setAttribute("type", "text/css"); t.setAttribute("media", "screen"); if (!(h.ie && h.win) && typeof K.createTextNode != b) { t.appendChild(K.createTextNode(v + " {" + r + "}")) } u.appendChild(t); if (h.ie && h.win && typeof K.styleSheets != b && K.styleSheets.length > 0) { var q = K.styleSheets[K.styleSheets.length - 1]; if (typeof q.addRule == Q) { q.addRule(v, r) } } } function W(t, q) { var r = q ? "visible" : "hidden"; if (e && C(t)) { C(t).style.visibility = r } else { V("#" + t, "visibility:" + r) } } function g(s) { var r = /[\\\"<>\.;]/; var q = r.exec(s) != null; return q ? encodeURIComponent(s) : s } var D = function () { if (h.ie && h.win) { window.attachEvent("onunload", function () { var w = d.length; for (var v = 0; v < w; v++) { d[v][0].detachEvent(d[v][1], d[v][2]) } var t = i.length; for (var u = 0; u < t; u++) { X(i[u]) } for (var r in h) { h[r] = null } h = null; for (var q in swfobject) { swfobject[q] = null } swfobject = null }) } } (); return { registerObject: function (u, q, t) { if (!h.w3cdom || !u || !q) { return } var r = {}; r.id = u; r.swfVersion = q; r.expressInstall = t ? t : false; N[N.length] = r; W(u, false) }, getObjectById: function (v) { var q = null; if (h.w3cdom) { var t = C(v); if (t) { var u = t.getElementsByTagName(Q)[0]; if (!u || (u && typeof t.SetVariable != b)) { q = t } else { if (typeof u.SetVariable != b) { q = u } } } } return q }, embedSWF: function (x, AE, AB, AD, q, w, r, z, AC) { if (!h.w3cdom || !x || !AE || !AB || !AD || !q) { return } AB += ""; AD += ""; if (c(q)) { W(AE, false); var AA = {}; if (AC && typeof AC === Q) { for (var v in AC) { if (AC[v] != Object.prototype[v]) { AA[v] = AC[v] } } } AA.data = x; AA.width = AB; AA.height = AD; var y = {}; if (z && typeof z === Q) { for (var u in z) { if (z[u] != Object.prototype[u]) { y[u] = z[u] } } } if (r && typeof r === Q) { for (var t in r) { if (r[t] != Object.prototype[t]) { if (typeof y.flashvars != b) { y.flashvars += "&" + t + "=" + r[t] } else { y.flashvars = t + "=" + r[t] } } } } f(function () { U(AA, y, AE); if (AA.id == AE) { W(AE, true) } }) } else { if (w && !A && c("6.0.65") && (h.win || h.mac)) { A = true; W(AE, false); f(function () { var AF = {}; AF.id = AF.altContentId = AE; AF.width = AB; AF.height = AD; AF.expressInstall = w; k(AF) }) } } }, getFlashPlayerVersion: function () { return { major: h.pv[0], minor: h.pv[1], release: h.pv[2]} }, hasFlashPlayerVersion: c, createSWF: function (t, r, q) { if (h.w3cdom) { return U(t, r, q) } else { return undefined } }, removeSWF: function (q) { if (h.w3cdom) { X(q) } }, createCSS: function (r, q) { if (h.w3cdom) { V(r, q) } }, addDomLoadEvent: f, addLoadEvent: R, getQueryParamValue: function (v) { var u = K.location.search || K.location.hash; if (v == null) { return g(u) } if (u) { var t = u.substring(1).split("&"); for (var r = 0; r < t.length; r++) { if (t[r].substring(0, t[r].indexOf("=")) == v) { return g(t[r].substring((t[r].indexOf("=") + 1))) } } } return "" }, expressInstallCallback: function () { if (A && M) { var q = C(m); if (q) { q.parentNode.replaceChild(M, q); if (l) { W(l, true); if (h.ie && h.win) { M.style.display = "block" } } M = null; l = null; A = false } } } } } ();

   $.fn.center = function () {
   this.css("position","absolute");
   this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px");
   this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");
   return this;
   }


/*!
 * jQuery blockUI plugin
 * Version 2.33 (29-MAR-2010)
 * @requires jQuery v1.2.3 or later
 *
 * Examples at: http://malsup.com/jquery/block/
 * Copyright (c) 2007-2008 M. Alsup
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * Thanks to Amir-Hossein Sobhi for some excellent contributions!
 */

;(function($) {

if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
	alert('blockUI requires jQuery v1.2.3 or later!  You are using v' + $.fn.jquery);
	return;
}

$.fn._fadeIn = $.fn.fadeIn;

var noOp = function() {};

// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
// retarded userAgent strings on Vista)
var mode = document.documentMode || 0;
var setExpr = $.browser.msie && (($.browser.version < 8 && !mode) || mode < 8);
var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent) && !mode;

// global $ methods for blocking/unblocking the entire page
$.blockUI   = function(opts) { install(window, opts); };
$.unblockUI = function(opts) { remove(window, opts); };

// convenience method for quick growl-like notifications  (http://www.google.com/search?q=growl)
$.growlUI = function(title, message, timeout, onClose) {
	var $m = $('<div class="growlUI"></div>');
	if (title) $m.append('<h1>'+title+'</h1>');
	if (message) $m.append('<h2>'+message+'</h2>');
	if (timeout == undefined) timeout = 3000;
	$.blockUI({
		message: $m, fadeIn: 700, fadeOut: 1000, centerY: false,
		timeout: timeout, showOverlay: false,
		onUnblock: onClose, 
		css: $.blockUI.defaults.growlCSS
	});
};

// plugin method for blocking element content
$.fn.block = function(opts) {
	return this.unblock({ fadeOut: 0 }).each(function() {
		if ($.css(this,'position') == 'static')
			this.style.position = 'relative';
		if ($.browser.msie)
			this.style.zoom = 1; // force 'hasLayout'
		install(this, opts);
	});
};

// plugin method for unblocking element content
$.fn.unblock = function(opts) {
	return this.each(function() {
		remove(this, opts);
	});
};

$.blockUI.version = 2.33; // 2nd generation blocking at no extra cost!

// override these in your code to change the default behavior and style
$.blockUI.defaults = {
	// message displayed when blocking (use null for no message)
	message:  '<h1>Please wait...</h1>',

	title: null,	  // title string; only used when theme == true
	draggable: true,  // only used when theme == true (requires jquery-ui.js to be loaded)
	
	theme: false, // set to true to use with jQuery UI themes
	
	// styles for the message when blocking; if you wish to disable
	// these and use an external stylesheet then do this in your code:
	// $.blockUI.defaults.css = {};
	css: {
		padding:	0,
		margin:		0,
		width:		'30%',
		top:		'40%',
		left:		'35%',
		textAlign:	'center',
		color:		'#000',
		border:		'3px solid #aaa',
		backgroundColor:'#fff',
		cursor:		'wait'
	},
	
	// minimal style set used when themes are used
	themedCSS: {
		width:	'30%',
		top:	'40%',
		left:	'35%'
	},

	// styles for the overlay
	overlayCSS:  {
		backgroundColor: '#000',
		opacity:	  	 0.6,
		cursor:		  	 'wait'
	},

	// styles applied when using $.growlUI
	growlCSS: {
		width:  	'350px',
		top:		'10px',
		left:   	'',
		right:  	'10px',
		border: 	'none',
		padding:	'5px',
		opacity:	0.6,
		cursor: 	'default',
		color:		'#fff',
		backgroundColor: '#000',
		'-webkit-border-radius': '10px',
		'-moz-border-radius':	 '10px',
		'border-radius': 		 '10px'
	},
	
	// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
	// (hat tip to Jorge H. N. de Vasconcelos)
	iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',

	// force usage of iframe in non-IE browsers (handy for blocking applets)
	forceIframe: false,

	// z-index for the blocking overlay
	baseZ: 1000,

	// set these to true to have the message automatically centered
	centerX: true, // <-- only effects element blocking (page block controlled via css above)
	centerY: true,

	// allow body element to be stetched in ie6; this makes blocking look better
	// on "short" pages.  disable if you wish to prevent changes to the body height
	allowBodyStretch: true,

	// enable if you want key and mouse events to be disabled for content that is blocked
	bindEvents: true,

	// be default blockUI will supress tab navigation from leaving blocking content
	// (if bindEvents is true)
	constrainTabKey: true,

	// fadeIn time in millis; set to 0 to disable fadeIn on block
	fadeIn:  200,

	// fadeOut time in millis; set to 0 to disable fadeOut on unblock
	fadeOut:  400,

	// time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
	timeout: 0,

	// disable if you don't want to show the overlay
	showOverlay: true,

	// if true, focus will be placed in the first available input field when
	// page blocking
	focusInput: true,

	// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
	applyPlatformOpacityRules: true,
	
	// callback method invoked when fadeIn has completed and blocking message is visible
	onBlock: null,

	// callback method invoked when unblocking has completed; the callback is
	// passed the element that has been unblocked (which is the window object for page
	// blocks) and the options that were passed to the unblock call:
	//	 onUnblock(element, options)
	onUnblock: null,

	// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
	quirksmodeOffsetHack: 4
};

// private data and functions follow...

var pageBlock = null;
var pageBlockEls = [];

function install(el, opts) {
	var full = (el == window);
	var msg = opts && opts.message !== undefined ? opts.message : undefined;
	opts = $.extend({}, $.blockUI.defaults, opts || {});
	opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
	var css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
	var themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
	msg = msg === undefined ? opts.message : msg;

	// remove the current block (if there is one)
	if (full && pageBlock)
		remove(window, {fadeOut:0});

	// if an existing element is being used as the blocking content then we capture
	// its current place in the DOM (and current display style) so we can restore
	// it when we unblock
	if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
		var node = msg.jquery ? msg[0] : msg;
		var data = {};
		$(el).data('blockUI.history', data);
		data.el = node;
		data.parent = node.parentNode;
		data.display = node.style.display;
		data.position = node.style.position;
		if (data.parent)
			data.parent.removeChild(node);
	}

	var z = opts.baseZ;

	// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
	// layer1 is the iframe layer which is used to supress bleed through of underlying content
	// layer2 is the overlay layer which has opacity and a wait cursor (by default)
	// layer3 is the message content that is displayed while blocking

	var lyr1 = ($.browser.msie || opts.forceIframe) 
		? $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>')
		: $('<div class="blockUI" style="display:none"></div>');
	var lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
	
	var lyr3, s;
	if (opts.theme && full) {
		s = '<div class="blockUI blockMsg blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+z+';display:none;position:fixed">' +
				'<div class="ui-widget-header ui-dialog-titlebar blockTitle">'+(opts.title || '&nbsp;')+'</div>' +
				'<div class="ui-widget-content ui-dialog-content"></div>' +
			'</div>';
	}
	else if (opts.theme) {
		s = '<div class="blockUI blockMsg blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+z+';display:none;position:absolute">' +
				'<div class="ui-widget-header ui-dialog-titlebar blockTitle">'+(opts.title || '&nbsp;')+'</div>' +
				'<div class="ui-widget-content ui-dialog-content"></div>' +
			'</div>';
	}
	else if (full) {
		s = '<div class="blockUI blockMsg blockPage" style="z-index:'+z+';display:none;position:fixed"></div>';
	}			
	else {
		s = '<div class="blockUI blockMsg blockElement" style="z-index:'+z+';display:none;position:absolute"></div>';
	}
	lyr3 = $(s);

	// if we have a message, style it
	if (msg) {
		if (opts.theme) {
			lyr3.css(themedCSS);
			lyr3.addClass('ui-widget-content');
		}
		else 
			lyr3.css(css);
	}

	// style the overlay
	if (!opts.applyPlatformOpacityRules || !($.browser.mozilla && /Linux/.test(navigator.platform)))
		lyr2.css(opts.overlayCSS);
	lyr2.css('position', full ? 'fixed' : 'absolute');

	// make iframe layer transparent in IE
	if ($.browser.msie || opts.forceIframe)
		lyr1.css('opacity',0.0);

	//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
	var layers = [lyr1,lyr2,lyr3], $par = full ? $('form') : $(el);
	$.each(layers, function() {
		this.appendTo($par);
	});
	
	if (opts.theme && opts.draggable && $.fn.draggable) {
		lyr3.draggable({
			handle: '.ui-dialog-titlebar',
			cancel: 'li'
		});
	}

	// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
	var expr = setExpr && (!$.boxModel || $('object,embed', full ? null : el).length > 0);
	if (ie6 || expr) {
		// give body 100% height
		if (full && opts.allowBodyStretch && $.boxModel)
			$('html,body').css('height','100%');

		// fix ie6 issue when blocked element has a border width
		if ((ie6 || !$.boxModel) && !full) {
			var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
			var fixT = t ? '(0 - '+t+')' : 0;
			var fixL = l ? '(0 - '+l+')' : 0;
		}

		// simulate fixed position
		$.each([lyr1,lyr2,lyr3], function(i,o) {
			var s = o[0].style;
			s.position = 'absolute';
			if (i < 2) {
				full ? s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"')
					 : s.setExpression('height','this.parentNode.offsetHeight + "px"');
				full ? s.setExpression('width','jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"')
					 : s.setExpression('width','this.parentNode.offsetWidth + "px"');
				if (fixL) s.setExpression('left', fixL);
				if (fixT) s.setExpression('top', fixT);
			}
			else if (opts.centerY) {
				if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
				s.marginTop = 0;
			}
			else if (!opts.centerY && full) {
				var top = (opts.css && opts.css.top) ? parseInt(opts.css.top) : 0;
				var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
				s.setExpression('top',expression);
			}
		});
	}

	// show the message
	if (msg) {
		if (opts.theme)
			lyr3.find('.ui-widget-content').append(msg);
		else
			lyr3.append(msg);
		if (msg.jquery || msg.nodeType)
			$(msg).show();
	}

	if (($.browser.msie || opts.forceIframe) && opts.showOverlay)
		lyr1.show(); // opacity is zero
	if (opts.fadeIn) {
		var cb = opts.onBlock ? opts.onBlock : noOp;
		var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
		var cb2 = msg ? cb : noOp;
		if (opts.showOverlay)
			lyr2._fadeIn(opts.fadeIn, cb1);
		if (msg)
			lyr3._fadeIn(opts.fadeIn, cb2);
	}
	else {
		if (opts.showOverlay)
			lyr2.show();
		if (msg)
			lyr3.show();
		if (opts.onBlock)
			opts.onBlock();
	}

	// bind key and mouse events
	bind(1, el, opts);

	if (full) {
		pageBlock = lyr3[0];
		pageBlockEls = $(':input:enabled:visible',pageBlock);
		if (opts.focusInput)
			setTimeout(focus, 20);
	}
	else
		center(lyr3[0], opts.centerX, opts.centerY);

	if (opts.timeout) {
		// auto-unblock
		var to = setTimeout(function() {
			full ? $.unblockUI(opts) : $(el).unblock(opts);
		}, opts.timeout);
		$(el).data('blockUI.timeout', to);
	}
};

// remove the block
function remove(el, opts) {
	var full = (el == window);
	var $el = $(el);
	var data = $el.data('blockUI.history');
	var to = $el.data('blockUI.timeout');
	if (to) {
		clearTimeout(to);
		$el.removeData('blockUI.timeout');
	}
	opts = $.extend({}, $.blockUI.defaults, opts || {});
	bind(0, el, opts); // unbind events
	
	var els;
	if (full) // crazy selector to handle odd field errors in ie6/7
		els = $('form').children().filter('.blockUI').add('form > .blockUI');
	else
		els = $('.blockUI', el);

	if (full)
		pageBlock = pageBlockEls = null;

	if (opts.fadeOut) {
		els.fadeOut(opts.fadeOut);
		setTimeout(function() { reset(els,data,opts,el); }, opts.fadeOut);
	}
	else
		reset(els, data, opts, el);
};

// move blocking element back into the DOM where it started
function reset(els,data,opts,el) {
	els.each(function(i,o) {
		// remove via DOM calls so we don't lose event handlers
		if (this.parentNode)
			this.parentNode.removeChild(this);
	});

	if (data && data.el) {
		data.el.style.display = data.display;
		data.el.style.position = data.position;
		if (data.parent)
			data.parent.appendChild(data.el);
		$(el).removeData('blockUI.history');
	}

	if (typeof opts.onUnblock == 'function')
		opts.onUnblock(el,opts);
};

// bind/unbind the handler
function bind(b, el, opts) {
	var full = el == window, $el = $(el);

	// don't bother unbinding if there is nothing to unbind
	if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
		return;
	if (!full)
		$el.data('blockUI.isBlocked', b);

	// don't bind events when overlay is not in use or if bindEvents is false
	if (!opts.bindEvents || (b && !opts.showOverlay)) 
		return;

	// bind anchors and inputs for mouse and key events
	var events = 'mousedown mouseup keydown keypress';
	b ? $(document).bind(events, opts, handler) : $(document).unbind(events, handler);

// former impl...
//	   var $e = $('a,:input');
//	   b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
};

// event handler to suppress keyboard/mouse events when blocking
function handler(e) {
	// allow tab navigation (conditionally)
	if (e.keyCode && e.keyCode == 9) {
		if (pageBlock && e.data.constrainTabKey) {
			var els = pageBlockEls;
			var fwd = !e.shiftKey && e.target == els[els.length-1];
			var back = e.shiftKey && e.target == els[0];
			if (fwd || back) {
				setTimeout(function(){focus(back)},10);
				return false;
			}
		}
	}
	// allow events within the message content
	if ($(e.target).parents('div.blockMsg').length > 0)
		return true;

	// allow events for content that is not being blocked
	return $(e.target).parents().children().filter('div.blockUI').length == 0;
};

function focus(back) {
	if (!pageBlockEls)
		return;
	var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
	if (e)
		e.focus();
};

function center(el, x, y) {
	var p = el.parentNode, s = el.style;
	var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
	var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
	if (x) s.left = l > 0 ? (l+'px') : '0';
	if (y) s.top  = t > 0 ? (t+'px') : '0';
};

function sz(el, p) {
	return parseInt($.css(el,p))||0;
};

})(jQuery);

