/*  Cusi JavaScript framework, version 1.2.RC1 *  (c) 2008-2010 David Tyler * *  Cusi is freely distributable under the terms of an MIT-style license. *  For details, see the Cusi web site: http://davidtyler.we.bs/web/cusi * *--------------------------------------------------------------------------*/var Static_Url = 'http://static.'+window.location.hostname+'/';var Window_Url = 'http://'+window.location.hostname+'/';var Images = ['loading.gif', 'ajax-loading.gif', 'close.png', 'close_over.png', 'close_down.png'];function defined(p){ return typeof p == "undefined" ? false : true; }function Goto(u){ document.location.href = u; }function Preload(src, onload){ var i = new Image(); i.src = src; if(defined(onload)) i.onload = onload; return i; }function PreloadImages(){ Images.each(function(i){ Preload('images/'+i); }); }var Console = {	Log: [],	Prompt: function(){ eval(prompt("Custom Evaluation:\r\n")); },	log: function(m){ Console.Log[Console.Log.length] = m; try{ console.log(m); } catch(e){} },	alert: function(m){ Console.log('Alert: '+m); alert(m); },	notice: function(m){ Console.log('Notice: '+m); },	warning: function(m){ Console.log('Warning: '+m); },	error: function(m){ Console.log('Error: '+m); },	critical: function(m){ Console.log('Critical Error: '+m); alert('Opps...Something Didn\'t Load Correctly\n\nError Code: '+m+'\n\nPlease reload the page and try again'); }	};var Browser = {	init: function(){		Browser.Name = Browser.find(Browser.Browsers) || "Unknown Browser";		Browser.Version = Browser.getVersion(navigator.userAgent) || Browser.getVersion(navigator.appVersion) || "Unknown version";		Browser.OS = Browser.find(Browser.OSs) || "Unknown OS";		Browser.Full = Browser.Name+' '+Browser.Version+' on '+Browser.OS;		Browser.IE = (Browser.Name == 'InternetExplorer') ? true : false;		Browser.FF = (Browser.Name == 'Firefox') ? true : false;		Browser.AS = (Browser.Name == 'Safari') ? true : false;		if(!document.getElementById) Console.alert("Warning: This browser is not compatable with current W3C Standards!\n\nPlease Upgrade your browser so that all features of this website will work correctly!");		},	find: function (data){		for (i in data){			var dataString = data[i].string, dataProp = data[i].prop;			Browser.versionSearchString = data[i].versionSearch || i;			Browser.versionAltSearch = data[i].versionAltSearch;			if ((dataString && dataString.indexOf(data[i].subString) != -1) || dataProp){				return i;				}			}		return false;		},	getVersion: function (dataString){		var index = dataString.indexOf(Browser.versionSearchString);		var temp = index+Browser.versionSearchString.length;		if (index == -1 && Browser.versionAltSearch){			index = dataString.indexOf(Browser.versionAltSearch);			temp = index+Browser.versionAltSearch.length;			}		if (index == -1){ return false; }		var r = dataString.substring(temp+1, temp+40), exclude = [';', ' ', '(', ')'];		for(var i = 0; i < exclude.length; i++){			temp = r.indexOf(exclude[i]);			if(temp != -1){ r = r.substring(0, temp); }			}		return r;	},	Browsers: {		Chrome: {			string: navigator.userAgent,			subString: "Chrome"			},		GoogleToolbar: {			string: navigator.userAgent,			subString: "GoogleToolbar",				versionSearch: "GoogleToolbar"			},		AskToolbar: {			string: navigator.userAgent,			subString: "AskBar",			versionSearch: "AskBar"			},		FeedDemon: {			string: navigator.userAgent,			subString: "FeedDemon",			versionSearch: "FeedDemon"			},		BlackBerry: {			string: navigator.userAgent,			subString: "BlackBerry",			versionSearch: "BlackBerr"			},		OmniWeb: {			string: navigator.userAgent,			subString: "OmniWeb",			versionSearch: "OmniWeb/"			},		Safari: {			string: navigator.vendor,			subString: "Apple",			versionSearch: "Version"			},		Safari: {			string: navigator.userAgent,			subString: "Safari",			versionSearch: "Safari"			},		Flock: {			string: navigator.userAgent,			subString: "Flock",			versionSearch: "Flock"			},		Opera: {			prop: window.opera			},		iCab: {			string: navigator.vendor,			subString: "iCab"			},		Konqueror: {			string: navigator.vendor,			subString: "KDE"			},		Firefox: {			string: navigator.userAgent,			subString: "Firefox"			},		Camino: {			string: navigator.vendor,			subString: "Camino"			},		SeaMonkey: {			string: navigator.userAgent,			subString: "SeaMonkey",			versionSearch: "SeaMonkey"			},		Netscape: {			string: navigator.userAgent,			subString: "Netscape"			},		SeaMonkey: {			string: navigator.userAgent,			subString: "Gecko",			versionSearch: "SeaMonkey",			versionAltSearch: "rv"			},		InternetExplorer: {			string: navigator.userAgent,			subString: "MSIE",			versionSearch: "MSIE"			},		Opera: {			string: navigator.userAgent,			subString: "Opera",			versionSearch: "Opera"			},		GoogleBot: {			string: navigator.userAgent,			subString: "Googlebot",			versionSearch: "Googlebot"			},		Netscape: {			string: navigator.userAgent,			subString: "Mozilla",			versionSearch: "Mozilla"			},		MSNSearchBot: {			string: navigator.userAgent,			subString: "msnbot",			versionSearch: "msnbot"			}		},	OSs: {		Windows: {			string: navigator.platform,			subString: "Win"			},		Windows: {			string: navigator.userAgent,			subString: "Windows"			},		Mac: {			string: navigator.platform,			subString: "Mac"			},		MacOSX: {			string: navigator.userAgent,			subString: "Mac OS X"			},		BlackBerry: {			string: navigator.userAgent,			subString: "BlackBerry"			},		iPhone: {			string: navigator.userAgent,			subString: "iPhone"			},		Linux: {			string: navigator.platform,			subString: "Linux"			}		},	display: function(){		Console.alert('You are using\n'+Browser.Full+'\n\nBrowser Stats:\nappName\t\t\t'+navigator.appName+'\nappVersion\t\t'+navigator.appVersion+'\nappMinorVersion\t'+navigator.appMinorVersion+'\nproduct\t\t\t'+navigator.product+'\nproductSub\t\t'+navigator.productSub+'\nuserAgent\t\t'+navigator.userAgent+'\nvendor\t\t'+navigator.vendor+'\nvendorSub\t\t'+navigator.vendorSub+'\nplatform\t\t\t'+navigator.platform);		}	};var KeyPress = {	event: [],	init: function(k, fn){		document.observe('keydown', KeyPress.catchKey);		this.event[k] = fn;		},	getCode: function(e){ 		return e.keyCode || e.which || 0;		},	getKey: function(code){		switch (code){			case 3: return "Fn + Break";			case 8: return "Backspace";			case 9: return "Tab";			case 13: return "Enter";			case 16: return "Shift";			case 17: return "Ctrl";			case 18: return "Alt";			case 19: return "Break";			case 20: return "Caps Lock";			case 27: return "Escape";			case 32: return "Space Bar";			case 33: return "Page Up";			case 34: return "Page Down";			case 35: return "End";			case 36: return "Home";			case 37: return "Left Arrow";			case 38: return "Up Arrow";			case 39: return "Right Arrow";			case 40: return "Down Arrow";			case 45: return "Insert";			case 46: return "Delete";			case 48: return "0";			case 49: return "1";			case 50: return "2";			case 51: return "3";			case 52: return "4";			case 53: return "5";			case 54: return "6";			case 55: return "7";			case 56: return "8";			case 57: return "9";			case 59: return "Semi-Colon";			case 65: return "A";			case 66: return "B";			case 67: return "C";			case 68: return "D";			case 69: return "E";			case 70: return "F";			case 71: return "G";			case 72: return "H";			case 73: return "I";			case 74: return "J";			case 75: return "K";			case 76: return "L";			case 77: return "M";			case 78: return "N";			case 79: return "O";			case 80: return "P";			case 81: return "Q";			case 82: return "R";			case 83: return "S";			case 84: return "T";			case 85: return "U";			case 86: return "V";			case 87: return "W";			case 88: return "X";			case 89: return "Y";			case 90: return "Z";			case 91: return "Windows Key";			case 93: return "Right Click";			case 107: return "Equals Sign";			case 109: return "Minus Sign";			case 112: return "F1";			case 113: return "F2";			case 114: return "F3";			case 115: return "F4";			case 116: return "F5";			case 117: return "F6";			case 118: return "F7";			case 119: return "F8";			case 120: return "F9";			case 121: return "F10";			case 122: return "F11";			case 123: return "F12";			case 144: return "Num Lock";			case 145: return "Fn Lock";			case 188: return "Comma";			case 190: return "Period";			case 191: return "Forward Slash";			case 192: return "Tilde";			case 219: return "Left Bracket";			case 220: return "Back Slash";			case 221: return "Right Bracket";			case 222: return "Single Quotation";			default : return "an undefined key";			}		},	catchKey: function(evt){		var code = KeyPress.getCode(evt);		var key = KeyPress.getKey(code);		if(defined(KeyPress.event[code])) eval(KeyPress.event[code]);		if(defined(KeyPress.event[key])) eval(KeyPress.event[key]);		if(defined(KeyPress.event['all'])){			if(KeyPress.event['all'] == 'default'){				Console.notice('You pressed ' + key + ' (Key #' + code + ')');				}			else{				eval(KeyPress.event['all']);				}			}		}	};var Lightbox = {	init: function(){		$$('body')[0].insert({ after: '<div id="LightBox_Overlay"></div><div id="LightBox"><div id="LightBox_Container"><img id="LightBox_Image"><div id="LightBox_Links"><a id="LightBox_PrevLink" onclick="Lightbox.Previous();"></a><a id="LightBox_NextLink"></a></div><div id="LightBox_Loading"><a><img src="images/loading.gif"></a></div><div id="LightBox_BottomBar"><div id="LightBox_Text"></div><div id="LightBox_Close"><a><img src="images/closelabel.gif"></a></div></div></div></div>' });		Lightbox.Lightbox		= $('LightBox').hide();		Lightbox.Overlay		= $('LightBox_Overlay').hide().observe('click', Lightbox.end);		Lightbox.Container		= $('LightBox_Container');		Lightbox.Image			= $('LightBox_Image');		Lightbox.Loading		= $('LightBox_Loading').observe('click', Lightbox.end);		Lightbox.PrevLink		= $('LightBox_PrevLink');		Lightbox.NextLink		= $('LightBox_NextLink').observe('click', Lightbox.Next);		Lightbox.Text			= $('LightBox_Text');		Lightbox.Close			= $('LightBox_Close').observe('click', Lightbox.end);		Lightbox.Status			= 0;		Lightbox.update();		},	update: function(){		$$('a[target="lightbox"]').each(function(E, N){			Console.log('New Lightbox on '+E.id);			E.stopObserving('click');			E.observe('click', Lightbox.Activate);			});		},	Activate: function(event){		E = event.findElement('a');		Console.log('Activating Lightbox on '+E.id);		if(Lightbox.Status != 0) return;		//Popup.FixIe();		Lightbox.Status = 1;		KeyPress.event['Escape'] = 'Lightbox.end();';		KeyPress.event['P'] = 'Lightbox.Previous();';		KeyPress.event['Left Arrow'] = 'Lightbox.Previous();';		KeyPress.event['N'] = 'Lightbox.Next();';		KeyPress.event['Right Arrow'] = 'Lightbox.Next();';		Lightbox.Overlay.setStyle({ width: document.body.getWidth()+'px', height: document.body.getHeight()+'px'}).appear({ to: 0.7 });		Lightbox.Lightbox.setStyle({ top: (document.viewport.getScrollOffsets().top+(document.viewport.getHeight()/10)+'px'), left: document.viewport.getScrollOffsets().left+'px'}).appear();		Lightbox.ActiveSet = [];		if(E.getAttribute('group')){ Lightbox.ActiveSet = $$('[group='+E.getAttribute('group')+']'); }		else{ Lightbox.ActiveSet[0] = E; }		Lightbox.change(E);		event.stop();		return false;		},	Previous: function(){		Lightbox.change(Lightbox.ActiveSet[Lightbox.Prev]);		},	Next: function(){		Lightbox.change(Lightbox.ActiveSet[Lightbox.Next]);		},	change: function(E){		Lightbox.Status = 1;		Lightbox.Image.hide();		Lightbox.PrevLink.hide();		Lightbox.NextLink.hide();		Lightbox.Loading.show();		var N = Lightbox.ActiveImageIndex = Lightbox.ActiveSet.indexOf(E);		Lightbox.Next = (defined(Lightbox.ActiveSet[N+1])) ? (N+1) : 0;		Lightbox.Prev = (defined(Lightbox.ActiveSet[N-1])) ? (N-1) : (Lightbox.ActiveSet.length-1); 		Lightbox.Text.innerHTML = '';		Lightbox.ActiveImage = E;		Lightbox.Image.width = '';		Lightbox.Image.width = '';		Preload(Lightbox.ActiveSet[Lightbox.Next], function(){ Lightbox.resize(E); });		},	resize: function(E){		Lightbox.Image.src = E.href;		var newImg = new Image();		newImg.src = Lightbox.Image.src;		var imgHeight = newImg.height;		var imgWidth = newImg.width;		if(imgWidth == 0 || imgHeight == 0) return Lightbox.resize.delay(0.2, E);		var screenWidth = document.viewport.getWidth() - 50;		var screenHeight = document.viewport.getHeight() - 150;		var widthRatio = (imgWidth / screenWidth);		var heightRatio = (imgHeight / screenHeight);		if (widthRatio > 1 || heightRatio > 1){			if(widthRatio > heightRatio){				Lightbox.Image.style.width = screenWidth + "px";				imgWidth = screenWidth;				Lightbox.Image.style.height = (imgHeight / widthRatio) + "px";				imgHeight = (imgHeight / widthRatio);				}			else if(heightRatio > widthRatio){				Lightbox.Image.style.height = screenHeight + "px";				imgHeight = screenHeight;				Lightbox.Image.style.width = (imgWidth / heightRatio) + "px";				imgWidth = (imgWidth / heightRatio);				}			else {				Lightbox.Image.style.height = screenHeight + "px";				imgHeight = screenHeight;				Lightbox.Image.style.width = screenWidth + "px";				imgWidth = screenWidth;				}			}		Lightbox.Container.morph('height:'+(imgHeight+30)+'px; width:'+(imgWidth+20)+'px;');		Lightbox.showImage.delay(1, Lightbox.Container.getHeight());		},	showImage: function(Height){		Lightbox.Loading.hide();		Lightbox.Image.appear();		Lightbox.Text.innerHTML = 'Image '+(Lightbox.ActiveImageIndex+1)+' of '+Lightbox.ActiveSet.length;		Lightbox.NextLink.setStyle({ height: Height+'px' }).show();		Preload(Lightbox.ActiveSet[Lightbox.Next]);		Lightbox.PrevLink.setStyle({ height: Height+'px' }).show();		Preload(Lightbox.ActiveSet[Lightbox.Prev]);		Lightbox.Status = 2;		},	end: function(){		if(Lightbox.Status != 2) return;		Lightbox.Status = 0;		Lightbox.Overlay.fade();		Lightbox.Lightbox.fade();		(function(){			Lightbox.Container.setStyle({ width: '250px', height: '250px' });			Lightbox.Status = 'standby';			//Popup.UnFixIe();			}).delay(1);		},	prep: function(donor, child){		var props = ['group', 'target', 'href', 'name'];		for(var i = 0; i < props.length; i++){			if(donor.getAttribute(props[i])){				child.setAttribute(props[i], donor.getAttribute(props[i]));				}			}		return child;		}	};var eLogin = {	edline_url: "https://www.edline.net/pages/Reading_HS/Activities-Clubs-Programs/RMHS_Drama_Club/website",	onlogin: "members.php",	out: function(m){		$('login_result').innerHTML = m;		},	init: function(onlogin){		Console.log('eLogin.init');		if(defined(onlogin)) eLogin.onlogin = onlogin;		var user = $('user_input').value;		var pass = $('pass_input').value;		if(user == ''){			Console.alert('Please enter your username to login');			}		else if(pass == ''){			Console.alert('Please enter your password to login');			}		else{			eLogin.out('Logging In <img width="15px" height="15px" src="images/ajax-loading.gif">');			new Ajax.Request('login.php?server',{				method: 'post',				parameters: 'user='+user+'&pass='+pass,				onSuccess: function(response){ eLogin.init_server(response); },				onFailure: function(response){ eLogin.failed('srvr_timeout', response); }				});			}		return false;		},	init_server: function(response){		Console.log('eLogin.init_server');		if(response.responseText == '0'){			eLogin.edline_process = true;			eLogin.edline_init();			}		else if(response.responseText == '1'){			Goto(eLogin.onlogin);			eLogin.out("<a href=\""+eLogin.onlogin+"\">Redirecting...</a>");			}		else if(response.responseText == '2'){			eLogin.failed('client_config');			}		else{			eLogin.failed('srvr_code', response.responseText);			}		},	edline_init: function(){		if(eLogin.edline_process == true){			Console.log('eLogin.edline_init');			eLogin.edline_popupchange("login.php?edline&user="+$('user_input').value+"&pass="+$('pass_input').value);			eLogin.edline_login.delay(1, 1);			}		},	edline_popup: null,	edline_popupchange: function(url){		try{			eLogin.edline_popup.window.location = url;			}		catch(e){ Console.log('eLogin.edline_popupchange: '+e);			try{				eLogin.edline_popup = window.open(url, "edLogWin", "location=0, status=0, scrollbars=0, width=1, height=1");				window.focus();				eLogin.edline_popuptest();				}			catch(f){ Console.log('eLogin.edline_popupchange: '+f); }			}		},	edline_popupclose: function(){		try{			eLogin.edline_popup.close();			}		catch(e){ Console.log('eLogin.edline_popupclose failed: '+e); }		},	edline_popuptest: function(){		if (eLogin.edline_popup && eLogin.edline_popup.top) return true;		eLogin.failed('popup');		return false;		},	edline_repeat: function(repeat){		if(eLogin.edline_process == true){			Console.log('eLogin.edline_repeat');			repeat++;			if(repeat == 5){				eLogin.edline_popupclose();				eLogin.failed('edline');				}			else{				eLogin.edline_popupchange("login.php?edline&user="+$('user_input').value+"&pass="+$('pass_input').value);				eLogin.edline_login.delay(1, repeat);				}			}		},	edline_login: function(repeat){		Console.log('eLogin.edline_login');		eLogin.edline_popupchange(eLogin.edline_url);		eLogin.edline_popuptest();		eLogin.edline_reciever.delay(1, 0, repeat);		},	edline_reciever: function(counter, repeat){		Console.log('eLogin.edline_reciever');		try{			if(eLogin.edline_popuptest() == false) return false;			try{				var loc = eLogin.edline_popup.window.title;				eLogin.edline_success();				}			catch(e){ Console.log(e);				if(counter == 6){					eLogin.edline_repeat(repeat);					}				else{					counter++;					eLogin.edline_reciever.delay(0.5, counter, repeat);					}				}			}		catch(e){ Console.log(e);			if(counter == 6){				eLogin.edline_repeat(repeat);				}			else{				counter++;				eLogin.edline_reciever.delay(0.5, counter, repeat);				}			}		return true;		},	edline_success: function(){		Console.log('eLogin.edline_success');		var d = new Date(), auth = d.getTime();		try{			var loc = eLogin.edline_popup.location;			loc = loc.toString().split("&authcode=")[1].split("&user=");			var auth2 = loc[0], user = loc[1];			for(var i = 0; i < user.length; i++){				if(user.charCodeAt(i) == 160){					user = user.replaceAt(i, ' ');					}				}			user = user.strip().unescapeHTML().gsub("Â", "").gsub(' ', "+").gsub(/&nbsp;/, "+");			}		catch(e){ Console.log('eLogin.edline: '+e);			try{				var loc = eLogin.edline_popup.location;				loc = loc.toString().split("&authcode=");				var auth2 = loc[1];				var user = '';				}			catch(e){ edline_failed('edline'); return false; }			}		auth2 = auth2*1;		if((auth - auth2) > 10000){			eLogin.failed('edline_auth');			eLogin.edline_popupclose();			}		else{			new Ajax.Request('login.php?server',{				method: 'post',				parameters: 'update_auth='+auth2+'&user='+$('user_input').value+'&pass='+$('pass_input').value+'&name='+user,				onSuccess: function(response){ Goto(eLogin.onlogin); },				onFailure: function(response){ eLogin.failed('srvr_update', response); }				});			eLogin.edline_popupclose();			}		},	failed: function(code){		if(eLogin.edline_process == true){			eLogin.edline_process = false;			if(code == 'srvr_code'){				Console.error('eLogin.Server: Invalid Server Responce: '+arguments[1]);				}			else if(code == 'client_config'){				Console.error('eLogin.Server: Invalid Client Config');				}			else if(code == 'srvr_timeout'){				Console.error('eLogin.Server: No Server Responce Recieved (Timeout)');				}			else if(code == 'timeout'){				Console.error('eLogin.init: Took >60 seconds to login. Something went wrong');				}			else if(code == 'edline_auth'){				Console.error('eLogin.Edline: Authorization Code Invalid!');				}			else if(code == 'edline'){				Console.error('eLogin.Edline: Invalid Username or Password');				}			else if(code == 'popup'){				Console.alert('The edline login popup did not open correctly. Please disable all popup blockers and try again');				Console.error('eLogin.Edline: Popup Blocked');				}			eLogin.out("Login Failed!<br />Please Try Again<br /><br />["+code+"]");			}		}	};var Countdown = {	X: [],	addCommas: function(n){		n += '';		a = n.split('.');		b = a[0];		var c = /(\d+)(\d{3})/;		while (c.test(b)){			b = b.replace(c, '$1' + ',' + '$2');			}		return b + (a.length > 1 ? '.' + a[1] : '');		},	attach: function(i,y,m,d,h,n,s){		x = Countdown.X.length;		Countdown.X[x] = new function(){			this.i = i;			this.y = y;			this.m = m;			this.d = d;			this.h = h;			this.n = n;			this.s = s;			};		Countdown.update(x);		return Countdown.addCommas(x);		},	getTime: function(x){		var X = Countdown.X[x], t = new Date(), l = new Date(), ts = '', ls = '';		t.setFullYear(t.getFullYear(),t.getMonth(),t.getDate());		t.setHours(t.getHours(),t.getMinutes(),t.getSeconds(),0);		ts = t.getTime();		l.setFullYear(X.y, X.m, X.d);		l.setHours(X.h, X.n, X.s, 0);		ls = l.getTime();		return ((ls-ts)/1000)*1;		},	update: function(x){		setTimeout(function(){ Countdown.update(x); }, 200);		var s = Countdown.getTime(x);		if(s < 1){ $(Countdown.X[x].i).parentNode.innerHTML = 'The Countdown is Over!'; }		else if($(Countdown.X[x].i)) $(Countdown.X[x].i).innerHTML = Countdown.addCommas(s);		}	};var Update = {	Form: function(form, identifer, encode, notify, base, onload){		if(!defined(notify)){ notify = true; }		if(!defined(base)){ base = 'edit.php?update&'; }		form = $(form);		WYSIWYG.updateAll();		Forms.updateAll(form);		if(Forms.Validate.init(form) == false) return false;		var elements = form.getElementsByTagName('*'), params = '';		for(var i = 0; i < elements.length; i++){			if((elements[i].tagName.toLowerCase() == 'input' || elements[i].tagName.toLowerCase() == 'select' || elements[i].tagName.toLowerCase() == 'textarea') && elements[i].id.indexOf('rdform') != -1){				if(elements[i].type == 'checkbox'){					params += '&'+elements[i].id+'=';					params += (elements[i].checked) ? 'on':'off';					}				else{					params += '&'+elements[i].id+'='					if(defined(encode) && encode != false) params += elements[i].value.encodify();					else params += elements[i].value;					}				}			}		Popup.Note('Saving Information...Please Wait');		new Ajax.Request(base+identifer, {			parameters: params,			onSuccess: function(response){				Popup.Note(response.responseText);				Update.Parent();				if(response.responseText.toLowerCase().indexOf("success") != -1){					Popup.Frame_close.delay(1);					Popup.Note_close.delay(1);					}				else{					Popup.Note_close.delay(5);					}				},			onFailure: function(response){				Popup.Note('Failed to connect to rmhsdrama.com. Please check your internet connection and try again.');				Popup.Note_close.delay(5);				}			});		return false;		},	Parent: function(override){		var doneone = false;		$$('.options').each(function(el){			el.hide();			});		parent.window.document.getElementsByTagName('body')[0].select('[dynamic]').each(function(el){			if(defined(override)){				el.update('{Dynamic Content}');				}			else{				new Ajax.Updater(el, el.readAttribute('dynamic'));				}			});		}	};var Popup = {	FixIe: function(){		if ($$('.generic_popup').length == 0 || Lightbox.Status == 'standby'){			$$('select','object','embed').each(function(i){ i.writeAttribute('wasthere', 'true'); i.vshow(); });			}		},	UnFixIe: function(){		if ($$('.generic_popup').length == 0 || Lightbox.Status == 'standby'){			$$('select','object','embed').each(function(i){ if(i.hasAttribute('wasthere')){ i.vshow(); } });			}		},	Help: function(title, text){		return '<a onclick="Popup.Info(\''+title+'\',\''+text+'\');" title="Help"><img src="images/help.png"></a>';		},	Generic: function(type, content, width, height, order, noclose){		if($('popup_'+type+'_content')){			$('popup_'+type+'_content').innerHTML = content;			return true;			}		if(!defined(height)) height = 'auto';		if(!defined(width)) width = 'auto';		var body = $$('body')[0];		var popup = parent.document.createElement('div');		var overlay = parent.document.createElement('div');		var noclosecode = (!defined(noclose)) ? '<div class="generic_popup_top_bar" align="right" style="position: absolute; width: 100%;"><img onclick="Popup.Close(\''+type+'\');" src="images/close.png" onmouseover="this.src=\'images/close_over.png\'" onmouseout="this.src=\'images/close.png\'" onmousedown="this.src=\'images/close_down.png\'" onmouseup="this.src=\'images/close.png\'" /></div>' : '';		popup.innerHTML = '<div class="generic_popup_container" align="center" style="position: relative; width: '+width+'; margin: 0 auto; border: 10px solid #555555;">'+noclosecode+'<div id="popup_'+type+'_content" align="center" style="overflow-y: auto; height: '+height+'; width: '+width+'; color: #000000;">' + content + '</div></div>';		popup.id = 'popup_'+type;		popup.style.top = document.viewport.getScrollOffsets()[1] + (document.viewport.getHeight() / 10) + 'px';		popup.style.left = document.viewport.getScrollOffsets()[0] + 'px';		popup.style.position = 'absolute';		popup.style.width = '100%';		popup.style.zIndex = order;		popup.style.textAlign = 'center';		popup.style.display = 'none';		popup.className = 'generic_popup';		overlay.id = 'popup_'+type+'_over';		overlay.style.width = '100%';		overlay.style.height = document.viewport.getHeight()+'px';		overlay.style.display = 'none';		overlay.style.position = 'absolute';		overlay.style.top = '0';		overlay.style.left = '0';		overlay.style.zIndex = (order - 1);		overlay.style.backgroundColor = '#000000';		body.appendChild(overlay);		body.appendChild(popup);		// Lightbox Init?		Popup.FixIe();		popup.appear();		overlay.appear({to:0.7});		return false;		},	Close: function(type){		try{			$('popup_'+type).remove();			$('popup_'+type+'_over').remove();			Popup.UnFixIe();			}		catch(e){ Console.log('Popup.close: '+e); }		},	Frame: function(url){		return Popup.Generic('frame', '<iframe frameborder="0" width="700" height="450" src="'+url+'"></iframe>', '700px', '450px', '1000');				},	Frame_close: function(){ // Backwards Compatability		Popup.Close('frame');		},	Error: function(code, page){		return Popup.Generic('error', '<iframe frameborder="0" width="300" height="250" src="error.php?error_code='+code+'&caused_by='+page+'"></iframe>', '300px', '250px', '1200');		},	Info: function(title, text){		return Popup.Generic('info', '<div style="background-color: #44588F; color: #FFFFFF;"><div class="pageTitle">'+title+'</div><div class="text" align="left" style="padding: 10px">'+text+'</div></div>', '500px', '', '1400');		},	Note: function(message){		return Popup.Generic('note', '<div width="100%" align="center" valign="middle" style="background-color: #447744; color: #DDDDDD; valign:center; padding: 15px;">'+message+'</div>', '200px', '', '1500', true);		},	Note_close: function(){ // Backwards Compatability		Popup.Close('note');		}	};var WYSIWYG = {	init: function(){		$$('[editor=wysiwyg]').each(function(e, i){ WYSIWYG.dattach(i, e); });		},	X: [],	ToolbarList: {		"bold": 		['Bold', 'Bold', 'bold.gif'],		"italic": 		['Italic', 'Italic', 'italics.gif'],		"underline": 	['Underline', 'Underline', 'underline.gif'],		"strikethrough":['Strikethrough', 'Strikethrough', 'strikethrough.gif'],		"seperator": 	['', '', 'seperator.gif'],		"subscript": 	['Subscript', 'Subscript', 'subscript.gif'],		"superscript": 	['Superscript', 'Superscript', 'superscript.gif'],		"justifyleft": 	['Justifyleft', 'Align Left', 'justify_left.gif'],		"justifycenter":['Justifycenter', 'Align Center', 'justify_center.gif'],		"justifyright":	['Justifyright', 'Align Right', 'justify_right.gif'],		"justifyfull":	['Justifyfull', 'Align Justify', 'justify_justify.gif'],		"unorderedlist":['InsertUnorderedList', 'Insert Unordered List','list_unordered.gif'],		"orderedlist":	['InsertOrderedList', 'Insert Ordered List', 'list_ordered.gif'],		"outdent":		['Outdent', 'Outdent', 'indent_left.gif'],		"indent":		['Indent', 'Indent', 'indent_right.gif'],		"cut":			['Cut', 'Cut', 'cut.gif'],		"copy":			['Copy', 'Copy', 'copy.gif'],		"paste":		['Paste', 'Paste', 'paste.gif'],		"forecolor":	['ForeColor', 'Fore Color', 'forecolor.gif'],		"backcolor":	['BackColor', 'Back Color', 'backcolor.gif'],		"undo":			['Undo', 'Undo', 'undo.gif'],		"redo":			['Redo', 'Redo', 'redo.gif'],		"inserttable":	['InsertTable', 'Insert Table', 'insert_table.gif'],		"insertimage":	['InsertImage', 'Insert Image', 'insert_picture.gif'],		"insertlink":	['InsertLink', 'Insert Hyperlink', 'insert_hyperlink.gif'],		"viewSource":	['ViewSource', 'View Source', 'view_source.gif'],		"viewText":		['ViewText', 'View Text', 'view_text.gif'],		"fonts":		['Fonts', 'Select Font', 'select_font.gif'],		"fontsizes":	['Fontsizes', 'Select Size', 'select_size.gif'],		"headings":		['Headings', 'Select Size', 'select_heading.gif'],		"preview":		['Preview', 'Preview', 'preview.gif'],		"print":		['Print', 'Print', 'print.gif'],		"removeformat":	['RemoveFormat', 'Clean Up HTML', 'remove_format.gif'],		"delete": 		['Delete', 'Delete', 'delete.gif'],		"save": 		['Save', 'Save document', 'save.gif'],		"return": 		['Return', 'Return without saving', 'return.gif']		},	getRange: function(sel){		return sel.createRange ? sel.createRange() : sel.getRangeAt(0);		if(Browser.IE){			if(sel.type == "Control" && range.length == 1){				var newrange = element.parentTextEdit.createTextRange();				newrange.moveToElementText(range(0));				newrange.select();				}			}		return newrange;		},	getEditor: function(n){		return $("wysiwyg"+n);		},	getEditorWindow: function(n){		return WYSIWYG.getEditor(n).contentWindow;		},	dattach: function(n, e, s){		WYSIWYG.attach.delay(0, n, e, s);		},	attach: function(n, element, settings){		Console.log('Attaching WYSIWYG');		WYSIWYG.X[n] = new function(){			this.Element = element;			this.TimerID = 0;			this.Width = "500px";			this.Height = "250px";			this.AnchorPathToStrip = "auto";			this.ImagePathToStrip = "auto";			this.Opener = "";			this.ImagePopupFile = "";			this.ImagePopupWidth = 0;			this.ImagePopupHeight = 0;			this.Toolbar = new Array();			this.DropDowns = new Array();			this.Toolbar[0] = new Array("font", "fontsize", "bold", "italic", "underline", "strikethrough", "seperator", "forecolor", "backcolor", "seperator", "justifyleft", "justifycenter", "justifyright", "justifyfull", "seperator", "unorderedlist", "orderedlist", "outdent", "indent");			this.Toolbar[1] = new Array("subscript", "superscript", "seperator", "delete", "cut", "copy", "paste", "seperator", "undo", "redo", "seperator", "inserttable", "insertimage", "insertlink", "seperator", "preview", "print", "seperator", "viewSource");			this.DropDowns['font'] = {				id: "fonts",				command: "FontName",				label: '<font style="font-family:{value};font-size:12px;">{value}</font>',				width: "90px",				elements: new Array("Arial", "Sans Serif", "Tahoma", "Verdana", "Courier New", "Georgia", "Times New Roman", "Impact", "Comic Sans MS")				};			this.DropDowns['fontsize'] = {				id: "fontsizes",				command: "FontSize",				label: '<font size="{value}">Size {value}</font>',				width: "54px",				elements: new Array("1", "2", "3", "4", "5", "6", "7")				};			this.DropDowns['headings'] = {				id: "headings",				command: "FormatBlock",				label: "<{value} style=\"margin:0px; text-decoration: none;font-family:Arial\">{value}</{value}>",				width: "74px",				elements: new Array("H1","H2","H3","H4","H5","H6")				};			};		WYSIWYG.X[n] = Object.extend(WYSIWYG.X[n], settings || { });		var textarea = WYSIWYG.X[n].Element;		if(textarea == null){			Console.error('WYSIWYG.attach: Textarea '+textarea.id+' does not exist');			return;			}		if (Browser.AS || !$ || !document.designMode){			Console.alert(Browser.Full+' does not support this editor. Please upgrade or switch your browser, then try again.');			return false;			}		textarea.style.display = 'none';		textarea.setAttribute('wysiwyg', n);		if(textarea.style.width){ WYSIWYG.X[n].Width = textarea.style.width; }		if(textarea.style.height){ WYSIWYG.X[n].Height = textarea.style.height; }		var currentWidth = WYSIWYG.X[n].Width;		var currentHeight = WYSIWYG.X[n].Height;		var toolbarWidth = currentWidth;		var ifrmWidth = "100%";		var	ifrmHeight = "100%";		if(currentWidth.search(/%/) == -1){			toolbarWidth = currentWidth.replace(/px/gi, "");			toolbarWidth = (parseFloat(toolbarWidth) + 2) + "px";			ifrmWidth = currentWidth;			ifrmHeight = currentHeight;			}		var editor = '<div id="wysiwyg_'+n+'_div" style="width:'+currentWidth+';"><table border="0" cellpadding="0" cellspacing="0" class="wysiwyg_tableTextareaEditor" id="wysiwyg_'+n+'_table" style="width:'+currentWidth+';height:'+currentHeight+';"><tr id="toolbars-bar"><td style="height:22px; vertical-align:top;">';		for (var i=0; i < WYSIWYG.X[n].Toolbar.length; i++){			var toolbar = WYSIWYG.X[n].Toolbar[i];			editor += '<table border="0" cellpadding="0" cellspacing="0" class="wysiwyg_toolbar" style="width:100%;" id="wysiwyg_'+n+'_toolbar_' + i + '"><tr><td style="width:6px;"><img src="' + "images/" + 'seperator2.gif" alt="" hspace="3"></td>';			for (var j = 0; j < toolbar.length; j++){				var id = toolbar[j];				var Button = true;				if(WYSIWYG.X[n].DropDowns[id]){					Button = false;					var dropdown = WYSIWYG.X[n].DropDowns[id];					id = dropdown.id;					}				var Obj = WYSIWYG.ToolbarList[id];				var ButtonID = Obj[0];				var ButtonTitle = Obj[1];				var ButtonImage = "images/" + Obj[2];				var ButtonOver = ButtonImage.gsub('.gif', '_on.gif');				var ButtonPop = 'wysiwyg_' + n + '_' + ButtonID + 'Pop';				Preload(ButtonOver);				if (Button == false){					editor += '<td style="width: '+dropdown.width+';"><img onmouseover="this.src=\''+ButtonOver+'\';" onmouseout="this.src=\''+ButtonImage+'\';" src="' + ButtonImage + '" height="20" onclick="WYSIWYG.openDropDown(\''+n+'\',\''+id+'\');" unselectable="on" border="0"><span id="wysiwyg_'+n+'_'+id+'" class="wysiwyg_dropdown" style="width: 145px; display: none; position:absolute; ">';					dropdown.elements.sort();					for (var k = 0; k < dropdown.elements.length; k++){						var value = dropdown.elements[k];						var label = dropdown.label.replace(/{value}/gi, value);						editor += '<div onclick="WYSIWYG.execute(\''+n+'\',\''+dropdown.command+'\',\''+value+'\')\;" class="wysiwyg_dropdown_option" style="width: 120px;">'+label+'</div>';						}					editor += '</span></td>';					}				else if (id == "seperator"){					editor += '<td style="width: 12px;" align="center"><img src="' + ButtonImage + '" border=0 unselectable="on" width="2" height="18" hspace="2" unselectable="on"></td>';					}				else if (id == "viewSource"){					editor += '<td style="width: 22px;"><span id="HTMLMode' + n + '"><img src="' + ButtonImage + '" border="0" unselectable="on" title="' + ButtonTitle + '" id="' + ButtonID + '" class="wywiwyg_button" onmouseover="this.src=\'' + ButtonOver + '\';" onmouseout="this.src=\'' + ButtonImage + '\';" onclick="WYSIWYG.execute(\'' + n + '\', \'' + ButtonID + '\');" unselectable="on" width="20" height="20"></span><span id="textMode' + n + '" style="display: none;"><img src="' + "images/" + 'view_text.gif" border="0" unselectable="on" title="viewText" id="ViewText" class="wywiwyg_button" onmouseover="this.src=\'' + "images/" + 'view_text_on.gif\';" onmouseout="this.src=\'' + "images/" + 'view_text.gif\';" onclick="WYSIWYG.execute(\'' + n + '\',\'ViewText\');" unselectable="on" width="20" height="20"></td>';					}				else {					var onclick = 'WYSIWYG.execute(\''+n+'\', \''+ButtonID+'\');';					var onmouseover = '';					var onmouseout = '';					var content = '';					if (id == "forecolor" || id == "backcolor"){						onclick = 'WYSIWYG.pop_hide_others(\''+ButtonPop+'\');';						onclick += '$(\''+ButtonPop+'\').toggle();';						onclick += 'WYSIWYG.pop_preview_color(\''+n+'\', \''+ButtonID+'\', \'current\');';						content = '<span style=\"position:absolute\"><div style="z-index: 10000; width:210px" align="left" id="'+ButtonPop+'" class="wysiwyg_popup">' + WYSIWYG.pop_insertColorCode(n, ButtonID) + '</div></span>';						}					else if (id == "inserttable"){						onclick = 'WYSIWYG.pop_hide_others(\''+ButtonPop+'\');';						onclick += '$(\''+ButtonPop+'\').toggle();';						content = '<span style=\"position:absolute\"><div style="z-index: 10000; width:410px" align="left" id="'+ButtonPop+'" class="wysiwyg_popup">'+WYSIWYG.pop_insertTableCode(n)+'</div></span>';						}					else if (id == "insertimage"){						onclick = 'WYSIWYG.pop_hide_others(\''+ButtonPop+'\');';						onclick += '$(\''+ButtonPop+'\').toggle();';						onclick += 'WYSIWYG.pop_loadImage(\''+n+'\');';						content = '<span style=\"position:absolute\"><div style="z-index: 10000; width:410px" align="left" id="'+ButtonPop+'" class="wysiwyg_popup">'+WYSIWYG.pop_insertImageCode(n)+'</div></span>';						}					else if (id == "insertlink"){						onclick = 'WYSIWYG.pop_hide_others(\''+ButtonPop+'\');';						onclick += '$(\''+ButtonPop+'\').toggle();';						onclick += 'WYSIWYG.pop_loadLink(\''+n+'\');';						content = '<span style=\"position:absolute\"><div style="z-index: 10000; width:410px" align="left" id="'+ButtonPop+'" class="wysiwyg_popup">'+WYSIWYG.pop_insertLinkCode(n)+'</div></span>';						}					editor += '<td style="width: 22px;"><img src="'+ButtonImage+'" border=0 unselectable="on" width="20" height="20" title="'+ButtonTitle+'" id="'+ButtonID+'" class="wywiwyg_button" onmouseover="'+onmouseover+' this.src=\''+ButtonOver+'\';" onclick="'+onclick+'" onmouseout="'+onmouseout+' this.src=\''+ButtonImage+'\';">'+content+'</td>';					}				}			editor += '<td>&nbsp;</td></tr></table>';			}		editor += '</td></tr><tr id="wysiwyg_edit_box"><td valign="top"><iframe frameborder="0" id="wysiwyg' + n + '" class="wysiwyg_iframeText" style="width:100%;height:' + currentHeight + ';"></iframe></td></tr><tr><td class="wysiwyg_statusbar" style="height:10px;" id="wysiwyg_'+n+'_statusbar">&nbsp;</td></tr></table></div>';		textarea.insert({after: editor});		WYSIWYG.X[n].viewTextMode = false;		var content = textarea.value;		// Note: Prototype doesn't like this iFrame stuff.		// Use Generic rather than Inference methods		var D = WYSIWYG.getEditorWindow(n).document;		D.open();		D.write(content);		D.close();		if (D.body.contentEditable) D.body.contentEditable = true;		else D.designMode = "on";		WYSIWYG.Highlight.enable(n);		Event.observe(D, 'mouseover', function(){			try{				WYSIWYG.closeDropDowns(n);				WYSIWYG.Timer.Start(n);				}			catch(e){}			});		$$('.wysiwyg_'+n+'_pop').each(function(x){			x.observe('mouseover', function(){				try{					WYSIWYG.Timer.Cancel(n);					}				catch(e){}				});			});		Event.observe(D, "mouseup", function(){			WYSIWYG.updateStatusBar(n);			});		//WYSIWYG.ContextMenu.init(n);		},	Timer: {		Start: function(n){			try{ clearTimeout(WYSIWYG.X[n].TimerID); }			catch(e){}			WYSIWYG.X[n].TimerID = WYSIWYG.pop_hide_others.delay(0.5, 't');			},		Cancel: function(n){			try{				clearTimeout(WYSIWYG.X[n].TimerID);				}			catch(e){}			}		},	getNodeTree: function(n){		var sel = WYSIWYG.getSelection(n);		var range = WYSIWYG.getRange(sel);		var tag = WYSIWYG.getTag(range);		if(tag == null) return null;		var node = WYSIWYG.getParent(tag);		var nodeTree = new Array(tag);		var ii = 1;		while(node != null && node.nodeName != "#document"){			nodeTree[ii] = node;			node = WYSIWYG.getParent(node);			ii++;			}		return nodeTree;		},	removeNode: function(n){		var sel = WYSIWYG.getSelection(n);		var range = WYSIWYG.getRange(sel);		var tag = WYSIWYG.getTag(range);		var parent = tag.parentNode;		if(tag == null || parent == null){ return; }		if(tag.nodeName == "HTML" || tag.nodeName == "BODY"){ return; }		var childNodes = new Array();		for(var i=0; i < tag.childNodes.length; i++) childNodes[i] = tag.childNodes[i];		for(var i=0; i < childNodes.length; i++) parent.insertBefore(childNodes[i], tag);		parent.removeChild(tag);		if(parent.nodeName == "A" && !parent.hasChildNodes()){			if(parent.parentNode) parent.parentNode.removeChild(parent);			}		WYSIWYG.updateStatusBar(n);		},	getSelection: function(n){		var ifrm = WYSIWYG.getEditorWindow(n);		var doc = ifrm.document;		var sel = null;		if(ifrm.getSelection){			sel = ifrm.getSelection();		 }		else if (doc.getSelection){			sel = doc.getSelection();		}		else if (doc.selection){			sel = doc.selection;		}		else{			Console.warning('Failed to get Selection');			}		return sel;		},	clearSelection: function(n){		var ifrm = WYSIWYG.getEditorWindow(n);		var doc = ifrm.document;		if(ifrm.getSelection){			ifrm.getSelection().collapseToStart();			}		else if (doc.getSelection){			doc.getSelection().collapseToStart();			}		else if (doc.selection){			doc.selection.empty();			}		else{			Console.warning('Failure to clear Selection');			}		return null;		},	updateStatusBar: function(n){		var nodeTree = WYSIWYG.getNodeTree(n);		if(nodeTree == null) return null;		var outputTree = "";		var max = nodeTree.length - 1;		for(var i=max; i>=0; i--){			if(nodeTree[i].nodeName != "HTML" && nodeTree[i].nodeName != "BODY"){				outputTree += '<a class="wysiwyg_statusbar-item" href="javascript:WYSIWYG.selectNode(\''+n+'\','+i+');">' + nodeTree[i].nodeName + '</a>';				}			else {				outputTree += nodeTree[i].nodeName;				}			if(i > 0) outputTree += " > ";			}		var statusbar = $("wysiwyg_"+n+"_statusbar");		if(statusbar) statusbar.innerHTML = outputTree;		},	execute: function(n, cmd, value){		WYSIWYG.getEditorWindow(n).focus();		if(WYSIWYG.X[n].viewTextMode && cmd != "ViewText" && cmd != "Print"){			Console.alert("You are in HTML Mode. This feature has been disabled.");			return;			}		switch(cmd){			case "RemoveImage": 			WYSIWYG.removeImage(n);			break;			case "RemoveLink": 				WYSIWYG.removeLink(n);			break;			case "RemoveNode": 				WYSIWYG.removeNode(n);			break;			case "ViewSource": 				WYSIWYG.viewSource(n);			break;			case "ViewText": 				WYSIWYG.viewText(n);			break;			case "RemoveFormat":			WYSIWYG.removeFormat(n);			break;			case "Preview":					Console.alert('The Preview Feature has been disabled.');			break;			case "Print":				if(document.print){					WYSIWYG.getEditorWindow(n).print();					}				else{					var D = WYSIWYG.getEditorWindow(n).document;					$(D).focus();					var WebBrowser = '<object id="WebBrowser1" width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>';					D.body.insert(WebBrowser);					WebBrowser.ExecWB(6, 2);					WebBrowser.outerHTML = '';					}			break;			case "Return":					location.replace(WYSIWYG.X[n].Opener);			break;			default:				if(cmd.indexOf('popup_returning_') != -1){					cmd = cmd.replace('popup_returning_', '', 'g');					}				if(cmd == "FormatBlock"){					value = "<" + value + ">";					}				if(!defined(value)){					value = null;					}				if(Browser.FF){					if(cmd == 'BackColor'){						cmd = 'HiliteColor';						}					if(cmd == "Cut" || cmd == "Paste" || cmd == "Copy"){						try {							WYSIWYG.getEditorWindow(n).document.execCommand(cmd, false, value);							}						catch(e){							if(confirm("Firefox is blocking Copy/Paste from the editor but you can still use these actions from the Edit Menu\n\nWould you like information on how to enable Copy/Paste within the editor?")){								window.open('http://mozilla.org/editor/midasdemo/securityprefs.html');								}							}						}					}				try{					WYSIWYG.getEditorWindow(n).document.execCommand(cmd, false, value);					WYSIWYG.clearSelection(n);					}				catch(e){}			}		WYSIWYG.closeDropDowns(n);		},	insertHTML: function(html, n){		if (Browser.IE){			WYSIWYG.getEditorWindow(n).document.selection.createRange().pasteHTML(html);			}		else {			var span = WYSIWYG.getEditorWindow(n).document.createElement("span");			span.innerHTML = html;			WYSIWYG.insertNodeAtSelection(span, n);			}		},	insertNodeAtSelection: function(insertNode, n){		var doc = WYSIWYG.getEditorWindow(n).document;		var sel = WYSIWYG.getSelection(n);		var range = sel.getRangeAt(0);		sel.removeAllRanges();		range.deleteContents();		var container = range.startContainer;		var pos = range.startOffset;		range = doc.createRange();		if (container.nodeType==3 && insertNode.nodeType==3){								container.insertData(pos, insertNode.data);			range.setEnd(container, pos+insertNode.length);			range.setStart(container, pos+insertNode.length);					} 			else {			var afterNode;				var beforeNode;			if (container.nodeType==3){				var textNode = container;				container = textNode.parentNode;				var text = textNode.nodeValue;				var textBefore = text.substr(0,pos);				var textAfter = text.substr(pos);				beforeNode = document.createTextNode(textBefore);				afterNode = document.createTextNode(textAfter);				container.insertBefore(afterNode, textNode);				container.insertBefore(insertNode, afterNode);				container.insertBefore(beforeNode, insertNode);				container.removeChild(textNode);				} 			else {				try {					afterNode = container.childNodes[pos];					if(defined(afterNode)){						container.insertBefore(insertNode, afterNode);						range.setEnd(afterNode, 0);						range.setStart(afterNode, 0);						}					else{						container.appendChild(insertNode);						range.selectNode(insertNode);						}					}				catch(e){					Console.error('WYSIWYG.insertNodeAtSelection: Failed to set Range '+e+'[Parameters: afterNode='+afterNode+']');					}				}			}		sel.addRange(range);		},	closeDropDowns: function(n, exclude){		try{			if(!defined(exclude)){				exclude = "";				}			var dropdowns = WYSIWYG.X[n].DropDowns;			for (i in dropdowns){				if(dropdowns[i].id != exclude){					if($('wysiwyg_'+n+'_'+dropdowns[i].id)){						$('wysiwyg_'+n+'_'+dropdowns[i].id).style.display = 'none';						}					}				}			}		catch(e){ Console.error('WYSIWYG.closeDropDowns: '+e); }		},	openDropDown: function(n, id){		var divId = 'wysiwyg_'+n+'_'+id;		$(divId).style.display = ($(divId).style.display == 'none') ? 'block':'none';		WYSIWYG.closeDropDowns(n, id);		},	viewSource: function(n){		WYSIWYG.Highlight.disable(n);		var doc = WYSIWYG.getEditorWindow(n).document;		var HTML = doc.body.innerHTML;		HTML = WYSIWYG.stripURLPath(n, HTML);		HTML = HTML.parseAllColor();		HTML = document.createTextNode(HTML);		doc.body.innerHTML = "";		doc.body.appendChild(HTML);		if($('HTMLMode' + n)) $('HTMLMode' + n).hide();		if($('textMode' + n)) $('textMode' + n).show();		doc.body.style.fontSize = "12px";		doc.body.style.fontFamily = "Courier New";		WYSIWYG.X[n].viewTextMode = true;		$("wysiwyg_"+n+"_statusbar").style.display = "none";		},	viewText: function(n){ 		var doc = WYSIWYG.getEditorWindow(n).document;		if (Browser.IE){			var iText = doc.body.innerText;			iText = WYSIWYG.stripURLPath(n, iText);			iText = iText.parseAllColor();			doc.body.innerHTML = iText;			}		else {			var html = doc.body.ownerDocument.createRange();			html.selectNodeContents(doc.body);			html = html.toString().parseAllColor();			doc.body.innerHTML = html;			}		WYSIWYG.Highlight.enable(n);		if($('textMode' + n)) $('textMode' + n).hide();		if($('HTMLMode'+n)) $('HTMLMode' + n).show();		doc.body.style.fontSize = "";		doc.body.style.fontFamily = ""; 		WYSIWYG.X[n].viewTextMode = false;		$('wysiwyg_'+n+'_statusbar').style.display = "";		},	stripURLPath: function(n, content, exact){		if(Browser.IE){			if(!defined(exact)) exact = true;			var stripImgageUrl = null;			var stripAnchorUrl = null;			if(WYSIWYG.X[n].AnchorPathToStrip == "auto"){				stripAnchorUrl = WYSIWYG.getDocumentUrl(document);				}			else if(WYSIWYG.X[n].AnchorPathToStrip != ""){				stripAnchorUrl = WYSIWYG.X[n].AnchorPathToStrip;				}			if(WYSIWYG.X[n].ImagePathToStrip == "auto"){				stripImgageUrl = WYSIWYG.getDocumentUrl(document);				}			else if(WYSIWYG.X[n].ImagePathToStrip != ""){				stripImgageUrl = WYSIWYG.X[n].ImagePathToStrip;				}			var url;			var regex;			var result;			if (stripImgageUrl){				url = Dt_S.toRegex(WYSIWYG.getDocumentPathOfUrl(stripImgageUrl));				if(exact){					regex = eval("/(src=\")(" + url + ")([^\"]*)/gi");					content = content.replace(regex, "$1$3");					}				else {					regex = eval("/(" + url + ")(.+)/gi");					content = content.replace(regex, "$2");					}				result = WYSIWYG.getDocumentPathOfUrl(stripImgageUrl).match(/.+[\/]{2,3}[^\/][*]/,"");				if(result){					url = Dt_S.toRegex(result[0]);					if(exact){						regex = eval("/(src=\")(" + url + ")([^\"]*)/gi");						content = content.replace(regex, "$1$3");					}					else {						regex = eval("/(" + url + ")(.+)/gi");						content = content.replace(regex, "$2");							}					}				}			if (stripAnchorUrl){				url = Dt_S.toRegex(WYSIWYG.getDocumentPathOfUrl(stripAnchorUrl));				if(exact){					regex = eval("/(href=\")(" + url + ")([^\"]*)/gi");					content = content.replace(regex, "$1$3");					}				else {					regex = eval("/(" + url + ")(.+)/gi");					content = content.replace(regex, "$2");					}				result = WYSIWYG.getDocumentPathOfUrl(stripAnchorUrl).match(/.+[\/]{2,3}[^\/][*]/,"");				if(result){					url = Dt_S.toRegex(result[0]);					if(exact){						regex = eval("/(href=\")(" + url + ")([^\"]*)/gi");						content = content.replace(regex, "$1$3");						}					else {						regex = eval("/(" + url + ")(.+)/gi");						content = content.replace(regex, "$2");						}					}				url = Dt_S.toRegex(stripAnchorUrl);				if(exact){					regex = eval("/(href=\")(" + url + ")(#[^\"]*)/gi");					content = content.replace(regex, "$1$3");					}				else {					regex = eval("/(" + url + ")(.+)/gi");					content = content.replace(regex, "$2");					}				url = WYSIWYG.getDocumentUrl(document);				var pos = url.lastIndexOf("/");				if(pos != -1){					url = url.substring(pos + 1, url.length);					url = Dt_S.toRegex(url);					if(exact){						regex = eval("/(href=\")(" + url + ")(#[^\"]*)/gi");						content = content.replace(regex, "$1$3");						}					else {						regex = eval("/(" + url + ")(.+)/gi");						content = content.replace(regex, "$2");						}					}				}			}		return content;		},	updateTextArea: function(n){		if(WYSIWYG.X[n].viewTextMode){			WYSIWYG.viewText(n);			}		//WYSIWYG.Highlight.disable(n);		var content = WYSIWYG.getEditorWindow(n).document.body.innerHTML;		content = WYSIWYG.stripURLPath(n, content);		content = content.parseAllColor();		$$('[wysiwyg='+n+']')[0].value = content;		//WYSIWYG.Highlight.enable(n);		},	updateById: function(id){		try{			WYSIWYG.updateTextArea($(id).getAttribute('wysiwyg'));			}		catch(e){}		},	updateAll: function(){		$$('[editor=wysiwyg]').each(function(i){			WYSIWYG.updateTextArea(i.getAttribute('wysiwyg'));			});		},	removeFormat: function(n){		if (!confirm("Warning: This action can not be undone and may remove some good formatting. Please save work before proceding. Would you like to continue cleaning up code?")){			return;			}		var doc = WYSIWYG.getEditorWindow(n).document;		var str = doc.body.innerHTML;		str = str.replace(/<span([^>])*>(&nbsp;)*\s*<\/span>/gi, '');		str = str.replace(/<span[^>]*>/gi, '');		str = str.replace(/<\/span[^>]*>/gi, '');		str = str.replace(/<p([^>])*>(&nbsp;)*\s*<\/p>/gi, '');		str = str.replace(/<p[^>]*>/gi, '');		str = str.replace(/<\/p[^>]*>/gi, '');		str = str.replace(/<h([^>])[0-9]>(&nbsp;)*\s*<\/h>/gi, '');		str = str.replace(/<h[^>][0-9]>/gi, '');		str = str.replace(/<\/h[^>][0-9]>/gi, '');		str = str.replace(/<B [^>]*>/ig, '<b>');		str = str.replace(/<DIV[^>]*>/ig, '');		str = str.replace(/<\/DIV>/gi, '');		str = str.replace(/<[\/\w?]+:[^>]*>/ig, '');		str = str.replace(/(&nbsp;){2,}/ig, '&nbsp;');		str = str.replace(/<STRONG>/ig, '');		str = str.replace(/<\/STRONG>/ig, '');		str = str.replace(/<TT>/ig, '');		str = str.replace(/<\/TT>/ig, '');		str = str.replace(/<FONT [^>]*>/ig, '');		str = str.replace(/<\/FONT>/ig, '');		str = str.replace(/STYLE=\"[^\"]*\"/ig, '');		str = str.replace(/<([\w]+) class=([^ |>]*)([^>]*)/gi, '<$1$3');		str = str.replace(/<([\w]+) style="([^"]*)"([^>]*)/gi, '<$1$3');		str = str.replace(/width=([^ |>]*)([^>]*)/gi, '');		str = str.replace(/classname=([^ |>]*)([^>]*)/gi, '');		str = str.replace(/align=([^ |>]*)([^>]*)/gi, '');		str = str.replace(/valign=([^ |>]*)([^>]*)/gi, '');		str = str.replace(/<\\?\??xml[^>]>/gi, '');		str = str.replace(/<\/?\w+:[^>]*>/gi, '');		str = str.replace(/<st1:.*?>/gi, '');		str = str.replace(/o:/gi, '');		str = str.replace(/<!--([^>])*>(&nbsp;)*\s*<\/-->/gi, '');		str = str.replace(/<!--[^>]*>/gi, '');		str = str.replace(/<\/--[^>]*>/gi, '');		doc.body.innerHTML = str;		},	findParent: function(parentTagName, range){		parentTagName = parentTagName.toUpperCase();		var rangeWorking;		var elmWorking = null;		try {			if(!Browser.IE){				var node = range.startContainer;					var pos = range.startOffset;				if(node.nodeType != 3){ node = node.childNodes[pos]; }				return WYSIWYG.findParentNode(parentTagName, node);			}			else {				elmWorking = (range.length > 0) ? range.item(0): range.parentElement();				elmWorking = WYSIWYG.findParentNode(parentTagName, elmWorking);				if(elmWorking != null) return elmWorking;				rangeWorking = range.duplicate();				rangeWorking.collapse(true);				rangeWorking.moveEnd("character", 1);				if (rangeWorking.text.length>0){					while (rangeWorking.compareEndPoints("EndToEnd", range) < 0){						rangeWorking.move("Character");						if (null != WYSIWYG.findParentTag(parentTagName, rangeWorking)){							return WYSIWYG.findParentTag(parentTagName, rangeWorking);							}						}					}			 	return null;				}			}		catch(e){			return null;			}		},	getTag: function(range){		try {			if(!Browser.IE){				var node = range.startContainer;					var pos = range.startOffset;				if(node.nodeType != 3){ node = node.childNodes[pos]; }								if(node.nodeName && node.nodeName.search(/#/) != -1){					return node.parentNode;				}				return node;			}			else {				if(range.length > 0){					return range.item(0);				}				else if(range.parentElement()){					return range.parentElement();				}			}			return null;		}		catch(e){			return null;		}		},	getParent: function(element){		if(element.parentNode){			return element.parentNode;		}		return null;		},	selectNode: function(n, level){		var sel = WYSIWYG.getSelection(n);		var range = WYSIWYG.getRange(sel);		var parentnode = WYSIWYG.getTag(range);		var i = 0;		for (var node=parentnode; (node && (node.nodeType == 1)); node=node.parentNode){			if (i == level){				WYSIWYG.nodeSelection(n, node);			}			i++;		}		WYSIWYG.updateStatusBar(n);		},	nodeSelection: function(n, node){		var doc = WYSIWYG.getEditorWindow(n).document;		var sel = WYSIWYG.getSelection(n);		var range = WYSIWYG.getRange(sel);		if(!Browser.IE){			if (node.nodeName == "BODY"){				range.selectNodeContents(node);				}			else {				range.selectNode(node);				}			if (sel){ sel.removeAllRanges(); }			if (sel){ sel.addRange(range);	 }		}		else {			if ((node.nodeName == "TABLE") || (node.nodeName == "IMG") || (node.nodeName == "INPUT") || (node.nodeName == "SELECT") || (node.nodeName == "TEXTAREA")){				try {					range = doc.body.createControlRange();					range.addElement(node);					range.select();				} 				catch(e){					Console.error('WYSIWYG.nodeSelection: '+e+'[Sub0]');					}			} 			else {				range = doc.body.createTextRange();				if (range){					range.collapse();					if (range.moveToElementText){						try {							range.moveToElementText(node);							range.select();							}						catch(e){							try {								range = doc.body.createTextRange();								range.moveToElementText(node);								range.select();								} 							catch(e){ Console.error('WYSIWYG.nodeSelection: '+e+'[Sub1]'); }							}						}					else {						try {							range = doc.body.createTextRange();							range.moveToElementText(node);							range.select();							} 						catch(e){							Console.error('WYSIWYG.nodeSelection: '+e+'[Sub2]');							}						}					}				}			}		},	getDocumentPathOfUrl: function(url){		var path = null;		url = url.replace(/file:\/\//gi, "file:///");		url = url.replace(/\\/gi, "\/");		var pos = url.lastIndexOf("/");		if(pos != -1) path = url.substring(0, pos + 1);		return path;		},	getDocumentUrl: function(doc){		var url = doc.URL;		url = url.replace(/file:\/\//gi, "file:///");		url = url.replace(/\\/gi, "\/");		return url;		},	findParentNode: function(tagName, node){		while (node.tagName != "HTML"){			if (node.tagName == tagName) return node;			node = node.parentNode;			}	 	return null;		},	getElementPosition: function(elm1, elm2){		var top = 0, left = 0; 			while (elm1 && elm1 != elm2){			left += elm1.offsetLeft;			top += elm1.offsetTop;			elm1 = elm1.offsetParent;			}		return {left : left, top : top};		},	pop_hide_others: function(current){		$$('.wysiwyg_popup').each(function(i){			if(i.id != current) i.hide();			});		},	pop_insertColorCode: function(n, popID){		var ret = '<table border="0" cellspacing="0" cellpadding="4" width="210px"><tr><td valign=center><div id="wysiwyg_'+n+'_'+popID+'Pop_previewbox" style="height: 100%; width: 50px; padding: 0px;">&nbsp;</div></td><td valign=center><input type="text" size="15" id="wysiwyg_'+n+'_'+popID+'Pop_preview" style="font-size: 10px;"></td><td width="100%"></td></tr></table><table border=0 cellspacing=1 cellpadding=0 bgcolor="#000000" style="cursor: pointer;">';		var h = '00', e = '00', x = '00', hex = '000000';		var common_colors = new Array('000000','333333','666666','999999','CCCCCC','FFFFFF','FF0000','00FF00','0000FF','FFFF00','00FFFF','FF00FF');		for(var i = 0; i < 12; i++){			ret += '<tr width="210px">';			for(var j = 0; j < 21; j++){				if(i < 6 && j < 9) h = "00";				if(i < 6 && j > 8 && j < 15) h = "33";				if(i < 6 && j > 14) h = "66";				if(i > 5 && j < 9) h = "99";				if(i > 5 && j > 8 && j < 15) h = "CC";				if(i > 5 && j > 14) h = "FF";				if(j == 3 || j == 9 || j == 15) e = "00"; 				if(j == 4 || j == 10 || j == 16) e = "33"; 				if(j == 5 || j == 11 || j == 17) e = "66"; 				if(j == 6 || j == 12 || j == 18) e = "99"; 				if(j == 7 || j == 13 || j == 19) e = "CC"; 				if(j == 8 || j == 14 || j == 20) e = "FF";				if(i == 0 || i == 6) x = "00";				if(i == 1 || i == 7) x = "33";				if(i == 2 || i == 8) x = "66";				if(i == 3 || i == 9) x = "99";				if(i == 4 || i == 10) x = "CC";				if(i == 5 || i == 11) x = "FF";				if(j == 0 || j == 2) hex = "000000";				else if(j == 1) hex = common_colors[i];				else hex = h+e+x;				ret += '<td bgcolor="#'+hex+'" onMouseOver="WYSIWYG.pop_preview_color(\''+n+'\', \''+popID+'\', \'#'+hex+'\')" onClick="WYSIWYG.pop_set_color(\''+n+'\', \''+popID+'\', \'#'+hex+'\')" height="10" width="10"></td>';				}			ret += '</tr>';			}		return ret + '</table>';		},	pop_preview_color: function(n, cmd, color){		if(color == 'current'){			var cmd2 = (Browser.FF && cmd == 'BackColor') ? 'HiliteColor': cmd;			var rgb = WYSIWYG.getEditorWindow(n).document.queryCommandValue(cmd2);			var current = rgb != '' ? WYSIWYG.getEditorWindow(n).document.queryCommandValue(cmd2).parseColor() : "000000";			color = '#'+current;			}		$('wysiwyg_'+n+'_'+cmd+'Pop_preview').value = color;		$('wysiwyg_'+n+'_'+cmd+'Pop_previewbox').style.backgroundColor = color;		},	pop_set_color: function(n, cmd, color){		WYSIWYG.execute(n, 'popup_returning_'+cmd, color);		$('wysiwyg_'+n+'_'+cmd+'Pop').hide();		},	pop_insertTableCode: function(n){		var id = 'wysiwyg_'+n+'_InsertTablePop';		return '<div class="wysiwyg_pop_title wysiywg_'+n+'_pop" id="'+id+'_title"></div><table class="wysiwyg_pop_table" align="center" cellpadding="0" cellspacing="0"><tr><td>Rows: <input type="text" id="'+id+'_rows"></td><td>Width: <input type="text" id="'+id+'_width"></td></tr><tr><td>Cols: <input type="text" id="'+id+'_cols"></td><td>Alignment: <select id="'+id+'_align"><option value="">Not Set</option><option value="left">Left</option><option value="right">Right</option><option value="texttop">Texttop</option><option value="absmiddle">Absmiddle</option><option value="baseline">Baseline</option><option value="absbottom">Absbottom</option><option value="bottom">Bottom</option><option value="middle">Middle</option><option value="top">Top</option></select></td></tr><tr><td>Padding: <input type="text" id="'+id+'_padding"></td><td>Background-Color: <input type="text" id="'+id+'_backgroundcolor"><img src="images/backcolor_on.gif" border=0 unselectable="on" width="20" height="20"></td></tr><tr><td>Border-Size: <input type="text" id="'+id+'_borderSize"></td><td>Border-Color: <input type="text" id="'+id+'_borderColor"><img src="'+"images/"+'backcolor_on.gif" border=0 unselectable="on" width="20" height="20"></td></tr><tr><td>Border-Style: <select id="'+id+'_borderStyle" style="width: 80px;"><option value="none">none</option><option value="solid">solid</option><option value="double">double</option><option value="dotted">dotted</option><option value="dashed">dashed</option><option value="groove">groove</option><option value="ridge">ridge</option><option value="inset">inset</option><option value="outset">outset</option></select></td><td>Border-Collapse:</td><td><input type="checkbox" id="'+id+'_borderCollapse"></td></tr></table><div align="right"><input id="'+id+'_submit" type="submit" onClick="WYSIWYG.insertTable(\''+n+'\'); $(\''+id+'\').hide();">&nbsp;<input type="submit" value=" Cancel " onClick="$(\''+id+'\').hide();"></div>';		},	insertTable: function(n){		var doc = WYSIWYG.getEditorWindow(n).document;		var table = doc.createElement("TABLE");		WYSIWYG.setAttribute(table, "tmpcols", $('wysiwyg_'+n+'_InsertTablePop_cols').value);		WYSIWYG.setAttribute(table, "tmprows", $('wysiwyg_'+n+'_InsertTablePop_rows').value);		if($('wysiwyg_'+n+'_InsertTablePop_alignment').value != ""){			WYSIWYG.setAttribute(table, "align", $('wysiwyg_'+n+'_InsertTablePop_alignment').value);			}		var style = "padding:" + $('wysiwyg_'+n+'_InsertTablePop_padding').value + "px; width:" + $('wysiwyg_'+n+'_InsertTablePop_width').value + $('wysiwyg_'+n+'_InsertTablePop_widthType').value + "; border:" + $('wysiwyg_'+n+'_InsertTablePop_border').value + "px;";		if($('wysiwyg_'+n+'_InsertTablePop_borderstyle').value != "none"){			style += "border-style:" + $('wysiwyg_'+n+'_InsertTablePop_borderstyle').value + ";";			}		if($('wysiwyg_'+n+'_InsertTablePop_bordercolor').value != "none"){			style += "border-color:" + $('wysiwyg_'+n+'_InsertTablePop_bordercolor').value + ";";			}		var collapse = $('wysiwyg_'+n+'_InsertTablePop_bordercollapse').checked ? "true" : "separate";		style += "border-collapse:" + collapse + ";";		if($('wysiwyg_'+n+'_InsertTablePop_backgroundcolor').value != "none"){			style += "background-color:" + $('wysiwyg_'+n+'_InsertTablePop_backgroundcolor').value + ";";			}		WYSIWYG.setAttribute(table, "style", style);		var doc = WYSIWYG.getEditorWindow(n).document;		var sel = WYSIWYG.getSelection(n);		var range = WYSIWYG.getRange(sel);		tbl = table;		var rows = WYSIWYG.getAttribute(table, "tmprows");		var cols = WYSIWYG.getAttribute(table, "tmpcols");		WYSIWYG.removeAttribute(table, "tmprows");		WYSIWYG.removeAttribute(table, "tmpcols");		for(var i=0;i<rows;i++){			var tr = doc.createElement("tr");			for(var j=0;j<cols;j++){				var td = doc.createElement("td");				td.innerHTML = "&nbsp;";				tr.appendChild(td);					}			tbl.appendChild(tr);			}		if (Browser.IE) range.pasteHTML(tbl.outerHTML);		else WYSIWYG.insertNodeAtSelection(tbl, n);		WYSIWYG.Highlight.enable(n);		},	pop_insertImageCode: function(n){		var id = 'wysiwyg_'+n+'_InsertImagePop';		return '<div class="wysiwyg_pop_title" id="'+id+'_title"></div><table class="wysiwyg_pop_table" align="center" cellpadding="0" cellspacing="0"><tr><td colspan="2">Image URL: <input type="text" id="'+id+'_src" style="width: 100%"></td></tr><tr><td colspan="2">Alternate Text: <input type="text" id="'+id+'_alt" style="width: 100%"></td></tr><tr><td>Width: <input type="text" id="'+id+'_width"></td><td>Alignment: <select id="'+id+'_align"><option value="">Not Set</option><option value="left">Left</option><option value="right">Right</option> <option value="texttop">Texttop</option><option value="absmiddle">Absmiddle</option> <option value="baseline">Baseline</option><option value="absbottom">Absbottom</option> <option value="bottom">Bottom</option><option value="middle">Middle</option> <option value="top">Top</option></select> </td></tr><tr><td>Height: <input type="text" id="'+id+'_height"></td><td>Horizontal Space: <input type="text" id="'+id+'_hspace"></td></tr><tr><td>Border: <input type="text" id="'+id+'_border" value="0"></td><td>Vertical Space: <input type="text" id="'+id+'_vspace"></td></tr></table><div align="right"><input id="'+id+'_submit" type="submit" onClick="WYSIWYG.insertImage(\''+n+'\'); $(\''+id+'\').hide();">&nbsp;<input type="submit" value=" Cancel " onClick="$(\''+id+'\').hide();"></div>';		},	insertImage: function(n){		var id = 'wysiwyg_'+n+'_InsertImagePop';		var src = $(id+'_src').value;		var alt = $(id+'_alt').value;		var width = $(id+'_width').value;		var height = $(id+'_height').value;		var border = $(id+'_border').value;		var align = $(id+'_align').value;		var vspace = $(id+'_vspace').value;		var hspace = $(id+'_hspace').value;		if(Browser.IE){			width = width.replace(/px/, "");			height = height.replace(/px/, "");			}		var doc = WYSIWYG.getEditorWindow(n).document;		var sel = WYSIWYG.getSelection(n);		var range = WYSIWYG.getRange(sel);		var img = WYSIWYG.findParent("img", range);		var update = (img == null) ? false : true;		if (!update) img = doc.createElement("img");		WYSIWYG.setAttribute(img, "src", src);		WYSIWYG.setAttribute(img, "style", "width:" + width + ";height:" + height);		if(align != "") WYSIWYG.setAttribute(img, "align", align);		else img.removeAttribute("align");		WYSIWYG.setAttribute(img, "border", border);		WYSIWYG.setAttribute(img, "alt", alt);		WYSIWYG.setAttribute(img, "hspace", hspace);		WYSIWYG.setAttribute(img, "vspace", vspace);		img.removeAttribute("width");		img.removeAttribute("height");		if(update == false){			if (Browser.IE){				range.pasteHTML(img.outerHTML);				}			else {				WYSIWYG.insertNodeAtSelection(img, n);				}			}		},	pop_loadImage: function(n){		var sel = WYSIWYG.getSelection(n);		var range = WYSIWYG.getRange(sel);		var img = WYSIWYG.findParent("img", range);		var id = 'wysiwyg_'+n+'_InsertImagePop';		if (img == null && $(id+'_title').innerHTML != 'Insert a New Image:'){			$(id+'_src').value = 'http://';			$(id+'_alt').value = '';			$(id+'_align').options[0].selected;			$(id+'_border').value = '0px';			$(id+'_hspace').value = '0px';			$(id+'_vspace').value = '0px';			$(id+'_width').value = '';			$(id+'_height').value = '';			$(id+'_submit').value = ' Insert Image ';			$(id+'_title').innerHTML = 'Insert a New Image:';			}		if (img == null){			return false;			}		$(id+'_submit').value = ' Update Image ';		$(id+'_title').innerHTML = 'Update this Image:';		for(var i = 0; i < img.attributes.length; i++){			var attr = img.attributes[i].name.toLowerCase();			var value = img.attributes[i].value;			if(attr && value && value != "null"){				switch(attr){					case "src": 						value = WYSIWYG.stripURLPath(n, value, false);						$(id+'_src').value = value;					break;					case "alt":						$(id+'_alt').value = value;					break;					case "align":						var element = $(id+'_align');						if(element.options.length){							for(var i=0;i<element.options.length;i++){								if(element.options[i].value == value){									element.options[i].selected = true;									}								}							}					break;					case "border":						$(id+'_border').value = value;					break;					case "hspace":						$(id+'_hspace').value = value;					break;					case "vspace":						$(id+'_vspace').value = value;					break;					case "width":						$(id+'_width').value = value;					break;					case "height":						$(id+'_height').value = value;					break;									}				}			}		return true;		},	pop_insertLinkCode: function(n){		var id = 'wysiwyg_'+n+'_InsertLinkPop';		return '<div class="wysiwyg_pop_title" id="'+id+'_title"></div><table class="wysiwyg_pop_table" align="center" cellpadding="0" cellspacing="0"><tr><td colspan="2">URL: <input type="text" id="'+id+'_src" style="width: 100%"></td></tr><tr><td colspan="2">Target:<div style="padding: 0px"><input type="text" id="'+id+'_target" onchange="WYSIWYG.pop_updateTargetSelect(\''+n+'\', this.value)" style="width: 75%;">&nbsp;<select id="'+id+'_targetChooser" onchange="WYSIWYG.pop_updateTargetBox(\''+n+'\', this.value);"><option value="" selected>no target</option><option value="_blank">_blank</option> <option value="_self">_self</option> <option value="_parent">_parent</option><option value="_top">_top</option><option value="">custom</option></select></div></td></tr><tr><td>Style: <input type="text" id="'+id+'_style" style="width: 100%"></td></tr></table><div align="right"><input id="'+id+'_submit" type="submit" onClick="WYSIWYG.insertLink(\''+n+'\'); $(\''+id+'\').hide();">&nbsp;<input type="submit" value=" Cancel " onClick="$(\''+id+'\').hide();"></div>';		},	insertLink: function(n){		var id = 'wysiwyg_'+n+'_InsertLinkPop';		var href = $(id+'_src').value;		var target = $(id+'_target').value;		var style = $(id+'_style').value;		//var class = $(id+'_class').value;		//var name = $(id+'_name').value;		var doc = WYSIWYG.getEditorWindow(n).document;		var sel = WYSIWYG.getSelection(n);		var range = WYSIWYG.getRange(sel);		var link = WYSIWYG.findParent("a", range);		var update = (link == null) ? false : true;		if (!update) link = doc.createElement("a");		WYSIWYG.setAttribute(link, "href", href);		//WYSIWYG.setAttribute(link, "class", class);		//WYSIWYG.setAttribute(link, "className", class);		WYSIWYG.setAttribute(link, "target", target);		//WYSIWYG.setAttribute(link, "name", name);		WYSIWYG.setAttribute(link, "style", style);		if (update) return false;		if (Browser.IE){			range.select();			link.innerHTML = range.htmlText;			range.pasteHTML(link.outerHTML);			} 		else {			var node = range.startContainer;			var pos = range.startOffset;			if(node.nodeType != 3) node = node.childNodes[pos];			if(node.tagName) link.appendChild(node);			else link.innerHTML = sel;			WYSIWYG.insertNodeAtSelection(link, n);			}		return true;		},	pop_loadLink: function(n){		var id = 'wysiwyg_'+n+'_InsertLinkPop';		var sel = WYSIWYG.getSelection(n);		var range = WYSIWYG.getRange(sel);		var link = WYSIWYG.findParent("a", range);		if (link == null && $(id+'_title').innerHTML != 'Insert a New Hyperlink:'){			$(id+'_src').value = 'http://';			$(id+'_target').value = '';			$(id+'_style').value = '';			$(id+'_targetChooser').options[0].selected;			$(id+'_submit').value = ' Insert Link ';			$(id+'_title').innerHTML = 'Insert a New Hyperlink:';			}		if (link == null){			return false;			}		$(id+'_submit').value = ' Update Link ';		$(id+'_title').innerHTML = 'Update this Hyperlink:';		for(var i=0; i < link.attributes.length; i++){			var attr = link.attributes[i].name.toLowerCase();			var value = link.attributes[i].value;			if(attr && value && value != "null"){				switch (attr){					case "href":						value = WYSIWYG.stripURLPath(n, value, false);						$(id+'_src').value = value;					break;					case "target":						$(id+'_target').value = value;						Forms.selectItemByValue($(id+'_targetChooser'), value);					break;					case "name":						$(id+'_name').value = value;					break;					case "class":						$(id+'_class').value = value;					break;					case "className":						$(id+'_class').value = value;					break;															}				}			}		$(id+'_style').value = WYSIWYG.getAttribute(link, "style").parseAllColor();		return true;		},	pop_updateTargetBox: function (n, value){		$('wysiwyg_'+n+'_InsertLinkPop_target').value = value;		},	pop_updateTargetSelect: function (n, value){		Forms.selectItemByValue($('wysiwyg_'+n+'_InsertLinkPop_targetChooser'), value);		},	Highlight: {		add: function(node){			var style = node.getAttribute("style");			if (style == null || style == ''){				node.removeAttribute("prevstyle");				node.setAttribute("prevstyle", style);				node.setAttribute("style", "border:1px dashed #AAAAAA;");				var style = node.getAttribute("style");				node.setAttribute("compstyle", style);				}			},		remove: function(node){			var style = node.getAttribute("style");			var comp = node.getAttribute("compstyle");			if (style == comp){				var style = node.getAttribute("prevstyle");				node.removeAttribute("prevstyle");				node.removeAttribute("style");				node.removeAttribute("compstyle");				node.setAttribute("style", style);				}			},		enable: function(n){			var doc = WYSIWYG.getEditorWindow(n).document;			var tables = doc.getElementsByTagName("table");			for(var i = 0; i < tables.length; i++) WYSIWYG.Highlight.add(tables[i]);			var tds = doc.getElementsByTagName("td");			for(var i = 0; i < tds.length; i++) WYSIWYG.Highlight.add(tds[i]);		 	},		disable: function(n){			var doc = WYSIWYG.getEditorWindow(n).document;			var tables = doc.getElementsByTagName("table");			for(var i=0; i < tables.length; i++) WYSIWYG.Highlight.remove(tables[i]);			var tds = doc.getElementsByTagName("td");			for(var i=0; i<tds.length; i++) WYSIWYG.Highlight.remove(tds[i]);			}		},	ContextMenu: {		html: "",		contextMenuDiv: null,		init: function(n){			var doc = WYSIWYG.getEditorWindow(n).document;			this.contextMenuDiv = document.createElement("div");			this.contextMenuDiv.className = "wysiwyg_context-menu-div";			this.contextMenuDiv.setAttribute("class", "wysiwyg_context-menu-div");			this.contextMenuDiv.style.display = "none";			this.contextMenuDiv.style.position = "absolute";			this.contextMenuDiv.style.zIndex = 9999;			this.contextMenuDiv.style.left = "0";			this.contextMenuDiv.style.top = "0";			this.contextMenuDiv.unselectable = "on";			document.body.insertBefore(this.contextMenuDiv, document.body.firstChild);			Event.observe(doc, "contextmenu", function(e){				WYSIWYG.ContextMenu.show(e, n);				});			Event.observe(doc, "click", function(e){				WYSIWYG.ContextMenu.close();				});			Event.observe(doc, "keydown", function(e){				WYSIWYG.ContextMenu.close();				});			Event.observe(document, "click", function(e){				WYSIWYG.ContextMenu.close();				});			},		show: function(e, n){			if(this.contextMenuDiv == null) return false;			var ifrm = WYSIWYG.getEditor(n);			var doc = WYSIWYG.getEditorWindow(n).document;			var pos = WYSIWYG.getElementPosition(ifrm);			var x = (Browser.IE) ? pos.left + e.clientX : pos.left + (e.pageX - doc.body.scrollLeft);			var y = (Browser.IE) ? pos.top + e.clientY : pos.top + (e.pageY - doc.body.scrollTop);			this.contextMenuDiv.style.left = x + "px"; 			this.contextMenuDiv.style.top = y + "px";			this.contextMenuDiv.style.visibility = "visible";			this.contextMenuDiv.style.display = "block";			WYSIWYG.ContextMenu.output.defer(n);			e.stop();			return false;			},		output: function(n){			var sel = WYSIWYG.getSelection(n);			var range = WYSIWYG.getRange(sel);			var tag = WYSIWYG.getTag(range);			if(tag == null) return false;			this.clear();			var isImg = (tag.nodeName == "IMG") ? true : false;			var isLink = (tag.nodeName == "A") ? true : false;			var len = 0;			if(Browser.IE){				len = (document.selection && range.text) ? range.text.length : 0;				}			else{				len = range.toString().length;				}			var sel = len != 0 || isImg;			var iconLink = {				enabled: "images/" + WYSIWYG.ToolbarList["insertlink"][3],				disabled: "images/" + WYSIWYG.ToolbarList["insertlink"][2]				};			var iconImage = {				enabled: "images/" + WYSIWYG.ToolbarList["insertimage"][3],				disabled: "images/" + WYSIWYG.ToolbarList["insertimage"][2]				};			var iconDelete = {				enabled: "images/" + WYSIWYG.ToolbarList["delete"][3],				disabled: "images/" + WYSIWYG.ToolbarList["delete"][2]				};			var iconCopy = {				enabled: "images/" + WYSIWYG.ToolbarList["copy"][3],				disabled: "images/" + WYSIWYG.ToolbarList["copy"][2]				};			var iconCut = {				enabled: "images/" + WYSIWYG.ToolbarList["cut"][3],				disabled: "images/" + WYSIWYG.ToolbarList["cut"][2]				};			var iconPaste = {				enabled: "images/" + WYSIWYG.ToolbarList["paste"][3],				disabled: "images/" + WYSIWYG.ToolbarList["paste"][2]				};			this.html += '<table class="wysiwyg_context-menu" border="0" cellpadding="0" cellspacing="0">';			this.addItem(n, 'Copy', iconCopy, 'Copy', sel);			this.addItem(n, 'Cut', iconCut, 'Cut', sel);			this.addItem(n, 'Paste', iconPaste, 'Paste', true);			this.addSeperator();			this.addItem(n, 'InsertImage', iconImage, 'Modify Image Properties...', isImg);			this.addItem(n, 'InsertLink', iconLink, 'Create or Modify Link...', sel || isLink);			this.addItem(n, 'RemoveNode', iconDelete, 'Remove', true);			this.html += '</table>';			this.contextMenuDiv.innerHTML = this.html;			},		close: function(){			this.contextMenuDiv.style.visibility = "hidden";			this.contextMenuDiv.style.display = "none";			},		clear: function(){			WYSIWYG.ContextMenu.contextMenuDiv.innerHTML = "";			WYSIWYG.ContextMenu.html = "";			},		addItem: function(n, cmd, icon, title, disabled){			var item = '';			if(disabled){				item += '<tr><td class="icon"><a onclick="WYSIWYG.execute(\'' + n + '\',\'' + cmd + '\', null);"><img src="' + icon.enabled + '" border="0"></a></td><td onmouseover="this.className=\'mouseover\'" onmouseout="this.className=\'\'" onclick="WYSIWYG.execute(\'' + n + '\', \'' + cmd + '\', null); WYSIWYG.ContextMenu.close(); "><a href="javascript:void(0);">' + title + '</a></td></tr>';				}			else {				item += '<tr><td class="icon"><img src="' + icon.disabled + '" border="0"></td><td onmouseover="this.className=\'mouseover\'" onmouseout="this.className=\'\'"><span class="disabled">' + title + '</span></td></tr>';				}			WYSIWYG.ContextMenu.html += item;			},		addSeperator: function(){			WYSIWYG.ContextMenu.html += '<tr><td colspan="2" style="text-align:center;"><hr size="1" color="#C9C9C9" width="95%"></td></tr>';			}		},	MiniColorPicker: {		COLORS: new Array("#000000","#993300","#333300","#003300","#003366","#000080","#333399","#333333","#800000","#FF6600","#808000","#008000","#008080","#0000FF","#666699","#808080","#FF0000","#FF9900","#99CC00","#339966","#33CCCC","#3366FF","#800080","#999999","#FF00FF","#FFCC00","#FFFF00","#00FF00","#00CCFF","#993366",		"#C0C0C0","#FF99CC","#FFCC99","#FFFF99","#CCFFCC","#CCFFFF","#99CCFF","#666699","#777777","#999999","#EEEEEE","#FFFFFF"),		init: function(){			var div = document.createElement("DIV");			div.id = "colorpicker-div";			div.style.position = "absolute";			div.style.visibility = "hidden";			document.body.appendChild(div);			},		choose: function(element){			var div = $("colorpicker-div");			if(div == null){				Console.error("WYSIWYG.MiniColorPicker: Loading failed because element was not created. Please try again.");				return;				}			write(element);			var x = window.event.clientX + document.body.scrollLeft;			var y = window.event.clientY + document.body.scrollTop;			var winwidth = Browser.getWidth();			var winheight = Browser.getHeight();			if(x + div.offsetWidth > winwidth) x = winwidth - div.offsetWidth - 5;			if(y + div.offsetHeight > winheight) y = winheight - div.offsetHeight - 5;			div.style.left = x + "px";			div.style.top = y + "px";			div.style.visibility = "visible";			},		select: function(n, color){			var div = $("colorpicker-div");			var elm = $(n);			elm.value = color;			elm.style.color = color;			elm.style.backgroundColor = color;			div.style.visibility = "hidden";			},		write: function(n){			var div = $("colorpicker-div");			var output = "";			output += '<table border="1" cellpadding="0" cellspacing="0" class="wysiwyg_color-picker-table"><tr>';			for(var i = 0; i < COLORS.length; i++){				var color = COLORS[i];				output += '<td class="selectColorBorder" ';				output += 'onmouseover="this.className=\'selectColorOn\';" ';				output += 'onmouseout="this.className=\'selectColorOff\';" ';				output += 'onclick="WYSIWYG_ColorInst.select(\'' + n + '\', \'' + color + '\');"> ';				output += '<div style="background-color:' + color + ';" class="wysiwyg_color-picker-div">&nbsp;</div> ';				output += '</td>';				if(((i+1) % Math.round(Math.sqrt(COLORS.length))) == 0){					output += "</tr><tr>";					}				}			output += '</tr></table>';			div.innerHTML = output;			}		}	};var Slideshow = {	/* David Tyler's JS Slideshow Library		Expects:		<div class="slideshow">			<!-- Comment Section MUST be first element within .slideshow				// JSON Array of Arrays				[					["path/to/thumbnail1.jpg", "path/to/image1.jpg", "optional title"],					["path/to/thumbnail2.jpg", "path/to/image2.jpg", "optional title"],					[]					]				-->			<img ... </img>		</div>	Any other code within the slideshow div will be replaced. Use as <noscript>	*/	Config: [],	init: function(){		$$('.slideshow').each(function(s, i){ Slideshow.create(i, s); });		},	create: function(N, S){		Console.notice('Slideshow.create('+N+', '+S+');');		var links = [], images = [];		S.firstChild.data.evalJSON().each(function(one, i){			links.push(one[1]); images.push(one[0]);			});		var code = '<table align="center" style="width: 75%"><tr>';		for(var i = 0; i < 5; i++) code += '<td><div class="slideshow_image"><div><a href="/#/img" id="Slideshow'+N+'_Link'+i+'" target="lightbox" group="slideshow'+N+'"><img id="Slideshow'+N+'_Image'+i+'"/></a></div></div></td>';		S.update(code+'</tr></table>');		Slideshow.Config[N] = new function(){			this.output = [];			this.output[0] = $('Slideshow'+N+'_Image0');			this.output[1] = $('Slideshow'+N+'_Image1');			this.output[2] = $('Slideshow'+N+'_Image2');			this.output[3] = $('Slideshow'+N+'_Image3');			this.output[4] = $('Slideshow'+N+'_Image4');			this.link = [];			this.link[0] = $('Slideshow'+N+'_Link0');			this.link[1] = $('Slideshow'+N+'_Link1');			this.link[2] = $('Slideshow'+N+'_Link2');			this.link[3] = $('Slideshow'+N+'_Link3');			this.link[4] = $('Slideshow'+N+'_Link4');			this.position = [];			this.position[0] = 3;			this.position[1] = 4;			this.position[2] = 0;			this.position[3] = 1;			this.position[4] = 2;;			this.next = 5;			this.current = 4;			this.images = images;			this.links = links;			this.lastout = Math.floor(Math.random()*5);			}		for(var i = 0; i < Slideshow.Config[N].output.length; i++){			Slideshow.Config[N].output[i].src = Slideshow.Config[N].images[i];			Slideshow.Config[N].link[i].href = Slideshow.Config[N].links[i];			}		Lightbox.update();		Slideshow.advance.delay(1*N, N);		},	advance: function(N){		var P = Slideshow.Config[N].position[Slideshow.Config[N].lastout];		Slideshow.Config[N].next = (Slideshow.Config[N].current < (Slideshow.Config[N].images.length - 1)) ? Slideshow.Config[N].current + 1 : 0;		Preload(Slideshow.Config[N].images[Slideshow.Config[N].next]);		Slideshow.Config[N].link[P].href = Slideshow.Config[N].links[Slideshow.Config[N].next];				$(Slideshow.Config[N].output[P]).fade({ to: 0.1 });		(function(){ Slideshow.Config[N].output[P].src = Slideshow.Config[N].images[Slideshow.Config[N].next]; $(Slideshow.Config[N].output[P]).appear(); }).delay(1);		Lightbox.update();		Slideshow.Config[N].current = Slideshow.Config[N].next;		Slideshow.Config[N].lastout = P;		Slideshow.advance.delay(6, N);		}	};var SubMenu = {	Colors: ["#00CC66", "#CC6600", "#CC0066", "#6600CC", "#0066CC", "#66CC00"],	Config: [],	init: function(){		$$('.SubMenuConfig').each(function(i, N){ SubMenu.create(N, i); });		},	create: function(I, N){		SubMenu.Config[I] = new function(){			this.tabs = N.select('span');			this.titles = N.select('a');			this.bodies = N.select('p');			this.current = 0;			}		var out = '<table cellspacing="0" id="SubMenuOutput" width="100%" style="padding-bottom: 0px; margin-bottom: 0px;"><tr id="IFF_TabRow" height="30px">', inn = '', tabWidth = (100 / SubMenu.Config[I].tabs.length) + '%';		for(var i = 0; i < SubMenu.Config[I].tabs.length; i++){			out += '<td style="width: '+tabWidth+'; padding-right: 2px; padding-left: 2px; padding-top: 0px; padding-bottom: 0px;" align="center" id="SubMenuTab'+i+'"><div id="SubMenuTab'+i+'_Div" class="top_rounded" style="width: 100%; height: 30px; background-color: '+SubMenu.Colors[i]+'; cursor:pointer; color: #FFFFFF; padding: 0px; margin-top: 10px;" onclick="SubMenu.Change('+I+','+i+')"><span style="color: #FFFFFF; font-size: 120%;">'+SubMenu.Config[I].titles[i].innerHTML+'</span></div></td>';			inn += '<div id="SubMenuTab'+i+'_Content" width="100%" style="display: none; height: 450px; overflow-y: auto;">'+SubMenu.Config[I].bodies[i].innerHTML+'</div>';			}		N.insert({ after: out+'</tr></table>'+inn });		SubMenu.Change(I, 0);		return true;		},	Change: function(I, Tab){		for(var i = 0; i < SubMenu.Config[I].tabs.length; i++){			$('SubMenuTab'+i+'_Content').hide();			if (Tab == i){				$('SubMenuTab'+i+'_Content').style.border = '5px '+SubMenu.Colors[Tab]+' solid';				$('SubMenuTab'+i+'_Content').show();				}			}		return true;		}	};var Corners = {	X: [],	All: function(){		$$('.rounded').each(function(i){			Corners.Apply(i);			});		$$('.top_rounded').each(function(i){			Corners.Apply(i, {bl: null, br: null});			});		},	Apply: function(el, options){		if(!$(el)) return;		el = $(el);		if(!defined(options)){ options = []; }		var N = Corners.X.length, d;		var vHeight = el.getStyle("height");		var vWidth = el.getStyle("width");		var vPadding = el.getStyle("padding-top");		var vImage = el.getStyle("background-image");		var vbWidth = el.getStyle("border-top-width");		var tContainer, bContainer;		d = $H({			tl: 10, tr: 10, bl: 10, br: 10,			Height: parseInt(((vHeight != "" && vHeight != "auto" && vHeight.indexOf("%") == -1) ? parseInt(vHeight.substring(0,vHeight.indexOf("px"))) : el.scrollHeight)),			Width: parseInt(((vWidth != "" && vWidth != "auto" && vWidth.indexOf("%") == -1) ? parseInt(vWidth.substring(0,vWidth.indexOf("px"))) : el.scrollWidth)),			Color: el.getStyle("background-color").parseAllColor(),			Padding: parseInt(((vPadding != "" && vPadding.include("px")) ? vPadding.gsub('px', '') : 0)),			bWidth: parseInt(((vbWidth != "" && vbWidth.include("px")) ? vbWidth.gsub('px', '') : 0)),			bColor: el.getStyle("border-top-color").parseAllColor(),			bgImage: ((vImage != "none") ? vImage : "")			});		Corners.X[N] = d.merge(options).toObject();		Corners.X[N].border = Corners.X[N].bWidth + "px solid " + Corners.X[N].bColor;		if(Prototype.Browser.IE && vWidth == "auto" && vHeight == "auto") el.style.width = "100%";		if(Corners.X[N].tl || Corners.X[N].tr){			var tmr = Math.max(Corners.X[N].tl ? Corners.X[N].tl : 0, Corners.X[N].tr ? Corners.X[N].tr : 0);			tContainer = el.appendChild(Corners.Container(N,tmr,true));			Corner = Corners.Corner(N, "tr", tmr, (Corners.X[N]["tr"] != null));			if(Corner.style.position == "absolute"){				Corner.style.top = "0px"; Corner.style.right = "0px";				}			tContainer.appendChild(Corner);			Corner = Corners.Corner(N, "tl", tmr, (Corners.X[N]["tl"] != null));			if(Corner.style.position == "absolute"){				Corner.style.top = "0px"; Corner.style.left = "0px";				}			tContainer.appendChild(Corner);			el.style.borderTopWidth = "0px";			el.style.backgroundPosition = "0px -" + (tmr - Corners.X[N].bWidth) + "px";			tContainer.appendChild(Corners.Bar(N,'t',tmr));					}		if(Corners.X[N].bl || Corners.X[N].br){			var bmr = Math.max(Corners.X[N].bl ? Corners.X[N].bl : 0, Corners.X[N].br ? Corners.X[N].br : 0);			bContainer = el.appendChild(Corners.Container(N,bmr,false));			Corner = Corners.Corner(N, "br", tmr, (Corners.X[N]["br"] != null));			if(Corner.style.position == "absolute"){				Corner.style.bottom = "0px"; Corner.style.right = "0px";				}			bContainer.appendChild(Corner);			Corner = Corners.Corner(N, "bl", tmr, (Corners.X[N]["bl"] != null));			if(Corner.style.position == "absolute"){				Corner.style.bottom = "0px"; Corner.style.left = "0px";				}			bContainer.appendChild(Corner);			el.style.borderBottomWidth = "0px";			bContainer.appendChild(Corners.Bar(N,'b',bmr));					}		var content = document.createElement("DIV");		content.style.position = "relative";		content.innerHTML = el.innerHTML		content.className = "autoPadDiv";		var topPadding = Math.abs(tmr - Corners.X[N].Padding);		var botPadding = Math.abs(bmr - Corners.X[N].Padding);		if(tmr < Corners.X[N].Padding) content.style.paddingTop = topPadding + "px";		if(bmr < Corners.X[N].Padding) content.style.paddingBottom = bmr + "px";		content.setStyle({ paddingLeft: Corners.X[N].Padding+"px", paddingRight: Corners.X[N].Padding+"px" });		if(el.getStyle("position") != "absolute") el.style.position = "relative";		el.innerHTML = "";		el.style.padding = "0px";		el.appendChild(content);		},	Container: function(N, R, T){		var C = document.createElement("DIV");		C.id = "container-"+T+"-"+N;		C.style.width = "100%";		C.style.fontSize = "1px";		C.style.overflow = "hidden";		C.style.position = "absolute";		C.style.paddingLeft = Corners.X[N].bWidth + "px";		C.style.paddingRight = Corners.X[N].bWidth + "px";		C.style.height = R + "px";		if(T) C.style.top = 0 - (R-2) + "px";		else C.style.bottom = 0 - (R-2) + "px";		C.style.left = 0 - Corners.X[N].bWidth + "px";		return C;				},	Corner: function(N,cc,R,type){		if(type == false){			var C = document.createElement("DIV");			C.style.position = "relative";			C.style.fontSize = "1px";			C.style.overflow = "hidden";			C.style.backgroundColor = Corners.X[N].Color;			if(Corners.X[N].bgImage != ""){				C.style.backgroundImage = Corners.X[N].bgImage;				}			C.style.height = R - Corners.X[N].bWidth + "px";			switch(cc){				case "tl":				C.style.marginRight = Corners.X[N].tr - (Corners.X[N].bWidth*2) + "px";				C.style.borderLeft = Corners.X[N].border;				C.style.borderTop = Corners.X[N].border;				C.style.left = -Corners.X[N].bWidth + "px";				break;					case "tr":				C.style.marginLeft = Corners.X[N].tl - (Corners.X[N].bWidth*2) + "px";				C.style.borderRight = Corners.X[N].border;				C.style.borderTop = Corners.X[N].border;				C.style.backgroundPosition = "-" + (R + Corners.X[N].bWidth) + "px 0px";				C.style.left = Corners.X[N].bWidth + "px";				break;				case "bl":				C.style.marginRight = Corners.X[N].br - (Corners.X[N].bWidth*2) + "px";				C.style.borderLeft = Corners.X[N].border;				C.style.borderBottom = Corners.X[N].border;				C.style.left = -Corners.X[N].bWidth + "px";				C.style.backgroundPosition = "-" + (Corners.X[N].bWidth) + "px -" + (Corners.X[N].Height + (R + Corners.X[N].bWidth)) + "px";				break;				case "br":				C.style.marginLeft = Corners.X[N].bl - (Corners.X[N].bWidth*2) + "px";				C.style.borderRight = Corners.X[N].border;				C.style.borderBottom = Corners.X[N].border;				C.style.left = Corners.X[N].bWidth + "px"				C.style.backgroundPosition = "-" + (R + Corners.X[N].bWidth) + "px -" + (Corners.X[N].Height + (R + Corners.X[N].bWidth)) + "px";				break;				}			return C;			}		var C = document.createElement("DIV");		C.style.height = Corners.X[N][cc] + "px";		C.style.width = Corners.X[N][cc] + "px";		C.style.position = "absolute";		C.style.fontSize = "1px";		C.style.overflow = "hidden";		var bR = Corners.X[N][cc] - Corners.X[N].bWidth;		for(var x = 0, j = Corners.X[N][cc]; x < j; x++){			var y1 = (x+1) ? -1 : (Math.floor(Math.sqrt(Math.pow(bR, 2) - Math.pow((x+1), 2))) - 1);			if(bR != j){				var y2 = (x >= bR) ? -1 : Math.ceil(Math.sqrt(Math.pow(bR,2) - Math.pow(x, 2)));				var y3 = (x+1 >= j) ? -1 : (Math.floor(Math.sqrt(Math.pow(j ,2) - Math.pow((x+1), 2))) - 1);				}			var y4 = (x >= j) ? -1 : Math.ceil(Math.sqrt(Math.pow(j ,2) - Math.pow(x, 2)));			if(y1 > -1){				Corners.Pixel(N, x, 0, Corners.X[N].Color, 100, (y1+1), C, -1, Corners.X[N][cc]);				}			if(bR != j){				for(var y = (y1 + 1); y < y2; y++){					if(Corners.X[N].bgImage != ""){						Corners.Pixel(N, x, y, Corners.X[N].bColor, 100, 1, C, (((Corners.Fraction(x, y, bR) * 100) < 30) ? 0 : -1), Corners.X[N][cc]);						}					else{						Corners.Pixel(N, x, y, Corners.Blend(Corners.X[N].Color, Corners.X[N].bColor, Corners.Fraction(x, y, bR)), 100, 1, C, 0, Corners.X[N][cc], cc);						}					}				if(y3 >= y2){					if (y2 == -1) y2 = 0;					Corners.Pixel(N, x, y2, Corners.X[N].bColor, 100, (y3 - y2 + 1), C, 0, 0);					}				else if(y3 >= y1){					Corners.Pixel(N, x, (y1 + 1), Corners.X[N].bColor, 100, (y3 - y1), C, 0, 0);					}				var outsideColour = Corners.X[N].bColor;				}			else {				var outsideColour = Corners.X[N].Color;				var y3 = y1;				}			for(var y = (y3 + 1); y < y4; y++){				Corners.Pixel(N, x, y, outsideColour, (Corners.Fraction(x, y , j) * 100), 1, C, ((Corners.X[N].bWidth > 0) ? 0 : -1), Corners.X[N][cc]);				}			}		if(cc != "br"){			for(var t = 0; t < C.childNodes.length; t++){				var B = C.childNodes[t], BT=parseInt(B.style.top.substring(0,B.style.top.indexOf("px"))), BL=parseInt(B.style.left.substring(0,B.style.left.indexOf("px"))), BH=parseInt(B.style.height.substring(0,B.style.height.indexOf("px")));				if(cc=="tl" || cc=="bl"){					B.style.left = Corners.X[N][cc] -BL -1 + "px";					}				if(cc=="tr" || cc=="tl"){					B.style.top = Corners.X[N][cc] -BH - BT + "px";					}				var tP = Math.abs(Corners.X[N][cc] -BH -BT - Corners.X[N].bWidth);				var bP = Math.abs((Corners.X[N].Height + Corners.X[N][cc] + BT) - Corners.X[N].bWidth);				var lP = Math.abs((Corners.X[N][cc] -BL -1) - Corners.X[N].bWidth);				var rP = Math.abs((Corners.X[N].Width - Corners.X[N][cc] + Corners.X[N].bWidth) + BL);				switch(cc){					case "tr":					B.style.backgroundPosition = "-"+rP+"px -"+tP+"px";					break;					case "tl":					B.style.backgroundPosition = "-"+lP+"px -"+tP+"px";					break;					case "bl":					B.style.backgroundPosition = "-"+lP+"px -"+bP+"px";					break;					}				}			}		return C;		},	Bar: function(N,z,R,R2){		var B = document.createElement("DIV");		B.style.position = "relative";		B.style.fontSize = "1px";		B.style.overflow = "hidden";		B.style.backgroundColor = Corners.X[N].Color;		B.style.bgImage = Corners.X[N].bgImage;		if(Corners.X[N][z+"l"] && Corners.X[N][z+"r"]){			B.style.height = R - Corners.X[N].bWidth + "px";			B.style.marginLeft = Corners.X[N][z+"l"] - Corners.X[N].bWidth + "px";			B.style.marginRight = Corners.X[N][z+"r"] - Corners.X[N].bWidth + "px";			if(z == 't'){				B.style.borderTop = Corners.X[N].border;				if(Corners.X[N].bgImage != "")				B.style.backgroundPosition = "-"+(R-Corners.X[N].bWidth)+"px 0px";				}			else{				B.style.borderBottom = Corners.X[N].border;				if(Corners.X[N].bgImage != "")				B.style.backgroundPosition = "-" + (R - Corners.X[N].bWidth) + "px -" + (Corners.X[N].Height + (R2 - Corners.X[N].bWidth)) + "px";				}			}		return B;		},	Pixel: function(N, x, y, color, TA, height, Corner, image, CR){		var p = document.createElement("DIV");		p.style.height = height + "px";		p.style.width = "1px";		p.style.position = "absolute";		p.style.fontSize = "1px";		p.style.overflow = "hidden";		if(image == -1 && Corners.X[N].bgImage != ""){			p.style.bgImage = Corners.X[N].bgImage;			p.style.backgroundPosition = "-" + (Corners.X[N].Width - (CR - x) + Corners.X[N].bWidth) + "px -" + ((Corners.X[N].Height + (Math.max(Corners.X[N]["tr"], Corners.X[N]["tl"])) + y) -Corners.X[N].bWidth)+"px";			}		else{p.style.backgroundColor = color; }		if (TA != 100){ p.setOpacity(TA); }		p.style.top = y+"px";		p.style.left = x+"px";		Corner.appendChild(p);		},	Blend: function (C1, C2, CF){		var r1 = parseInt(C1.substr(1,2),16);		var g1 = parseInt(C1.substr(3,2),16);		var b1 = parseInt(C1.substr(5,2),16);		var r2 = parseInt(C2.substr(1,2),16);		var g2 = parseInt(C2.substr(3,2),16);		var b2 = parseInt(C2.substr(5,2),16);		var eR = Math.round((r1*CF)+(r2*(1-CF)));		var eG = Math.round((g1*CF)+(g2*(1-CF)));		var eB = Math.round((b1*CF)+(b2*(1-CF)));		if (eR > 255) eR = 255;		if (eR < 0) eR = 0;		if(eG > 255) eG = 255;		if(eG < 0) eG = 0;		if(eB > 255) eB = 255;		if(eB < 0) eB = 0;		return 'rgb('+eR+', '+eG+', '+eB+')'.parseColor();		//return "#"+Corners.ToHex()+Corners.ToHex(eG)+Corners.ToHex(eB);		},	depToHex: function(s){		return Corners.Hex((s / 16) - ((s % 16) / 16))+''+Corners.Hex(s % 16);		},	Hex: function (x){		if((x >= 0) && (x <= 9)) return x;		var l = ["A", "B", "C", "D", "E", "F"];		return l[x-10];		},	Fraction: function (x, y, r){		var p = 0, x = [], y = [], w, i;		i = Math.sqrt((r*r) - (x*x));		if ((i >= y) && (i < (y+1))){			w += "L";			x.push(0);			y.push(i - y);			}		i = Math.sqrt((r*r) - ((x+1)*(x+1)));		if ((i >= y) && (i < (y+1))){			w += "R";			x.push(1);			y.push(i - y);			}		i = Math.sqrt((r*r) - ((y+1)*(y+1)));		if ((i >= x) && (i < (x+1))){			w += "T";			x.push(i - x);			y.push(1);			}		i = Math.sqrt((r*r) - (x*x));		if ((i >= x) && (i < (x+1))){			w += "B";			x.push(i - x)			y.push(0);			}		switch (w){			case "LR":			p = Math.min(y[0],y[1])+((Math.max(y[0],y[1])-Math.min(y[0],y[1]))/2);			break;			case "LB":			p = (y[0]*x[1])/2;			break;			case "TR":			p = 1-(((1-x[0])*(1-y[1]))/2);			break;			case "TB":			p = Math.min(x[0],x[1])+((Math.max(x[0],x[1])-Math.min(x[0],x[1]))/2);			break;			default:			p = 1;			}		return p;		},	depColor: function(c){		if(c != "" && c != "transparent"){			if(c.substr(0, 3) == "rgb"){				c = c.substring(4, c.indexOf(")")).split(", ");				return "#"+Corners.ToHex(parseInt(c[0]))+Corners.ToHex(parseInt(c[1]))+Corners.ToHex(parseInt(c[2]));				}			else if(c.length == 4) return "#"+c.substring(1, 2)+c.substring(1, 2)+c.substring(2, 3)+c.substring(2, 3)+c.substring(3, 4)+c.substring(3, 4);			else return c;			}		return "#FFFFFF";		}	};var Forms = {	init: function(){		Forms.LoadPlaceholders();		Forms.LoadAutocompleters();		Forms.LoadDynamicOtherOption();		},	selectItemByValue: function(element, value){		if(element.options.length){			for(var i=0;i<element.options.length;i++){				if(element.options[i].value == value){					element.options[i].selected = true;					return;					}				}			element.options[(element.options.length-1)].selected = true;			}		},	updateAll: function(form){		form = $(form);		var elements = form.select('[formtype="phone"]');		for(var i = 0; i < elements.length; i++){			Forms.Phone.Update(elements[i].id);			}		var elements = form.select('[formtype="time"]');		for(var i = 0; i < elements.length; i++){			Form.Time.Update(elements[i].id);			}		},	LoadPlaceholders: function(){		onInputBlur = function(event){			if(this.value == ''){				$(this).hide();				$(this.readAttribute('holder_element')).show();				}			return false;			};		onHolderFocus = function(event){			$(this).hide();			$(this.readAttribute('input_element')).show().focus();			return false;			};		$$('[placeholder]').each(function(e){			var j = document.createElement('input');			j.className = "holder";			j.id = e.id + '_holder';			j.type = 'text';			j.value = e.readAttribute('placeholder');			if(e.type == 'text') e.insert({ before: j });			else e.insert({ after: j });			j = $(j).hide().observe('focus', onHolderFocus);			e.observe('blur', onInputBlur);			e.writeAttribute('holder_element', j.id);			j.writeAttribute('input_element', e.id);			if(e.value == ''){				e.hide();				j.show();				}			});		return true;		},	LoadAutocompleters: function(){		$$('[autocompleter]').each(function(e){			var i = document.createElement('span'), j = document.createElement('div');			i.id = e.id + '_indicator';			i.innerHTML = '<img src="images/ajax-loading.gif" alt="..." />'			e.insert({ after: i });			i.hide();			j.className = "autocompleter_div";			j.id = e.id + '_autocompleter';			i.insert({ after: j });			new Ajax.Autocompleter(e, j, e.readAttribute('autocompleter'), { paramName: "value" });			// , indicator: i.id			});		},	LoadDynamicOtherOption: function(){		onChange = function(event){			if(this.options[this.selectedIndex].text == 'Other'){				$(this.readAttribute('input_element')).show().focus();				}			else{				$(this.readAttribute('input_element')).hide();				}			};		onChangeUpdate = function(event){			$(this.readAttribute('select_element')).value = this.value;			};		$$('.adddynamicoutput').each(function(e){			var v = e.value, i = e.id+'_input';			e.writeAttribute('input_element', i);			e.insert({ bottom: '<option value="other user" id="'+e.id+'_option">Other</option>', after: ' <input type="text" select_element="'+e.id+'_option" id="'+i+'" />'});			e.observe('change', onChange);			Forms.selectItemByValue(e, v);			$(i).hide();			$(i).observe('keyup', onChangeUpdate);			});		},		updateFromFacebook: function(form){		FB.api('/me', function(response){			var data = response;			form = $(form);			form.descendants().each(function(el){				if(defined(data[el.readAttribute('fbid')])){					el.setValue(data[el.readAttribute('fbid')]);					el.parentNode.parentNode.highlight({ startcolor: '#ff99ff'});					}				});			});		},	Validate: {		Errors: '',		Error: false,		init: function(form){			if(!defined(form)) form = document;			var els = form.select('[validate]');			for (var i = 0; i < els.length; i++){				var validatewhat = els[i].getAttribute('validate');				if(validatewhat.indexOf('email') != -1){					if(Forms.Validate.Email(els[i]) == false) Forms.Validate.Invalid(els[i], 'is not a valid email');					}				if(validatewhat.indexOf('notnull') != -1){					if(Forms.Validate.NotNull(els[i]) == false) Forms.Validate.Invalid(els[i], 'cannot be empty');					}				}			if(Forms.Validate.Error == true){				Console.alert('Opps: Please correct the following problems:\r\n'+Forms.Validate.Errors);				Forms.Validate.Errors = '';				Forms.Validate.Error = false;				return false;				}			return true;			},		Email: function(element){			var email = element.value;			if (email == '') return false;			var splitted = email.match("^(.+)@(.+)$");			if (splitted == null) return false;			if (splitted[1] != null){				var regexp_user=/^\"?[\w-_\.]*\"?$/;				if(splitted[1].match(regexp_user) == null) return false;				}			if(splitted[2] != null){				var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;				if(splitted[2].match(regexp_domain) == null){					var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;					if(splitted[2].match(regexp_ip) == null) return false;					}				return true;				}			return false;			},		NotNull: function(element){			if(element.value != '' && element.value != ' ') return true;			return false;			},		Invalid: function(element, cause){			Forms.Validate.Error = true;			element.highlight();			// var temp = element;			// while(temp.tagName.toLowerCase() != 'tr'){ var temp = temp.parentNode; }			// temp.style.backgroundColor = 'red';			// temp.style.color = 'white';			var el = element.id.split('_');			Forms.Validate.Errors += '\t->'+el[el.length-1].capitalize()+' '+cause;			}		},	Time: {		Update: function(N){			var hr = $(N+'_hour').value, mn = $(N+'_min').value, ap = $(N+'_ampm').value			if(ap == 'PM') hr = (hr*1 + 12);			if(mn < 10) mn = '0'+mn;			$(N).value = (hr+''+mn)			}		},	Phone: {		Update: function(N){			$(N).value = '1 '+$(N+'_part1').value + ' ' + $(N+'_part2').value + ' ' + $(N+'_part3').value;			},		Create: function(N, def){			var part1 = '', part2 = '', part3 = '';			if(defined(def)){				var parts = def.split(' ');				if(parts.length != 4){					Console.log('Invalid Phone Number Format');					}				else{					part1 = parts[1];					part2 = parts[2];					part3 = parts[3];					}				}			document.write('<input type="hidden" id="'+N+'" value="">(<input onchange="Forms.Phone.Update(\''+N+'\')" type="text" id="'+N+'_part1" value="'+part1+'" size="3" maxlength="3">) <input onchange="Forms.Phone.Update(\''+N+'\')" type="text" id="'+N+'_part2" value="'+part2+'" size="3" maxlength="3"> <input onchange="Forms.Phone.Update(\''+N+'\')" type="text" id="'+N+'_part3" value="'+part3+'" size="4" maxlength="4">');			}		},	Calendar: {		timer_disable: false,		Config: [],		Today: new Date(),		Months: ['January','February','March','April','May','June','July','August','September','October','November','December'],		MonthDays: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],		WeekDays: ['S','M','T','W','T','F','S'],		getCalendar: function(N){			return $(Forms.Calendar.Config[N].CalendarID);			},		setHidden: function(N, Value){			if(Forms.Calendar.Config[N].output == true){				Forms.Calendar.getHiddenField(N).value = Value;				}			},		getHiddenField: function(N){			return $(Forms.Calendar.Config[N].hiddenFieldID);			},		getMonthList: function(N){			return $(Forms.Calendar.Config[N].monthListID);			},		getDayList: function(N){			return $(Forms.Calendar.Config[N].dayListID);			},		getYearField: function(N){			return $(Forms.Calendar.Config[N].yearFieldID);			},		getMonthDisplay: function(N){			return $(Forms.Calendar.Config[N].monthDisplayID);			},		isShowing: function(N){			return (Forms.Calendar.getCalendar(N).style.visibility != 'visible') ? false : true;			},		PickDay: function(N, Day){			Forms.Calendar.hide(N);			var MonthList = Forms.Calendar.getMonthList(N);			var DayList = Forms.Calendar.getDayList(N);			var YearField = Forms.Calendar.getYearField(N);			Forms.Calendar.FixDayList(DayList, Forms.Calendar.GetDayCount(Forms.Calendar.Config[N].displayed.yearValue, Forms.Calendar.Config[N].displayed.monthIndex));			for (var i=0; i<MonthList.length; i++){				if (MonthList.options[i].value == Forms.Calendar.Config[N].displayed.monthIndex){					MonthList.options[i].selected = true;					}				}			for (var j = 1; j <= DayList.length; j++){				if (j == Day){					DayList.options[j-1].selected = true;					}				}			Forms.Calendar.PickMonth(N, Forms.Calendar.Config[N].displayed.yearValue, Forms.Calendar.Config[N].displayed.monthIndex, Day);			YearField.value = Forms.Calendar.Config[N].picked.yearPad;			YearField.defaultValue = YearField.value;			},		Build: function(N){			var HTML = '<table class="CalendarTable" cellspacing="0" cellpadding="1"><tr><td id="'+N+'_Previous_ID" align="center" class="CalendarPrev" onClick="Forms.Calendar.ChangeMonth(\''+N+'\', \'Previous\');" onMouseDown="Forms.Calendar.Click(this, true)" onMouseUp="Forms.Calendar.Click(this, false)" onMouseOver="Forms.Calendar.Hover(this, true)" onMouseOut="Forms.Calendar.Hover(this, false)" title="'+Forms.Calendar.Config[N].previous.monthName+'"></td><td id="'+N+'_Current_ID" align="center" class="CalendarCurrent" colspan="5" onClick="Forms.Calendar.ChangeMonth(\''+N+'\', \'Current\');" onMouseDown="Forms.Calendar.Click(this, true)" onMouseUp="Forms.Calendar.Click(this, false)" onMouseOver="Forms.Calendar.Hover(this, true)" onMouseOut="Forms.Calendar.Hover(this, false)" title="Show Current Month">'+ Forms.Calendar.Config[N].displayed.fullName+'</td><td id="'+N+'_Next_ID" align="center" class="CalendarNext" onClick="Forms.Calendar.ChangeMonth(\''+N+'\', \'Next\');" onMouseDown="Forms.Calendar.Click(this, true)" onMouseUp="Forms.Calendar.Click(this, false)" onMouseOver="Forms.Calendar.Hover(this, true)" onMouseOut="Forms.Calendar.Hover(this, false)" title="'+Forms.Calendar.Config[N].next.monthName + '"></td></tr><tr>';				for (var w = 0; w < 7; w++){				HTML += '<td align="center" class="CalendarHeader">' + Forms.Calendar.WeekDays[w] + '</td>';				}			HTML += '</tr>';			var Rows = 5;			var rclass = '';			if (((Forms.Calendar.Config[N].displayed.dayCount == 31) && (Forms.Calendar.Config[N].displayed.firstDay > 4)) || ((Forms.Calendar.Config[N].displayed.dayCount == 30) && (Forms.Calendar.Config[N].displayed.firstDay == 6))){				Rows = 6;				}			else if ((Forms.Calendar.Config[N].displayed.dayCount == 28) && (Forms.Calendar.Config[N].displayed.firstDay == 0)){				Rows = 4;				}			for (var j = 0; j < Rows; j++){				HTML += '<tr>';				for (var i = 1; i <= 7; i++){					Day = (j * 7) + (i - Forms.Calendar.Config[N].displayed.firstDay);					if ((Day >= 1) && (Day <= Forms.Calendar.Config[N].displayed.dayCount)){						if ((Forms.Calendar.Config[N].displayed.yearValue == Forms.Calendar.Config[N].picked.yearValue) && (Forms.Calendar.Config[N].displayed.monthIndex == Forms.Calendar.Config[N].picked.monthIndex) && (Day == Forms.Calendar.Config[N].picked.day)){							rclass = 'CalendarDay CalendarDayActive';							}						else if ((Forms.Calendar.Config[N].displayed.yearValue == Forms.Calendar.Today.getFullYear()) && (Forms.Calendar.Config[N].displayed.monthIndex == Forms.Calendar.Today.getMonth()) && (Day == Forms.Calendar.Today.getDate())){							rclass = 'CalendarDay CalendarDayToday';							}						else {							rclass = 'CalendarDay';							}						HTML += '<td align="center" class="'+rclass+'" onClick="Forms.Calendar.PickDay(\''+N+'\','+Day+')">' + Day + '</td>';						}					else{						HTML += '<td class="CalendarDayNot">&nbsp</td>';						}					}				HTML += '</tr>';				}			return HTML += '</table>';			},		GetDayCount: function(Year, Month){			return ((Month == 1) && ((Year % 400 == 0) || ((Year % 4 == 0) && (Year % 100 != 0)))) ? 29 : Forms.Calendar.MonthDays[Month];			},		Click: function(Cell, Down){			if (Down){				Cell.style.borderLeft = 'buttonshadow 1px solid';				Cell.style.borderTop = 'buttonshadow 1px solid';				Cell.style.borderBottom = 'buttonhighlight 1px solid';				Cell.style.borderRight = 'buttonhighlight 1px solid';				}			else {				Cell.style.borderLeft = 'buttonhighlight 1px solid';				Cell.style.borderTop = 'buttonhighlight 1px solid';				Cell.style.borderBottom = 'buttonshadow 1px solid';				Cell.style.borderRight = 'buttonshadow 1px solid';				}			},		Hover: function(Cell, Over){			if (Over){				Forms.Calendar.Click(Cell, false);				}			else {				Cell.style.border = 'buttonface 1px solid';				}			},		FixDayList: function(List, New){			var Pick = List.selectedIndex + 1;			if (New != List.length){				var Old = List.length;				for (var k=Math.min(New, Old); k < Math.max(New, Old); k++){					(k >= New) ? List.options[New] = null : List.options[k] = new Option(k+1, k+1);					}				Pick = Math.min(Pick, New);				List.options[Pick-1].selected = true;				}			return Pick;			},		FixYearInput: function(Year){			var YearRE = new RegExp('\\d{' + Year.defaultValue.length + '}');			if (!YearRE.test(Year.value)) Year.value = Year.defaultValue;			},		Timer: {			Start: function(N){				this.Cancel(N);				Forms.Calendar.Config[N].timerID = Forms.Calendar.hide.delay(0.5, N);				},			Cancel: function(N){				try{					clearTimeout(Forms.Calendar.Config[N].timerID);					}				catch(e){					Console.log('Calendar.Timer.Cancel: '+e+' (N='+N+')');					}				}			},		show: function(N){			Forms.Calendar.getCalendar(N).style.zIndex = ++Forms.Calendar.Config[N].ZCounter;			Forms.Calendar.getCalendar(N).style.visibility = 'visible';			},		hide: function(N){			Forms.Calendar.Timer.Cancel(N);			Forms.Calendar.getCalendar(N).style.zIndex = --Forms.Calendar.Config[N].ZCounter;			Forms.Calendar.getCalendar(N).style.visibility = 'hidden';			},		showhide: function(N){			if (Forms.Calendar.isShowing(N)){				Forms.Calendar.Timer.Cancel(N);				Forms.Calendar.getCalendar(N).style.zIndex = --Forms.Calendar.Config[N].ZCounter;				Forms.Calendar.getCalendar(N).style.visibility = 'hidden';				}			else {				Forms.Calendar.getCalendar(N).style.zIndex = ++Forms.Calendar.Config[N].ZCounter;				Forms.Calendar.getCalendar(N).style.visibility = 'visible';				}			},		CheckMonthChange: function(N, MonthList){			var MonthPick = MonthList.options[MonthList.selectedIndex].value;			var DayList = Forms.Calendar.getDayList(N);			var DayPick = Forms.Calendar.FixDayList(DayList, Forms.Calendar.GetDayCount(Forms.Calendar.Config[N].picked.yearValue, MonthPick));			Forms.Calendar.PickMonth(N, Forms.Calendar.Config[N].picked.yearValue, MonthPick , DayPick);			},		CheckDayChange: function(N, DayList){			Forms.Calendar.PickMonth(N, Forms.Calendar.Config[N].picked.yearValue, Forms.Calendar.Config[N].picked.monthIndex, DayList.selectedIndex+1);			},		CheckYearChange: function(N, Year){			if (Year.value.length == 4){				var NewYear = Year.value;				}			else if (Year.value.length == 2){				var Mill = (Year.value < 76) ? 2000 : 1900;				var NewYear = Mill + parseInt(Year.value, 10);				}			else {				Year.value = Year.defaultValue;				Console.error('Forms.Calendar.CheckYearChange: Invalid Year! Please use 4 digit or 2 digit years.');				}			var MonthList = Forms.Calendar.getMonthList(N);			var DayList = Forms.Calendar.getDayList(N);			var MonthPick = Forms.Calendar.Config[N].picked.monthIndex;			var NewDay = Forms.Calendar.FixDayList(DayList, Forms.Calendar.GetDayCount(NewYear, MonthPick));			Forms.Calendar.PickMonth(N, NewYear, MonthPick, NewDay);			Year.defaultValue = Year.value;			},		MonthProps: function(N, Format, Year, Month, Day){			this.date = new Date(Year, Month, Day);			this.yearValue = this.date.getFullYear();			this.monthIndex = this.date.getMonth();			this.monthName = Forms.Calendar.Months[this.monthIndex];			this.fullName = this.monthName + ' ' + this.yearValue;			this.day = this.date.getDate();			this.dayCount = Forms.Calendar.GetDayCount(this.yearValue, this.monthIndex);			var FirstDate = new Date(this.yearValue, this.monthIndex, 1);			this.firstDay = FirstDate.getDay();			this.yearPad = this.yearValue.toString();			this.monthPad = (this.monthIndex < 9) ? '0'+((this.monthIndex + 1)*1) : this.monthIndex + 1;			this.dayPad = (this.day < 10) ? '0' + this.day.toString() : this.day;			this.monthShort = this.monthName.substr(0,3).toUpperCase();			if (Format.indexOf('YYYY') == -1){				this.yearPad = this.yearPad.substr(2);				}			if (Format.indexOf('/') >= 0){				var Delimiter = '/';				}			else if (Format.indexOf('-') >= 0){				var Delimiter = '-';				}			else{				var Delimiter = '';				}			if (/DD?.?((MON)|(MM?M?))/.test(Format)){				this.formatted = this.dayPad + Delimiter;				this.formatted += (RegExp.$1.length == 3) ? this.monthShort : this.monthPad;				}			else if (/((MON)|(MM?M?))?.?DD?/.test(Format)){				this.formatted = (RegExp.$1.length == 3) ? this.monthShort : this.monthPad;				this.formatted += Delimiter + this.dayPad;				}			this.formatted = (Format.substr(0,2) == 'YY') ? this.yearPad + Delimiter + this.formatted : this.formatted + Delimiter + this.yearPad;			},		LinkProps: function(N, LinkName){			if(arguments.length == 5){				this.date = new Date(arguments[2], arguments[3], arguments[4]);				}			if(arguments.length == 3){				this.date = new Date(arguments[2]);				}			this.yearValue = this.date.getFullYear();			this.monthIndex = this.date.getMonth();			this.monthName = Forms.Calendar.Months[this.monthIndex];			this.fullName = this.monthName + ' ' + this.yearValue;			this.day = this.date.getDate();			this.dayCount = Forms.Calendar.GetDayCount(this.yearValue, this.monthIndex);			var FirstDate = new Date(this.yearValue, this.monthIndex, 1);			this.firstDay = FirstDate.getDay();			this.displayID = Forms.Calendar.Config[N].hiddenFieldName + '_' + LinkName + '_ID';			},		SetMonth: function(N, Year, Month){			Forms.Calendar.Config[N].displayed = new Forms.Calendar.LinkProps(N, 'Current', Year, Month, 1);			Forms.Calendar.Config[N].previous = new Forms.Calendar.LinkProps(N, 'Previous', Forms.Calendar.Config[N].displayed.date.getTime() - 86400000);			Forms.Calendar.Config[N].next = new Forms.Calendar.LinkProps(N, 'Next', Forms.Calendar.Config[N].displayed.date.getTime() + (86400000 * (Forms.Calendar.Config[N].displayed.dayCount + 1)));			if (Forms.Calendar.Config[N].output == true){				Forms.Calendar.getCalendar(N).innerHTML = Forms.Calendar.Build(N);				}			},		ChangeMonth: function(N, Month){			if (Month == "Previous"){				Forms.Calendar.getCalendar(N).style.zIndex=++Forms.Calendar.Config[N].ZCounter;				Forms.Calendar.SetMonth(N, Forms.Calendar.Config[N].previous.yearValue, Forms.Calendar.Config[N].previous.monthIndex);				}			if (Month == "Current"){				Forms.Calendar.getCalendar(N).style.zIndex=++Forms.Calendar.Config[N].ZCounter;				Forms.Calendar.SetMonth(N, Forms.Calendar.Today.getFullYear(), Forms.Calendar.Today.getMonth());				}			if (Month == "Next"){				Forms.Calendar.getCalendar(N).style.zIndex=++Forms.Calendar.Config[N].ZCounter;				Forms.Calendar.SetMonth(N, Forms.Calendar.Config[N].next.yearValue, Forms.Calendar.Config[N].next.monthIndex);				}			},		PickMonth: function(N, Year, Month, Day){			Forms.Calendar.Config[N].picked = new Forms.Calendar.MonthProps(N, 'YYYY/MM/DD', Year, Month, Day);			Forms.Calendar.setHidden(N, Forms.Calendar.Config[N].picked.formatted);			Forms.Calendar.SetMonth(N, Year, Month);			},		Create: function(N, DefaultDate){			var HasDate = false;			var ThisYear = Forms.Calendar.Today.getFullYear();			var ThisMonth = Forms.Calendar.Today.getMonth();			var ThisDay = Forms.Calendar.Today.getDate();			if(arguments.length > 1){				var date = /^[0-9]{4}\/[0-9]{2}\/[0-9]{2}$/;				if(date.test(DefaultDate) == true){					var DefaultYear = DefaultDate.substring(0, 4)*1;					var DefaultMonth = DefaultDate.substring(5, 7)*1-1;					var DefaultDay = DefaultDate.substring(8, 10)*1;					HasDate = true;					}				else{					Console.error('Forms.Calendar.Create: Invalid DefaultDate [Not YYYY/MM/DD]. Using today instead.');					}				}			if(HasDate == false){				var DefaultYear = ThisYear;				var DefaultMonth = ThisMonth;				var DefaultDay = ThisDay;				}			Forms.Calendar.Config[N] = new function(){				this.hiddenFieldName = N;				this.hiddenFieldID = N;				this.monthListID = N + '_Month_ID';				this.dayListID = N + '_Day_ID';				this.yearFieldID = N + '_Year_ID';				this.monthDisplayID = N + '_Current_ID';				this.CalendarID = N + '_Calendar';				this.timerID = 0;				this.objName = N + '_Object';				this.format = 'YYYY/MM/DD';				this.output = false;				this.displayed = null;				this.previous = null;				this.next = null;				this.copyright = 'David Tyler';				this.ZCounter = 100;				}			var ThisDate = new Forms.Calendar.MonthProps(N, 'YYYY/MM/DD', DefaultYear, DefaultMonth, DefaultDay);			Forms.Calendar.PickMonth(N, DefaultYear, DefaultMonth, DefaultDay);			var InitialDate = Forms.Calendar.Config[N].picked.formatted;			var ret = '<table cellpadding="0" cellspacing="2"><tr class="CalendarForm"><td valign="middle"><input type="hidden" id="'+N+'" value="'+InitialDate+'"><select class="CalendarMonthInput" id="'+N+'_Month_ID" onChange="Forms.Calendar.CheckMonthChange(\''+N+'\', this)">';			for (var i = 0; i < 12; i++){				Sel = (Forms.Calendar.Config[N].picked.monthIndex == i) ? ' selected' : '';				ret += '<option value="'+i+'"'+Sel+'>'+Forms.Calendar.Months[i].substr(0,3)+'</option>';				}			ret += '</select></td><td valign="middle"><select class="CalendarDayInput" id="'+N+'_Day_ID" onChange="Forms.Calendar.CheckMonthChange(\''+N+'\', this)">';			for (var j=1; j<=Forms.Calendar.Config[N].picked.dayCount; j++){				Sel = (Forms.Calendar.Config[N].picked.day == j) ? ' selected' : '';				ret += '<option'+Sel+'>'+j+'</option>';				}			ret += '</select></td><td valign="middle"><input class="CalendarYearInput" type="text" id="'+N+'_Year_ID" size="'+Forms.Calendar.Config[N].picked.yearPad.length+'" maxlength="'+Forms.Calendar.Config[N].picked.yearPad.length+'" title="Year" value="'+Forms.Calendar.Config[N].picked.yearPad+'" onBlur="Forms.Calendar.CheckYearChange(\''+N+'\', this)"></td><td valign="middle"><a id="' + N + '_ID_Link" onclick="Forms.Calendar.showhide(\''+N+'\')" onMouseOut="Forms.Calendar.Timer.Start(\''+N+'\')" popuplink="'+N+'_Forms.Calendar"><img src="images/calendar.gif" title="Calendar" border="0"></a></td><td valign="middle"><span style="position:absolute"><div id="'+N+'_Calendar" class="CalendarContainer" onMouseOut="Forms.Calendar.Timer.Start(\''+N+'\')" onMouseOver="Forms.Calendar.Timer.Cancel(\''+N+'\')" popup="'+N+'_Calendar">' + Forms.Calendar.Build(N) + '</div></span></td></tr></table>';			Forms.Calendar.Config[N].output = true;			document.write(ret);			}		}	};var Fun = {	X: [],	Bats: function(){		Fun.X.num = 7;		Fun.X.pics = new Array("images/bat2.gif","images/bat3.gif","images/bat2.gif","images/bat1.gif");		Fun.X.load = new Array();		for(i=0; i < Fun.X.pics.length; i++){			Preload(Fun.X.pics[i]);			}		Fun.X.y=0, Fun.X.x=0;		Fun.X.yb=0, Fun.X.xb=0;		Fun.X.s0=0, Fun.X.s1=0.5, Fun.X.s2=1;		Fun.X.del=0.1;		Fun.X.cnt=new Array(0,1,2);		Fun.X.mix=new Array();		for (i=0; i < Fun.X.num; i++){			Fun.X.mix[i]=Fun.X.cnt[Math.floor(Math.random()*Fun.X.cnt.length)];			}		for (i=0; i < Fun.X.num; i++){			Fun.X.y1 = [];			Fun.X.y1[i]=0;			Fun.X.x1 = [];			Fun.X.x1[i]=0;			Fun.X.y2 = [];			Fun.X.y2[i]=0;			Fun.X.x2 = [];			Fun.X.x2[i]=0;			}		document.onmousemove = function(e){	Fun.X.y = e.clientY - window.pageYOffset; Fun.X.x = e.clientX;}		code = '<div id="batdiv" style="position:absolute;top:0px;left:0px"><div style="position:relative">';		for (i=0; i < Fun.X.num; i++){			xinc = (document.viewport.getWidth() / Fun.X.num);			code += '<img id="bat'+i+'" src="'+Fun.X.pics[0]+'" style="position:absolute;top:10px;left:'+(i*xinc)+'px">';			}		code += '</div></div>';		$$('body')[0].insert(code);		Fun.Bats_Move.delay(1);		},	Bats_Move: function(){		Fun.X.y1[0]=Math.round(Fun.X.y2[0]+=((Fun.X.y)-Fun.X.y2[0])*Fun.X.del);		Fun.X.x1[0]=Math.round(Fun.X.x2[0]+=((Fun.X.x)-Fun.X.x2[0])*Fun.X.del);		for (i=1; i < Fun.X.num; i++){			Fun.X.y1[i]=Math.round(Fun.X.y2[i]+=(Fun.X.y1[i-1]-Fun.X.y2[i])*Fun.X.del);			Fun.X.x1[i]=Math.round(Fun.X.x2[i]+=(Fun.X.x1[i-1]-Fun.X.x2[i])*Fun.X.del);			}		for (i=0; i < Fun.X.num; i++){			if (Fun.X.mix[i] == Fun.X.pics.length) Fun.X.mix[i]=0;			$("bat"+i).src = Fun.X.pics[Fun.X.mix[i]];			Fun.X.mix[i]+=Fun.X.s2;			}		Fun.X.yb = window.innerHeight/3;		Fun.X.xb= window.innerWidth/7;		for (i=0; i < Fun.X.num; i++){			t = $("bat"+i).style;			t.top = Fun.X.y1[i]+Fun.X.yb*Math.sin(((Fun.X.s0)+i*3.7)/4)*Math.cos((Fun.X.s0+i*35)/20)+Fun.X.sy;			t.left =Fun.X.x1[i]+Fun.X.xb*Math.cos(((Fun.X.s0)+i*3.7)/4)*Math.cos((Fun.X.s0+i*35)/62);			}		Fun.X.s0 += Fun.X.s1;		setTimeout('Fun.Bats_Move()',20);		},	Drag: function(){		$$('*').each(function(i){ new Draggable(i); });		}	};			