/* VARIABLE CONFIG
   ---------------------------------------------- */
	var servertime = new Date();
	
/* SITE ONLY
	------------------------------ */
	
	function enterTournament(formObj) {
		
		if (verifyForm(formObj)) {
			if (isValidEmail(formObj["req_playerMail"].value)) {
				return true;		
			} else {
				alert("A valid e-mail address is required");
				return false;
			}
		} else {
			return false;
		}
	}
	
	function enterTournamentTest(formObj) {
		
		if (verifyForm(formObj)) {
			if (isValidEmail(formObj["req_playerMail"].value)) {
				if ($F('txtmsg') == "y") {
					var phonenumber = $F('mobile');
					
					if (phonenumber.length < 10) {
						alert("Cell phone reminders require a 10-digit phone number.\nRemember to include your area code.");
						return false;
					} else {
						
						if (confirm("Is this phone number correct? "+phonenumber.substr(0,3)+"-"+phonenumber.substr(3,3)+"-"+phonenumber.substr(6,4))) {
							return false;
						} else {
							return false;
						}
					}
				} else {
					return false;		
				}
			} else {
				alert("A valid e-mail address is required");
				return false;
			}
		} else {
			return false;
		}
	}	
	
	/* Badge Start */	
		function checkField(elementId) {
			var i = $F(elementId).length;
			if (isNotNull(i)) { 
				return true;
			} else {
				alert("You must enter an account ID number");
				return false;
			}
		}
		
		function isValidGHID(ghid) {
				var foo = new Ajax.Request(ajax_nocache_pars("/badge/response.php?verify="+ghid), {
					method: 'get',
					onComplete: function(transport) {
						var reply = transport.responseText;
						//return(reply);
					}
				});		
				
				return (foo);	
		}
		
		function showStepTwo(elementId) {
			$("state").innerHTML = "Checking...";
			if (checkField(elementId)) {
				var ghid = $F(elementId);
				
				new Ajax.Request(ajax_nocache_pars("/badge/response.php?verify="+ghid), {
					method: 'get',
					onComplete: function(transport) {
						var reply = transport.responseText;
				
						if (reply > 0) {
							Element.hide("help");
							Element.show("step2");
							$("createid").value = ghid;
							$("state").innerHTML = "OK";
						} else {
							$("state").innerHTML = "FAIL";
							alert("That account contains no stats.");
						}
					}
				});				
			}
		}	
		
		// CreateABracket confirm
		function checkForm(formObj) {
			var b_return = false;
						
			if (($F("song1") != $F("song2")) && ($F("song1") != $F("song3")) && ($F("song2") != $F("song3"))) { 
				b_return = true; 
						
				if (checkCaptcha(1)) { b_return = true; } else { b_return = false; }
							
			} else { 
				alert("You cannot use the same song more than once."); 
			}
						
			if (b_return) {
				if ($F("bracketname") == "") { alert("Your bracket must have a name"); b_return = false; }
			}
						
			return(b_return);
		}		
		
		
		// Signup validate
		function signup_checkMail(inputObj) {
			if (isValidEmail(inputObj.value)) {
				$("status").innerHTML = "OK";
				
					new Ajax.Request(ajax_nocache_pars("/response.php?exists="+inputObj.value), {
						 onComplete:function(transport) {
						 	var response = parseInt(transport.responseText);

						 	if (response > 0) { $("status").innerHTML = "OK"; } else { $("status").innerHTML = "Already exists"; }
						 }
					});						
			} else {
				$("status").innerHTML = "INVALID";
			}
		}
		
		function verifySignup(formObj) {
			var b_return = false;
			
			if (isValidEmail(formObj["newplayer"].value)) {
				if (checkCaptcha(1)) { 
					//mailAlreadyInUse(formObj["newplayer"].value);
					//b_return = true; 
					alert(b_return);
				}
			} else {
				alert("A valid e-mail address is required");
			}
			
			return false;	
		}
		
		
		// Captcha
		var math1 = Math.floor(Math.random()*11);
		var math2 = Math.floor(Math.random()*12);
		
		function checkCaptcha(noShowDialog) {
			var answer = (math1 + math2);
			if ($F("captcha") != answer) { 
				if (noShowDialog) { alert("You must answer the verification question correctly."); }
				return false; 
			} else { return true; }
		}		
		
		function showCaptcha(element1Id, element2Id) {
			document.write('<strong>Verify your humanity:</strong> What is <span id="math1">'+math1+'</span> + <span id="math2">'+math2+'</span>? <input type="text" id="captcha" size="3" />');
		}
		
		// PPT date check
		function verifyPptSchedule() {
			var tdate = $("startdate").value;
			var ttime = $("time").value;
	

			
			var url = ajax_nocache_pars("/response.php?ppt="+tdate+"&t="+ttime);
			
			new Ajax.Request(url, {
				onComplete: function(transport) {
					var response = parseInt(transport.responseText);
					if (response > 0) {
						Element.show("allowit");
						Element.hide("checkit");
						$("allow").value = "y";
						$("ttime").value = ttime;
						$("tdate").value = tdate;
						$("startdate").disabled = true;
						$("time").disabled = true;
						$("response").innerHTML = '<span class="ok">That date and time is available. Click Continue to pick your set list.</span>';
					} else {
						$("response").innerHTML = '<span class="notok">That date and time are unavailable. Please pick a different date or tie.</span>';
					}
					
				}
			});
		}		

	
	
