diff --git a/bigbluebutton-web/web-app/demo/.gitignore b/bigbluebutton-web/web-app/demo/.gitignore
deleted file mode 100644
index 10bdf4db6efd74cab7ab304066c3ab362af8be36..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bbb_api_conf.jsp
diff --git a/bigbluebutton-web/web-app/demo/.project b/bigbluebutton-web/web-app/demo/.project
deleted file mode 100644
index 6ad49546a9906df64b840bea9cef0f02754ff317..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>demo</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>
diff --git a/bigbluebutton-web/web-app/demo/bbb_api.jsp b/bigbluebutton-web/web-app/demo/bbb_api.jsp
deleted file mode 100644
index 3b318275be1dd1b978c77ace3b5c56941f70a317..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/bbb_api.jsp
+++ /dev/null
@@ -1,448 +0,0 @@
-<% 
-/*
-	BigBlueButton - http://www.bigbluebutton.org
-	
-	Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
-	
-	BigBlueButton is free software; you can redistribute it and/or modify it under the 
-	terms of the GNU Lesser General Public License as published by the Free Software 
-	Foundation; either version 3 of the License, or (at your option) any later 
-	version. 
-	
-	BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
-	WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-	PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-	
-	You should have received a copy of the GNU Lesser General Public License along 
-	with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
-	
-	Author: Fred Dixon <ffdixon@bigbluebutton.org>
-*/
-%>
-<%@page import="javax.xml.transform.dom.DOMSource"%>
-<%@page import="javax.xml.transform.stream.StreamResult"%>
-<%@page import="javax.xml.transform.OutputKeys"%>
-<%@page import="javax.xml.transform.TransformerFactory"%>
-<%@page import="javax.xml.transform.Transformer"%>
-<%@page import="org.w3c.dom.Element"%>
-<%@page import="com.sun.org.apache.xerces.internal.dom.ChildNode"%>
-<%@page import="org.w3c.dom.Node"%>
-<%@page import="org.w3c.dom.NodeList"%>
-
-<%@ page
-	import="java.util.*,java.io.*,java.net.*,javax.crypto.*,javax.xml.parsers.*,org.w3c.dom.Document,org.xml.sax.*"
-	errorPage="error.jsp" %>
-
-<%@ page import="org.apache.commons.codec.digest.*"%>
-<%@ include file="bbb_api_conf.jsp"%>
-
-<%!
-
-//
-// Create a meeting with specific 
-//    - meetingID
-//    - welcome message
-//    - moderator password
-//    - viewer password
-//    - voiceBridge
-//    - logoutURL
-//
-public String createMeeting(String meetingID, String welcome, String moderatorPassword, String viewerPassword, Integer voiceBridge, String logoutURL) {
-	String base_url_create = BigBlueButtonURL + "api/create?";
-	String base_url_join = BigBlueButtonURL + "api/join?";
-	
-	String welcome_param = "";
-	String checksum = "";
-	
-	String attendee_password_param = "&attendeePW=ap";
-	String moderator_password_param = "&moderatorPW=mp";
-	String voice_bridge_param = "";
-	String logoutURL_param = "";
-	
-	if ( (welcome != null) && ! welcome.equals("")) {
-		welcome_param = "&welcome=" + urlEncode(welcome);
-	}
-	
-	if ( (moderatorPassword != null) && ! moderatorPassword.equals("")) {
-		moderator_password_param = "&moderatorPW=" + urlEncode(moderatorPassword);
-	} 
-	
-	if ( (viewerPassword != null) && ! viewerPassword.equals("")) {
-		attendee_password_param = "&attendeePW=" + urlEncode(viewerPassword);
-	}
-	
-	if ( (voiceBridge != null) && voiceBridge > 0 ) {
-		voice_bridge_param = "&voiceBridge=" + urlEncode(voiceBridge.toString());
-	} else {
-		// No voice bridge number passed, so we'll generate a random one for this meeting
-		Random random = new Random();
-		Integer n = 70000 + random.nextInt(9999);	
-		voice_bridge_param = "&voiceBridge=" + n;
-	}	
-
-	if ( (logoutURL != null) && ! logoutURL.equals("")) {
-		logoutURL_param = "&logoutURL=" + urlEncode(logoutURL);
-	}
-	
-	//
-	// Now create the URL
-	//
-
-	String create_parameters = "name=" + urlEncode(meetingID) + "&meetingID=" + urlEncode(meetingID)
-								+ welcome_param + attendee_password_param + moderator_password_param 
-								+ voice_bridge_param + logoutURL_param;
-
-	Document doc = null;
-
-	try {
-		// Attempt to create a meeting using meetingID
-		String xml = getURL(base_url_create + create_parameters + "&checksum=" + checksum("create" + create_parameters + salt) );
-		doc = parseXml(xml);		
-	} catch (Exception e) {
-		e.printStackTrace();
-	}
-
-	if (doc.getElementsByTagName("returncode").item(0).getTextContent()
-			.trim().equals("SUCCESS")) {
-
-			
-		return meetingID;
-	}
-	
-	return "Error " + doc.getElementsByTagName("messageKey").item(0).getTextContent().trim() 
-					+ ": " + doc.getElementsByTagName("message").item(0).getTextContent().trim();
-}
-
-
-
-//
-// getJoinMeetingURL() -- get join meeting URL for both viewer and moderator
-//
-public String getJoinMeetingURL(String username, String meetingID, String password) {
-	String base_url_join = BigBlueButtonURL + "api/join?";
-	String join_parameters = "meetingID=" + urlEncode(meetingID) + "&fullName=" + urlEncode(username)
-											+ "&password=" + urlEncode(password);
-
-	return base_url_join + join_parameters + "&checksum=" + checksum("join" + join_parameters + salt);
-}
-
-
-
-// 
-// Create a meeting and return a URL to join it as moderator
-//
-public String getJoinURL(String username, String meetingID, String record, String welcome, Map<String, String> metadata) {
-	String base_url_create = BigBlueButtonURL + "api/create?";
-	String base_url_join = BigBlueButtonURL + "api/join?";
-	
-	String welcome_param = "";
-	
-	Random random = new Random();
-	Integer voiceBridge = 70000 + random.nextInt(9999);
-	
-	if ( (welcome != null) && ! welcome.equals("")) {
-		welcome_param = "&welcome=" + urlEncode(welcome);
-	}
-	
-	//
-	// When creating a meeting, the 'name' parameter is the name of the meeting (not to be confused with
-	// the username).  For example, the name could be "Fred's meeting" and the meetingID could be "ID-1234312".
-	//
-	// While name and meetinID could be different, we'll keep them the same.  Why?  Because calling api/create? 
-	// with a previously used meetingID will return same meetingToken (regardless if the meeting is running or not).
-	//
-	// This means the first person to call getJoinURL with meetingID="Demo Meeting" will actually create the
-	// meeting.  Subsequent calls will return the same meetingToken and thus subsequent users will join the same
-	// meeting.
-	//
-	// Note: We're hard-coding the password for moderator and attendee (viewer) for purposes of demo.
-	//
-
-	String create_parameters = "name=" + urlEncode(meetingID) + "&meetingID=" + urlEncode(meetingID)
-								+ welcome_param + "&attendeePW=ap&moderatorPW=mp&voiceBridge=" 
-								+ voiceBridge + "&record=" + record;
-
-	if(metadata!=null){
-		String metadata_params="";
-		for(String metakey : metadata.keySet()){
-			metadata_params = metadata_params + "&meta_" + urlEncode(metakey) + "=" + urlEncode(metadata.get(metakey));
-		}
-		create_parameters = create_parameters + metadata_params; 
-	}
-	
-	Document doc = null;
-
-	try {
-		// Attempt to create a meeting using meetingID
-		String xml = getURL(base_url_create + create_parameters + "&checksum=" + checksum("create" + create_parameters + salt) );
-		doc = parseXml(xml);		
-	} catch (Exception e) {
-		e.printStackTrace();
-	}
-
-	if (doc.getElementsByTagName("returncode").item(0).getTextContent()
-			.trim().equals("SUCCESS")) {
-
-		
-		//
-		// Now create a URL to join that meeting
-		//
-		
-		String join_parameters = "meetingID=" + urlEncode(meetingID) + "&fullName=" + urlEncode(username) + "&password=mp";
-
-		return base_url_join + join_parameters + "&checksum=" + checksum("join" + join_parameters + salt);
-
-	}
-	return doc.getElementsByTagName("messageKey").item(0).getTextContent().trim() 
-					+ ": " + doc.getElementsByTagName("message").item(0).getTextContent().trim();
-}
-
-
-//
-// getJoinURLViewer() -- Get the URL to join a meeting as viewer
-//
-public String getJoinURLViewer(String username, String meetingID) {
-
-	String base_url_join = BigBlueButtonURL + "api/join?";
-	String join_parameters = "meetingID=" + urlEncode(meetingID) + "&fullName=" + urlEncode(username)
-	+ "&password=ap";
-
-	return base_url_join + join_parameters + "&checksum=" + checksum("join" + join_parameters + salt);
-}
-
-
-
-//
-// checksum() -- create a hash based on the shared salt (located in bbb_api_conf.jsp)
-//
-public static String checksum(String s) {
-	String checksum = "";
-	try {
-		checksum = org.apache.commons.codec.digest.DigestUtils.shaHex(s);
-	} catch (Exception e) {
-		e.printStackTrace();
-	}
-	return checksum;
-}
-
-//
-// getURL() -- fetch a URL and return its contents as a String
-//
-public static String getURL(String url) {
-	StringBuffer response = null;
-
-	try {
-		URL u = new URL(url);
-		HttpURLConnection httpConnection = (HttpURLConnection) u
-				.openConnection();
-
-		httpConnection.setUseCaches(false);
-		httpConnection.setDoOutput(true);
-		httpConnection.setRequestMethod("GET");
-
-		httpConnection.connect();
-		int responseCode = httpConnection.getResponseCode();
-		if (responseCode == HttpURLConnection.HTTP_OK) {
-			InputStream input = httpConnection.getInputStream();
-
-			// Read server's response.
-			response = new StringBuffer();
-			Reader reader = new InputStreamReader(input, "UTF-8");
-			reader = new BufferedReader(reader);
-			char[] buffer = new char[1024];
-			for (int n = 0; n >= 0;) {
-				n = reader.read(buffer, 0, buffer.length);
-				if (n > 0)
-					response.append(buffer, 0, n);
-			}
-
-			input.close();
-			httpConnection.disconnect();
-		}
-	} catch (Exception e) {
-		e.printStackTrace();
-	}
-
-	if (response != null) {
-		return response.toString();
-	} else {
-		return "";
-	}
-}
-
-//
-// getURLisMeetingRunning() -- return a URL that the client can use to poll for whether the given meeting is running
-//
-public String getURLisMeetingRunning(String meetingID) {
-	String base_main = "&meetingID=" + urlEncode(meetingID);
-	String base_url = BigBlueButtonURL + "api/isMeetingRunning?";
-	String checksum ="";
-	
-	try {
-		checksum = DigestUtils.shaHex("isMeetingRunning" + base_main + salt);
-	} catch (Exception e) {
-		// TODO Auto-generated catch block
-		e.printStackTrace();
-	}
-	
-	return base_url + base_main + "&checksum=" + checksum;
-}
-
-//
-// isMeetingRunning() -- check the BigBlueButton server to see if the meeting is running (i.e. there is someone in the meeting)
-//
-public String isMeetingRunning(String meetingID) {
-	String base_main = "&meetingID=" + urlEncode(meetingID);
-	String base_url = BigBlueButtonURL + "api/isMeetingRunning?";
-	String checksum ="";
-	
-	try {
-		checksum = DigestUtils.shaHex("isMeetingRunning" + base_main + salt);
-	} catch (Exception e) {
-		// TODO Auto-generated catch block
-		e.printStackTrace();
-	}
-	
-	String xml = getURL(base_url + base_main + "&checksum=" + checksum);
-
-	Document doc = null;
-	try {
-		doc = parseXml(xml);
-	} catch (Exception e) {
-		e.printStackTrace();
-	}
-
-	if (doc.getElementsByTagName("returncode").item(0).getTextContent()
-			.trim().equals("SUCCESS")) {
-		return doc.getElementsByTagName("running").item(0).getTextContent().trim();
-	}
-	
-	return  "false";
-	
-}
-
-public String getMeetingInfoURL(String meetingID, String password) {
-	String meetingParameters = "meetingID=" + urlEncode(meetingID) + "&password=" + password;
-	return BigBlueButtonURL + "api/getMeetingInfo?" + meetingParameters + "&checksum=" + checksum("getMeetingInfo" + meetingParameters + salt);
-}
-
-public String getMeetingInfo(String meetingID, String password) {
-	try {
-		URLConnection hpCon = new URL(getMeetingInfoURL(meetingID, password)).openConnection();
-
-		InputStreamReader isr = new InputStreamReader(hpCon.getInputStream());
-		BufferedReader br = new BufferedReader(isr);
-		String data = br.readLine();
-		return data;
-	} catch (Exception e) {
-		e.printStackTrace(System.out);
-		return "";
-	}
-}
-
-public String getMeetingsURL() {
-	String meetingParameters = "random=" + new Random().nextInt(9999);
-	return BigBlueButtonURL + "api/getMeetings?" + meetingParameters + "&checksum=" + checksum("getMeetings" + meetingParameters + salt);
-}
-
-//
-// Calls getMeetings to obtain the list of meetings, then calls getMeetingInfo for each meeting
-// and concatenates the result.
-//
-public String getMeetings() {
-	try {
-		
-		// Call the API and get the result
-		URLConnection hpCon = new URL(getMeetingsURL()).openConnection();
-		InputStreamReader isr = new InputStreamReader(hpCon.getInputStream());
-		BufferedReader br = new BufferedReader(isr);
-		String data = br.readLine();
-		Document doc = parseXml(data);
-		
-		// tags needed for parsing xml documents
-		final String startTag = "<meetings>";
-		final String endTag = "</meetings>";
-		final String startResponse = "<response>";
-		final String endResponse = "</response>";
-		
-		// if the request succeeded, then calculate the checksum of each meeting and insert it into the document
-		NodeList meetingsList = doc.getElementsByTagName("meeting");
-		
-		String newXMldocument = startTag;
-		for (int i = 0; i < meetingsList.getLength(); i++) {
-			Element meeting = (Element) meetingsList.item(i);
-			String meetingID = meeting.getElementsByTagName("meetingID").item(0).getTextContent();
-			String password = meeting.getElementsByTagName("moderatorPW").item(0).getTextContent();
-			
-			data = getMeetingInfo(meetingID, password);
-			
-			if (data.indexOf("<response>") != -1) {
-				int startIndex = data.indexOf(startResponse) + startTag.length();
-				int endIndex = data.indexOf(endResponse);
-				newXMldocument +=  "<meeting>" + data.substring(startIndex, endIndex) + "</meeting>";
-			}
-		}
-		newXMldocument += endTag;
-
-		return newXMldocument;
-	} catch (Exception e) {
-		e.printStackTrace(System.out);
-		return null;
-	}
-}
-
-//
-public String endMeeting(String meetingID, String moderatorPassword) {
-	
-	String base_main = "meetingID=" + urlEncode(meetingID) + "&password=" + urlEncode(moderatorPassword);
-	String base_url = BigBlueButtonURL + "api/end?";
-	String checksum ="";
-	
-	try {
-		checksum = DigestUtils.shaHex("end" + base_main + salt);
-	} catch (Exception e) {
-		// TODO Auto-generated catch block
-		e.printStackTrace();
-	}
-
-	String xml = getURL(base_url + base_main + "&checksum=" + checksum);
-
-	Document doc = null;
-	try {
-		doc = parseXml(xml);
-	} catch (Exception e) {
-		e.printStackTrace();
-	}
-	
-	if (doc.getElementsByTagName("returncode").item(0).getTextContent()
-			.trim().equals("SUCCESS")) {
-		return "true";
-	}
-	
-	return  "Error " + doc.getElementsByTagName("messageKey").item(0).getTextContent().trim() 
-	+ ": " + doc.getElementsByTagName("message").item(0).getTextContent().trim();
-	
-}
-
-//
-// parseXml() -- return a DOM of the XML
-//
-public static Document parseXml(String xml) throws ParserConfigurationException, IOException, SAXException {
-	DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
-	DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
-	Document doc = docBuilder.parse(new InputSource(new StringReader(xml)));
-	return doc;
-}
-
-//
-// urlEncode() -- URL encode the string
-//
-public static String urlEncode(String s) {	
-	try {
-		return URLEncoder.encode(s, "UTF-8");
-	} catch (Exception e) {
-		e.printStackTrace();
-	}
-	return "";
-}
-%>
diff --git a/bigbluebutton-web/web-app/demo/create.jsp b/bigbluebutton-web/web-app/demo/create.jsp
deleted file mode 100755
index 2e73d40db8db024c70f61d24d83b5094fe44a4d6..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/create.jsp
+++ /dev/null
@@ -1,308 +0,0 @@
-<!--
-
-BigBlueButton - http://www.bigbluebutton.org
-
-Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
-
-BigBlueButton is free software; you can redistribute it and/or modify it under the 
-terms of the GNU Lesser General Public License as published by the Free Software 
-Foundation; either version 3 of the License, or (at your option) any later 
-version. 
-
-BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License along 
-with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
-
-Author: Fred Dixon <ffdixon@bigbluebutton.org>
-  
--->
-
-<%@ page language="java" contentType="text/html; charset=UTF-8"
-	pageEncoding="UTF-8"%>
-<% 
-	request.setCharacterEncoding("UTF-8"); 
-	response.setCharacterEncoding("UTF-8"); 
-%>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-	<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
-	<title>Create Your Own Meeting</title>
-
-	<script type="text/javascript"
-		src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
-	<script type="text/javascript" src="heartbeat.js"></script>
-</head>
-<body>
-
-
-<%@ include file="bbb_api.jsp"%>
-<%@ page import="java.util.regex.*"%>
-
-<br>
-
-<%
-	if (request.getParameterMap().isEmpty()) {
-		//
-		// Assume we want to create a meeting
-		//
-%>
-<%@ include file="demo_header.jsp"%>
-<h2>Create Your Own Meeting</h2>
-
-<p />
-<FORM NAME="form1" METHOD="GET">
-
-<table width=600 cellspacing="20" cellpadding="20"
-	style="border-collapse: collapse; border-right-color: rgb(136, 136, 136);"
-	border=3>
-	<tbody>
-		<tr>
-			<td width="50%">Create your own meeting.
-			<p />
-			</td>
-			<td width="50%">Step 1. Enter your name: <input type="text"
-				name="username1" /> <br />
-			<label for="crecord">record? </label>
-			<select id="crecord" name="record1">
-				<option value="true">yes</option>
-				<option value="false" selected>no</option>
-			</select>
-			<INPUT TYPE=hidden NAME=action VALUE="create"> <br />
-			<input id="submit-button" type="submit" value="Create meeting" /></td>
-		</tr>
-	</tbody>
-</table>
-
-</FORM>
-
-<script>
-//
-// We could have asked the user for both their name and a meeting title, but we'll just use their name to create a title
-// We'll use JQuery to dynamically update the button
-//
-$(document).ready(function(){
-    $("input[name='username1']").keyup(function() {
-        if ($("input[name='username1']").val() == "") {
-        	$("#submit-button").attr('value',"Create meeting" );
-        } else {
-       $("#submit-button").attr('value',"Create " +$("input[name='username1']").val()+ "'s meeting" );
-        }
-    });
-});
-</script>
-
-<%
-	} else if (request.getParameter("action").equals("create")) {
-		//
-		// User has requested to create a meeting
-		//
-
-		String username = request.getParameter("username1");
-		String meetingID = username + "'s meeting";
-		String record = request.getParameter("record1");
-
-		String meeting_ID = "";
-
-		//
-		// This is the URL for to join the meeting as moderator
-		//
-		String joinURL = getJoinURL(username, meetingID, record, "<br>Welcome to %%CONFNAME%%.<br>", null);
-
-		
-		String inviteURL = BigBlueButtonURL	+ "demo/create.jsp?action=invite&meetingID=" + URLEncoder.encode(meetingID, "UTF-8");
-%>
-
-<hr />
-<h2>Meeting Created</h2>
-<hr />
-
-
-<table width="800" cellspacing="20" cellpadding="20"
-	style="border-collapse: collapse; border-right-color: rgb(136, 136, 136);"
-	border=3>
-	<tbody>
-		<tr>
-			<td width="50%">
-			<center><strong> <%=username%>'s meeting</strong> has been
-			created.</center>
-			</td>
-
-			<td width="50%">
-			<p>&nbsp;</p>
-
-			Step 2. Invite others using the following <a href="<%=inviteURL%>">link</a> (shown below):
-			<form name="form2" method="POST">
-				<textarea cols="62" rows="5" name="myname" style="overflow: hidden">
-					<%=inviteURL%>
-				</textarea>
-			</form>
-			<p>&nbsp;
-			<p />Step 3. Click the following link to start your meeting:
-			<p>&nbsp;</p>
-			<center><a href="<%=joinURL%>">Start Meeting</a></center>
-			<p>&nbsp;</p>
-
-			</td>
-		</tr>
-	</tbody>
-</table>
-
-
-
-
-
-
-
-<%
-	} else if (request.getParameter("action").equals("enter")) {
-		//
-		// The user is now attempting to joing the meeting
-		//
-		String meetingID = request.getParameter("meetingID");
-		String username = request.getParameter("username");
-
-		String enterURL = BigBlueButtonURL
-			+ "demo/create.jsp?action=join&username="
-			+ URLEncoder.encode(username, "UTF-8") + "&meetingID="
-			+ URLEncoder.encode(meetingID, "UTF-8");
-
-		if (isMeetingRunning(meetingID).equals("true")) {
-			//
-			// The meeting has started -- bring the user into the meeting.
-			//
-%>
-<script type="text/javascript">
-	window.location = "<%=enterURL%>";
-</script>
-<%
-	} else {
-			//
-			// The meeting has not yet started, so check until we get back the status that the meeting is running
-			//
-			String checkMeetingStatus = getURLisMeetingRunning(meetingID);
-%>
-
-<script type="text/javascript">
-$(document).ready(function(){
-		$.jheartbeat.set({
-		   url: "<%=checkMeetingStatus%>",
-		   delay: 5000
-		}, function () {
-			mycallback();
-		});
-	});
-
-
-function mycallback() {
-	// Not elegant, but works around a bug in IE8 
-	var isMeetingRunning = ($("#HeartBeatDIV").text().search("true") > 0 );
-
-	if (isMeetingRunning) {
-		window.location = "<%=enterURL%>"; 
-	}
-}
-</script>
-
-<hr />
-<h2><strong><%=meetingID%></strong> has not yet started.</h2>
-<hr />
-
-
-<table width=600 cellspacing="20" cellpadding="20"
-	style="border-collapse: collapse; border-right-color: rgb(136, 136, 136);"
-	border=3>
-	<tbody>
-		<tr>
-			<td width="50%">
-
-			<p>Hi <%=username%>,</p>
-			<p>Now waiting for the moderator to start <strong><%=meetingID%></strong>.</p>
-			<br />
-			<p>(Your browser will automatically refresh and join the meeting
-			when it starts.)</p>
-			</td>
-			<td width="50%"><img src="polling.gif"></img></td>
-		</tr>
-	</tbody>
-</table>
-
-
-<%
-}
-	} else if (request.getParameter("action").equals("invite")) {
-		//
-		// We have an invite to an active meeting.  Ask the person for their name 
-		// so they can join.
-		//
-		String meetingID = request.getParameter("meetingID");
-%>
-
-<hr />
-<h2>Invite</h2>
-<hr />
-
-<FORM NAME="form3" METHOD="GET">
-
-<table width=600 cellspacing="20" cellpadding="20"
-	style="border-collapse: collapse; border-right-color: rgb(136, 136, 136);"
-	border=3>
-	<tbody>
-		<tr>
-			<td width="50%">
-
-			<p />You have been invited to join<br />
-			<strong><%=meetingID%></strong>.
-			</td>
-
-			<td width="50%">Enter your name: <input type="text"
-				name="username" /> <br />
-			<INPUT TYPE=hidden NAME=meetingID VALUE="<%=meetingID%>"> <INPUT
-				TYPE=hidden NAME=action VALUE="enter"> <br />
-			<input type="submit" value="Join" /></td>
-		</tr>
-	</tbody>
-</table>
-
-</FORM>
-
-
-
-
-<%
-	} else if (request.getParameter("action").equals("join")) {
-		//
-		// We have an invite request to join an existing meeting and the meeting is running
-		//
-		// We don't need to pass a meeting descritpion as it's already been set by the first time 
-		// the meeting was created.
-		String joinURL = getJoinURLViewer(request.getParameter("username"), request.getParameter("meetingID"));
-			
-		if (joinURL.startsWith("http://")) {
-%>
-
-<script language="javascript" type="text/javascript">
-  window.location.href="<%=joinURL%>";
-</script>
-
-<%
-	} else { 
-%>
-
-Error: getJoinURL() failed
-<p /><%=joinURL%> 
-
-<%
- 	}
- }
- %> 
-
-<%@ include file="demo_footer.jsp"%>
-
-</body>
-</html>
diff --git a/bigbluebutton-web/web-app/demo/demo1.jsp b/bigbluebutton-web/web-app/demo/demo1.jsp
deleted file mode 100755
index 1d8f36a620f440e225121b558600af4a4b82cd3b..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/demo1.jsp
+++ /dev/null
@@ -1,119 +0,0 @@
-<!--
-
-BigBlueButton - http://www.bigbluebutton.org
-
-Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
-
-BigBlueButton is free software; you can redistribute it and/or modify it under the 
-terms of the GNU Lesser General Public License as published by the Free Software 
-Foundation; either version 3 of the License, or (at your option) any later 
-version. 
-
-BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License along 
-with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
-
-Author: Fred Dixon <ffdixon@bigbluebutton.org>
-
--->
-
-<%@ page language="java" contentType="text/html; charset=UTF-8"
-	pageEncoding="UTF-8"%>
-<% 
-	request.setCharacterEncoding("UTF-8"); 
-	response.setCharacterEncoding("UTF-8"); 
-%>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-	<title>Join a Course</title>
-</head>
-<body>
-
-<%@ include file="bbb_api.jsp"%>
-
-<br>
-
-<% 
-if (request.getParameterMap().isEmpty()) {
-	//
-	// Assume we want to create a meeting
-	//
-	%> 
-<%@ include file="demo_header.jsp"%>
-
-<h2>Demo #1: Join a Course</h2>
-
-
-<FORM NAME="form1" METHOD="GET"> 
-<table cellpadding="5" cellspacing="5" style="width: 400px; ">
-	<tbody>
-		<tr>
-			<td>
-				&nbsp;</td>
-			<td style="text-align: right; ">
-				Full Name:</td>
-			<td style="width: 5px; ">
-				&nbsp;</td>
-			<td style="text-align: left ">
-				<input type="text" name="username" /></td>
-		</tr>
-		<tr>
-			<td>
-				&nbsp;</td>
-			<td>
-				&nbsp;</td>
-			<td>
-				&nbsp;</td>
-			<td>
-				<input type="submit" value="Join" /></td>
-		</tr>	
-	</tbody>
-</table>
-<INPUT TYPE=hidden NAME=action VALUE="create">
-</FORM>
-
-
-<%
-} else  if (request.getParameter("action").equals("create")) {
-	
-	//
-	// Got an action=create
-	//
-	
-	//
-    // Request a URL to join a meeting called "Demo Meeting"
-    // Pass null for welcome message to use the default message (see defaultWelcomeMessage in bigbluebutton.properties)
-    // Update: Added record parameter, default: false 
-    //
-	String joinURL = getJoinURL(request.getParameter("username"), "Demo Meeting", "false", null, null);
-
-	if (joinURL.startsWith("http://")) { 
-%>
-
-<script language="javascript" type="text/javascript">
-  window.location.href="<%=joinURL%>";
-</script>
-
-<%
-	} else {
-%>
-
-Error: getJoinURL() failed
-<p/>
-<%=joinURL %>
-
-<% 
-	}
-} 
-%>
-
-
-<%@ include file="demo_footer.jsp"%>
-
-</body>
-</html>
diff --git a/bigbluebutton-web/web-app/demo/demo2.jsp b/bigbluebutton-web/web-app/demo/demo2.jsp
deleted file mode 100755
index e1bc45a47a65595c9f9c48e077b3e45f2f66f8bd..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/demo2.jsp
+++ /dev/null
@@ -1,130 +0,0 @@
-<!--
-
-BigBlueButton - http://www.bigbluebutton.org
-
-Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
-
-BigBlueButton is free software; you can redistribute it and/or modify it under the 
-terms of the GNU Lesser General Public License as published by the Free Software 
-Foundation; either version 3 of the License, or (at your option) any later 
-version. 
-
-BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License along 
-with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
-
-Author: Fred Dixon <ffdixon@bigbluebutton.org>
-
--->
-<%@ page language="java" contentType="text/html; charset=UTF-8"
-	pageEncoding="UTF-8"%>
-<% 
-	request.setCharacterEncoding("UTF-8"); 
-	response.setCharacterEncoding("UTF-8"); 
-%>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Join a Selected Course</title>
-</head>
-<body>
-
-<%@ include file="bbb_api.jsp"%>
-
-<br>
-
-<%
-	if (request.getParameterMap().isEmpty()) {
-		//
-		// Assume we want to create a meeting
-		//
-%>
-
-<%@ include file="demo_header.jsp"%>
-
-<h2>Demo #2: Join a Selected Course</h2>
-
-
-<FORM NAME="form1" METHOD="GET">
-<table cellpadding="5" cellspacing="5" style="width: 400px; ">
-	<tbody>
-		<tr>
-			<td>
-				&nbsp;</td>
-			<td style="text-align: right; ">
-				Full Name:</td>
-			<td style="width: 5px; ">
-				&nbsp;</td>
-			<td style="text-align: left ">
-				<input type="text" name="username" /></td>
-		</tr>
-		
-		<tr>
-			<td>
-				&nbsp;</td>
-			<td style="text-align: right; ">
-				Course:</td>
-			<td>
-				&nbsp;
-			</td>
-			<td style="text-align: left ">
-			<select name="meetingID">
-				<option value="English 232">English 232</option>
-				<option value="English 300">English 300</option>
-				<option value="English 402">English 402</option>
-				<option value="Demo Meeting">Demo Meeting</option>
-			</select>				
-			</td>
-		</tr>
-		<tr>
-			<td>
-				&nbsp;</td>
-			<td>
-				&nbsp;</td>
-			<td>
-				&nbsp;</td>
-			<td>
-				<input type="submit" value="Join" /></td>
-		</tr>	
-	</tbody>
-</table>
-<INPUT TYPE=hidden NAME=action VALUE="create">
-</FORM>
-
-<%
-	} else if (request.getParameter("action").equals("create")) {
-		//
-		// Got an action=create
-		//
-
-		String username = request.getParameter("username");
-		String meetingID = request.getParameter("meetingID");
-
-		// String joinURL = getJoinURL(username, meetingID, "Welcome to " + meetingID );
-		// Update: added record parameter, default false
-		String joinURL = getJoinURL(username, meetingID,"false", "<br>Welcome to course: %%CONFNAME%%.<br>", null );
-
-		if (joinURL.startsWith("http://")) {
-%>
-
-<script language="javascript" type="text/javascript">
-  window.location.href="<%=joinURL%>";
-</script>
-
-<%
-	} else {
-%>
-
-Error: getJoinURL() failed
-<p /><%=joinURL%> <%
- 	}
- 	}
- %> <%@ include file="demo_footer.jsp"%>
-</body>
-</html>
-
diff --git a/bigbluebutton-web/web-app/demo/demo3.jsp b/bigbluebutton-web/web-app/demo/demo3.jsp
deleted file mode 100755
index 457ebbcc969972a505aed6274c281baa41eefc55..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/demo3.jsp
+++ /dev/null
@@ -1,293 +0,0 @@
-<!--
-
-BigBlueButton - http://www.bigbluebutton.org
-
-Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
-
-BigBlueButton is free software; you can redistribute it and/or modify it under the 
-terms of the GNU Lesser General Public License as published by the Free Software 
-Foundation; either version 3 of the License, or (at your option) any later 
-version. 
-
-BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License along 
-with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
-
-Author: Fred Dixon <ffdixon@bigbluebutton.org>
-
--->
-
<%@ page language="java" contentType="text/html; charset=UTF-8"
-	pageEncoding="UTF-8"%>
-<% 
-	request.setCharacterEncoding("UTF-8"); 
-	response.setCharacterEncoding("UTF-8"); 
-%>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-	<title>Join a Course (Password Required)</title>
-</head>
-<body>
-
-<%@ include file="bbb_api.jsp"%>
-
-<br>
-
-<% 
-
-//
-// We're going to define some sample courses (meetings) below.  This API exampe shows how you can create a login page for a course. 
-// The password below are not available to users as they are compiled on the server.
-//
-
-HashMap<String, HashMap> allMeetings = new HashMap<String, HashMap>();
-HashMap<String, String> meeting;
-
-String welcome = "<br>Welcome to %%CONFNAME%%!<br><br>For help see our <a href=\"event:http://www.bigbluebutton.org/content/videos\"><u>tutorial videos</u></a>.<br><br>To join the voice bridge for this meeting:<br>  (1) click the headset icon in the upper-left, or<br>  (2) dial xxx-xxx-xxxx (toll free:1-xxx-xxx-xxxx) and enter conference ID: %%CONFNUM%%.<br><br>";
-
-
-//
-// English courses
-//
-
-meeting = new HashMap<String, String>();
-allMeetings.put( "ENGL-2013: Research Methods in English", meeting );	// The title that will appear in the drop-down menu
-	meeting.put("welcomeMsg", 	welcome);			// The welcome mesage
-	meeting.put("moderatorPW", 	"prof123");			// The password for moderator
-	meeting.put("viewerPW", 	"student123");			// The password for viewer
-	meeting.put("voiceBridge", 	"72013");			// The extension number for the voice bridge (use if connected to phone system)
-	meeting.put("logoutURL", 	"/bigbluebutton/demo/demo3.jsp");  // The logout URL (use if you want to return to your pages)
-
-meeting = new HashMap<String, String>();
-allMeetings.put( "ENGL-2213: Drama Production I", meeting );
-	meeting.put("welcomeMsg", 	welcome);
-	meeting.put("moderatorPW", 	"prof123");
-	meeting.put("viewerPW", 	"student123");
-	meeting.put("voiceBridge", 	"72213");
-	meeting.put("logoutURL", 	"/bigbluebutton/demo/demo3.jsp");
-
-meeting = new HashMap<String, String>();
-allMeetings.put( "ENGL-2023: Survey of English Literature", meeting );
-	meeting.put("welcomeMsg", 	welcome);
-	meeting.put("moderatorPW", 	"prof123");
-	meeting.put("viewerPW", 	"student123");
-	meeting.put("voiceBridge", 	"72023");
-	meeting.put("logoutURL", 	"/bigbluebutton/demo/demo3.jsp");
-
-//
-// Law Courses
-//
-
-meeting = new HashMap<String, String>();
-allMeetings.put( "LAW-1323: Fundamentals of Advocacy ", meeting );
-	meeting.put("welcomeMsg", 	welcome);
-	meeting.put("moderatorPW", 	"prof123");
-	meeting.put("viewerPW", 	"student123");
-	meeting.put("voiceBridge", 	"71232");
-	meeting.put("logoutURL", 	"/bigbluebutton/demo/demo3.jsp");
-
-meeting = new HashMap<String, String>();
-allMeetings.put( "LAW-2273: Business Organizations", meeting );
-	meeting.put("welcomeMsg", 	welcome);
-	meeting.put("moderatorPW", 	"prof123");
-	meeting.put("viewerPW", 	"student123");
-	meeting.put("voiceBridge", 	"72273");
-	meeting.put("logoutURL", 	"/bigbluebutton/demo/demo3.jsp");
-
-meeting = new HashMap<String, String>();
-allMeetings.put( "LAW-3113: Corporate Finance", meeting );
-	meeting.put("welcomeMsg", 	welcome);
-	meeting.put("moderatorPW", 	"theprof");
-	meeting.put("viewerPW", 	"student123");
-	meeting.put("voiceBridge", 	"71642");
-	meeting.put("logoutURL", 	"/bigbluebutton/demo/demo3.jsp");
-
-
-//
-// Professor's Virtaul Office Hours
-//
-
-meeting = new HashMap<String, String>();
-allMeetings.put( "Virtual Office Hours - Steve Stoyan", meeting );
-	meeting.put("welcomeMsg", 	welcome);
-	meeting.put("moderatorPW", 	"prof123");
-	meeting.put("viewerPW", 	"student123");
-	meeting.put("voiceBridge", 	"70001");
-	meeting.put("logoutURL", 	"/bigbluebutton/demo/demo3.jsp");
-
-meeting = new HashMap<String, String>();
-allMeetings.put( "Virtual Office Hours - Michael Bailetti", meeting );
-	meeting.put("welcomeMsg", 	welcome);
-	meeting.put("moderatorPW", 	"prof123");
-	meeting.put("viewerPW", 	"student123");
-	meeting.put("voiceBridge", 	"70002");
-	meeting.put("logoutURL", 	"/bigbluebutton/demo/demo3.jsp");
-
-meeting = new HashMap<String, String>();
-allMeetings.put( "Virtual Office Hours - Tony Weiss", meeting );
-	meeting.put("welcomeMsg", 	welcome);
-	meeting.put("moderatorPW", 	"prof123");
-	meeting.put("viewerPW", 	"student123");
-	meeting.put("voiceBridge", 	"70003");
-	meeting.put("logoutURL", 	"/bigbluebutton/demo/demo3.jsp");
-
-
-meeting = null;
-
-Iterator<String> meetingIterator = new TreeSet<String>(allMeetings.keySet()).iterator();
-
-if (request.getParameterMap().isEmpty()) {
-		//
-		// Assume we want to join a course
-		//
-	%> 
-<%@ include file="demo_header.jsp"%>
-
-<h2>Demo #3: Join a Course (password required)</h2>
-
-
-<FORM NAME="form1" METHOD="GET">
-<table cellpadding="5" cellspacing="5" style="width: 400px; ">
-	<tbody>
-		<tr>
-			<td>
-				&nbsp;</td>
-			<td style="text-align: right; ">
-				Full&nbsp;Name:</td>
-			<td style="width: 5px; ">
-				&nbsp;</td>
-			<td style="text-align: left ">
-				<input type="text" name="username" /></td>
-		</tr>
-		
-	
-		
-		<tr>
-			<td>
-				&nbsp;</td>
-			<td style="text-align: right; ">
-				Course:</td>
-			<td>
-				&nbsp;
-			</td>
-			<td style="text-align: left ">
-			<select name="meetingID">
-			<%
-				String key;
-				while (meetingIterator.hasNext()) {
-					key = meetingIterator.next(); 
-					out.println("<option value=\"" + key + "\">" + key + "</option>");
-				}
-			%>
-			</select>
-				
-			</td>
-		</tr>
-		<tr>
-			<td>
-				&nbsp;</td>
-			<td style="text-align: right; ">
-				Password:</td>
-			<td>
-				&nbsp;</td>
-			<td>
-				<input type="password" name="password" /></td>
-		</tr>
-		<tr>
-			<td>
-				&nbsp;</td>
-			<td>
-				&nbsp;</td>
-			<td>
-				&nbsp;</td>
-			<td>
-				<input type="submit" value="Join" /></td>
-		</tr>	
-	</tbody>
-</table>
-<INPUT TYPE=hidden NAME=action VALUE="create">
-</FORM>
-
-Passwords:  
-<ul>
-   <li>prof123 - login as professor (moderator privlidges)</li>
-   <li>student123 - login as student (viewer privlidges)</li>
-</ul>
-
-
-<%
-	} else if (request.getParameter("action").equals("create")) {
-		//
-		// Got an action=create
-		//
-
-		String username = request.getParameter("username");
-		String meetingID = request.getParameter("meetingID");
-		String password = request.getParameter("password");
-		
-		meeting = allMeetings.get( meetingID );
-		
-		String welcomeMsg = meeting.get( "welcomeMsg" );
-		String logoutURL = meeting.get( "logoutURL" );
-		Integer voiceBridge = Integer.parseInt( meeting.get( "voiceBridge" ).trim() );
-
-		String viewerPW = meeting.get( "viewerPW" );
-		String moderatorPW = meeting.get( "moderatorPW" );
-		
-		//
-		// Check if we have a valid password
-		//
-		if ( ! password.equals(viewerPW) && ! password.equals(moderatorPW) ) {
-%>
-
-Invalid Password, please <a href="javascript:history.go(-1)">try again</a>.
-
-<%
-			return;
-		}
-		
-		//
-		// Looks good, let's create the meeting
-		//
-		String meeting_ID = createMeeting( meetingID, welcomeMsg, moderatorPW, viewerPW, voiceBridge, logoutURL );
-		
-		//
-		// Check if we have an error.
-		//
-		if( meeting_ID.startsWith("Error ")) {
-%>
-
-Error: createMeeting() failed
-<p /><%=meeting_ID%> 
-
-
-<%
-			return;
-		}
-		
-		//
-		// We've got a valid meeting_ID and passoword -- let's join!
-		//
-		
-		String joinURL = getJoinMeetingURL(username, meeting_ID, password);			
-%>
-
-<script language="javascript" type="text/javascript">
-  window.location.href="<%=joinURL%>";
-</script>
-
-<%
-	} 
-%>
- 
-<%@ include file="demo_footer.jsp"%>
-
-</body>
-</html>
-
-
diff --git a/bigbluebutton-web/web-app/demo/demo4.js b/bigbluebutton-web/web-app/demo/demo4.js
deleted file mode 100755
index b674123a85a119db8fa999dad86a365f80790047..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/demo4.js
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
-	BigBlueButton - http://www.bigbluebutton.org
-	
-	Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
-	
-	BigBlueButton is free software; you can redistribute it and/or modify it under the 
-	terms of the GNU Lesser General Public License as published by the Free Software 
-	Foundation; either version 3 of the License, or (at your option) any later 
-	version. 
-	
-	BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
-	WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-	PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-	
-	You should have received a copy of the GNU Lesser General Public License along 
-	with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
-	
-	Author: Islam El-Ashi <ielashi@gmail.com>
-*/
-
-var meetings;	// will hold the meetings data
-
-$(document).ready(function(){
-	updateMeetingInfo();	// update the available meeting information as soon as the page is loaded.
-	setInterval("updateMeetingInfo()", 15000);	// update the meeting information every 15 seconds
-});
-
-
-// For each active meeting, create a table listing the participants and insert it into the page.
-function createMeetings() {
-	var nOfMeetings = 0;
-	if (meetings.meeting) {
-		for (var i in meetings.meeting) {
-			
-			// this variable is to work around the JSON nuance of having a variable instead of an array of one member.
-			// if we detect there is more than one meeting use the array, otherwise use the variable
-			var meeting = (meetings.meeting[i].attendees != null) ? meetings.meeting[i] : meetings.meeting;
-			
-			createMeetingTable(meeting);
-			
-			if (meeting.participantCount != "0") nOfMeetings++;
-			
-			// this is also to work around the JSON nuance, if we previously detected that there is only
-			// one element (i.e. a variable) then we shouldn't loop again.
-			if (meeting == meetings.meeting) break;
-		}
-	}
-	
-	// if there are no meetings then display a message to the user.
-	if (nOfMeetings == 0) { 
-		$("#no_meetings").text("No meetings currently running.");
-		$("#meetings").text('');
-	}
-	else 
-		$("#no_meetings").text('');
-}
-
-// creates div tags for each meeting to be able to insert the meeting table into the DOM afterwards
-function initializeDivTags() {
-	if (meetings.meeting) {
-		var meetingID;
-		var meeting;
-		var encodedMeetingID;
-		for (var i in meetings.meeting) {
-			meeting = (meetings.meeting[i].attendees != null) ? meetings.meeting[i] : meetings.meeting;
-			meetingID = meeting.meetingID;
-			encodedMeeting = encode(meetingID);
-			
-			if ($("#" + encodedMeeting).length == 0) {
-				// assign the div tag an id unique to each meeting
-				// the id assigned is the encoded value of the meeting id, the encoding is to avoid
-				// special characters and spaces in the id
-				$("#meetings").append('<div id="' + encodedMeeting + '" class="hiddenDiv"></div>');
-			}
-			
-			if (meeting == meetings.meeting) break;
-		}
-	}
-}
-
-// call the demo4 helper page to fetch the updated data, this is executed every 15 seconds.
-function updateMeetingInfo() {
-	$.ajax({
-    	type: "GET",
-		url: 'demo4_helper.jsp?getxml=true',
-		dataType: "text/xml",
-		cache: false,
-		success: function(xml) {
-			meetings = $.xml2json(xml);
-			initializeDivTags();
-			createMeetings();
-		},
-		error: function() {
-			$("#no_meetings").text("Failed to connect to API.");
-			$("#meetings").text("");
-		}
-	});
-}
-
-function getMeetingsInfoURL(meetingID, password, checksum) {
-	return '../api/getMeetingInfo?meetingID=' + meetingID + '&password=' + password + '&checksum=' + checksum;
-}
-
-function createMeetingTable(meeting) {	
-	
-	var form = '<th><FORM NAME="form1" METHOD="GET"><input type="hidden" name="meetingID" value="' + meeting.meetingID + '"/>';
-	form += '<input type="hidden" name="moderatorPW" value="' + meeting.moderatorPW + '"/>';
-	form += '<INPUT TYPE=hidden NAME=action VALUE="end">';
-	form += '<input type="submit" value="End"/></FORM>';
-	form += '</th>';
-	
-	var tableContent = '<table name="' + meeting.meetingID + '" class="hor-minimalist-b" cellspacing="0" summary="The current participants in a meeting"><caption>' + meeting.meetingID + '<caption><tr><th scope="col" abbr="Participants">Participants</th><th scope="col" abbr="Name">Name</th><th scope="col" abbr="Role">Role</th>';
-	
-	//uncomment below to add the ability to end meetings in the activity monitor
-	//tableContent += form;
-	
-	tableContent += '</tr>';
-	
-	var encodedMeetingID = encode(meeting.meetingID);
-	var tableRowId;
-	var newRows = new Array();
-	var numberOfRows = 0;
-	
-	if (meeting.attendees.attendee) {
-		for (var i in meeting.attendees.attendee) {
-			var attendee = (meeting.attendees.attendee[i].userID != null) ? meeting.attendees.attendee[i] : meeting.attendees.attendee;
-			tableRowId = encodedMeetingID + '_' + attendee.userID;
-			tableContent += '<tr id="' + tableRowId + '"><td>' + attendee.userID + '<td>' + attendee.fullName + '</td><td>' + attendee.role + '</td></tr>';
-
-			// if there is a new row to be added, then add to the new rows array to display it with a flash effect.
-			if ($("#" + tableRowId).length == 0) {
-				newRows[newRows.length] = tableRowId;
-			}
-			numberOfRows++;
-			
-			if (attendee == meeting.attendees.attendee) break;
-		}
-	}
-	
-	tableContent += '</table>';
-
-	if (numberOfRows > 0) {
-		$("#" + encodedMeetingID).html(tableContent);
-		$("#" + encodedMeetingID).show("fast");
-	}
-	else {
-		$("#" + encodedMeetingID).hide("fast");
-	}
-
-	for (var i = 0; i < newRows.length; i++) {
-		$("#" + newRows[i]).effect("highlight", {}, 3000);
-	}
-}
-
-// the encoding hashes the string to an md5, which ensures - to a great extent - that the encoded string will be 
-// 1. unique per the original string
-// 2. has no spaces and/or special characters
-function encode(string) {
-	return hex_md5(string);
-}
\ No newline at end of file
diff --git a/bigbluebutton-web/web-app/demo/demo4.jsp b/bigbluebutton-web/web-app/demo/demo4.jsp
deleted file mode 100755
index edee4c1e9b8f2465bab232799863635390fe69a1..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/demo4.jsp
+++ /dev/null
@@ -1,106 +0,0 @@
-<!--
-
-BigBlueButton - http://www.bigbluebutton.org
-
-Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
-
-BigBlueButton is free software; you can redistribute it and/or modify it under the 
-terms of the GNU Lesser General Public License as published by the Free Software 
-Foundation; either version 3 of the License, or (at your option) any later 
-version. 
-
-BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License along 
-with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
-
-Author: Islam El-Ashi <ielashi@gmail.com>
-
--->
-
-<%@ page language="java" contentType="text/html; charset=UTF-8"
-	pageEncoding="UTF-8"%>
-<% 
-	request.setCharacterEncoding("UTF-8"); 
-	response.setCharacterEncoding("UTF-8"); 
-%>
-
-<%@page import="org.w3c.dom.*"%>
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Activity Monitor</title>
-<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
-<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
-<script type="text/javascript" src="demo4.js"></script>
-<script src="md5.js"></script>
-<script type="text/javascript" src="jquery.xml2json.js"></script>
-<style type="text/css">
-.hiddenDiv {display:none;}
-.hor-minimalist-b{font-family:"Lucida Sans Unicode", "Lucida Grande", Sans-Serif;font-size:12px;background:#fff;width:480px;border-collapse:collapse;text-align:left;margin:20px;}.hor-minimalist-b th{font-size:14px;font-weight:normal;color:#039;border-bottom:2px solid #6678b1;padding:10px 8px;}.hor-minimalist-b td{border-bottom:1px solid #ccc;color:#669;padding:6px 8px;width:100px;}.hor-minimalist-b tbody tr:hover td{color:#009;}</style>
-</head>
-<body>
-
-<%@ include file="bbb_api.jsp"%>
-
-<br>
-
-<%@ include file="demo_header.jsp"%>
-
-
-<%
-if (request.getParameterMap().isEmpty()) {
-%>
-
-<h2>Demo #4: Activity Monitor</h2>
-
-<p id="no_meetings"></p>
-
-<div id="meetings"></div>
-
-
-<% 
-} else if (request.getParameter("action").equals("end")) {
-	 
-	String mp = request.getParameter("moderatorPW");
-	String meetingID = request.getParameter("meetingID");
-	
-	String result = endMeeting(meetingID, mp);
-	
-	if ( result.equals("true") ){
-
-%>
-
-<h2>Demo #4: Activity Monitor</h2>
-
-<%=meetingID%> has been terminated.
-
-<p id="no_meetings"></p>
-
-<div id="meetings"></div>
-
-<% } else { %>
-
-<h2>Demo #4: Activity Monitor</h2>
-
-
-Unable to end meeting: <%=meetingID%>
-
-<%=result%>
-
-
-
-
-<% 		}
-	}%>
-	
- <%@ include file="demo_footer.jsp"%>
-</body>
-</html>
-
- 
-
diff --git a/bigbluebutton-web/web-app/demo/demo4_helper.jsp b/bigbluebutton-web/web-app/demo/demo4_helper.jsp
deleted file mode 100755
index 6532a44886b7781c8d20e38cb4e6a18e667432e8..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/demo4_helper.jsp
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" ?>
-<%= getMeetings() %>
-<%@ include file="bbb_api.jsp" %>
-<%@ page contentType="text/xml" %>
-
-
diff --git a/bigbluebutton-web/web-app/demo/demo5.jsp b/bigbluebutton-web/web-app/demo/demo5.jsp
deleted file mode 100755
index f0251ab2f275bdd1c587ddd616a0ac5ffec8b1ab..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/demo5.jsp
+++ /dev/null
@@ -1,308 +0,0 @@
-<!--
-
-BigBlueButton - http://www.bigbluebutton.org
-
-Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
-
-BigBlueButton is free software; you can redistribute it and/or modify it under the 
-terms of the GNU Lesser General Public License as published by the Free Software 
-Foundation; either version 3 of the License, or (at your option) any later 
-version. 
-
-BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License along 
-with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
-
-Author: Fred Dixon <ffdixon@bigbluebutton.org>
-  
--->
-
-<%@ page language="java" contentType="text/html; charset=UTF-8"
-	pageEncoding="UTF-8"%>
-<% 
-	request.setCharacterEncoding("UTF-8"); 
-	response.setCharacterEncoding("UTF-8"); 
-%>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-	<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
-	<title>Create Your Own Meeting</title>
-
-	<script type="text/javascript"
-		src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
-	<script type="text/javascript" src="heartbeat.js"></script>
-</head>
-<body>
-
-
-<%@ include file="bbb_api.jsp"%>
-<%@ page import="java.util.regex.*"%>
-
-<br>
-
-<%
-	if (request.getParameterMap().isEmpty()) {
-		//
-		// Assume we want to create a meeting
-		//
-%>
-<%@ include file="demo_header.jsp"%>
-<h2>Create Your Own Meeting</h2>
-
-<p />
-<FORM NAME="form1" METHOD="GET">
-
-<table width=600 cellspacing="20" cellpadding="20"
-	style="border-collapse: collapse; border-right-color: rgb(136, 136, 136);"
-	border=3>
-	<tbody>
-		<tr>
-			<td width="50%">Create your own meeting.
-			<p />
-			</td>
-			<td width="50%">Step 1. Enter your name: <input type="text"
-				name="username1" /> <br />
-			<label for="crecord">record? </label>
-			<select id="crecord" name="record1">
-				<option value="true">yes</option>
-				<option value="false" selected>no</option>
-			</select>
-			<INPUT TYPE=hidden NAME=action VALUE="create"> <br />
-			<input id="submit-button" type="submit" value="Create meeting" /></td>
-		</tr>
-	</tbody>
-</table>
-
-</FORM>
-
-<script>
-//
-// We could have asked the user for both their name and a meeting title, but we'll just use their name to create a title
-// We'll use JQuery to dynamically update the button
-//
-$(document).ready(function(){
-    $("input[name='username1']").keyup(function() {
-        if ($("input[name='username1']").val() == "") {
-        	$("#submit-button").attr('value',"Create meeting" );
-        } else {
-       $("#submit-button").attr('value',"Create " +$("input[name='username1']").val()+ "'s meeting" );
-        }
-    });
-});
-</script>
-
-<%
-	} else if (request.getParameter("action").equals("create")) {
-		//
-		// User has requested to create a meeting
-		//
-
-		String username = request.getParameter("username1");
-		String meetingID = username + "'s meeting";
-		String record = request.getParameter("record1");
-
-		String meeting_ID = "";
-
-		//
-		// This is the URL for to join the meeting as moderator
-		//
-		String joinURL = getJoinURL(username, meetingID, record, "<br>Welcome to %%CONFNAME%%.<br>", null);
-
-		
-		String inviteURL = BigBlueButtonURL	+ "demo/demo5.jsp?action=invite&meetingID=" + URLEncoder.encode(meetingID, "UTF-8");
-%>
-
-<hr />
-<h2>Meeting Created</h2>
-<hr />
-
-
-<table width="800" cellspacing="20" cellpadding="20"
-	style="border-collapse: collapse; border-right-color: rgb(136, 136, 136);"
-	border=3>
-	<tbody>
-		<tr>
-			<td width="50%">
-			<center><strong> <%=username%>'s meeting</strong> has been
-			created.</center>
-			</td>
-
-			<td width="50%">
-			<p>&nbsp;</p>
-
-			Step 2. Invite others using the following <a href="<%=inviteURL%>">link</a> (shown below):
-			<form name="form2" method="POST">
-				<textarea cols="62" rows="5" name="myname" style="overflow: hidden">
-					<%=inviteURL%>
-				</textarea>
-			</form>
-			<p>&nbsp;
-			<p />Step 3. Click the following link to start your meeting:
-			<p>&nbsp;</p>
-			<center><a href="<%=joinURL%>">Start Meeting</a></center>
-			<p>&nbsp;</p>
-
-			</td>
-		</tr>
-	</tbody>
-</table>
-
-
-
-
-
-
-
-<%
-	} else if (request.getParameter("action").equals("enter")) {
-		//
-		// The user is now attempting to joing the meeting
-		//
-		String meetingID = request.getParameter("meetingID");
-		String username = request.getParameter("username");
-
-		String enterURL = BigBlueButtonURL
-			+ "demo/demo5.jsp?action=join&username="
-			+ URLEncoder.encode(username, "UTF-8") + "&meetingID="
-			+ URLEncoder.encode(meetingID, "UTF-8");
-
-		if (isMeetingRunning(meetingID).equals("true")) {
-			//
-			// The meeting has started -- bring the user into the meeting.
-			//
-%>
-<script type="text/javascript">
-	window.location = "<%=enterURL%>";
-</script>
-<%
-	} else {
-			//
-			// The meeting has not yet started, so check until we get back the status that the meeting is running
-			//
-			String checkMeetingStatus = getURLisMeetingRunning(meetingID);
-%>
-
-<script type="text/javascript">
-$(document).ready(function(){
-		$.jheartbeat.set({
-		   url: "<%=checkMeetingStatus%>",
-		   delay: 5000
-		}, function () {
-			mycallback();
-		});
-	});
-
-
-function mycallback() {
-	// Not elegant, but works around a bug in IE8 
-	var isMeetingRunning = ($("#HeartBeatDIV").text().search("true") > 0 );
-
-	if (isMeetingRunning) {
-		window.location = "<%=enterURL%>"; 
-	}
-}
-</script>
-
-<hr />
-<h2><strong><%=meetingID%></strong> has not yet started.</h2>
-<hr />
-
-
-<table width=600 cellspacing="20" cellpadding="20"
-	style="border-collapse: collapse; border-right-color: rgb(136, 136, 136);"
-	border=3>
-	<tbody>
-		<tr>
-			<td width="50%">
-
-			<p>Hi <%=username%>,</p>
-			<p>Now waiting for the moderator to start <strong><%=meetingID%></strong>.</p>
-			<br />
-			<p>(Your browser will automatically refresh and join the meeting
-			when it starts.)</p>
-			</td>
-			<td width="50%"><img src="polling.gif"></img></td>
-		</tr>
-	</tbody>
-</table>
-
-
-<%
-}
-	} else if (request.getParameter("action").equals("invite")) {
-		//
-		// We have an invite to an active meeting.  Ask the person for their name 
-		// so they can join.
-		//
-		String meetingID = request.getParameter("meetingID");
-%>
-
-<hr />
-<h2>Invite</h2>
-<hr />
-
-<FORM NAME="form3" METHOD="GET">
-
-<table width=600 cellspacing="20" cellpadding="20"
-	style="border-collapse: collapse; border-right-color: rgb(136, 136, 136);"
-	border=3>
-	<tbody>
-		<tr>
-			<td width="50%">
-
-			<p />You have been invited to join<br />
-			<strong><%=meetingID%></strong>.
-			</td>
-
-			<td width="50%">Enter your name: <input type="text"
-				name="username" /> <br />
-			<INPUT TYPE=hidden NAME=meetingID VALUE="<%=meetingID%>"> <INPUT
-				TYPE=hidden NAME=action VALUE="enter"> <br />
-			<input type="submit" value="Join" /></td>
-		</tr>
-	</tbody>
-</table>
-
-</FORM>
-
-
-
-
-<%
-	} else if (request.getParameter("action").equals("join")) {
-		//
-		// We have an invite request to join an existing meeting and the meeting is running
-		//
-		// We don't need to pass a meeting descritpion as it's already been set by the first time 
-		// the meeting was created.
-		String joinURL = getJoinURLViewer(request.getParameter("username"), request.getParameter("meetingID"));
-			
-		if (joinURL.startsWith("http://")) {
-%>
-
-<script language="javascript" type="text/javascript">
-  window.location.href="<%=joinURL%>";
-</script>
-
-<%
-	} else { 
-%>
-
-Error: getJoinURL() failed
-<p /><%=joinURL%> 
-
-<%
- 	}
- }
- %> 
-
-<%@ include file="demo_footer.jsp"%>
-
-</body>
-</html>
diff --git a/bigbluebutton-web/web-app/demo/demo6.jsp b/bigbluebutton-web/web-app/demo/demo6.jsp
deleted file mode 100644
index c784673d459e78a53d50f26c466064a47e2df486..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/demo6.jsp
+++ /dev/null
@@ -1,263 +0,0 @@
-<!--
-
-BigBlueButton - http://www.bigbluebutton.org
-
-Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
-
-BigBlueButton is free software; you can redistribute it and/or modify it under the 
-terms of the GNU Lesser General Public License as published by the Free Software 
-Foundation; either version 3 of the License, or (at your option) any later 
-version. 
-
-BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License along 
-with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
-
-Author: Fred Dixon <ffdixon@bigbluebutton.org>
-
--->
-
-<%@ page language="java" contentType="text/html; charset=UTF-8"
-	pageEncoding="UTF-8"%>
-<% 
-	request.setCharacterEncoding("UTF-8"); 
-	response.setCharacterEncoding("UTF-8"); 
-%>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
-	<script type="text/javascript" src="heartbeat.js"></script>
-	<title>Recording Meeting Demo</title>
-	<style type="text/css">
-	 #formcreate{ 
-	 	width:500px; 
-	 	height:500px;
-	 }
-	 #formcreate ul{
-	 	list-style:none;
-	 }
-	 #formcreate li{
-	 	display:block;
-	 	width:400px;
-	 	margin-bottom:5px;
-	 }
-	 #formcreate label{
-	 	display:block;
-	 	float:left;
-	 	width:150px;
-	 	text-align:right;
-	 }
-	 #labdescription{
-	 	vertical-align:top;
-	 }
-	</style>
-</head>
-<body>
-
-
-<%@ include file="bbb_api.jsp"%>
-<%@ page import="java.util.regex.*"%>
-
-<%@ include file="demo_header.jsp"%>
-
-<%
-	if (request.getParameterMap().isEmpty()) {
-		//
-		// Assume we want to create a meeting
-		//
-%>
-	<h2>Demo Recording</h2>
-
-	<form id="formcreate" name="formcreate" method="get" action=""> 
-		<fieldset>
-			<legend>Meeting Information</legend>
-			<ul>
-				<li>
-					<label for="confname">Meeting Name:</label>
-					<input id="confname" name="confname" type="text" />
-				</li>
-				<li>
-					<label for="username1">Your Name:</label>
-					<input id="username1" name="username1" type="text" />	
-				</li>
-			</ul>
-		</fieldset>
-		<fieldset>
-			<legend>Metadata Details</legend>
-			<ul>
-				<li>
-					<label for="meta_title">Title:</label>
-					<input type="text" id="meta_title" name="meta_title" />	
-				</li>
-				<li>
-					<label for="meta_subject">Subject:</label>
-					<input type="text" id="meta_subject" name="meta_subject" />
-				</li>
-				<li>
-					<label id="labdescription" for="meta_description">Description:</label>
-					<textarea id="meta_description" name="meta_description" cols="17" rows="3"></textarea>
-				</li>
-				<li>
-					<label for="meta_creator">Creator:</label>
-					<input type="text" id="meta_creator" name="meta_creator" />
-				</li>
-				<li>
-					<label for="meta_contributor">Contributor:</label>
-					<input type="text" id="meta_contributor" name="meta_contributor" />
-				</li>
-				<li>
-					<label for="meta_language">Language:</label>
-					<input type="text" id="meta_language" name="meta_language" />
-				</li>
-				<li>
-					<label for="meta_identifier">Identifier:</label>
-					<input type="text" id="meta_identifier" name="meta_identifier" />
-				</li>	
-			</ul>
-		</fieldset>
-		<input type="submit" value="Create" >
-		<input type="hidden" name="action" value="create" />
-	</form>
-
-<%
-	} else if (request.getParameter("action").equals("create")) {
-		
-		String confname=request.getParameter("confname");
-		String username = request.getParameter("username1");
-		
-		//metadata
-		Map<String,String> metadata=new HashMap<String,String>();
-		
-		metadata.put("title",request.getParameter("meta_title"));
-		metadata.put("subject",request.getParameter("meta_subject"));
-		metadata.put("description",request.getParameter("meta_description"));
-		metadata.put("creator",request.getParameter("meta_creator"));
-		metadata.put("contributor",request.getParameter("meta_contributor"));
-		metadata.put("language",request.getParameter("meta_language"));
-		metadata.put("identifier",request.getParameter("meta_identifier"));
-
-		//
-		// This is the URL for to join the meeting as moderator
-		//
-		String joinURL = getJoinURL(username, confname, "true", null, metadata);
-
-		
-		String inviteURL = BigBlueButtonURL	+ "demo/demo6.jsp?action=invite&confname=" + URLEncoder.encode(confname, "UTF-8");
-%>
-
-	
-<h2>Session Created</h2>
-
-<label style="display:block;">Use the following link to invite others:</label>
-<textarea cols="50" rows="6" style="overflow:hidden; display:block;" readonly="readonly">
-	<%=inviteURL%>
-</textarea>
-
-<a href="<%=joinURL%>">Start Session</a>
-
-
-<%
-	} else if (request.getParameter("action").equals("enter")) {
-		//
-		// The user is now attempting to joing the meeting
-		//
-		String confname = request.getParameter("confname");
-		String username = request.getParameter("username");
-
-		String enterURL = BigBlueButtonURL
-			+ "demo/demo6.jsp?action=join&username="
-			+ URLEncoder.encode(username, "UTF-8") + "&confname="
-			+ URLEncoder.encode(confname, "UTF-8");
-
-		if (isMeetingRunning(confname).equals("true")) {
-
-%>
-<script type="text/javascript">
-	window.location = "<%=enterURL%>";
-</script>
-<%
-	} else {
-
-			String checkMeetingStatus = getURLisMeetingRunning(confname);
-%>
-
-<script type="text/javascript">
-$(document).ready(function(){
-		$.jheartbeat.set({
-		   url: "<%=checkMeetingStatus%>",
-		   delay: 5000
-		}, function () {
-			mycallback();
-		});
-	});
-
-
-function mycallback() {
-	// Not elegant, but works around a bug in IE8 
-	var isMeetingRunning = ($("#HeartBeatDIV").text().search("true") > 0 );
-
-	if (isMeetingRunning) {
-		window.location = "<%=enterURL%>"; 
-	}
-}
-</script>
-
-<h2><%=confname%> has not yet started.</h2>
-<label style="display:block;">Hi <%=username%>, Now waiting for the moderator to start <%=confname%>.</label>
-<label style="display:block;">(Your browser will automatically refresh and join the meeting when it starts.)</label>
-
-
-<%
-}
-	} else if (request.getParameter("action").equals("invite")) {
-
-		String meetingID = request.getParameter("confname");
-%>
-
-<h2>Invite</h2>
-
-<form name="inviteform" method="get" action="">
-
-<label style="display:block; font-weight:bold;">You have been invited to join <%=meetingID%></label>
-<label for="username">Enter your name: </label>
-<input type="text" name="username" id="username" />
-<input type="hidden" name="confname" value="<%=meetingID%>" /> 
-<input type="hidden" name="action" value="enter" />
-<input type="submit" value="Join" />
-
-</form>
-
-
-<%
-	} else if (request.getParameter("action").equals("join")) {
-
-		String joinURL = getJoinURLViewer(request.getParameter("username"), request.getParameter("confname"));
-			
-		if (joinURL.startsWith("http://")) {
-%>
-
-<script language="javascript" type="text/javascript">
-  window.location.href="<%=joinURL%>";
-</script>
-
-<%
-	} else { 
-%>
-
-Error: getJoinURL() failed
-<p /><%=joinURL%> 
-
-<%
- 	}
- }
- %> 
-
-<%@ include file="demo_footer.jsp"%>
-
-</body>
-</html>
diff --git a/bigbluebutton-web/web-app/demo/demo_footer.jsp b/bigbluebutton-web/web-app/demo/demo_footer.jsp
deleted file mode 100755
index d142598dcadbf07d0bc170e19d4dfea0afce280d..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/demo_footer.jsp
+++ /dev/null
@@ -1,2 +0,0 @@
-<p/>
-<small>These demos use the <a href="http://code.google.com/p/bigbluebutton/wiki/API">BigBlueButton API</a>.  The source code for these demos is available <a href="http://github.com/bigbluebutton/bigbluebutton/tree/master/bigbluebutton-web/web-app/demo/"> here</a>.</small>
diff --git a/bigbluebutton-web/web-app/demo/demo_header.jsp b/bigbluebutton-web/web-app/demo/demo_header.jsp
deleted file mode 100755
index de34d864268b71224952999838cfc0a1b617dc13..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/demo_header.jsp
+++ /dev/null
@@ -1 +0,0 @@
-<img src="/bigbluebutton/images/bbb_banner.jpg" /><br><a href="demo1.jsp">Join a Course</a> | <a href="demo2.jsp">Join a Selected Course</a> | <a href="demo3.jsp">Join a Course (password required)</a> | <a href="demo4.jsp">Activity Monitor</a> | <a href="create.jsp">Create Your Own Meeting</a> | <a href="demo6.jsp">Record Meeting</a>
diff --git a/bigbluebutton-web/web-app/demo/error.jsp b/bigbluebutton-web/web-app/demo/error.jsp
deleted file mode 100755
index 364fcdbf61bdbf3b07f89ba8550148e89501ad95..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/error.jsp
+++ /dev/null
@@ -1,128 +0,0 @@
-
-<%@ page language="java" contentType="text/html; charset=UTF-8"
-	pageEncoding="UTF-8"%>
-	
-<%@ page isErrorPage="true" %>
-<%@ page language="java" %>
-<%@ page import="java.util.*" %>
-<%@ page import="java.io.*" %>
-
-<% 
-	request.setCharacterEncoding("UTF-8"); 
-	response.setCharacterEncoding("UTF-8"); 
-	
-    Object statusCode = request.getAttribute("javax.servlet.error.status_code"); 
-    Object exceptionType = request.getAttribute("javax.servlet.error.exception_type"); 
-    Object message = request.getAttribute("javax.servlet.error.message"); 
-%>
-
-<html> 
-<head>
-<title>Error Page</title>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-</head>
-<body bgcolor="#FFFFFF">
-<P><A href="<%=response.encodeURL(request.getContextPath()) %>">Home</A></P>
-<hr>
-<H2>An Error has occured:</H2>
-
-<TABLE CELLPADDING="2" CELLSPACING="2" BORDER="1" WIDTH="100%">
-    <TR>
-	<TD WIDTH="20%"><B>Status Code</B></TD> 
-	<TD WIDTH="80%"><%= statusCode %></TD>
-    </TR>
-    <TR>
-	<TD WIDTH="20%"><B>Exception Type</B></TD> 
-	<TD WIDTH="80%"><%= exceptionType %></TD>
-    </TR>
-    <TR>
-	<TD WIDTH="20%"><B>Message</B></TD> 
-	<TD WIDTH="80%"><%= message %></TD>
-    </TR>
-    <TR>
-	<TD WIDTH="20%"><B>Exception</B></TD> 
-	<TD WIDTH="80%">
-	    <%
-		if( exception != null )
-		{
-		    out.print("<PRE>");
-		    exception.printStackTrace(new PrintWriter(out));
-		    out.print("</PRE>");
-		}    
-	    %>
-	</TD>
-    </TR>
-    <TR>
-	<TD WIDTH="20%"><B>Root Cause</B></TD> 
-	<TD>
-	    <%
-		if( (exception != null) && (exception instanceof ServletException) )
-		{
-		    Throwable cause = ((ServletException)exception).getRootCause();
-		    if( cause != null )
-		    {
-			out.print("<PRE>");
-			cause.printStackTrace(new PrintWriter(out));
-			out.print("</PRE>");
-		    }
-		}            
-	    %>
-	</TD>
-    </TR>
-</TABLE>
-
-<hr>
-Header List
-<table border=3>
-<tr>
- <td>Name</td>
- <td>Value</td>
-</tr>
-<%
-String name  = "";
-String value = "";
-
-java.util.Enumeration headers = request.getHeaderNames();
-while(headers.hasMoreElements())
-{
- name  = (String) headers.nextElement();
- value = request.getHeader(name);
-%>
-<tr>
- <td><%=name%></td>
- <td><%=value%></td>
-</tr>
-<%
-}
-%>
-</table>
-
-Attribute List
-<!-- "javax.servlet.jsp.jspException" for getting an Exception -->
-<table border=3>
-<%
-java.util.Enumeration attributes = request.getAttributeNames();
-while(attributes.hasMoreElements())
-{
- name  = (String) attributes.nextElement();
-
- if (request.getAttribute(name) == null)
- {
-  value = "null";
- }
- else
- {
-  value = request.getAttribute(name).toString();
- }
-%>
-<tr>
- <td><%=name%></td>
- <td><%=value%></td>
-</tr>
-<%
-}
-%>
-</table>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bigbluebutton-web/web-app/demo/heartbeat.js b/bigbluebutton-web/web-app/demo/heartbeat.js
deleted file mode 100755
index cf97b32b233b5888f96824570c1d190549b25543..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/heartbeat.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * JHeartbeat 0.1.1 Beta
- * By Jason Levine (http://www.jasons-toolbox.com)
- * A heartbeat plugin for the jquery library to help keep sessions alive.
- */
- 
- $.jheartbeat = {
-
-    options: {
-		url: "heartbeat_default.asp",
-		delay: 10000
-    },
-	
-	beatfunction:  function(){
-	
-	},
-	
-	timeoutobj:  {
-		id: -1
-	},
-
-    set: function(options, onbeatfunction) {
-		if (this.timeoutobj.id > -1) {
-			clearTimeout(this.timeoutobj);
-		}
-        if (options) {
-            $.extend(this.options, options);
-        }
-        if (onbeatfunction) {
-            this.beatfunction = onbeatfunction;
-        }
-
-		// Add the HeartBeatDIV to the page
-		$("body").append("<div id=\"HeartBeatDIV\" style=\"display: none;\"></div>");
-		this.timeoutobj.id = setTimeout("$.jheartbeat.beat();", this.options.delay);
-    },
-
-    beat: function() {
-		$("#HeartBeatDIV").load(this.options.url);
-		this.timeoutobj.id = setTimeout("$.jheartbeat.beat();", this.options.delay);
-        this.beatfunction();
-    }
-};
\ No newline at end of file
diff --git a/bigbluebutton-web/web-app/demo/jquery.js b/bigbluebutton-web/web-app/demo/jquery.js
deleted file mode 100644
index 7c243080233761859937d52195b670602731a379..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/jquery.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
-CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
-a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
diff --git a/bigbluebutton-web/web-app/demo/jquery.xml2json.js b/bigbluebutton-web/web-app/demo/jquery.xml2json.js
deleted file mode 100755
index af1e46b08d18ab2db4ab6fa6794000b629d15c0e..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/jquery.xml2json.js
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- ### jQuery XML to JSON Plugin v1.0 - 2008-07-01 ###
- * http://www.fyneworks.com/ - diego@fyneworks.com
- * Dual licensed under the MIT and GPL licenses:
- *   http://www.opensource.org/licenses/mit-license.php
- *   http://www.gnu.org/licenses/gpl.html
- ###
- Website: http://www.fyneworks.com/jquery/xml-to-json/
-*//*
- # INSPIRED BY: http://www.terracoder.com/
-           AND: http://www.thomasfrank.se/xml_to_json.html
-											AND: http://www.kawa.net/works/js/xml/objtree-e.html
-*//*
- This simple script converts XML (document of code) into a JSON object. It is the combination of 2
- 'xml to json' great parsers (see below) which allows for both 'simple' and 'extended' parsing modes.
-*/
-// Avoid collisions
-;if(window.jQuery) (function($){
- 
- // Add function to jQuery namespace
- $.extend({
-  
-  // converts xml documents and xml text to json object
-  xml2json: function(xml, extended) {
-   if(!xml) return {}; // quick fail
-   
-   //### PARSER LIBRARY
-   // Core function
-   function parseXML(node, simple){
-    if(!node) return null;
-    var txt = '', obj = null, att = null;
-    var nt = node.nodeType, nn = jsVar(node.localName || node.nodeName);
-    var nv = node.text || node.nodeValue || '';
-    /*DBG*/ //if(window.console) console.log(['x2j',nn,nt,nv.length+' bytes']);
-    if(node.childNodes){
-     if(node.childNodes.length>0){
-      /*DBG*/ //if(window.console) console.log(['x2j',nn,'CHILDREN',node.childNodes]);
-      $.each(node.childNodes, function(n,cn){
-       var cnt = cn.nodeType, cnn = jsVar(cn.localName || cn.nodeName);
-       var cnv = cn.text || cn.nodeValue || '';
-       /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>a',cnn,cnt,cnv]);
-       if(cnt == 8){
-        /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>b',cnn,'COMMENT (ignore)']);
-        return; // ignore comment node
-       }
-       else if(cnt == 3 || cnt == 4 || !cnn){
-        // ignore white-space in between tags
-        if(cnv.match(/^\s+$/)){
-         /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>c',cnn,'WHITE-SPACE (ignore)']);
-         return;
-        };
-        /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>d',cnn,'TEXT']);
-        txt += cnv.replace(/^\s+/,'').replace(/\s+$/,'');
-								// make sure we ditch trailing spaces from markup
-       }
-       else{
-        /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>e',cnn,'OBJECT']);
-        obj = obj || {};
-        if(obj[cnn]){
-         /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>f',cnn,'ARRAY']);
-         if(!obj[cnn].length) obj[cnn] = myArr(obj[cnn]);
-         obj[cnn][ obj[cnn].length ] = parseXML(cn, true/* simple */);
-         obj[cnn].length = obj[cnn].length;
-        }
-        else{
-         /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>g',cnn,'dig deeper...']);
-         obj[cnn] = parseXML(cn);
-        };
-       };
-      });
-     };//node.childNodes.length>0
-    };//node.childNodes
-    if(node.attributes){
-     if(node.attributes.length>0){
-      /*DBG*/ //if(window.console) console.log(['x2j',nn,'ATTRIBUTES',node.attributes])
-      att = {}; obj = obj || {};
-      $.each(node.attributes, function(a,at){
-       var atn = jsVar(at.name), atv = at.value;
-       att[atn] = atv;
-       if(obj[atn]){
-        /*DBG*/ //if(window.console) console.log(['x2j',nn,'attr>',atn,'ARRAY']);
-        if(!obj[atn].length) obj[atn] = myArr(obj[atn]);//[ obj[ atn ] ];
-        obj[atn][ obj[atn].length ] = atv;
-        obj[atn].length = obj[atn].length;
-       }
-       else{
-        /*DBG*/ //if(window.console) console.log(['x2j',nn,'attr>',atn,'TEXT']);
-        obj[atn] = atv;
-       };
-      });
-      //obj['attributes'] = att;
-     };//node.attributes.length>0
-    };//node.attributes
-    if(obj){
-     obj = $.extend( (txt!='' ? new String(txt) : {}),/* {text:txt},*/ obj || {}/*, att || {}*/);
-     txt = (obj.text) ? (typeof(obj.text)=='object' ? obj.text : [obj.text || '']).concat([txt]) : txt;
-     if(txt) obj.text = txt;
-     txt = '';
-    };
-    var out = obj || txt;
-    //console.log([extended, simple, out]);
-    if(extended){
-     if(txt) out = {};//new String(out);
-     txt = out.text || txt || '';
-     if(txt) out.text = txt;
-     if(!simple) out = myArr(out);
-    };
-    return out;
-   };// parseXML
-   // Core Function End
-   // Utility functions
-   var jsVar = function(s){ return String(s || '').replace(/-/g,"_"); };
-   var isNum = function(s){ return (typeof s == "number") || String((s && typeof s == "string") ? s : '').test(/^((-)?([0-9]*)((\.{0,1})([0-9]+))?$)/); };
-   var myArr = function(o){
-    if(!o.length) o = [ o ]; o.length=o.length;
-    // here is where you can attach additional functionality, such as searching and sorting...
-    return o;
-   };
-   // Utility functions End
-   //### PARSER LIBRARY END
-   
-   // Convert plain text to xml
-   if(typeof xml=='string') xml = $.text2xml(xml);
-   
-   // Quick fail if not xml (or if this is a node)
-   if(!xml.nodeType) return;
-   if(xml.nodeType == 3 || xml.nodeType == 4) return xml.nodeValue;
-   
-   // Find xml root node
-   var root = (xml.nodeType == 9) ? xml.documentElement : xml;
-   
-   // Convert xml to json
-   var out = parseXML(root, true /* simple */);
-   
-   // Clean-up memory
-   xml = null; root = null;
-   
-   // Send output
-   return out;
-  },
-  
-  // Convert text to XML DOM
-  text2xml: function(str) {
-   // NOTE: I'd like to use jQuery for this, but jQuery makes all tags uppercase
-   //return $(xml)[0];
-   var out;
-   try{
-    var xml = ($.browser.msie)?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser();
-    xml.async = false;
-   }catch(e){ throw new Error("XML Parser could not be instantiated") };
-   try{
-    if($.browser.msie) out = (xml.loadXML(str))?xml:false;
-    else out = xml.parseFromString(str, "text/xml");
-   }catch(e){ throw new Error("Error parsing XML string") };
-   return out;
-  }
-		
- }); // extend $
-
-})(jQuery);
diff --git a/bigbluebutton-web/web-app/demo/md5.js b/bigbluebutton-web/web-app/demo/md5.js
deleted file mode 100755
index 8773a969a08b527967aae5f33e3778006010e624..0000000000000000000000000000000000000000
--- a/bigbluebutton-web/web-app/demo/md5.js
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- * Digest Algorithm, as defined in RFC 1321.
- * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for more info.
- */
-
-/*
- * Configurable variables. You may need to tweak these to be compatible with
- * the server-side, but the defaults work in most cases.
- */
-var hexcase = 0;   /* hex output format. 0 - lowercase; 1 - uppercase        */
-var b64pad  = "";  /* base-64 pad character. "=" for strict RFC compliance   */
-
-/*
- * These are the functions you'll usually want to call
- * They take string arguments and return either hex or base-64 encoded strings
- */
-function hex_md5(s)    { return rstr2hex(rstr_md5(str2rstr_utf8(s))); }
-function b64_md5(s)    { return rstr2b64(rstr_md5(str2rstr_utf8(s))); }
-function any_md5(s, e) { return rstr2any(rstr_md5(str2rstr_utf8(s)), e); }
-function hex_hmac_md5(k, d)
-  { return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
-function b64_hmac_md5(k, d)
-  { return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
-function any_hmac_md5(k, d, e)
-  { return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e); }
-
-/*
- * Perform a simple self-test to see if the VM is working
- */
-function md5_vm_test()
-{
-  return hex_md5("abc").toLowerCase() == "900150983cd24fb0d6963f7d28e17f72";
-}
-
-/*
- * Calculate the MD5 of a raw string
- */
-function rstr_md5(s)
-{
-  return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
-}
-
-/*
- * Calculate the HMAC-MD5, of a key and some data (raw strings)
- */
-function rstr_hmac_md5(key, data)
-{
-  var bkey = rstr2binl(key);
-  if(bkey.length > 16) bkey = binl_md5(bkey, key.length * 8);
-
-  var ipad = Array(16), opad = Array(16);
-  for(var i = 0; i < 16; i++)
-  {
-    ipad[i] = bkey[i] ^ 0x36363636;
-    opad[i] = bkey[i] ^ 0x5C5C5C5C;
-  }
-
-  var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
-  return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
-}
-
-/*
- * Convert a raw string to a hex string
- */
-function rstr2hex(input)
-{
-  try { hexcase } catch(e) { hexcase=0; }
-  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
-  var output = "";
-  var x;
-  for(var i = 0; i < input.length; i++)
-  {
-    x = input.charCodeAt(i);
-    output += hex_tab.charAt((x >>> 4) & 0x0F)
-           +  hex_tab.charAt( x        & 0x0F);
-  }
-  return output;
-}
-
-/*
- * Convert a raw string to a base-64 string
- */
-function rstr2b64(input)
-{
-  try { b64pad } catch(e) { b64pad=''; }
-  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-  var output = "";
-  var len = input.length;
-  for(var i = 0; i < len; i += 3)
-  {
-    var triplet = (input.charCodeAt(i) << 16)
-                | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
-                | (i + 2 < len ? input.charCodeAt(i+2)      : 0);
-    for(var j = 0; j < 4; j++)
-    {
-      if(i * 8 + j * 6 > input.length * 8) output += b64pad;
-      else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
-    }
-  }
-  return output;
-}
-
-/*
- * Convert a raw string to an arbitrary string encoding
- */
-function rstr2any(input, encoding)
-{
-  var divisor = encoding.length;
-  var i, j, q, x, quotient;
-
-  /* Convert to an array of 16-bit big-endian values, forming the dividend */
-  var dividend = Array(Math.ceil(input.length / 2));
-  for(i = 0; i < dividend.length; i++)
-  {
-    dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
-  }
-
-  /*
-   * Repeatedly perform a long division. The binary array forms the dividend,
-   * the length of the encoding is the divisor. Once computed, the quotient
-   * forms the dividend for the next step. All remainders are stored for later
-   * use.
-   */
-  var full_length = Math.ceil(input.length * 8 /
-                                    (Math.log(encoding.length) / Math.log(2)));
-  var remainders = Array(full_length);
-  for(j = 0; j < full_length; j++)
-  {
-    quotient = Array();
-    x = 0;
-    for(i = 0; i < dividend.length; i++)
-    {
-      x = (x << 16) + dividend[i];
-      q = Math.floor(x / divisor);
-      x -= q * divisor;
-      if(quotient.length > 0 || q > 0)
-        quotient[quotient.length] = q;
-    }
-    remainders[j] = x;
-    dividend = quotient;
-  }
-
-  /* Convert the remainders to the output string */
-  var output = "";
-  for(i = remainders.length - 1; i >= 0; i--)
-    output += encoding.charAt(remainders[i]);
-
-  return output;
-}
-
-/*
- * Encode a string as utf-8.
- * For efficiency, this assumes the input is valid utf-16.
- */
-function str2rstr_utf8(input)
-{
-  var output = "";
-  var i = -1;
-  var x, y;
-
-  while(++i < input.length)
-  {
-    /* Decode utf-16 surrogate pairs */
-    x = input.charCodeAt(i);
-    y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
-    if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)
-    {
-      x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
-      i++;
-    }
-
-    /* Encode output as utf-8 */
-    if(x <= 0x7F)
-      output += String.fromCharCode(x);
-    else if(x <= 0x7FF)
-      output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
-                                    0x80 | ( x         & 0x3F));
-    else if(x <= 0xFFFF)
-      output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
-                                    0x80 | ((x >>> 6 ) & 0x3F),
-                                    0x80 | ( x         & 0x3F));
-    else if(x <= 0x1FFFFF)
-      output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
-                                    0x80 | ((x >>> 12) & 0x3F),
-                                    0x80 | ((x >>> 6 ) & 0x3F),
-                                    0x80 | ( x         & 0x3F));
-  }
-  return output;
-}
-
-/*
- * Encode a string as utf-16
- */
-function str2rstr_utf16le(input)
-{
-  var output = "";
-  for(var i = 0; i < input.length; i++)
-    output += String.fromCharCode( input.charCodeAt(i)        & 0xFF,
-                                  (input.charCodeAt(i) >>> 8) & 0xFF);
-  return output;
-}
-
-function str2rstr_utf16be(input)
-{
-  var output = "";
-  for(var i = 0; i < input.length; i++)
-    output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,
-                                   input.charCodeAt(i)        & 0xFF);
-  return output;
-}
-
-/*
- * Convert a raw string to an array of little-endian words
- * Characters >255 have their high-byte silently ignored.
- */
-function rstr2binl(input)
-{
-  var output = Array(input.length >> 2);
-  for(var i = 0; i < output.length; i++)
-    output[i] = 0;
-  for(var i = 0; i < input.length * 8; i += 8)
-    output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
-  return output;
-}
-
-/*
- * Convert an array of little-endian words to a string
- */
-function binl2rstr(input)
-{
-  var output = "";
-  for(var i = 0; i < input.length * 32; i += 8)
-    output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
-  return output;
-}
-
-/*
- * Calculate the MD5 of an array of little-endian words, and a bit length.
- */
-function binl_md5(x, len)
-{
-  /* append padding */
-  x[len >> 5] |= 0x80 << ((len) % 32);
-  x[(((len + 64) >>> 9) << 4) + 14] = len;
-
-  var a =  1732584193;
-  var b = -271733879;
-  var c = -1732584194;
-  var d =  271733878;
-
-  for(var i = 0; i < x.length; i += 16)
-  {
-    var olda = a;
-    var oldb = b;
-    var oldc = c;
-    var oldd = d;
-
-    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
-    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
-    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
-    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
-    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
-    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
-    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
-    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
-    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
-    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
-    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
-    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
-    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
-    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
-    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
-    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
-
-    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
-    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
-    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
-    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
-    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
-    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
-    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
-    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
-    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
-    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
-    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
-    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
-    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
-    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
-    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
-    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
-
-    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
-    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
-    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
-    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
-    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
-    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
-    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
-    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
-    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
-    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
-    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
-    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
-    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
-    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
-    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
-    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
-
-    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
-    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
-    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
-    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
-    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
-    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
-    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
-    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
-    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
-    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
-    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
-    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
-    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
-    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
-    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
-    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
-
-    a = safe_add(a, olda);
-    b = safe_add(b, oldb);
-    c = safe_add(c, oldc);
-    d = safe_add(d, oldd);
-  }
-  return Array(a, b, c, d);
-}
-
-/*
- * These functions implement the four basic operations the algorithm uses.
- */
-function md5_cmn(q, a, b, x, s, t)
-{
-  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
-}
-function md5_ff(a, b, c, d, x, s, t)
-{
-  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
-}
-function md5_gg(a, b, c, d, x, s, t)
-{
-  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
-}
-function md5_hh(a, b, c, d, x, s, t)
-{
-  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
-}
-function md5_ii(a, b, c, d, x, s, t)
-{
-  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
-}
-
-/*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
-function safe_add(x, y)
-{
-  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
-  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
-  return (msw << 16) | (lsw & 0xFFFF);
-}
-
-/*
- * Bitwise rotate a 32-bit number to the left.
- */
-function bit_rol(num, cnt)
-{
-  return (num << cnt) | (num >>> (32 - cnt));
-}
diff --git a/bigbluebutton-web/web-app/demo/polling.gif b/bigbluebutton-web/web-app/demo/polling.gif
deleted file mode 100755
index d9bb3c55f66d47cbb619df0a930d6104db2375a7..0000000000000000000000000000000000000000
Binary files a/bigbluebutton-web/web-app/demo/polling.gif and /dev/null differ