/*
 *
 * Copyright (c) 2006/2007 Sam Collett (http://www.texotela.co.uk)
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Version 2.2
 * Demo: http://www.texotela.co.uk/code/jquery/select/
 *
 * $LastChangedDate$
 * $Rev$
 *
 */
 
(function($) {
 
/**
 * Adds (single/multiple) options to a select box (or series of select boxes)
 *
 * @name     addOption
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @type     jQuery
 * @example  $("#myselect").addOption("Value", "Text"); // add single value (will be selected)
 * @example  $("#myselect").addOption("Value 2", "Text 2", false); // add single value (won't be selected)
 * @example  $("#myselect").addOption({"foo":"bar","bar":"baz"}, false); // add multiple values, but don't select
 *
 */
$.fn.addOption = function()
{
	var add = function(el, v, t, sO)
	{
		var option = document.createElement("option");
		option.value = v, option.text = t.replace(/&nbsp;/g, '\u00a0');
		// get options
		var o = el.options;
		// get number of options
		var oL = o.length;
		if(!el.cache)
		{
			el.cache = {};
			// loop through existing options, adding to cache
			for(var i = 0; i < oL; i++)
			{
				el.cache[o[i].value] = i;
			}
		}
		// add to cache if it isn't already
		if(typeof el.cache[v] == "undefined") el.cache[v] = oL;
		el.options[el.cache[v]] = option;
		if(sO)
		{
			option.selected = true;
		}
	};
	
	var a = arguments;
	if(a.length == 0) return this;
	// select option when added? default is true
	var sO = true;
	// multiple items
	var m = false;
	// other variables
	var items, v, t;
	if(typeof(a[0]) == "object")
	{
		m = true;
		items = a[0];
	}
	if(a.length >= 2)
	{
		if(typeof(a[1]) == "boolean") sO = a[1];
		else if(typeof(a[2]) == "boolean") sO = a[2];
		if(!m)
		{
			v = a[0];
			t = a[1];
		}
	}
	this.each(
		function()
		{
			if(this.nodeName.toLowerCase() != "select") return;
			if(m)
			{
				for(var item in items)
				{
					add(this, item, items[item], sO);
				}
			}
			else
			{
				add(this, v, t, sO);
			}
		}
	);
	return this;
};

/**
 * Add options via ajax
 *
 * @name     ajaxAddOption
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @type     jQuery
 * @param    String url      Page to get options from (must be valid JSON)
 * @param    Object params   (optional) Any parameters to send with the request
 * @param    Boolean select  (optional) Select the added options, default true
 * @param    Function fn     (optional) Call this function with the select object as param after completion
 * @param    Array args      (optional) Array with params to pass to the function afterwards
 * @example  $("#myselect").ajaxAddOption("myoptions.php");
 * @example  $("#myselect").ajaxAddOption("myoptions.php", {"code" : "007"});
 * @example  $("#myselect").ajaxAddOption("myoptions.php", {"code" : "007"}, false, sortoptions, {"dir": "desc"});
 *
 */
$.fn.ajaxAddOption = function(url, params, select, fn, args)
{
	if(typeof(url) != "string") return this;
	if(typeof(params) != "object") params = {};
	if(typeof(select) != "boolean") select = true;
	this.each(
		function()
		{
			var el = this;
			$.getJSON(url,
				params,
				function(r)
				{
					$(el).addOption(r, select);
					if(typeof fn == "function")
					{
						if(typeof args == "object")
						{
							fn.apply(el, args);
						} 
						else
						{
							fn.call(el);
						}
					}
				}
			);
		}
	);
	return this;
};

/**
 * Removes an option (by value or index) from a select box (or series of select boxes)
 *
 * @name     removeOption
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @type     jQuery
 * @param    String|RegExp|Number what  Option to remove
 * @param    Boolean selectedOnly       (optional) Remove only if it has been selected (default false)   
 * @example  $("#myselect").removeOption("Value"); // remove by value
 * @example  $("#myselect").removeOption(/^val/i); // remove options with a value starting with 'val'
 * @example  $("#myselect").removeOption(/./); // remove all options
 * @example  $("#myselect").removeOption(/./, true); // remove all options that have been selected
 * @example  $("#myselect").removeOption(0); // remove by index
 *
 */
$.fn.removeOption = function()
{
	var a = arguments;
	if(a.length == 0) return this;
	var ta = typeof(a[0]);
	var v, i;
	// has to be a string or regular expression (object in IE, function in Firefox)
	if(ta == "string" || ta == "object" || ta == "function" ) v = a[0];
	else if(ta == "number") i = a[0];
	else return this;
	this.each(
		function()
		{
			if(this.nodeName.toLowerCase() != "select") return;
			// clear cache
			if(this.cache) this.cache = null;
			// does the option need to be removed?
			var remove = false;
			// get options
			var o = this.options;
			if(!!v)
			{
				// get number of options
				var oL = o.length;
				for(var i=oL-1; i>=0; i--)
				{
					if(v.constructor == RegExp)
					{
						if(o[i].value.match(v))
						{
							remove = true;
						}
					}
					else if(o[i].value == v)
					{
						remove = true;
					}
					// if the option is only to be removed if selected
					if(remove && a[1] === true) remove = o[i].selected;
					if(remove)
					{
						o[i] = null;
					}
					remove = false;
				}
			}
			else
			{
				if(remove && a[1] === true) remove = o[i].selected;
				if(remove)
				{
					this.remove(i);
				}
			}
		}
	);
	return this;
};

/**
 * Sort options (ascending or descending) in a select box (or series of select boxes)
 *
 * @name     sortOptions
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @type     jQuery
 * @param    Boolean ascending   (optional) Sort ascending (true/undefined), or descending (false)
 * @example  // ascending
 * $("#myselect").sortOptions(); // or $("#myselect").sortOptions(true);
 * @example  // descending
 * $("#myselect").sortOptions(false);
 *
 */
$.fn.sortOptions = function(ascending)
{
	var a = typeof(ascending) == "undefined" ? true : !!ascending;
	this.each(
		function()
		{
			if(this.nodeName.toLowerCase() != "select") return;
			// get options
			var o = this.options;
			// get number of options
			var oL = o.length;
			// create an array for sorting
			var sA = [];
			// loop through options, adding to sort array
			for(var i = 0; i<oL; i++)
			{
				sA[i] = {
					v: o[i].value,
					t: o[i].text
				}
			}
			// sort items in array
			sA.sort(
				function(o1, o2)
				{
					// option text is made lowercase for case insensitive sorting
					o1t = o1.t.toLowerCase(), o2t = o2.t.toLowerCase();
					// if options are the same, no sorting is needed
					if(o1t == o2t) return 0;
					if(a)
					{
						return o1t < o2t ? -1 : 1;
					}
					else
					{
						return o1t > o2t ? -1 : 1;
					}
				}
			);
			// change the options to match the sort array
			for(var i = 0; i<oL; i++)
			{
				o[i].text = sA[i].t;
				o[i].value = sA[i].v;
			}
		}
	);
	return this;
};
/**
 * Selects an option by value
 *
 * @name     selectOptions
 * @author   Mathias Bank (http://www.mathias-bank.de), original function
 * @author   Sam Collett (http://www.texotela.co.uk), addition of regular expression matching
 * @type     jQuery
 * @param    String|RegExp value  Which options should be selected
 * can be a string or regular expression
 * @param    Boolean clear  Clear existing selected options, default false
 * @example  $("#myselect").selectOptions("val1"); // with the value 'val1'
 * @example  $("#myselect").selectOptions(/^val/i); // with the value starting with 'val', case insensitive
 *
 */
$.fn.selectOptions = function(value, clear)
{
	var v = value;
	var vT = typeof(value);
	var c = clear || false;
	// has to be a string or regular expression (object in IE, function in Firefox)
	if(vT != "string" && vT != "function" && vT != "object") return this;
	this.each(
		function()
		{
			if(this.nodeName.toLowerCase() != "select") return this;
			// get options
			var o = this.options;
			// get number of options
			var oL = o.length;
			for(var i = 0; i<oL; i++)
			{
				if(v.constructor == RegExp)
				{
					if(o[i].value.match(v))
					{
						o[i].selected = true;
					}
					else if(c)
					{
						o[i].selected = false;
					}
				}
				else
				{
					if(o[i].value == v)
					{
						o[i].selected = true;
					}
					else if(c)
					{
						o[i].selected = false;
					}
				}
			}
		}
	);
	return this;
};

/**
 * Copy options to another select
 *
 * @name     copyOptions
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @type     jQuery
 * @param    String to  Element to copy to
 * @param    String which  (optional) Specifies which options should be copied - 'all' or 'selected'. Default is 'selected'
 * @example  $("#myselect").copyOptions("#myselect2"); // copy selected options from 'myselect' to 'myselect2'
 * @example  $("#myselect").copyOptions("#myselect2","selected"); // same as above
 * @example  $("#myselect").copyOptions("#myselect2","all"); // copy all options from 'myselect' to 'myselect2'
 *
 */
$.fn.copyOptions = function(to, which)
{
	var w = which || "selected";
	if($(to).size() == 0) return this;
	this.each(
		function()
		{
			if(this.nodeName.toLowerCase() != "select") return this;
			// get options
			var o = this.options;
			// get number of options
			var oL = o.length;
			for(var i = 0; i<oL; i++)
			{
				if(w == "all" ||	(w == "selected" && o[i].selected))
				{
					$(to).addOption(o[i].value, o[i].text);
				}
			}
		}
	);
	return this;
};

/**
 * Checks if a select box has an option with the supplied value
 *
 * @name     containsOption
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @type     Boolean|jQuery
 * @param    String|RegExp value  Which value to check for. Can be a string or regular expression
 * @param    Function fn          (optional) Function to apply if an option with the given value is found.
 * Use this if you don't want to break the chaining
 * @example  if($("#myselect").containsOption("val1")) alert("Has an option with the value 'val1'");
 * @example  if($("#myselect").containsOption(/^val/i)) alert("Has an option with the value starting with 'val'");
 * @example  $("#myselect").containsOption("val1", copyoption).doSomethingElseWithSelect(); // calls copyoption (user defined function) for any options found, chain is continued
 *
 */
$.fn.containsOption = function(value, fn)
{
	var found = false;
	var v = value;
	var vT = typeof(v);
	var fT = typeof(fn);
	// has to be a string or regular expression (object in IE, function in Firefox)
	if(vT != "string" && vT != "function" && vT != "object") return fT == "function" ? this: found;
	this.each(
		function()
		{
			if(this.nodeName.toLowerCase() != "select") return this;
			// option already found
			if(found && fT != "function") return false;
			// get options
			var o = this.options;
			// get number of options
			var oL = o.length;
			for(var i = 0; i<oL; i++)
			{
				if(v.constructor == RegExp)
				{
					if (o[i].value.match(v))
					{
						found = true;
						if(fT == "function") fn.call(o[i]);
					}
				}
				else
				{
					if (o[i].value == v)
					{
						found = true;
						if(fT == "function") fn.call(o[i]);
					}
				}
			}
		}
	);
	return fT == "function" ? this : found;
};

/**
 * Returns values which have been selected
 *
 * @name     selectedValues
 * @author   Sam Collett (http://www.texotela.co.uk)
 * @type     Array
 * @example  $("#myselect").selectedValues();
 *
 */
$.fn.selectedValues = function()
{
	var v = [];
	this.find("option:selected").each(
		function()
		{
			v[v.length] = this.value;
		}
	);
	return v;
};

})(jQuery);