/* GENERAL UTILITY FUNCTIONS - Abstracted
   ---------------------------------------------- */
	   
	// Valid e-mail
	function isValidEmail(str) { var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; var address = str; if(reg.test(address) == false) { return false; } else { return true; } }
	
	// Appending timestamp to URL to avoid cache problems when ajaxing
	function ajax_nocache_pars(pars) { var cache = parseInt(Math.random()*99999999) + new Date().valueOf(); if (!pars) { var newpars = "?cache="+cache; } else { var newpars = pars+"&cache="+cache; } return(newpars); }
	
	// Returns TRUE when passed variable is not empty/null/undefined
	function isNotNull(thisvar) { if (thisvar && (thisvar != "undefined") && (thisvar!=null)) { return(thisvar); } else { return false; }	}

	// Shuffle array
	function array_shuffle(o){ for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); return o; }
	
    // Find value in array
    function in_array(element, ary){ for(var i=0; i<ary.length; i++) { if(ary[i] == element) { return i; } } return(-1); }	
   
	// Mailto href (to help hide from crawlers)
	function autoMailto(name, domain) {
		if (!domain) { var domain = sitevars.s_domain; }
		window.location = "mailto:"+name+"@"+domain;	
		return false;
	}   

	// Pop-up window with flag options
	function newPopup(url, name, style, width, height) {
		if (!width)  { width  = 640; }
		if (!height) { height = 480; }
		if (!name)   { name   = "popup"; }		
		if (!style)  { style  = "normal"; }	
		
		if (url) {
			switch (style) {
				case "normal":
					window.open(url,name,"width="+width+",height="+height+",toolbar=0,location=0,status=1,menu=1,resizable=1,scrollbars=1");	
					break;
				
				case "full":
					window.open(url,name,"width="+width+",height="+height);	
					break;
					
				case "min":
					window.open(url,name,"width="+width+",height="+height+",toolbar=0,location=0,status=0,menu=0,resizable=0,scollbars=1");	
					break;
			}
		}
		
		return false;
	}
	
	
	// Webmonkey GET Parsing Module - http://www.hotwired.com/webmonkey/javascript/code_library/
	function newGetObject() {
	  FORM_DATA = new Object();
	  separator = ',';
	  query     = '' + this.location;
	  query     = query.substring((query.indexOf('?')) + 1);
	  
	  if (query.length < 1) { return false; }  // Perhaps we got some bad data?
	  
	  keypairs = new Object();
	  numKP    = 1;
	    
	  while (query.indexOf('&') > -1) {
	    keypairs[numKP] = query.substring(0,query.indexOf('&'));
	    query = query.substring((query.indexOf('&')) + 1);
	    numKP++;
	  }
	
	  keypairs[numKP] = query;
	  
	  for (i in keypairs) {
	    keyName  = keypairs[i].substring(0,keypairs[i].indexOf('='));
	    keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
	    while (keyValue.indexOf('+') > -1) {
	      keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
	    }
	    
	    keyValue = unescape(keyValue);
	      
	    if (FORM_DATA[keyName]) {
	      FORM_DATA[keyName] = FORM_DATA[keyName] + separator + keyValue;
	    } else {
	      FORM_DATA[keyName] = keyValue;
	    }
	  }
	  return FORM_DATA;
	}	
	

	/* Cookie utilities - http://www.quirksmode.org/js/cookies.html */
	function createCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}
	
	function readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
	
	function eraseCookie(name) {
		createCookie(name,"",-1);
	}	
	
	
	
	// Validate form and check for required fields.
	function verifyForm(thisform) {
		var reqmatch  = "req_";
		var message   = "All marked(*) or colored fields are required.\nPlease double check the form and try again."
		var offenders = new Array;

		if (!thisform.elements) {
			thisform.elements = thisform;
		}

		for(i=0; i < thisform.elements.length; i++) {
			var field = thisform.elements[i];

			if (field.name) {
				var isReq = (field.name.substr(0,reqmatch.length)==reqmatch) ? true : false
				var pos   = offenders.length;
			} else {
				isReq = false;
			}

			if (pos <= 0) { pos = 0; }

			if(isReq) {
				if((field.type=="text" || field.type=="textarea" || field.type=="password" || field.type=="file")) { // && field.value==""
					var fieldValue = field.value;
					if (!field.value.match(/\w/)) {
						offenders[pos]  = field;
						field.className = "requiredField";
					}
				} else if(field.type=="select-one" && field.selectedIndex == 0){
					offenders[pos]  = field;
					field.className = "requiredField";
				} else if(field.type=="select-multiple"){
					Sel=0
					for(o=0; o<field.options.length; o++){
						if(field.options[o].selected){
							Sel++
							break
						}
					}

					if(Sel == 0){
						offenders[pos]  = field;
						field.className = "requiredField";
					}
				} else if(field.type=="radio" || field.type=="checkbox"){
					var startingIndex = i
					var Checked = 0
					var rLength=1
					while(field.name == thisform.elements[i+1].name){
						rLength++
						i++
					}

					for(g = startingIndex; g < rLength+startingIndex; g++){
						if(thisform.elements[g].checked){
							Checked++
							break
						}
					}
					if(Checked == 0){
						offenders[pos]  = field;
						field.className = "requiredField";
					}
				}
			}
		}

		if (offenders.length > 0) {
			alert(message);
			return false;
		} else {
			return true;
		}
	}		
	
	// Date Utility Functions - (c)2005-2007 Matt Kruse (javascripttoolbox.com)
	eval(function(p,a,c,k,e,d){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--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[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}('8.$2m=1.2n;8.Q=u(x){e(x<0||x>9?"":"0")+x};8.1g=B R(\'2o\',\'2p\',\'2l\',\'2k\',\'1z\',\'2g\',\'2h\',\'2i\',\'2j\',\'2q\',\'2r\',\'2y\');8.14=B R(\'2z\',\'2A\',\'2x\',\'2w\',\'1z\',\'2s\',\'2t\',\'2u\',\'2v\',\'2f\',\'2b\',\'1R\');8.1d=B R(\'1W\',\'1Z\',\'1Y\',\'1V\',\'1U\',\'1S\',\'1T\');8.1f=B R(\'1X\',\'2e\',\'20\',\'2c\',\'2d\',\'2a\',\'27\');8.1s=1L;3(!8.C.1c){8.C.1c=u(){b S=7.1y();e(S<16?S+16:S)}}8.1q=u(r,t){3(1e(t)=="1a"||t==f||t==""){b 1D=B R(\'y-M-d\',\'G d, y\',\'G d,y\',\'y-G-d\',\'d-G-y\',\'G d\',\'G-d\',\'d-G\');b 1v=B R(\'M/d/y\',\'M-d-y\',\'M.d.y\',\'M/d\',\'M-d\');b 1t=B R(\'d/M/y\',\'d-M-y\',\'d.M.y\',\'d/M\',\'d-M\');b 1u=B R(1D,8.1s?1v:1t,8.1s?1t:1v);Z(b i=0;i<1u.g;i++){b l=1u[i];Z(b j=0;j<l.g;j++){b d=8.1q(r,l[j]);3(d!=f){e d}}}e f};7.1I=u(r){Z(b i=0;i<r.g;i++){3("26".2C(r.U(i))==-1){e 13}}e 1L};7.O=u(1E,i,1i,1C){Z(b x=1C;x>=1i;x--){b 5=1E.T(i,i+x);3(5.g<1i){e f}3(7.1I(5)){e 5}}e f};r=r+"";t=t+"";b o=0;b D=0;b c="";b 5="";b 2T="";b x,y;b A=B 8().1c();b v=1;b I=1;b p=0;b J=0;b L=0;b 10="";W(D<t.g){c=t.U(D);5="";W((t.U(D)==c)&&(D<t.g)){5+=t.U(D++)}3(5=="19"||5=="S"||5=="y"){3(5=="19"){x=4;y=4}3(5=="S"){x=2;y=2}3(5=="y"){x=2;y=4}A=7.O(r,o,x,y);3(A==f){e f}o+=A.g;3(A.g==2){3(A>2V){A=16+(A-0)}q{A=2R+(A-0)}}}q 3(5=="G"||5=="1P"){v=0;b Y=(5=="G"?(8.1g.2O(8.14)):8.14);Z(b i=0;i<Y.g;i++){b 1h=Y[i];3(r.T(o,o+1h.g).V()==1h.V()){v=(i%12)+1;o+=1h.g;1A}}3((v<1)||(v>12)){e f}}q 3(5=="1r"||5=="E"){b Y=(5=="1r"?8.1d:8.1f);Z(b i=0;i<Y.g;i++){b 18=Y[i];3(r.T(o,o+18.g).V()==18.V()){o+=18.g;1A}}}q 3(5=="1o"||5=="M"){v=7.O(r,o,5.g,2);3(v==f||(v<1)||(v>12)){e f}o+=v.g}q 3(5=="1m"||5=="d"){I=7.O(r,o,5.g,2);3(I==f||(I<1)||(I>2E)){e f}o+=I.g}q 3(5=="p"||5=="h"){p=7.O(r,o,5.g,2);3(p==f||(p<1)||(p>12)){e f}o+=p.g}q 3(5=="1k"||5=="H"){p=7.O(r,o,5.g,2);3(p==f||(p<0)||(p>23)){e f}o+=p.g}q 3(5=="1l"||5=="K"){p=7.O(r,o,5.g,2);3(p==f||(p<0)||(p>11)){e f}o+=p.g;p++}q 3(5=="1j"||5=="k"){p=7.O(r,o,5.g,2);3(p==f||(p<1)||(p>24)){e f}o+=p.g;p--}q 3(5=="J"||5=="m"){J=7.O(r,o,5.g,2);3(J==f||(J<0)||(J>1K)){e f}o+=J.g}q 3(5=="L"||5=="s"){L=7.O(r,o,5.g,2);3(L==f||(L<0)||(L>1K)){e f}o+=L.g}q 3(5=="a"){3(r.T(o,o+2).V()=="2J"){10="1w"}q 3(r.T(o,o+2).V()=="2N"){10="1x"}q{e f}o+=2}q{3(r.T(o,o+5.g)!=5){e f}q{o+=5.g}}}3(o!=r.g){e f}3(v==2){3(((A%4==0)&&(A%2M!=0))||(A%2L==0)){3(I>29){e f}}q{3(I>28){e f}}}3((v==4)||(v==6)||(v==9)||(v==11)){3(I>2K){e f}}3(p<12&&10=="1x"){p=p-0+12}q 3(p>11&&10=="1w"){p-=12}e B 8(A,v-1,I,p,J,L)};8.2I=u(r,t){e(8.1q(r,t)!=f)};8.C.2D=u(F){3(F==f){e 13}e(7.P()<F.P())};8.C.2F=u(F){3(F==f){e 13}e(7.P()>F.P())};8.C.2G=u(F){3(F==f){e 13}e(7.P()==F.P())};8.C.2W=u(F){3(F==f){e 13}b 1J=B 8(7.P()).1p();b 1F=B 8(F.P()).1p();e(1J.P()==1F.P())};8.C.t=u(t){t=t+"";b X="";b D=0;b c="";b 5="";b y=7.1y()+"";b M=7.1b()+1;b d=7.1Q();b E=7.15();b H=7.1N();b m=7.1G();b s=7.1H();b 19,S,G,1o,1m,p,h,J,L,10,1k,H,1l,K,1j,k;b n=B 2B();3(y.g<4){y=""+(+y+16)}n["y"]=""+y;n["19"]=y;n["S"]=y.T(2,4);n["M"]=M;n["1o"]=8.Q(M);n["G"]=8.1g[M-1];n["1P"]=8.14[M-1];n["d"]=d;n["1m"]=8.Q(d);n["E"]=8.1f[E];n["1r"]=8.1d[E];n["H"]=H;n["1k"]=8.Q(H);3(H==0){n["h"]=12}q 3(H>12){n["h"]=H-12}q{n["h"]=H}n["p"]=8.Q(n["h"]);n["K"]=n["h"]-1;n["k"]=n["H"]+1;n["1l"]=8.Q(n["K"]);n["1j"]=8.Q(n["k"]);3(H>11){n["a"]="1x"}q{n["a"]="1w"}n["m"]=m;n["J"]=8.Q(m);n["s"]=s;n["L"]=8.Q(s);W(D<t.g){c=t.U(D);5="";W((t.U(D)==c)&&(D<t.g)){5+=t.U(D++)}3(1e(n[5])!="1a"){X=X+n[5]}q{X=X+5}}e X};8.C.2P=u(){e 8.1d[7.15()]};8.C.2H=u(){e 8.1f[7.15()]};8.C.2U=u(){e 8.1g[7.1b()]};8.C.2Q=u(){e 8.14[7.1b()]};8.C.1p=u(){7.1O(0);7.1B(0);7.1M(0);7.2S(0);e 7};8.C.1n=u(N,z){3(1e(N)=="1a"||N==f||1e(z)=="1a"||z==f){e 7}z=+z;3(N==\'y\'){7.25(7.1c()+z)}q 3(N==\'M\'){7.22(7.1b()+z)}q 3(N==\'d\'){7.21(7.1Q()+z)}q 3(N==\'w\'){b 17=(z>0)?1:-1;W(z!=0){7.1n(\'d\',17);W(7.15()==0||7.15()==6){7.1n(\'d\',17)}z-=17}}q 3(N==\'h\'){7.1O(7.1N()+z)}q 3(N==\'m\'){7.1B(7.1G()+z)}q 3(N==\'s\'){7.1M(7.1H()+z)}e 7};',62,183,'|||if||token||this|Date|||var|||return|null|length|||||||value|i_val|hh|else|val||format|function|month||||number|year|new|prototype|i_format||date2|MMM||date|mm||ss||interval|getInt|getTime|LZ|Array|yy|substring|charAt|toLowerCase|while|result|names|for|ampm|||false|monthAbbreviations|getDay|1900|step|day_name|yyyy|undefined|getMonth|getFullYear|dayNames|typeof|dayAbbreviations|monthNames|month_name|minlength|kk|HH|KK|dd|add|MM|clearTime|parseString|EE|preferAmericanFormat|dateFirst|checkList|monthFirst|AM|PM|getYear|May|break|setMinutes|maxlength|generalFormats|str|d2|getMinutes|getSeconds|isInteger|d1|59|true|setSeconds|getHours|setHours|NNN|getDate|Dec|Friday|Saturday|Thursday|Wednesday|Sunday|Sun|Tuesday|Monday|Tue|setDate|setMonth|||setFullYear|1234567890|Sat|||Fri|Nov|Wed|Thu|Mon|Oct|June|July|August|September|April|March|VERSION|02|January|February|October|November|Jun|Jul|Aug|Sep|Apr|Mar|December|Jan|Feb|Object|indexOf|isBefore|31|isAfter|equals|getDayAbbreviation|isValid|am|30|400|100|pm|concat|getDayName|getMonthAbbreviation|2000|setMilliseconds|token2|getMonthName|70|equalsIgnoreTime'.split('|'),0,{}))

		// Date/time checking
		// *Requires Date Utility Functions (above)
		function activeByDate(dt_start, dt_end, days) {
		
			if (isNotNull(dt_start) && isNotNull(dt_end) && isNotNull(servertime)) {
				dt_start = new Date(dt_start);
				dt_end   = new Date(dt_end);
			
				if ((servertime >= dt_start) && (servertime <= dt_end)) {
					if (isNotNull(days)) {
						days          = String(days);
						var b_inarray = true;

						if (days.length > 0) {
							b_inarray       = false;
							var a_days      = days.split(","); 
							var s_todayName = servertime.format("EE");
							
							for (var i=0; i < a_days.length; i++) {
								if (s_todayName == a_days[i]) {
									b_inarray = true;
								}
							};
						}
						
						return(b_inarray);
					} else {
						return true;
					}
				} else {
					return false;
				}
			} else {
				return true;
			}
		}
		
		// Check to see if start/end times are within current time
		function activeByTime(tm_start, tm_end) {
			if (isNotNull(tm_start) && isNotNull(tm_end) && isNotNull(servertime)) {
				var datePrefix  = servertime.format("E NNN dd yyyy");
				var dt_start    = datePrefix+" "+tm_start;
				var dt_end      = datePrefix+" "+tm_end;
				
				dt_start = new Date(dt_start);
				dt_end   = new Date(dt_end);
			
				if ((servertime >= dt_start) && (servertime <= dt_end)) {
					return true;
				} else {
					return false;
				}
			} else {
				return true;
			}
		}
		
		// Will inspect a DOM element by ID and look for an attribute with a date
		// Requires prototype
		function expireElementsByTag(containerId, tagName, attrName, hide) {
			var containerObj = $(containerId);
			a_list           = $A(containerObj.getElementsByTagName(tagName));

			a_list.each(function(node) {
				var s_expireAttr = node.getAttribute(attrName);
				
				if (isNotNull(s_expireAttr)) {
					var dt_expire    = new Date(s_expireAttr);
					if (dt_expire < servertime) { 
						if (isNotNull(hide)) {
							Element.hide(node); 
						} else {
							Element.remove(node); 
						}
					}
				}
			});	
		}	
		
		// Will inspect a DOM element by class and look for an attribute with a date
		// Requires prototype
		function expireElementsByClass(containerId, className, attrName, hide) {
			var containerObj = $(containerId);
			a_list           = $A(containerObj.getElementsByClassName(className));

			a_list.each(function(node) {
				var s_expireAttr = node.getAttribute(attrName);
			
				if (isNotNull(s_expireAttr)) {
					var dt_expire    = new Date(s_expireAttr);
					if (dt_expire < servertime) { 
						if (isNotNull(hide)) {
							Element.hide(node); 
						} else {
							Element.remove(node); 
						}
					}
				}
			});	
		}		

                // Looks for 'start' and 'expire' attributes; Hides element if not within dates
                // Both attributes required to work. Failure results in no action taken
		function hideElementsByDateRange(containerId, tagName, action) {
			var containerObj = $(containerId);
			a_list           = $A(containerObj.getElementsByTagName(tagName));
			
			if (!action) { var action = "remove"; }

			a_list.each(function(node) {
				var dt_start  = node.getAttribute("start");
				var dt_expire = node.getAttribute("expire");
				
				if (!isNotNull(dt_start) && isNotNull(dt_expire)) {
					dt_expire    = new Date(dt_expire);
					
					if (dt_expire < servertime) {
						if (action == "hide") { Element.hide(node); } else { Element.remove(node); }
					}
				} else {
					if (!activeByDate(dt_start, dt_expire)) {
						if (action == "hide") { Element.hide(node); } else { Element.remove(node); }
					}
				}
			});				
		}