/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * Create a cookie with the given name and value and other optional parameters.
 *
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery.com', secure: true});
 * @desc Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Create a session cookie.
 * @example $.cookie('the_cookie', null);
 * @desc Delete a cookie by passing null as value.
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */

/**
 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        var path = options.path ? '; path=' + options.path : '';
        var domain = options.domain ? '; domain=' + options.domain : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};

/*
 * Thickbox 3 - One Box To Rule Them All.
 * By Cody Lindley (http://www.codylindley.com)
 * Copyright (c) 2007 cody lindley
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
*/

var tb_pathToImage = "ui/public/image/random/tb_loading.gif";

eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('$(9).2C(8(){1r(\'a.19, 3e.19, 3a.19\');1u=1o 1w();1u.M=2v});8 1r(b){$(b).o(8(){6 t=P.V||P.1U||J;6 a=P.s||P.1N;6 g=P.1H||R;14(t,a,g);P.2s();L R})}8 14(d,f,g){3d{3(1y 9.r.K.21==="1j"){$("r","I").p({D:"1S%",u:"1S%"});$("I").p("1Q","2H");3(9.1W("1A")===J){$("r").B("<16 5=\'1A\'></16><4 5=\'E\'></4><4 5=\'7\'></4>");$("#E").o(A)}}n{3(9.1W("E")===J){$("r").B("<4 5=\'E\'></4><4 5=\'7\'>");$("#E").o(A)}}3(d===J){d=""}$("r").B("<4 5=\'H\'><1B M=\'"+1u.M+"\' /></4>");$(\'#H\').2p();6 h;3(f.13("?")!==-1){h=f.2n(0,f.13("?"))}n{h=f}6 i=/\\.2k|\\.2h|\\.2e|\\.2d|\\.2c|2b\\.26|25\\.23/g;6 j=h.20().1Z(i);3(j==\'.2k\'||j==\'.2h\'||j==\'.2e\'||j==\'.2d\'||j==\'.2c\'||j==\'25.23\'||j==\'2b.26\'){1m="";1v="";Z="";1t="";1s="";O="";1n="";1p=R;3(g){C=$("a[@1H="+g+"]").2Q();1P(v=0;((v<C.1b)&&(O===""));v++){6 k=C[v].s.20().1Z(i);3(!(C[v].s==f)){3(1p){1t=C[v].V;1s=C[v].s;O="<1a 5=\'1T\'>&18;&18;<a s=\'#\'>2D &2B;</a></1a>"}n{1m=C[v].V;1v=C[v].s;Z="<1a 5=\'1L\'>&18;&18;<a s=\'#\'>&2y; 2x</a></1a>"}}n{1p=1J;1n="1w "+(v+1)+" 2w "+(C.1b)}}}N=1o 1w();N.1k=8(){N.1k=J;6 a=1G();6 x=a[0]-1F;6 y=a[1]-1F;6 b=N.u;6 c=N.D;3(b>x){c=c*(x/b);b=x;3(c>y){b=b*(y/c);c=y}}n 3(c>y){b=b*(y/c);c=y;3(b>x){c=c*(x/b);b=x}}X=b+30;15=c+2u;$("#7").B("<a s=\'\' 5=\'1E\' V=\'1i\'><1B 5=\'2t\' M=\'"+f+"\' u=\'"+b+"\' D=\'"+c+"\' 1N=\'"+d+"\'/></a>"+"<4 5=\'2r\'>"+d+"<4 5=\'2q\'>"+1n+Z+O+"</4></4><4 5=\'2o\'><a s=\'#\' 5=\'Q\' V=\'1i\'>1g</a> 1f 1e 1x</4>");$("#Q").o(A);3(!(Z==="")){8 W(){3($(9).S("o",W)){$(9).S("o",W)}$("#7").z();$("r").B("<4 5=\'7\'></4>");14(1m,1v,g);L R}$("#1L").o(W)}3(!(O==="")){8 1d(){$("#7").z();$("r").B("<4 5=\'7\'></4>");14(1t,1s,g);L R}$("#1T").o(1d)}9.1c=8(e){3(e==J){G=2l.1z}n{G=e.2j}3(G==27){A()}n 3(G==3c){3(!(O=="")){9.1c="";1d()}}n 3(G==3b){3(!(Z=="")){9.1c="";W()}}};12();$("#H").z();$("#1E").o(A);$("#7").p({U:"T"})};N.M=f}n{6 l=f.2g(/^[^\\?]+\\??/,\'\');6 m=2i(l);X=(m[\'u\']*1)+30||39;15=(m[\'D\']*1)+38||37;Y=X-30;11=15-36;3(f.13(\'22\')!=-1){1D=f.1h(\'35\');$("#7").B("<4 5=\'1C\'><4 5=\'1q\'>"+d+"</4><4 5=\'1Y\'><a s=\'#\' 5=\'Q\' V=\'1i\'>1g</a> 1f 1e 1x</4></4><16 34=\'0\' 33=\'0\' M=\'"+1D[0]+"\' 5=\'1l\' 1U=\'1l\' K=\'u:"+(Y+29)+"q;D:"+(11+17)+"q;\' 1k=\'1X()\'> </16>")}n{3($("#7").p("U")!="T"){3(m[\'1V\']!="1J"){$("#7").B("<4 5=\'1C\'><4 5=\'1q\'>"+d+"</4><4 5=\'1Y\'><a s=\'#\' 5=\'Q\'>1g</a> 1f 1e 1x</4></4><4 5=\'F\' K=\'u:"+Y+"q;D:"+11+"q\'></4>")}n{$("#E").S();$("#7").B("<4 5=\'F\' 2Z=\'2Y\' K=\'u:"+Y+"q;D:"+11+"q;\'></4>")}}n{$("#F")[0].K.u=Y+"q";$("#F")[0].K.D=11+"q";$("#F")[0].2X=0;$("#1q").I(d)}}$("#Q").o(A);3(f.13(\'2W\')!=-1){$("#F").I($(\'#\'+m[\'2U\']).I());12();$("#H").z();$("#7").p({U:"T"})}n 3(f.13(\'22\')!=-1){12();3(2T[\'1l\']===1j){$("#H").z();$("#7").p({U:"T"});$(9).2S(8(e){6 a=e.1z;3(a==27){A()}})}}n{$("#F").2R(f+="&2P="+(1o 2O().2N()),8(){12();$("#H").z();1r("#F a.19");$("#7").p({U:"T"})})}}3(!m[\'1V\']){9.2M=8(e){3(e==J){G=2l.1z}n{G=e.2j}3(G==27){A()}}}}2L(e){}}8 1X(){$("#H").z();$("#7").p({U:"T"})}8 A(){$("#2K").S("o");$("#E").S("o");$("#Q").S("o");$("#7").2J("2I",8(){$(\'#7,#E,#1A\').z()});$("#H").z();3(1y 9.r.K.21=="1j"){$("r","I").p({D:"1R",u:"1R"});$("I").p("1Q","")}9.1c="";L R}8 12(){$("#7").p({2V:\'-\'+1O((X/2),10)+\'q\',u:X+\'q\'});3(!(2G.2F.2E&&1y 31==\'8\')){$("#7").p({32:\'-\'+1O((15/2),10)+\'q\'})}}8 2i(a){6 b={};3(!a){L b}6 c=a.1h(/[;&]/);1P(6 i=0;i<c.1b;i++){6 d=c[i].1h(\'=\');3(!d||d.1b!=2){2A}6 e=1M(d[0]);6 f=1M(d[1]);f=f.2g(/\\+/g,\' \');b[e]=f}L b}8 1G(){6 a=9.2z;6 w=1K.2a||24.2a||(a&&a.28)||9.r.28;6 h=1K.1I||24.1I||(a&&a.2m)||9.r.2m;2f=[w,h];L 2f}',62,201,'|||if|div|id|var|TB_window|function|document||||||||||||||else|click|css|px|body|href||width|TB_Counter||||remove|tb_remove|append|TB_TempArray|height|TB_overlay|TB_ajaxContent|keycode|TB_load|html|null|style|return|src|imgPreloader|TB_NextHTML|this|TB_closeWindowButton|false|unbind|block|display|title|goPrev|TB_WIDTH|ajaxContentW|TB_PrevHTML||ajaxContentH|tb_position|indexOf|tb_show|TB_HEIGHT|iframe||nbsp|thickbox|span|length|onkeydown|goNext|Esc|or|close|split|Close|undefined|onload|TB_iframeContent|TB_PrevCaption|TB_imageCount|new|TB_FoundURL|TB_ajaxWindowTitle|tb_init|TB_NextURL|TB_NextCaption|imgLoader|TB_PrevURL|Image|Key|typeof|keyCode|TB_HideSelect|img|TB_title|urlNoQuery|TB_ImageOff|150|tb_getPageSize|rel|innerHeight|true|window|TB_prev|unescape|alt|parseInt|for|overflow|auto|100|TB_next|name|modal|getElementById|tb_showIframe|TB_closeAjaxWindow|match|toLowerCase|maxHeight|TB_iframe|ms|self|scale|asp||clientWidth||innerWidth|getimgdb|bmp|gif|png|arrayPageSize|replace|jpeg|tb_parseQuery|which|jpg|event|clientHeight|substr|TB_closeWindow|show|TB_secondLine|TB_caption|blur|TB_Image|60|tb_pathToImage|of|Prev|lt|documentElement|continue|gt|ready|Next|msie|browser|jQuery|hidden|fast|fadeOut|TB_imageOff|catch|onkeyup|getTime|Date|random|get|load|keyup|frames|inlineId|marginLeft|TB_inline|scrollTop|TB_modal|class||XMLHttpRequest|marginTop|hspace|frameborder|TB_|45|440|40|630|input|188|190|try|area'.split('|'),0,{}))