diff --git a/.htaccess b/.htaccess
index f8443e5237c2b1972f4b1d2e8f35643b80449805..08872ab2457f411ae808abcf7e342be25651e77d 100644
--- a/.htaccess
+++ b/.htaccess
@@ -1,6 +1,6 @@
 RewriteEngine on
 RewriteCond %{REQUEST_URI} !/(xhprof_html|ckeditor)
-RewriteRule !(userfiles|public|tmp|temp|skins)/.*\.(js|ico|txt|gif|jpg|jpeg|png|css|xml|swf|mov|pdf|doc|docx|woff|eot|svg|ttf|otf|xls|wsdl|mp3|m4v|ogg|ogv|epub|html|xhtml|asmx)$ index.php [NC,NE]
+RewriteRule !(userfiles|public|tmp|temp|skins)/.*\.(js|ico|txt|gif|jpg|jpeg|png|css|xml|swf|mov|pdf|doc|docx|woff|eot|svg|ttf|xls|wsdl|mp3|m4v|ogg|ogv|epub|html|xhtml|asmx)$ index.php [NC,NE]
 
 
 AddType application/x-javascript .js
diff --git a/VERSIONS b/VERSIONS
index 9a81665ca46a007c66890d66a2ae05c4c09d4981..5f77d50110f3677c1e14ebc13ee9b5b31f18a98b 100644
--- a/VERSIONS
+++ b/VERSIONS
@@ -1,9 +1,73 @@
-? v6.47
 - ticket #12992: Champs personnalisés (expérimental).
 	- L'objectif de ce développement est de pouvoir rajouter des champs aux modèles de données de l'OPAC.
 	- Côté accès pro., une nouvelle entrée "Champs personnalisés" dans le bloc "Système" permet d'ajouter des champs pour les formations, articles et groupes d'utilisateurs (d'autres modèles suivront par la suite).
 	- Quand on modifie un groupe d'utilisateurs ou une formation, un lien "Champs personnalisés" permet de remplir les valeurs de ces nouveaux champs
 
+
+
+21/08/2014 - v6.48.0
+
+- ticket #13881: intégration de la ressource numérique LeKiosk
+	- implémentation du SSO
+	- ajout de l'entrée de menu vertical "Abonnés>Lien vers LeKiosk"
+	- disponibilité de l'URL /modules/lekiosk qui peut être utilisé dans un article
+	- groupes d'utilisateurs: ajout du droit "Bibliothèque numérique: accéder à LeKiosk"
+
+
+- ticket #12688: Amélioration de l'intégration de la ressource numérique "Numérique Premium"
+	- moissonnage des vignettes
+	- disponibilité de l'URL /modules/numeriquepremium qui peut être utilisé dans un article
+
+
+- ticket #12521: Intégration de la ressource numérique Cyberlibris
+	- amélioration de la compatibilité SSO via le protocole CAS 1.0
+	- moissonnage du catalogue via OAI, ajout du batch "Moissonner catalogue Cyberlibris"
+
+- ticket #15141: Boîte agenda: ajout de l'option de filtre par mois, qui affichage uniquement les événements du mois en cours.
+
+- ticket #14979: Résultat de recherche en mode "vignettes": ajout du bouton "Ajouter au panier" pour chaque notice
+
+
+Cosmogramme
+- ticket #14869 : ajout de la possibilité d'avoir des codifications dont les règles définissent une valeur à 0 (ex: 995$6=0)
+
+
+
+
+15/07/2014 - v6.47.2
+- ticket #14874 : correction de cas pour lesquels les configurations de boîtes n'étaient pas chargées correctement
+- ticket #13648 : amélioration du moteur d'analyse unimarc
+
+Interface d'administration
+- ticket #15001 : mise à jour de liens suite au changement de nom de la mailing list afi-opac2 en utilisateurs-bokeh
+
+SIGB Nanook
+- ticket #14400 : suppression d'éventuels caractères invalides lors de l'appel au service ILSDI GetPatronInfo
+
+
+
+
+
+07/07/2014 - v6.47
+
+ - Interface d'administration
+  - ticket #14860: correction de l'apparition d'une double icône de lancement des batchs dans l'interface d'administration
+  - ticket #14805: lorsqu'on ajoute une catégorie d'article dans une bibliothèque, le bouton retour réouvre l'arborescence des catégories sur cette bibliothèque
+
+ - Personnalisation
+  - Les feuilles de styles personnalisées spécifient désormais le media "all" permettant d'inclure des règles spécifiques aux différents medias possibles
+
+ - SIGB Pergame
+  - ticket #14092 : correction du code de support renvoyé par l'opac lors des réservation
+  - ticket #14462 : correction de l'affichage du message lorsqu'une réservation n'est pas possible (quota d'abonnement ou de document atteint)
+
+ - Ressources numériques
+  - Numérique Premium
+    - création d'une url unique d'accès à Numérique Premium convenant au processus d'authentification de ce service
+    - récupération des vignettes lors du moissonnage
+
+>>>>>>> afi-master
+
 26/06/2014 - v6.46.3
 - ticket #14515: Autorise l'utilisation de fichiers de police au format OTF
 
diff --git a/application/modules/admin/controllers/AccueilController.php b/application/modules/admin/controllers/AccueilController.php
index c7975b029bd50f6e6fd599847c4af91ad1930501..c1732eff2365aa382f35a789dcd37ebc00bd91cf 100644
--- a/application/modules/admin/controllers/AccueilController.php
+++ b/application/modules/admin/controllers/AccueilController.php
@@ -28,7 +28,9 @@ class Admin_AccueilController extends Zend_Controller_Action {
 	private $_systemeModulesAccueil;
 
 
-	public function init() {
+	public function preDispatch() {
+		parent::preDispatch();
+
 		// Changer le layout
 		$viewRenderer = $this->getHelper('ViewRenderer');
 	 	$viewRenderer->setLayoutScript('subModal.phtml');
@@ -38,18 +40,14 @@ class Admin_AccueilController extends Zend_Controller_Action {
 		$this->id_profil = $this->_request->getParam("id_profil");
 		$this->config = $this->_request->getParam("config");
 
-
 		// On initalise les proprietes
-		if (!$this->profil = Class_Profil::getLoader()->find($this->id_profil)) {
+		if (!$this->profil = Class_Profil::find($this->id_profil)) {
 			$this->profil = Class_Profil::getCurrentProfil();
 			$this->id_profil = $this->profil->getId();
 		}
 
-		if (!$this->type_module = $this->_request->getParam("type_module")) {
-			$module_config = $this->profil->getModuleAccueilConfig($this->id_module);
-			$this->type_module = $module_config['type_module'];
-		}
-			
+		$this->type_module = $this->_getParam('type_module');			
+
 		$user = Class_Users::getIdentity();
  
 		if ((!$user->isAdminBib() && !$user->hasRightConfigFront())
@@ -58,13 +56,9 @@ class Admin_AccueilController extends Zend_Controller_Action {
 			 return;
 		}
 
-
-
-		if ($this->config == "admin")
-			$this->preferences = $this->_extractProperties();
-		else 
-			$this->preferences = $this->profil->getOrCreateConfigAccueil($this->id_module,
-																																	 $this->type_module);
+		$this->preferences = ($this->config == 'admin') ?
+			$this->_extractProperties() : 
+			$this->profil->getOrCreateConfigAccueil($this->id_module, $this->type_module);
 
 		$boite = isset($this->preferences["boite"]) ? $this->preferences["boite"] : '';
 		$this->view->preferences = $this->preferences;
@@ -75,25 +69,23 @@ class Admin_AccueilController extends Zend_Controller_Action {
 		$this->view->id_bib = $this->profil->getIdSite();
 
 		$this->_systemeModulesAccueil = new Class_Systeme_ModulesAccueil();
-	}
 
-	public function preDispatch(){
-		Zend_Layout::startMvc(array());
+		Zend_Layout::startMvc([]);
 	}
 
 
 	public function calendrierAction()	{
-		$this->_simpleAction();
+		$this->_simpleAction('CALENDAR');
 	}
 
 
 	public function menuverticalAction()	{
-		$this->_simpleAction();
+		$this->_simpleAction('MENU_VERTICAL');
 	}
 
 
 	public function rechguideeAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('RECH_GUIDEE');
 	}
 
 
@@ -103,82 +95,85 @@ class Admin_AccueilController extends Zend_Controller_Action {
 			->setTagName('profil_redirect')
 			->addEmptyOption();
 
-		$this->_simpleAction();
+		$this->_simpleAction('RECH_SIMPLE');
 	}
 
 
 	public function cartezonesAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('CARTE_ZONES');
 	}
 
 
 	public function sitothequeAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('SITO');
 	}
 
 
 	public function domainBrowserAction() {
-		$this->view->module_settings = $this->profil->getModuleAccueilConfig($this->id_module)['preferences'];
-		$this->_simpleAction();
+		$this->view->module_settings = $this->profil
+			->getModuleAccueilConfig($this->id_module, 'DOMAIN_BROWSER')['preferences'];
+		$this->_simpleAction('DOMAIN_BROWSER');
 	}
 
 
 	public function formationsWidgetAction() {
-		$this->view->module_settings = $this->profil->getModuleAccueilConfig($this->id_module)['preferences'];
-		$this->_simpleAction();
+		$this->view->module_settings = $this->profil
+			->getModuleAccueilConfig($this->id_module, 'FORMATIONS_WIDGET')['preferences'];
+		$this->_simpleAction('FORMATIONS_WIDGET');
 	}
 
 
 	public function newsAction() {
 		if (1 == $this->_getParam('styles_reload')) {
 			$this->view->preferences = $this->_request->getPost();
-		} else {
-			$this->_simpleAction();			
+			return;
 		}
+
+		$this->_simpleAction('NEWS');
 	}
 
 
 	public function rssAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('RSS');
 	}
 
 
 	public function langueAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('LANGUE');
 	}
 
 
 	public function loginAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('LOGIN');
 	}
 
 
 	public function compteursAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('COMPTEURS');
 	}
 
 	public function pretsAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('PRETS');
 	}
 
 	public function historiqueRecherchesAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('HISTORIQUE_RECHERCHES');
 	}
 
 	public function reservationsAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('RESERVATIONS');
 	}
 
 	public function multimediaAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('MULTIMEDIA');
 	}
 
 	public function newslettersAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('NEWSLETTERS');
 	}
 
 	public function panierAction() {
-		$this->_simpleAction();
+		$this->_simpleAction('PANIER');
 	}
 	
 
@@ -186,7 +181,7 @@ class Admin_AccueilController extends Zend_Controller_Action {
 		if (1 == $this->_getParam('styles_reload')) {
 			$this->view->preferences = $this->_request->getPost();
 		} else {
-			$this->_simpleAction();			
+			$this->_simpleAction('BIB_NUMERIQUE');
 		}
 
 		$this->view->categories = Class_AlbumCategorie::getLoader()->getCollections();
@@ -205,7 +200,7 @@ class Admin_AccueilController extends Zend_Controller_Action {
 			$enreg['nombre'] = (int)$this->_getParam('nombre', 10);
 			$enreg['limite'] = (int)$this->_getParam('limite', 1000);
 			$enreg['type_tags'] = $enreg['type_tags_codes'];
-			$this->_updateEtRetour($enreg);
+			$this->_updateEtRetour($enreg, 'TAGS');
 		} else {
 			$this->view->catalogues = Class_Catalogue::getCataloguesForCombo();
 		}
@@ -224,7 +219,7 @@ class Admin_AccueilController extends Zend_Controller_Action {
 				$enreg["id_user"] = 0;
 			}
 
-			$this->_updateEtRetour($enreg);
+			$this->_updateEtRetour($enreg, 'CRITIQUES');
 		}
 
 		$this->view->catalogues = Class_Catalogue::getCataloguesForCombo();
@@ -259,7 +254,7 @@ class Admin_AccueilController extends Zend_Controller_Action {
 			$enreg["nb_requete"] = $nb_requete;
 			$enreg["nb_aff"] = $nb_aff;
 
-			$this->_updateEtRetour($enreg);
+			$this->_updateEtRetour($enreg, 'CATALOGUE');
 		}
 	}
 
@@ -269,7 +264,7 @@ class Admin_AccueilController extends Zend_Controller_Action {
 			if (1 == $this->_getParam('styles_reload')) {
 				$this->view->preferences = $this->_request->getPost();
 			} else {
-				$this->_updateConfig();
+				$this->_updateConfig('KIOSQUE');
 			}
 		}
 
@@ -309,19 +304,20 @@ class Admin_AccueilController extends Zend_Controller_Action {
 	}
 
 
-	protected function _updateConfig() {
+	protected function _updateConfig($type) {
 			$enreg = $this->_request->getPost();
 			$this->_unsetStyleReload($enreg);
 			$this->_setTypeDAnalyse($enreg);
 			$this->_setPanierOrDomaine($enreg);
-			$this->_updateEtRetour($enreg);
+			$this->_updateEtRetour($enreg, $type);
 	}
 
 
 	public function kiosqueChangeSelectionAction() {
 		$this->getHelper('ViewRenderer')->setNoRender();
 
-		$module_config = $this->profil->getModuleAccueilConfig($this->id_module);
+		$module_config = $this->profil
+			->getModuleAccueilConfig($this->id_module, 'KIOSQUE');
 		$selected_elementId = explode('-', $this->_request->getPost('domaine_panier'));
 		
 		if($selected_elementId[0] == 'p') {
@@ -351,7 +347,7 @@ class Admin_AccueilController extends Zend_Controller_Action {
 			foreach (array('gauche', 'droite') as $colonne)
 				$this->_conteneur2colonnes_createModules($enreg, $colonne);
 
-			$this->_updateEtRetour($enreg);
+			$this->_updateEtRetour($enreg, 'CONTENEUR_DEUX_COLONNES');
 			return;
 		}
 
@@ -364,10 +360,11 @@ class Admin_AccueilController extends Zend_Controller_Action {
 	}
 
 
-	private function _simpleAction() {
+	private function _simpleAction($type) {
 		// pour combo des annexes
-		$this->view->ya_annexes=fetchAll("select count(*) from codif_annexe where invisible=0 order by libelle");
-		if ($this->_request->isPost()) $this->_updateEtRetour($this->_request->getPost());
+		$this->view->ya_annexes = fetchAll("select count(*) from codif_annexe where invisible=0 order by libelle");
+		if ($this->_request->isPost()) 
+			$this->_updateEtRetour($this->_request->getPost(), $type);
 	}
 
 
@@ -407,8 +404,7 @@ class Admin_AccueilController extends Zend_Controller_Action {
 	/**
 	 * @param array $data
 	 */
-	protected function _updateEtRetour($data) {
-		
+	protected function _updateEtRetour($data, $type) {
 		$enreg = [];
 
 		foreach ($data as $clef => $valeur)
@@ -417,13 +413,13 @@ class Admin_AccueilController extends Zend_Controller_Action {
 		if ($this->config == "admin") {
 			$this->view->id_module = $this->id_module;
 			$this->view->properties = $this->_compactProperties($enreg);
-		}else {
-			$module_config = $this->profil->getModuleAccueilConfig($this->id_module);
+		} else {
+			$module_config = $this->profil->getModuleAccueilConfig($this->id_module, $type);
 			$module_config['preferences'] = $enreg;
+
 			$this->profil
 				->updateModuleConfigAccueil($this->id_module, $module_config)
 				->save();
-
 			$this->view->reload = 'SITE';
 		}
 
@@ -472,7 +468,7 @@ class Admin_AccueilController extends Zend_Controller_Action {
 
 		$enreg[$id_key] = $id_module; // L'id module n'est pas dans le post.
 
-		if ($this->profil->getModuleAccueilConfig($id_module) == null)
+		if ($this->profil->getModuleAccueilConfig($id_module, $type_module) == null)
 			$id_module = null;
 
 		// Si le module existe et du même type, pas besoin de le créer
@@ -490,8 +486,8 @@ class Admin_AccueilController extends Zend_Controller_Action {
 		$preferences = $modules_accueil->getValeursParDefaut($type_module);
 
 		$preferences['conteneur_deux_colonnes_id'] = $this->id_module;
-		$config = array("preferences" => $preferences,
-										"type_module" => $type_module);
+		$config = ["preferences" => $preferences,
+							 "type_module" => $type_module];
 
 		$this->profil->updateModuleConfigAccueil($id_module, $config);
 	}
diff --git a/application/modules/admin/controllers/CatalogueController.php b/application/modules/admin/controllers/CatalogueController.php
index 0b886e1cd5ff61aad012661674756c39d03d0f72..33d8f3fb6756641281563947ea90fc8af61dd324 100644
--- a/application/modules/admin/controllers/CatalogueController.php
+++ b/application/modules/admin/controllers/CatalogueController.php
@@ -107,7 +107,7 @@ class Admin_CatalogueController extends ZendAfi_Controller_Action {
 
 	protected function updateConfigKiosque($id_module, $catalogue){
 		$profil = Class_Profil::getCurrentProfil();
-		$module_config = $profil->getModuleAccueilConfig($id_module);
+		$module_config = $profil->getModuleAccueilConfig($id_module, 'KIOSQUE');
 		$module_config['preferences']['id_catalogue'] = $catalogue->getId();
 		$profil->updateModuleConfigAccueil($id_module, $module_config);
 		$profil->save();
diff --git a/application/modules/admin/controllers/CmsController.php b/application/modules/admin/controllers/CmsController.php
index 3616c7fd133007c913ecbc4bc05d0e6e751a8b29..9005ce4fd49ee122e84b60a5d5127f195e389627 100644
--- a/application/modules/admin/controllers/CmsController.php
+++ b/application/modules/admin/controllers/CmsController.php
@@ -94,11 +94,12 @@ class Admin_CmsController extends ZendAfi_Controller_Action {
 		}
 
 		if ($this->_isCategorySaved($category)) {
-			$this->_redirect(sprintf('admin/cms/index/id_cat/%d', $category->getIdCatMere()));
+			$this->_redirect(sprintf('admin/cms/index/id_cat/%d', $category->getId()));
 			return;
 		}
 
 		$this->view->category = $category;
+		$this->view->id_categorie = (int)$this->_getParam('id');
 		$this->view->titre = "Ajouter une catégorie d'articles";
 	}
 
@@ -116,7 +117,7 @@ class Admin_CmsController extends ZendAfi_Controller_Action {
 
 		$this->view->category = $category;
 		$this->view->combo_cat = $this->view->comboParentCategorie($category); 
-
+		$this->view->id_categorie = (int)$this->_getParam('id');
 		$this->view->titre = "Modifier une catégorie d'articles";
 	}
 
@@ -209,7 +210,7 @@ class Admin_CmsController extends ZendAfi_Controller_Action {
  
 	protected function updateConfigBoiteNews($id_module, $article){
 		$profil = Class_Profil::getCurrentProfil();
-		$module_config = $profil->getModuleAccueilConfig($id_module);
+		$module_config = $profil->getModuleAccueilConfig($id_module, 'NEWS');
 		$id_items= array_filter(explode('-',$module_config['preferences']['id_items']));
 		array_unshift($id_items,$article->getId());
 		$module_config['preferences']['id_items'] = implode('-',$id_items);
@@ -224,7 +225,6 @@ class Admin_CmsController extends ZendAfi_Controller_Action {
 			$this->_redirect('admin/cms');
 			return;
 		}
-
 	 	$this->_article_old_status = $article->getStatus();
 		if (null === ($article->getCategorie()->getBib()))
 			$article->getCategorie()->setBib($this->_bib);
diff --git a/application/modules/admin/controllers/HarvestController.php b/application/modules/admin/controllers/HarvestController.php
index c9b742e4e8f346ffbc7f959a8e9c20d53d3d0367..83438153be8319d15dd3dcce7854853b0ea190e9 100644
--- a/application/modules/admin/controllers/HarvestController.php
+++ b/application/modules/admin/controllers/HarvestController.php
@@ -54,13 +54,14 @@ class Admin_HarvestController extends Zend_Controller_Action {
 		$this->view->titre = $this->view->_(sprintf('Moissonnage %s', 
 																								$this->_service->getName()));
 	}
-	
+
 
 	protected function getServices() {
 		return ['arte-vod' => new Class_WebService_BibNumerique_ArteVOD(),
 						'vodeclic' => new Class_WebService_BibNumerique_Vodeclic(),
 						'toutapprendre' => new Class_WebService_BibNumerique_ToutApprendre(),
 						'numilog' => new Class_WebService_BibNumerique_Numilog(),
+						'cyberlibris' => new Class_WebService_BibNumerique_Cyberlibris(),
 						'numerique-premium' => new Class_WebService_BibNumerique_NumeriquePremium()];
 	}
 
@@ -108,16 +109,16 @@ class Admin_HarvestController extends Zend_Controller_Action {
 
 		$logger = new Zend_Log();
 		$logger->addWriter(new Zend_Log_Writer_Stream('php://output'));
-	
+
 		ob_start();
 		$logger->info('Début du moissonnage');
-		
+
 		$service->setLogger($logger);
 		$service->harvest();
 		(new Storm_Cache())->clean();
 
 		$logger->info('Fin du moissonnage');
-		
+
 		$this->view->log = ob_get_clean();
 	}
 }
diff --git a/application/modules/admin/controllers/MenusController.php b/application/modules/admin/controllers/MenusController.php
index cc4d326cd5126df77d0c06d3fb85da7ec55403bb..627e49ef25881889766487af97af08a8b039aa9e 100644
--- a/application/modules/admin/controllers/MenusController.php
+++ b/application/modules/admin/controllers/MenusController.php
@@ -27,7 +27,8 @@ class Admin_MenusController extends Admin_AccueilController {
 	private $type_menu;							// Type de menu
 
 
-	public function init()	{
+	public function preDispatch()	{
+		parent::preDispatch();
 		// Changer le layout
 		$viewRenderer = $this->getHelper('ViewRenderer');
 		$viewRenderer->setLayoutScript('subModal.phtml');
@@ -222,7 +223,7 @@ class Admin_MenusController extends Admin_AccueilController {
 	}
 	
 
-	protected function _updateEtRetour($data) {
+	protected function _updateEtRetour($data, $type=null) {
 		// Filtrage des données
 		foreach($data as $clef => $valeur) 
 			$enreg[$clef] = addslashes($valeur);
diff --git a/application/modules/admin/controllers/ModulesController.php b/application/modules/admin/controllers/ModulesController.php
index 81a22dcebe213cf4c8b47be0f0ab4cc90631efa7..f1bb4fb8ca708c16d7b96b741960acdd336ea913 100644
--- a/application/modules/admin/controllers/ModulesController.php
+++ b/application/modules/admin/controllers/ModulesController.php
@@ -298,7 +298,9 @@ class Admin_ModulesController extends ZendAfi_Controller_Action {
 	public function kiosqueChangeDataAction() {
 		$this->id_module = $this->_getParam('id_module');
 			
-		$module_config = $this->profil->getModuleAccueilConfig($this->_getParam('id_module'));
+		$module_config = $this->profil
+			->getModuleAccueilConfig($this->_getParam('id_module'), 'KIOSQUE');
+
 		$this->view->id_panier = $module_config['preferences']['id_panier'];
 		$this->view->id_catalogue = $module_config['preferences']['id_catalogue'];
 		$this->view->titre = $this->view->_('Sélectionnez un panier ou un domaine');
@@ -307,16 +309,16 @@ class Admin_ModulesController extends ZendAfi_Controller_Action {
 			return;
 
 		$enreg = $this->_request->getPost();
-		$this->updateCfg($enreg);
+		$this->updateCfg($enreg, 'KIOSQUE');
 		$this->_request->setParam('render','');
 
 		$this->_redirect($this->_getReferer());
 	}
 
 
-	protected function updateCfg($data) {
+	protected function updateCfg($data, $type) {
 		$enreg = [];
-		$module_config = $this->profil->getModuleAccueilConfig($this->id_module);
+		$module_config = $this->profil->getModuleAccueilConfig($this->id_module, $type);
 		foreach ($data as $clef => $valeur) {
 			$enreg[$clef] = addslashes($valeur);
 			$module_config['preferences'][$clef]=addslashes($valeur);
diff --git a/application/modules/admin/controllers/ProfilController.php b/application/modules/admin/controllers/ProfilController.php
index 1e77be238caa84ab14e3f6015cc221ae4af6fe03..3a58354b80eef28730b7c6aecfdfa7a283033107 100644
--- a/application/modules/admin/controllers/ProfilController.php
+++ b/application/modules/admin/controllers/ProfilController.php
@@ -341,17 +341,19 @@ class Admin_ProfilController extends ZendAfi_Controller_Action {
 					$enreg["modules"][$id_module]['preferences'] = $class_module->getValeursParDefaut($type_module);
 				}
 
-				/* Permet de ne pas perdre la configuration des modules contenus
-				 * dans une boîte 2 colonnes */
+				/* 
+					 Permet de ne pas perdre la configuration des modules contenus
+					 dans une boîte 2 colonnes 
+				*/
 				if ($module_config['type_module'] == "CONTENEUR_DEUX_COLONNES") {
 					if (array_key_exists('col_gauche_module_id', $module_config['preferences']) and
 						  $id_col_gauche = $module_config['preferences']['col_gauche_module_id'])
-						$enreg["modules"][$id_col_gauche] = $profil->getModuleAccueilConfig($id_col_gauche);
+						$enreg["modules"][$id_col_gauche] = $profil->getLocalModuleAccueilConfig($id_col_gauche);
 
 
 					if (array_key_exists('col_droite_module_id', $module_config['preferences']) and
 							$id_col_droite = $module_config['preferences']['col_droite_module_id'])
-						$enreg["modules"][$id_col_droite] = $profil->getModuleAccueilConfig($id_col_droite);
+						$enreg["modules"][$id_col_droite] = $profil->getLocalModuleAccueilConfig($id_col_droite);
 				}
 			}
 
diff --git a/application/modules/admin/controllers/UsergroupController.php b/application/modules/admin/controllers/UsergroupController.php
index 06e5dd95be8497092b77b08f839b98f3fcc02e22..6388b9e3324fa688de0fa3744f7f8e65ca13be2d 100644
--- a/application/modules/admin/controllers/UsergroupController.php
+++ b/application/modules/admin/controllers/UsergroupController.php
@@ -163,30 +163,8 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action {
 
 		$this->displayGroupFiltreVisibleOnlyOnDynamicGroup();
 
-		$rights = Class_UserGroup::getRightDefinitionList();
-		if (!Class_AdminVar::isFormationEnabled()) {
-			unset($rights[Class_UserGroup::RIGHT_SUIVRE_FORMATION]);
-			unset($rights[Class_UserGroup::RIGHT_DIRIGER_FORMATION]);
-		}
-		
-		if (!Class_AdminVar::isArteVodEnabled()) {
-			unset($rights[Class_UserGroup::RIGHT_ACCES_ARTEVOD]);
-		}
-
-		if (!Class_AdminVar::isCVSEnabled()) {
-			unset($rights[Class_UserGroup::RIGHT_ACCES_CVS]);
-		}
-
+		$rights = Class_UserGroup::getActivatedRightDefinitionList();
 
-		if (!Class_AdminVar::isNumilogEnabled()) {
-			unset($rights[Class_UserGroup::RIGHT_ACCES_NUMILOG]);
-		}
-
-
-		if (!Class_AdminVar::isVodeclicEnabled()) {
-			unset($rights[Class_UserGroup::RIGHT_ACCES_VODECLIC]);
-		}
-		
 		asort($rights);
 
 		$form
diff --git a/application/modules/admin/views/scripts/accueil/calendrier.phtml b/application/modules/admin/views/scripts/accueil/calendrier.phtml
index e81edb5709a506038554b1ab281bcff3151e792d..a19d4d0c4c16b4175542e093616dc0aab6798d9c 100644
--- a/application/modules/admin/views/scripts/accueil/calendrier.phtml
+++ b/application/modules/admin/views/scripts/accueil/calendrier.phtml
@@ -73,16 +73,29 @@
 																		 '',
 																		 ['simple' => $this->_('mode liste simple'),
 									                    'article' => $this->_('mode résumé d\'article'),
+																			'wall' => $this->_('mode mur'),
 																			'diaporama_navigation' => $this->_('Diaporama avec navigation'),
 									                    'none' => $this->_('Ne pas afficher')]);
 							echo (new ZendAfi_View_Helper_Admin_PropertiesReader())
-																										 ->setView($this)
-																										 ->propertiesReader($this->preferences['mode-affichage'],
-																																				$this->preferences);
+												->setView($this)
+												->propertiesReader($this->preferences['mode-affichage'],
+																					 $this->preferences);
 						  ?>
 					  </td>
-						</tr>
-						<tr>
+					</tr>
+
+					<tr>
+	          <td class="droite"><?php echo $this->_('Filtre sur les évènements'); ?></td>
+	          <td class="gauche">
+	            <?php echo $this->formSelect('event_filter', 
+	                                         $this->preferences['event_filter'], 
+	                                         '', 
+	                                         ['none' => $this->_('aucun'),
+																						'month' => $this->_('par mois')]); ?>
+	          </td>
+	        </tr>
+
+					<tr>
 						<td class="droite">Mode d'affichage des titres</td>
 						<td class="gauche">
 						  <?php 
@@ -147,16 +160,16 @@
 
 	      <div id='table_selection'>
 	        <?php	
-	        echo $this->treeSelect(
-	          '',
-	          $this->preferences["id_categorie"],
-	          true,
-	          $this->url(array('module' => 'admin',
-	                           'controller' => 'bib',
-	                           'action' => 'articles',
-	                           'id_bib' => $this->id_bib,
-	                           'categories_only' => 1)),
-	          "form");
+							 echo $this->treeSelect(
+								 '',
+								 $this->preferences["id_categorie"],
+								 true,
+								 $this->url(array('module' => 'admin',
+																	'controller' => 'bib',
+																	'action' => 'articles',
+																	'id_bib' => $this->id_bib,
+																	'categories_only' => 1)),
+								 "form");
 	        ?>
 	      </div>
 
diff --git a/application/modules/admin/views/scripts/accueil/menuvertical.phtml b/application/modules/admin/views/scripts/accueil/menuvertical.phtml
index 64c189dd468066d900b6af75511022b7b79ab014..8f4c39d84f68128dee13a956ae3cbec33a5554c9 100644
--- a/application/modules/admin/views/scripts/accueil/menuvertical.phtml
+++ b/application/modules/admin/views/scripts/accueil/menuvertical.phtml
@@ -41,6 +41,17 @@
     		</tr>
 
 
+    		<tr>
+    			<td class="droite"><?php echo $this->_('Html simplifié');?></td>
+    			<td>
+					<?php
+						echo $this->formCheckbox('new_html', 
+																			null, 
+																		  array('checked' => $this->preferences["new_html"]));
+					?>
+    		</tr>
+
+
     		<tr>
     			<td class="droite">Menu à afficher&nbsp;</td>
     			<td><?php echo $this->comboMenus($this->id_profil,$this->preferences["menu"]) ?></td>
@@ -51,4 +62,4 @@
 		<?php echo $this->formSubmit("Valider","Valider",array("class" => "bouton")) ?>
  	</form>
  </div>
-</center>
\ No newline at end of file
+</center>
diff --git a/application/modules/admin/views/scripts/batch/index.phtml b/application/modules/admin/views/scripts/batch/index.phtml
index fb4df603bd63679646427a9ff0f36cb8f92a00fe..82895d83116c1e489bfb722f391cb8b0ff2efe40 100644
--- a/application/modules/admin/views/scripts/batch/index.phtml
+++ b/application/modules/admin/views/scripts/batch/index.phtml
@@ -10,9 +10,18 @@ echo $this->tagModelTable(
 	$this->batchs, 
 	[$this->_('Libelle'), $this->_('Dernière exécution')],
 	['Libelle', 'last_run'],
-	[['action' => 'delete', 'content' => $this->boutonIco('type=del')],
-	 ['action' => 'run', 'content' => $this->boutonIco('type=test')],
-	 ['action' => 'run-ajax', 'content' => $this->boutonIco('type=test')] ],
+	[
+		['action' => 'delete', 'content' => $this->boutonIco('type=del')],
+		function($batch) {
+			if ('MOISSONNAGE_CYBERLIBRIS' == $batch->getType())
+				return '';
+
+			$action = (in_array($batch->getType(), 
+									 ['AUTOCOMPLETE_RECORD_TITLE', 'AUTOCOMPLETE_RECORD_AUTHOR'])) ?
+				'run-ajax' : 'run';
+			return $this->tagAnchor(['action' => $action, 'id' => $batch->getId()], 
+															$this->boutonIco('type=test', 'bulle=Lancer'));
+		}],
 	'batchs');
 													
 ?>
diff --git a/application/modules/admin/views/scripts/cms/_newsform_buttons.phtml b/application/modules/admin/views/scripts/cms/_newsform_buttons.phtml
index 64c52e39cafd25d6efec503747fbfd8d67d3cab4..ead84c9d60d28adf9955e7341d9775ee6b877a69 100644
--- a/application/modules/admin/views/scripts/cms/_newsform_buttons.phtml
+++ b/application/modules/admin/views/scripts/cms/_newsform_buttons.phtml
@@ -8,7 +8,7 @@
 			echo $this->boutonRetour(['module' => 'admin',
 																'controller' => 'cms',
 																'action' => 'index',
-																'id_cat' => $this->id_categorie]);
+																'id_cat' => $this->article->getCategorie()->getId()]);
 			?>
 		</td>
 	</tr>
diff --git a/application/modules/admin/views/scripts/cms/catform.phtml b/application/modules/admin/views/scripts/cms/catform.phtml
index 8a967e93eab97f13d923d130ed014dfc371f7ba9..7a004793c07c3dc7edaa35110f89823aa45f7012 100644
--- a/application/modules/admin/views/scripts/cms/catform.phtml
+++ b/application/modules/admin/views/scripts/cms/catform.phtml
@@ -24,7 +24,16 @@
 							<table>
 								<tr>
 									<td align="right" style="padding-right:5px;"><?php echo $this->bouton('type=V'); ?> </td>
-									<td align="left" style="padding-left:5px;"> <?php	echo $this->bouton('id=c_2', 'picto=del.gif', 'texte=Annuler', 'url='.BASE_URL.'/admin/cms', 'largeur=120px'); ?></td>
+									<td align="left" style="padding-left:5px;"> 
+										<?php	echo $this->bouton('id=c_2', 
+																						 'picto=del.gif', 
+																						 'texte=Annuler', 
+																						 'url='.$this->url(['controller' => 'cms', 
+																																'action' => 'index',
+																																'id' => null,
+																																'id_cat' => $this->id_categorie]), 
+																						 'largeur=120px'); ?>
+									</td>
 								</tr>
 							</table>
 						</tr>
diff --git a/application/modules/admin/views/scripts/cms/newsform.phtml b/application/modules/admin/views/scripts/cms/newsform.phtml
index 1d44a5a4853d7ddd66172aa68e7bc0b94ea440de..43782e8e4b8c9a7cfeed4ce1aec76a8e452f5d9f 100644
--- a/application/modules/admin/views/scripts/cms/newsform.phtml
+++ b/application/modules/admin/views/scripts/cms/newsform.phtml
@@ -226,7 +226,8 @@ echo $this->article->getRefusMessage(); ?></textarea>
   </fieldset>
   <?php } ?>
 
-  <?php echo $this->partial('cms/_newsform_buttons.phtml',['id_categorie'=> $this->article->getCategorie()->getId()]); ?>
+  <?php echo $this->partial('cms/_newsform_buttons.phtml',
+														['article' => $this->article]); ?>
 </form>
 
 <script type="text/javascript">
diff --git a/application/modules/admin/views/scripts/cms/traductionform.phtml b/application/modules/admin/views/scripts/cms/traductionform.phtml
index ff0541b45ffab4f70a7d17e2102dc45cb0420fb1..68f74a2831e176172fbc801064d1ce7295275848 100644
--- a/application/modules/admin/views/scripts/cms/traductionform.phtml
+++ b/application/modules/admin/views/scripts/cms/traductionform.phtml
@@ -47,7 +47,8 @@
 	 </fieldset>
  <?php } ?>
 
-	<?php echo $this->partial('cms/_newsform_buttons.phtml',['id_categorie'=> $this->article->getCategorie()->getId()]); ?>
+ <?php echo $this->partial('cms/_newsform_buttons.phtml',
+													 ['article'=> $this->article]); ?>
 </form>
 
 
diff --git a/application/modules/admin/views/scripts/index/adminvar.phtml b/application/modules/admin/views/scripts/index/adminvar.phtml
index d094cb5e9490c74779c7fc16cd2055007f9cef1a..56e6dc858478f6e8a822535ceebd9cb665b48b1d 100644
--- a/application/modules/admin/views/scripts/index/adminvar.phtml
+++ b/application/modules/admin/views/scripts/index/adminvar.phtml
@@ -1,33 +1,56 @@
-<table cellspacing="0" cellpadding="0">
-      <tr class="soustitre">
-        <td style="width:28%"><?php echo $this->traduire('Clef'); ?></td>
-        <td style="width:70%;"><?php echo $this->traduire('Valeur'); ?></td>
-        <td style="width:2%;text-align:center"><?php echo $this->traduire('action'); ?></td>
-      </tr>
-      <tr>
-      	<td colspan="3"  class="separ"></td>
-      </tr>
-<?php 
-// Afficher
-$ligne = 0;
-foreach($this->vars as $var)
-{
-	if ($var->getId() == 'GOOGLE_ANALYTICS')
-		$value = $this->escape($var->getValeur());
-	else if(preg_match('^%0D%0A^',$var->getValeur()))
-		$value = urldecode(str_replace('%0D%0A','<br />',$var->getValeur()));
-	else
-		$value = urldecode($var->getValeur());
-	
-
-	$ligne ++ ;
-	if ($ligne & 1) $class="first"; else $class="second";    
-	echo ('<tr class="'.$class.'">');
-	echo ('<td style="vertical-align:top;">'.$var->getId().'</td>');
-	echo ('<td>'.wordwrap($value, 40, "<br />", 1).'</td>');
-	echo ('<td style="width:2%;text-align:center"><a href="'.BASE_URL.'/admin/index/adminvaredit/cle/'.$var->getId().'">'.$this->boutonIco("type=edit").'</a></td>');
-	echo ('</tr>');
-}
-
-echo ('</table>');
-?>
+<?php 
+Class_ScriptLoader::getInstance()
+->loadDataTables()
+->addJQueryReady("$('#adminvars').dataTable({
+'iDisplayLength': -1, 
+'bPaginate': false, 
+'columnDefs' : [
+	{'orderable': false, 'targets': 2}
+]
+})")
+->loadJQueryUI()
+->addJQueryReady('$(document).tooltip({
+items: "[data-tooltip]",
+content: function() {
+	var element = $(this);
+	var html = element.find("span").html();
+  return (html.trim() != "") ? html : "Description non disponible";
+},
+position: { my: "left top+30", at: "left top"},
+hide: {duration: 1000}
+})');
+?>
+<table id="adminvars">
+	<thead>
+    <tr class="soustitre">
+      <th><?php echo $this->traduire('Clef'); ?></th>
+      <th><?php echo $this->traduire('Valeur'); ?></th>
+      <th><?php echo $this->traduire('action'); ?></th>
+    </tr>
+	</thead>
+	<tbody>
+		<?php 
+		$ligne = 0;
+		foreach($this->vars as $var) {
+			if ($var->getId() == 'GOOGLE_ANALYTICS')
+				$value = $this->escape($var->getValeur());
+			else if(preg_match('^%0D%0A^',$var->getValeur()))
+			$value = urldecode(str_replace('%0D%0A','<br />',$var->getValeur()));
+			else
+				$value = urldecode($var->getValeur());
+			$ligne ++ ;
+			?>
+			<tr class="<?php echo ($ligne & 1) ? "first" : "second";?>" data-tooltip="">
+				<td style="vertical-align:top;" ><?php echo $var->getId();?>
+					<span style="display:none;">
+						<?php echo Class_AdminVar::helpFor($var->getId());?>
+					</span>
+				</td>
+				<td><?php echo wordwrap($value, 40, "<br />", 1);?></td>
+				<td style="width:2%;text-align:center">
+					<a href="<?php echo BASE_URL;?>/admin/index/adminvaredit/cle/<?php echo $var->getId();?>"><?php echo $this->boutonIco("type=edit");?></a>
+				</td>
+			</tr>
+		<?php	} ?>
+</tbody>
+</table>
diff --git a/application/modules/admin/views/scripts/index/index.phtml b/application/modules/admin/views/scripts/index/index.phtml
index 93636f038fd1a788789cc41364d81042d419be5d..1438bd1e6a98d7d86055a22683bc9c29b0a0aaf5 100644
--- a/application/modules/admin/views/scripts/index/index.phtml
+++ b/application/modules/admin/views/scripts/index/index.phtml
@@ -1,92 +1,92 @@
-<h2><?php echo $this->traduire('Version');?>&nbsp;:
-	<a href='http://git.afi-sa.fr/afi/opacce/blob/master/VERSIONS'><?php echo RELEASE_NUMBER ?></a>
-</h2>
-
-
-<h2><?php echo $this->traduire('Paramètres du site');?>&nbsp;:</h2>
-<?php 
-$profil = Class_Profil::getCurrentProfil();
-$lien_edit_site = $lien = '';
-if ($this->user->isAdmin()) {
-	$lien = sprintf('<a href="admin?setsiteok=%s" style="margin-left:30px">&raquo;&nbsp;%s&nbsp;&laquo;</a>',
-									$this->href_site, $this->lien_site);
-	$lien_edit_site = sprintf('<a href="%s" style="margin-left:30px" >&raquo;&nbsp;Paramétrer&nbsp;&laquo;</a>',
-														$this->url(array('controller' => 'profil', 
-																						 'action' => 'accueil', 
-																						 'id_profil' => $profil->getId())));
-}
-
-echo $this->ligneInfos("Etat du site", $this->etat_site . $lien) 
-  . $this->ligneInfos("Profil", $profil->getLibelle() . $lien_edit_site) 
-  . $this->ligneInfos("Thème", $profil->getSkin())
-  . $this->ligneInfos("Avis Babelio", $this->status_babelio);
-
-if ($this->show_babelio_info) { ?>
-  <div class='ligne_info'>Le service <a href='http://www.babelio.com/'>Babelio</a> est gratuit pour une durée de 
-90 jours à compter de l'ouverture du portail. Veuillez contacter AFI pour souscrire à un abonnement.</div>
-<?php } ?>
-
-<h2><?php echo $this->traduire('Accès');?>&nbsp;:</h2>
-<?php
-$acl = new ZendAfi_Acl_AdminControllerRoles();
-echo $this->ligneInfos($this->traduire("Utilisateur"), $this->user->getLogin());
-echo $this->ligneInfos("Pseudo", $this->user->getNomAff());
-echo $this->ligneInfos("Rôle", $acl->getLibelleRole($this->user->getRoleLevel()));
-$bib = $this->user->getBib();
-$bib = (!$bib) ? 'Portail' : $bib->getLibelle();
-echo $this->ligneInfos("Bibliothèque", $bib);
-?>
-
-<h2><?php echo $this->traduire('Données en attente de modération');?>&nbsp;:
-<a class="rss" href="<?php 
-echo $this->url(array('module' => 'opac',
-                      'controller' => 'rss',
-                      'action' => 'moderations'));
-?>"><img src="<?php echo URL_ADMIN_IMG;?>/rss.gif" alt="RSS"/></a>
-</h2>
-<?php 
-$moderer = new Class_Moderer();
-$modstats = $moderer->getModerationStats();
-foreach ($modstats as $stat) {
-	$nombre = ($stat['count']) ? $stat['count'] : 'aucun';
-	echo $this->ligneInfos(sprintf('<a href="%s" style="font-size:10pt">%s</a>',
-                                 $stat['url'], $stat['label']), 
-                         $nombre);
-}
-?>
-
-<h2>Un problème ? Contactez le support AFI:</h2>
-<?php echo $this->ligneInfos('Par courriel (de préférence)',  '<a href="mailto:hotline@afi-sa.fr">hotline@afi-sa.fr</a>') ?>
-<?php echo $this->ligneInfos('Par téléphone',  '01.60.17.12.34 en semaine, 01.60.37.01.34 le samedi') ?>
-
-<h2>Participez à la communauté !</h2>
-<div class='ligne_info'><a onclick="window.open(this.href); return false" href="https://groups.google.com/group/afi-opac2">Google group afi-opac2</a></div>
-<div class='ligne_info'><a onclick="window.open(this.href); return false" href="http://bibliopedia.fr/index.php/AFI-OPAC2.0_-_Trucs_et_astuces">Wiki sur Bibliopedia</a></div>
-	
-<h2>Forum AFI-OPAC2.0:</h2>
-<iframe id="forum_embed"
- src="javascript:void(0)"
- scrolling="no"
- frameborder="0"
- width="700"
- height="700">
-</iframe>
-
-<script type="text/javascript">
- document.getElementById("forum_embed").src =
-  "https://groups.google.com/forum/embed/?place=forum/afi-opac2" +
-  "&showsearch=true&hl=fr&hideforumtitle=true&showpopout=true";
-</script>
-
-
-<script>
-(function() {
-	 function supportsCanvas() {
-		 return !!document.createElement('canvas').getContext;
-	 }
-
-	 if (!supportsCanvas())
-	   showNotification({message: 'Votre navigateur ne permet pas d\'utiliser pleinement l\'interface d\'administration. Pour un fonctionnement optimal, nous recommandons d\'utiliser une version récente de Firefox, Chrome, Safari ou Internet Explorer',
-											 type: 'error'});
-})();
-</script>
+<h2><?php echo $this->traduire('Version');?>&nbsp;:
+	<a href='http://git.afi-sa.fr/afi/opacce/blob/master/VERSIONS'><?php echo RELEASE_NUMBER ?></a>
+</h2>
+
+
+<h2><?php echo $this->traduire('Paramètres du site');?>&nbsp;:</h2>
+<?php 
+$profil = Class_Profil::getCurrentProfil();
+$lien_edit_site = $lien = '';
+if ($this->user->isAdmin()) {
+	$lien = sprintf('<a href="admin?setsiteok=%s" style="margin-left:30px">&raquo;&nbsp;%s&nbsp;&laquo;</a>',
+									$this->href_site, $this->lien_site);
+	$lien_edit_site = sprintf('<a href="%s" style="margin-left:30px" >&raquo;&nbsp;Paramétrer&nbsp;&laquo;</a>',
+														$this->url(array('controller' => 'profil', 
+																						 'action' => 'accueil', 
+																						 'id_profil' => $profil->getId())));
+}
+
+echo $this->ligneInfos("Etat du site", $this->etat_site . $lien) 
+  . $this->ligneInfos("Profil", $profil->getLibelle() . $lien_edit_site) 
+  . $this->ligneInfos("Thème", $profil->getSkin())
+  . $this->ligneInfos("Avis Babelio", $this->status_babelio);
+
+if ($this->show_babelio_info) { ?>
+  <div class='ligne_info'>Le service <a href='http://www.babelio.com/'>Babelio</a> est gratuit pour une durée de 
+90 jours à compter de l'ouverture du portail. Veuillez contacter AFI pour souscrire à un abonnement.</div>
+<?php } ?>
+
+<h2><?php echo $this->traduire('Accès');?>&nbsp;:</h2>
+<?php
+$acl = new ZendAfi_Acl_AdminControllerRoles();
+echo $this->ligneInfos($this->traduire("Utilisateur"), $this->user->getLogin());
+echo $this->ligneInfos("Pseudo", $this->user->getNomAff());
+echo $this->ligneInfos("Rôle", $acl->getLibelleRole($this->user->getRoleLevel()));
+$bib = $this->user->getBib();
+$bib = (!$bib) ? 'Portail' : $bib->getLibelle();
+echo $this->ligneInfos("Bibliothèque", $bib);
+?>
+
+<h2><?php echo $this->traduire('Données en attente de modération');?>&nbsp;:
+<a class="rss" href="<?php 
+echo $this->url(array('module' => 'opac',
+                      'controller' => 'rss',
+                      'action' => 'moderations'));
+?>"><img src="<?php echo URL_ADMIN_IMG;?>/rss.gif" alt="RSS"/></a>
+</h2>
+<?php 
+$moderer = new Class_Moderer();
+$modstats = $moderer->getModerationStats();
+foreach ($modstats as $stat) {
+	$nombre = ($stat['count']) ? $stat['count'] : 'aucun';
+	echo $this->ligneInfos(sprintf('<a href="%s" style="font-size:10pt">%s</a>',
+                                 $stat['url'], $stat['label']), 
+                         $nombre);
+}
+?>
+
+<h2>Un problème ? Contactez le support AFI:</h2>
+<?php echo $this->ligneInfos('Par courriel (de préférence)',  '<a href="mailto:hotline@afi-sa.fr">hotline@afi-sa.fr</a>') ?>
+<?php echo $this->ligneInfos('Par téléphone',  '01.60.17.12.34 en semaine, 01.60.37.01.34 le samedi') ?>
+
+<h2>Participez à la communauté !</h2>
+<div class='ligne_info'><a onclick="window.open(this.href); return false" href="https://groups.google.com/group/utilisateurs-bokeh">Google group Bokeh</a></div>
+<div class='ligne_info'><a onclick="window.open(this.href); return false" href="http://bibliopedia.fr/index.php/AFI-OPAC2.0_-_Trucs_et_astuces">Wiki sur Bibliopedia</a></div>
+	
+<h2>Forum Bokeh :</h2>
+<iframe id="forum_embed"
+ src="javascript:void(0)"
+ scrolling="no"
+ frameborder="0"
+ width="700"
+ height="700">
+</iframe>
+
+<script type="text/javascript">
+ document.getElementById("forum_embed").src =
+  "https://groups.google.com/forum/embed/?place=forum/utilisateurs-bokeh" +
+  "&showsearch=true&hl=fr&hideforumtitle=true&showpopout=true";
+</script>
+
+
+<script>
+(function() {
+	 function supportsCanvas() {
+		 return !!document.createElement('canvas').getContext;
+	 }
+
+	 if (!supportsCanvas())
+	   showNotification({message: 'Votre navigateur ne permet pas d\'utiliser pleinement l\'interface d\'administration. Pour un fonctionnement optimal, nous recommandons d\'utiliser une version récente de Firefox, Chrome, Safari ou Internet Explorer',
+											 type: 'error'});
+})();
+</script>
diff --git a/application/modules/opac/controllers/AuthController.php b/application/modules/opac/controllers/AuthController.php
index e233ecef37f0a530598de46bc8efce18d2e8da50..07d7c39eb193fe07099a00666dc9358321d3b77a 100644
--- a/application/modules/opac/controllers/AuthController.php
+++ b/application/modules/opac/controllers/AuthController.php
@@ -113,14 +113,14 @@ class AuthController extends ZendAfi_Controller_Action {
 
 
 	public function popupLoginAction() {
-		$page_settings = Class_Profil::getCurrentProfil()->getCfgModulesPreferences('auth','login');
-		$widget_settings = Class_Profil::getCurrentProfil()->getModuleAccueilPreferencesByType('LOGIN');
-		$this->view->preferences = 
-			$widget_settings 
-			? $widget_settings 
-			:( $page_settings 
-				 ? $page_settings 
-				 : []);
+		$page_settings = Class_Profil::getCurrentProfil()
+			->getCfgModulesPreferences('auth','login');
+		$widget_settings = Class_Profil::getCurrentProfil()
+			->getModuleAccueilPreferencesByType('LOGIN');
+
+		$this->view->preferences = $widget_settings ? 
+			$widget_settings :
+			($page_settings ? $page_settings : []);
 
 		$this->view->redirect = $this->_getParam('redirect');
 
@@ -130,7 +130,9 @@ class AuthController extends ZendAfi_Controller_Action {
 
 
 	public function boiteLoginAction() {
-		$this->view->preferences = Class_Profil::getCurrentProfil()->getModuleAccueilPreferencesByType('LOGIN');	
+		$this->view->preferences = Class_Profil::getCurrentProfil()
+			->getModuleAccueilPreferencesByType('LOGIN');
+
 		$strategy = Auth_Strategy_Abstract::strategyForController($this);
 		$strategy->setDefaultUrl($this->_request->getServer('HTTP_REFERER'));
 		$strategy->processLogin();
diff --git a/application/modules/opac/controllers/BlogController.php b/application/modules/opac/controllers/BlogController.php
index 7861a738c497f841e7fcb9b21626521b5631bb6c..9dd3c45048b1e3ba3005afb063263bb8b8dafcce 100644
--- a/application/modules/opac/controllers/BlogController.php
+++ b/application/modules/opac/controllers/BlogController.php
@@ -96,14 +96,12 @@ class BlogController extends ZendAfi_Controller_Action {
 		$this->renderScript('blog/viewcritiques.phtml');
 	}
 
-	/* Affiche les critiques à partir des préférences d'un module
-		 Appelé lorsqu'on clique sur le titre du module critiques.
-		 Paramètre: id_module
-	 */
-	function viewcritiquesAction() {
-		$id_module = (int)$this->_request->getParam('id_module');
-		$preferences = Class_Profil::getCurrentProfil()->getModuleAccueilPreferences($id_module);
-		$avis = Class_AvisNotice::getLoader()->getAvisFromPreferences($preferences);
+
+	public function viewcritiquesAction() {
+		$id_module = (int)$this->_getParam('id_module');
+		$preferences = Class_Profil::getCurrentProfil()
+			->getModuleAccueilPreferences($id_module, 'CRITIQUES');
+		$avis = Class_AvisNotice::getAvisFromPreferences($preferences);
 		
 		$this->view->nb_aff = 50;
 		$this->view->liste_avis = $avis;
diff --git a/application/modules/opac/controllers/CasServerController.php b/application/modules/opac/controllers/CasServerController.php
index 2fd3938e1821a528e42e7d6d46e851dbe7f9cc54..0a75d54eec165b9d3638d16956623110033b72f3 100644
--- a/application/modules/opac/controllers/CasServerController.php
+++ b/application/modules/opac/controllers/CasServerController.php
@@ -22,15 +22,7 @@ class CasServerController extends Zend_Controller_Action {
 	use Trait_StaticFileWriter;
 	protected $service; // url de retour 
 	protected $values;
-	function init()
-	{
-		// Désactiver le view renderer
-		$viewRenderer = $this->getHelper('ViewRenderer');
-		$viewRenderer->setNoRender();
 
-	}
-
-	
 
 	public function returnValidTicketResponse($user, $ticket) {
 		$this->getResponse()->setHeader('Content-Type', 'application/xml;charset=utf-8');
@@ -81,12 +73,14 @@ class CasServerController extends Zend_Controller_Action {
 
 
 	function serviceValidateAction() {
+		$this->getHelper('ViewRenderer')->setNoRender();
 		$this->getResponse()->setHeader('Content-Type', 'application/xml;charset=utf-8');
 		$this->getResponse()->setBody("<form method='post' action=''><div>Identifiant:<input type='text' size='15' id='username' /></div><div>Mot de passe: <input type='text' size='15' id='password' /></div></form>");
 		
 	}
 
 	function validateMusicmeAction() {
+		$this->getHelper('ViewRenderer')->setNoRender();
 		$bibid=$this->_request->getParam('MediaLibraryID');
 		$ticket=$this->_request->getParam('ticket');
 
@@ -106,6 +100,7 @@ class CasServerController extends Zend_Controller_Action {
 /* INTERNAL_ERROR - an internal error occurred during ticket validation */
 
 	function validateAction() {
+		$this->getHelper('ViewRenderer')->setNoRender();
 		$service=$this->_request->getParam('service');
 		$ticket=$this->_request->getParam('ticket');
 		if (strlen($ticket)<1 || strlen($service)<1) {
diff --git a/application/modules/opac/controllers/CasServerV10Controller.php b/application/modules/opac/controllers/CasServerV10Controller.php
new file mode 100644
index 0000000000000000000000000000000000000000..1c451f6781e27a1e243300674ca052029f2ce892
--- /dev/null
+++ b/application/modules/opac/controllers/CasServerV10Controller.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+class CasServerV10Controller extends CasServerController {
+	// see http://www.jasig.org/cas/protocol#validate-cas-1.0
+	public function returnValidTicketResponse($user, $ticket) {
+		$this->getResponse()->setBody('yes'.chr(10));
+	}
+
+
+	public function returnFailureTicketResponse($error,$ticket=null) {
+		$this->getResponse()->setBody('no'.chr(10));
+	}
+
+
+	public function loginAction() {
+		$this->_forward('login', 'auth');
+	}
+
+
+	public function logoutAction() {
+		ZendAfi_Auth::getInstance()->clearIdentity();
+		if ($url_redirect = $this->_getParam('url'))
+			$this->_redirect($url_redirect);
+	}
+}
+
+?>
diff --git a/application/modules/opac/controllers/CmsController.php b/application/modules/opac/controllers/CmsController.php
index 33d67029bd34144bf64cf742448a15d46f906ddf..28d38b4ff61d74007359ddd42ae3f06d1d98e088 100644
--- a/application/modules/opac/controllers/CmsController.php
+++ b/application/modules/opac/controllers/CmsController.php
@@ -41,9 +41,10 @@ class CmsController extends Zend_Controller_Action {
 	public function articleviewbydateAction() {
 		$id_profil = (int)$this->_getParam('id_profil');
 		$id_module = (int)$this->_getParam('id_module');
-		if (!$profil = Class_Profil::getLoader()->find($id_profil))
+		if (!$profil = Class_Profil::find($id_profil))
 			$profil = Class_Profil::getCurrentProfil();
-		$preferences	= $profil->getModuleAccueilPreferences($id_module);
+
+		$preferences	= $profil->getModuleAccueilPreferences($id_module, 'NEWS');
 		$preferences['event_date']		= $this->_getParam('d');
 		$preferences['id_bib']				= $this->_getParam('b');
 		$preferences['events_only']		= true;
@@ -60,9 +61,9 @@ class CmsController extends Zend_Controller_Action {
 		if($preferences['display_mode']!='Title')
 			$this->_viewArticlesByPreferences($preferences);
 
-		$articles = Class_Article::getLoader()->getArticlesByPreferences($preferences);
-		$articles = Class_Article::getLoader()->filterByLocaleAndWorkflow($articles);
-		$articles	= Class_Article::getLoader()->groupByBibId($articles);
+		$articles = Class_Article::getArticlesByPreferences($preferences);
+		$articles = Class_Article::filterByLocaleAndWorkflow($articles);
+		$articles	= Class_Article::groupByBibId($articles);
 
 		if ((count($articles) == 1) && isset($articles[0]))
 			$libelle_bibs = [0 => ''];
@@ -81,8 +82,8 @@ class CmsController extends Zend_Controller_Action {
 		$id_profil = (int)$this->_getParam('id_profil');
 		$id_module = (int)$this->_getParam('id_module');
 
-		$profil				= Class_Profil::getLoader()->find($id_profil);
-		$preferences	= $profil->getModuleAccueilPreferences($id_module);
+		$profil				= Class_Profil::find($id_profil);
+		$preferences	= $profil->getModuleAccueilPreferences($id_module, 'NEWS');
 
 		if (
 			array_key_exists('id_categorie', $preferences)
@@ -99,16 +100,16 @@ class CmsController extends Zend_Controller_Action {
 		$preferences['events_only'] = true;
 		$preferences['published'] = false;
 
-		$articles = Class_Article::getLoader()->getArticlesByPreferences($preferences);
-		$articles = Class_Article::getLoader()->filterByLocaleAndWorkflow($articles);
+		$articles = Class_Article::getArticlesByPreferences($preferences);
+		$articles = Class_Article::filterByLocaleAndWorkflow($articles);
 
-		$data_rss = array(
+		$data_rss = [
 			'title' 	=> $preferences['titre'],
 			'link'  	=> $profil->urlForModule('cms', 'articleviewbydate', $id_module),
 			'charset'	  => 'utf-8',
 			'description' => 'Agenda: ' . $preferences['titre'],
 			'lastUpdate'  => time()
-		);
+		];
 
 		$this->_renderRSS($articles, $data_rss);
 
@@ -182,38 +183,34 @@ class CmsController extends Zend_Controller_Action {
 		$id_profil = (int)$this->_getParam('id_profil');
 		$id_module = (int)$this->_getParam('id_module');
 
-		$articles = array();
+		$articles = [];
 
-		$data_rss = array(
+		$data_rss = [
 				'title' 	=> 'Flux indisponible',
 				'link'  	=> $this->_request->getScheme() . '://'
 												. $this->_request->getServer('HTTP_HOST'),
 				'charset'	  => 'utf-8',
 				'description' => '',
 				'lastUpdate'  => time()
-		);
+		];
 
-		if (null != ($profil = Class_Profil::getLoader()->find($id_profil))) {
-			$preferences = $profil->getModuleAccueilPreferences($id_module);
+		if (null != ($profil = Class_Profil::find($id_profil))) {
+			$preferences = $profil->getModuleAccueilPreferences($id_module, 'NEWS');
 
 			$data_rss = array_merge(
 					$data_rss,
-					array(
+					[
 						'title' 	=> $preferences['titre'],
 						'link'  	=> $profil->urlForModule('cms', 'viewselection', $id_module),
 						'description' => 'Articles: '.$preferences['titre']
-					)
+					]
 			);
 
-			$articles = Class_Article::getLoader()
-										->getArticlesByPreferences($preferences);
-
-			$articles = Class_Article::getLoader()->filterByLocaleAndWorkflow($articles);
-
+			$articles = Class_Article::getArticlesByPreferences($preferences);
+			$articles = Class_Article::filterByLocaleAndWorkflow($articles);
 		}
 
 		$this->_renderRSS($articles, $data_rss);
-
 	}
 
 
@@ -230,11 +227,13 @@ class CmsController extends Zend_Controller_Action {
 	 */
 	public function articleviewselectionAction() {
 		$preferences = $this->_modulesPreferences(
-																				(int)$this->_getParam('id_module'),
-																				(int)$this->_getParam('id_profil'),
-																				$this->_getParam('id_menu'));
+			(int)$this->_getParam('id_module'),
+			(int)$this->_getParam('id_profil'),
+			$this->_getParam('id_menu'));
+
 		$preferences['nb_aff'] = 30;
-		if (!array_isset('display_order', $preferences) || ('Random' == $preferences['display_order']))
+		if (!array_isset('display_order', $preferences) 
+				|| ('Random' == $preferences['display_order']))
 			$preferences['display_order'] = 'DateCreationDesc';
 		$this->_viewArticlesByPreferences($preferences);
 	}
@@ -293,8 +292,8 @@ class CmsController extends Zend_Controller_Action {
 		$param['DISPLAY_CAT_SELECT'] = $preferences['display_cat_select'];
 		$param['MODE_AFFICHAGE'] = $preferences['mode-affichage'];
 		$param['DISPLAY_CALENDAR'] = $preferences['display_calendar'];
-		
 		$param['EVENT_INFO'] = $preferences['display_event_info'];
+		$param['EVENT_FILTER'] = $preferences['event_filter'];
 		$this->view->param = $param;
 	}
 
@@ -333,13 +332,13 @@ class CmsController extends Zend_Controller_Action {
 	 */
 	private function _modulesPreferences($id_module, $id_profil = null, $id_menu = null) {
 		$profil = ($id_profil)
-								? Class_Profil::getLoader()->find($id_profil)
+								? Class_Profil::find($id_profil)
 								: Class_Profil::getCurrentProfil();
 
 		if ($id_menu === 'H')
 			return $profil->getMenuHorizontal()->getMenuPrefencesByIdModule($id_module);
 
-		return $profil->getModuleAccueilPreferences($id_module);
+		return $profil->getModuleAccueilPreferences($id_module, 'NEWS');
 	}
 
 	 /**
diff --git a/application/modules/opac/controllers/DomainsController.php b/application/modules/opac/controllers/DomainsController.php
index 65b152c5c16e9c9d1f67d5a328ecdedb59c62bae..99fa2cb1b6864d3e5179457482bedcce954f6f1d 100644
--- a/application/modules/opac/controllers/DomainsController.php
+++ b/application/modules/opac/controllers/DomainsController.php
@@ -26,9 +26,8 @@ class DomainsController extends ZendAfi_Controller_Action {
 			return;
 		}
 
-
 		$id_module = $this->_getParam('id_module');
-		if (!$catalog->hasSousDomaines()){
+		if (!$catalog->hasSousDomaines()) {
 			$this->_redirect($this->view->url(array_filter(['controller' => 'recherche',
 																											'action' => 'simple',
 																											'id_catalogue' => $catalog->getId(),
@@ -37,7 +36,9 @@ class DomainsController extends ZendAfi_Controller_Action {
 			return;
 		}
 
-		$this->view->module_preferences = Class_Profil::getCurrentProfil()->getModuleAccueilPreferences($id_module);
+		$this->view->module_preferences = Class_Profil::getCurrentProfil()
+			->getModuleAccueilPreferences($id_module, 'DOMAIN_BROWSER');
+
 		$this->view->current_domain = $catalog;
 		$this->view->id_module = $id_module;
 		$this->view->current_breadcrumb = $this->_getParam('parents');
diff --git a/application/modules/opac/controllers/IndexController.php b/application/modules/opac/controllers/IndexController.php
index 4eb5668ec0a778e9836149bd82a58bfaa914ce05..82697e2ff41dde127425c3b6e61e4cb9867dc2ff 100644
--- a/application/modules/opac/controllers/IndexController.php
+++ b/application/modules/opac/controllers/IndexController.php
@@ -20,7 +20,7 @@
  */
 
 class IndexController extends Zend_Controller_Action {
-	function indexAction()	{
+	public function indexAction()	{
 		// Mettre le layout
 		$viewRenderer = $this->getHelper('ViewRenderer');
 		$viewRenderer->setLayoutScript('portail.phtml');
@@ -31,19 +31,18 @@ class IndexController extends Zend_Controller_Action {
 	}
 
 
-	function embedmoduleAction() {
+	public function embedmoduleAction() {
 		$viewRenderer = $this->getHelper('ViewRenderer');
 		$viewRenderer->setLayoutScript('iframe.phtml');
 
 		$id_module = $this->_getParam('id_module');
-		$id_profil = $this->_getParam('id_profil');
-		$profil = Class_Profil::getCurrentProfil();
-		$this->view->module = $profil->getModuleAccueilConfig($id_module);
+		$this->view->module = Class_Profil::getCurrentProfil()
+			->getLocalModuleAccueilConfig($id_module);
 		$this->view->id_module = $id_module;
 	}
 
 
-	function sitedownAction()	{
+	public function sitedownAction()	{
 		$viewRenderer = $this->getHelper('ViewRenderer');
 		$viewRenderer->setLayoutScript('sansMenuGauche.phtml');
 	}
diff --git a/application/modules/opac/controllers/JavaController.php b/application/modules/opac/controllers/JavaController.php
index 5ac3818502a84dd6f3aff58404a6f9f149dc0dcf..1170d4747a7ab84e44647dc846ddfd4e1c8a2b94 100644
--- a/application/modules/opac/controllers/JavaController.php
+++ b/application/modules/opac/controllers/JavaController.php
@@ -18,16 +18,9 @@
  * along with AFI-OPAC 2.0; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// OPAC3 - Objets java
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 class JavaController extends Zend_Controller_Action {
-
-//-------------------------------------------------------------------------------
-// Met le layout
-//-------------------------------------------------------------------------------
-	function init()	{
+	public function init() {
 		$viewRenderer = $this->getHelper('ViewRenderer');
 		$viewRenderer->setLayoutScript('iframe.phtml');
 	}
@@ -38,25 +31,18 @@ class JavaController extends Zend_Controller_Action {
 	}
 
 
-//-------------------------------------------------------------------------------
-// Menu images avec panneaux horizontaux
-//-------------------------------------------------------------------------------
-	function menuimageAction()
-	{
+	public function menuimageAction() {
 		// rien ici -> tout est fait par le view-helper
 	}
 
-//-------------------------------------------------------------------------------
-// Kiosque de notices
-//-------------------------------------------------------------------------------
-	function kiosqueAction()	{
-		// Preferences du module
-		$id_module=$this->_getParam("id_module");
 
-		$preferences = array_merge(Class_Systeme_ModulesAccueil::getInstance()->getValeursParDefaut('KIOSQUE'),
-															 $this->view->profil->getModuleAccueilPreferences($id_module));
+	public function kiosqueAction()	{
+		$id_module = $this->_getParam('id_module');
+		$preferences = array_merge(
+			Class_Systeme_ModulesAccueil::getInstance()->getValeursParDefaut('KIOSQUE'),
+			$this->view->profil->getModuleAccueilPreferences($id_module, 'KIOSQUE'));
 
-		$this->view->preferences=$preferences;
+		$this->view->preferences = $preferences;
 		$this->view->base_url = $this->view->url(array_merge($this->_request->getParams(),
 																												 ['controller' => 'recherche',
 																													'action' => 'viewnotice',
@@ -65,17 +51,17 @@ class JavaController extends Zend_Controller_Action {
 																						 true);
 		
 		// Lire les notices
-		$catalogue=new Class_Catalogue();
-		$this->view->notices=$catalogue->getNoticesByPreferences($preferences,"url");
+		$catalogue = new Class_Catalogue();
+		$this->view->notices = $catalogue->getNoticesByPreferences($preferences,"url");
 
 		// Redirection vers la bonne vue
-		$vue = '/java/'.$this->_getParam('vue', 'diaporama').'.phtml';
+		$vue = '/java/' . $this->_getParam('vue', 'diaporama').'.phtml';
 		$viewRenderer = $this->getHelper('ViewRenderer');
 		$viewRenderer->renderScript($vue);
 	}
 
 
-	function kiosquedescAction() {
+	public function kiosquedescAction() {
 		$this->getHelper('ViewRenderer')->setNoRender();
 		echo $this->view->_('Kiosque de notices');
 	}
diff --git a/application/modules/opac/controllers/ModulesController.php b/application/modules/opac/controllers/ModulesController.php
index bc677ac19a722aecb43226bbede477af3ee2fc51..c78350c0adbfdd16dcf138b4a218c289938ee683 100644
--- a/application/modules/opac/controllers/ModulesController.php
+++ b/application/modules/opac/controllers/ModulesController.php
@@ -20,42 +20,22 @@
  */
 
 class ModulesController extends Zend_Controller_Action {
-	private $user;
-	function init() {
-				$this->user = ZendAfi_Auth::getInstance()->getIdentity();
-	}
-
 	public function cvsAction() {
 		$cvs = new Class_Systeme_ModulesMenu_CVS();
-		$docid=$this->_getParam('docid');
-		$url = $cvs->getDynamiqueUrl($docid);
-		return $this->checkNotifyMessage($cvs,$url);
+		$docid = $this->_getParam('docid');
+		return $this->checkNotifyMessage($cvs, $cvs->getDynamiqueUrl($docid));
 	}
 
 
 	public function artevodAction() {
 		$arte = new Class_Systeme_ModulesMenu_ArteVod();
-		return $this->checkNotifyMessage($arte,$arte->getDynamiqueUrl());
+		return $this->checkNotifyMessage($arte, $arte->getDynamiqueUrl());
 	}
 
 
 	public function musicmeAction() {
 		$musicme = new Class_Systeme_ModulesMenu_MusicMe();
-		return $this->checkNotifyMessage($musicme,$musicme->getDynamiqueUrl());
-	}
-
-
-	public function checkNotifyMessage($ressource_link, $url) {
-		if (strlen($url)>0) {
-			$viewRenderer = $this->getHelper('ViewRenderer');
-			$viewRenderer->setNoRender();
-			$this->getResponse()->setHeader('Content-Type', 'text/html;charset=utf-8');
-			$this->getResponse()->setBody('<script>window.location="'.$url.'";</script>');
-			return ;
-		}
-		
-		$this->_helper->notify($ressource_link->getMessage());
-		return $this->_redirect($this->_request->getServer('HTTP_REFERER'));
+		return $this->checkNotifyMessage($musicme, $musicme->getDynamiqueUrl());
 	}
 
 
@@ -64,16 +44,37 @@ class ModulesController extends Zend_Controller_Action {
 		$this->_redirect($numilog->getDynamiqueUrl());
 	}
 
+  public function numeriquepremiumAction() {
+		$url = $this->_getParam('url');
+    $this->checkNotifyMessage(NULL, $url);
+  }
+
 	public function vodeclicAction() {
 		$vodeclic = new Class_Systeme_ModulesMenu_Vodeclic();
-		$this->checkNotifyMessage($vodeclic,$vodeclic->getDynamiqueUrl());
-		
+		$this->checkNotifyMessage($vodeclic, $vodeclic->getDynamiqueUrl());
 	}
 
+
 	public function toutapprendreAction() {
 		$vodeclic = new Class_Systeme_ModulesMenu_ToutApprendre();
-		$this->checkNotifyMessage($vodeclic,$vodeclic->getDynamiqueUrl());
-		
+		$this->checkNotifyMessage($vodeclic, $vodeclic->getDynamiqueUrl());
+	}
+
+	public function lekioskAction() {
+		$lekiosk = new Class_Systeme_ModulesMenu_LeKiosk();
+		$this->checkNotifyMessage($lekiosk, $lekiosk->getDynamiqueUrl());
 	}
 
-}
\ No newline at end of file
+
+	protected function checkNotifyMessage($ressource_link, $url) {
+		if ('' == $url) {
+			$this->_helper->notify($ressource_link->getMessage());
+			return $this->_redirect($this->_request->getServer('HTTP_REFERER'));
+		}
+		
+		$viewRenderer = $this->getHelper('ViewRenderer');
+		$viewRenderer->setNoRender();
+		$this->getResponse()->setHeader('Content-Type', 'text/html;charset=utf-8');
+		$this->getResponse()->setBody('<script>window.location="'.$url.'";</script>');
+	}
+}
diff --git a/application/modules/opac/controllers/RechercheController.php b/application/modules/opac/controllers/RechercheController.php
index 0797d21e9f95d59748b419ac81e9487722c5aeee..e188aa9711b79faaad7e5c800ac15d99883126a1 100644
--- a/application/modules/opac/controllers/RechercheController.php
+++ b/application/modules/opac/controllers/RechercheController.php
@@ -104,7 +104,7 @@ class RechercheController extends ZendAfi_Controller_Action {
 
 	protected function showDomainBreadcrumbOnDomainBrowsing() {
 		$id_module = $this->_getParam('id_module');
-		if ( ($config = Class_Profil::getCurrentProfil()->getModuleAccueilConfig($id_module))
+		if (($config = Class_Profil::getCurrentProfil()->getLocalModuleAccueilConfig($id_module))
 				 && ($config['type_module'] == 'DOMAIN_BROWSER')) {
 			$this->view->show_domain_browser = true;
 			$this->view->domain_id_module = $id_module;
diff --git a/application/modules/opac/controllers/RssController.php b/application/modules/opac/controllers/RssController.php
index d374d0b5fcce1ac814a9e763363819aea57a1e09..c88470bb410481a0d604ada04431c401f2f8c58f 100644
--- a/application/modules/opac/controllers/RssController.php
+++ b/application/modules/opac/controllers/RssController.php
@@ -95,13 +95,12 @@ class RssController extends Zend_Controller_Action
 	}
 
 
-	/*
+	/**
 	 * Affiche la sélection des RSS d'un module / boîte donné
 	 */
-	function viewselectionAction() {
-		$id_module = $this->_request->getParam('id');
-		$preferences = Class_Profil::getCurrentProfil()->getModuleAccueilPreferences($id_module);
-
+	public function viewselectionAction() {
+		$preferences = Class_Profil::getCurrentProfil()
+			->getModuleAccueilPreferences($this->_getParam('id'), 'RSS');
 
 		$rssClass = new Class_Rss();
 		$feeds = $rssClass->getFluxFromIdsAndCategories(explode('-', $preferences['id_items']),
@@ -110,31 +109,28 @@ class RssController extends Zend_Controller_Action
 	}
 
 
-	//---------------------------------------------------------------------------
-	// Affichage des dernier RSS
-	//---------------------------------------------------------------------------
-	function viewrecentAction()
-	{
+	public function viewrecentAction() {
 		$this->view->title = $this->view->_("Derniers Fils RSS");
-		$nb_aff = (int)$this->_request->getParam('nb');
-		$rssClass = new Class_Rss();
-
+		$nb_aff = (int)$this->_getParam('nb');
 		if(!$nb_aff) $nb_aff=200;
-		$liste_rss = $rssClass->getLastRss($nb_aff);
-		$this->_renderRSS($liste_rss);
+		$rssClass = new Class_Rss();
+		$this->_renderRSS($rssClass->getLastRss($nb_aff));
 	}
 
+
 	public function viewRawRssAction () {
-		$rssId = (int)$this->_request->getParam('id_rss', 0);
-		$profil = Class_Profil::getLoader()->find((int)$this->_request->getParam('id_profil', 1));
-		$preferences = $profil->getModuleAccueilPreferences((int)$this->_request->getParam('id_module'));
+		$rssId = (int)$this->_getParam('id_rss', 0);
+		$profil = Class_Profil::find((int)$this->_getParam('id_profil', 1));
+
+		$preferences = $profil
+			->getModuleAccueilPreferences((int)$this->_getParam('id_module'), 'RSS');
 
 		try {
-			$rss = Class_Rss::getLoader()->find($rssId);
+			$rss = Class_Rss::find($rssId);
 			$this->view->feed_items = array_slice($rss->getFeedItems(), 0, $preferences['nb_aff']);
 		} catch (Exception $e) {
 			$this->view->invalidRss = true;
-			$this->view->feed_items = array();
+			$this->view->feed_items = [];
 		}
 
 		$this->_helper->getHelper('viewRenderer')->setLayoutScript('empty.phtml');
@@ -256,19 +252,12 @@ class RssController extends Zend_Controller_Action
 	}
 
 
-	//---------------------------------------------------------------------------
-	// Flux RSS des dernieres critiques
-	//---------------------------------------------------------------------------
-	function critiquesAction() {
-		$id_profil = $this->_request->getParam('id_profil');
-
-		$profil = Class_Profil::getLoader()->find($id_profil);
-
-		$id_module = $this->_request->getParam('id_module');
-
-		$preferences = $profil->getModuleAccueilPreferences($id_module);
-
-		$liste_avis = Class_AvisNotice::getLoader()->getAvisFromPreferences($preferences);
+	public function critiquesAction() {
+		$id_profil = $this->_getParam('id_profil');
+		$profil = Class_Profil::find($id_profil);
+		$id_module = $this->_getParam('id_module');
+		$preferences = $profil->getModuleAccueilPreferences($id_module, 'CRITIQUES');
+		$liste_avis = Class_AvisNotice::getAvisFromPreferences($preferences);
 
 		//on ne prends que les 20 derniers avis
 		$liste_avis = array_slice($liste_avis, 0, 20);
@@ -276,7 +265,7 @@ class RssController extends Zend_Controller_Action
 		$data_rss["titre"] = $preferences['titre'];
 		$data_rss["description"] = $this->view->_("Critiques de la sélection: %s", $preferences['titre']);
 		$data_rss["lien"] = urlencode(urlencode($profil->urlForModule('blog', 'viewcritiques', $id_module)));
-		$data_rss["items"] = array();
+		$data_rss["items"] = [];
 		
 		$avis_helper = $this->view->getHelper('Avis');
 		foreach($liste_avis as $avis) {
@@ -349,18 +338,14 @@ class RssController extends Zend_Controller_Action
 	}
 
 
-
-	/*
-	 * Flux RSS pour la boîte kiosque
-	 */
-	function kiosqueAction() {
-		$id_profil = (int)$this->_request->getParam('id_profil');
-		$id_module = (int)$this->_request->getParam('id_module');
-		if (!$profil = Class_Profil::getLoader()->find($id_profil)) {
+	public function kiosqueAction() {
+		$id_profil = (int)$this->_getParam('id_profil');
+		$id_module = (int)$this->_getParam('id_module');
+		if (!$profil = Class_Profil::find($id_profil)) {
 			$notices = [];
 			$titre = 'Non trouvé';
 		} else {
-			$preferences = $profil->getModuleAccueilPreferences($id_module);
+			$preferences = $profil->getModuleAccueilPreferences($id_module, 'KIOSQUE');
 			$catalogue=new Class_Catalogue();
 			$preferences["aleatoire"] = 0; // les dernières seulement
 			$notices = $catalogue->getNoticesByPreferences($preferences,"url");
diff --git a/application/modules/opac/controllers/SitoController.php b/application/modules/opac/controllers/SitoController.php
index a95154d8b8e02485289b9b213e95dae848c77daf..967e0fef0a79df938380bb7ed9214edb347cc5f8 100644
--- a/application/modules/opac/controllers/SitoController.php
+++ b/application/modules/opac/controllers/SitoController.php
@@ -47,9 +47,8 @@ class SitoController extends Zend_Controller_Action {
 
 	}
 
-    // Lire les sito les plus recentes
-	function viewrecentAction()
-	{
+
+	public function viewrecentAction() {
 		$class_sito = new Class_Sitotheque();
 		$nb_sito = (int)$this->_request->getParam('nb');
 
@@ -62,14 +61,15 @@ class SitoController extends Zend_Controller_Action {
 	}
 
 
-	function viewselectionAction()	{
-		$id_module = $this->_request->getParam('id_module');
+	public function viewselectionAction()	{
+		$id_module = $this->_getParam('id_module');
 
-		$preferences = Class_Profil::getCurrentProfil()->getModuleAccueilPreferences($id_module);
+		$preferences = Class_Profil::getCurrentProfil()
+			->getModuleAccueilPreferences($id_module, 'SITO');
 		
 		$sites = Class_Sitotheque::getSitesFromIdsAndCategories(
-			explode('-',$preferences['id_items']),
-			explode('-',$preferences['id_categorie']));
+			explode('-', $preferences['id_items']),
+			explode('-', $preferences['id_categorie']));
 		$this->view->sites = $sites;
 		$this->view->title = $this->view->_("Sélection de sites");
 	}
diff --git a/application/modules/opac/views/scripts/auth/boite-login.phtml b/application/modules/opac/views/scripts/auth/boite-login.phtml
index b1bd494c2b5cc3dec16add1353c1b96a6be493c5..d925050f606950ceaa54f00ae1af7e180779fc92 100644
--- a/application/modules/opac/views/scripts/auth/boite-login.phtml
+++ b/application/modules/opac/views/scripts/auth/boite-login.phtml
@@ -1,7 +1,7 @@
 <div class="form">
 	<?php
 	if($user = Class_Users::getIdentity())	{
-		echo sprintf("<div class='welcome'>%s %s </div>", $this->preferences['message_connecte'], $user->getNomAff());
+		echo sprintf("<div class='welcome'>%s %s </div>", $this->preferences['message_connecte'], $this->abonne_NamesOrLogin($user));
 		
 		if ($user->hasIdabon()){
 			if(!$user->isAbonnementValid())
diff --git a/application/modules/opac/views/scripts/cas-server-v10/logout.phtml b/application/modules/opac/views/scripts/cas-server-v10/logout.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..eac5946e65c8447520821b30eba549926c87225a
--- /dev/null
+++ b/application/modules/opac/views/scripts/cas-server-v10/logout.phtml
@@ -0,0 +1 @@
+<p><?php echo $this->_('Vous avez été déconnecté'); ?></p>
diff --git a/application/modules/opac/views/scripts/head.phtml b/application/modules/opac/views/scripts/head.phtml
index 25193a1898d7a87ba547e5081ac074019c743aaa..d20f9e0c1ddccb4a8670bf2ad6c8178e89b0e50f 100644
--- a/application/modules/opac/views/scripts/head.phtml
+++ b/application/modules/opac/views/scripts/head.phtml
@@ -58,13 +58,15 @@
 
 
 	if ($this->header_css && $current_profil->getUseParentCss() && !$current_profil->hasPageCss()) 
-		$head_scripts->addStyleSheet($this->header_css, ['id' => 'profil_css']);
+		$head_scripts->addStyleSheet($this->header_css, ['id' => 'profil_css',
+																										 'media' => 'all']);
 
 	if ($this->header_css && $current_profil->getUseParentCss() && $current_profil->hasPageCss()) 
 		$head_scripts->addStyleSheet($this->header_css);
 
 	if($current_profil->hasPageCss())
-		$head_scripts->addStyleSheet($current_profil->getPageCss(), ['id' => 'profil_css']);
+		$head_scripts->addStyleSheet($current_profil->getPageCss(), ['id' => 'profil_css',
+																																 'media' => 'all']);
 
 	if ($this->accessibilite_on) {
 		//Feuilles de styles pour les déficiences visuelles
diff --git a/application/modules/opac/views/scripts/java/jcarousel.phtml b/application/modules/opac/views/scripts/java/jcarousel.phtml
index ca0b063a8a9f075d3def2e92da6f21196ab3bf0c..0b707cd3fe22581fb634146515b4919aac24e7f9 100644
--- a/application/modules/opac/views/scripts/java/jcarousel.phtml
+++ b/application/modules/opac/views/scripts/java/jcarousel.phtml
@@ -1,73 +1,66 @@
-<link rel="stylesheet" type="text/css" href="<?php echo URL_JAVA ?>jcarousel/jcarousel.css">
-<link rel="stylesheet" type="text/css" href="<?php echo URL_JAVA ?>jcarousel/tango/skin.css">
-<style>
-	.jcarousel-skin-tango .jcarousel-container-horizontal
-	{
-    width: 85%;
-		height:<?php echo $this->preferences["op_hauteur_img"]?>px;
-    padding: 5px 35px 0px 30px;
-	}
-	.jcarousel-skin-tango .jcarousel-item
-	{
-    width:<?php echo $this->preferences["op_largeur_img"]?>px;
-    height: <?php echo $this->preferences["op_hauteur_img"]+5 ?>px;
-		margin-left:3px;
-	}
-</style>
-
-<script src="<?php echo JQUERY ?>" type="text/javascript"> </script>
-<script type="text/javascript" src="<?php echo URL_JAVA ?>jcarousel/jcarousel.pack.js"></script>
-<script type="text/javascript">
-
-function mycarousel_initCallback(carousel)
-{
-    // Disable autoscrolling if the user clicks the prev or next button.
-    carousel.buttonNext.bind('click', function() {
-        carousel.startAuto(0);
-    });
-
-    carousel.buttonPrev.bind('click', function() {
-        carousel.startAuto(0);
-    });
-
-    // Pause autoscrolling if the user moves with the cursor over the clip.
-    carousel.clip.hover(function() {
-        carousel.stopAuto();
-    }, function() {
-        carousel.startAuto();
-    });
-};
-
-jQuery(document).ready(function() {
-    jQuery('#mycarousel').jcarousel({
-        auto: <?php echo $this->preferences["op_auto"]?>,
-        wrap: 'last',
-				scroll: <?php echo $this->preferences["op_scroll"]?>,
-        initCallback: mycarousel_initCallback
-    });
-});
-</script>
-
-<center>
-
-
-<?php
-if(!$this->notices) echo '<p style="margin-left:10px;color:red;font-size:10pt">Aucun document n\'a été trouvé.</p>';
-else
-{
-	echo '<ul id="mycarousel" class="jcarousel-skin-tango">';
-	foreach($this->notices as $notice)
-	{
-		echo '<li>';
-		echo '<a href="'.$this->base_url.'/id/'.$notice["id_notice"].'" target="_parent">';
-		echo '<img src="'.$notice["vignette"].'" title="'.$notice["titre"].'" width="'.$this->preferences["op_largeur_img"].'" height="'.$this->preferences["op_hauteur_img"].'" style="border:1px solid #B0BEC7"';
-		echo '</a>';
-		echo '</li>';
-	}
-	echo '</ul>';
-}
-?>
-
-</center>
-
-
+<?php
+Class_ScriptLoader::getInstance()
+->loadJQuery()
+->addOPACPluginStyleSheets(['jcarousel/jcarousel', 'jcarousel/tango/skin'])
+->addOPACPluginScript('jcarousel/jcarousel.pack')
+->addInlineStyle('
+	.jcarousel-skin-tango .jcarousel-container-horizontal {
+		width: 85%;
+		height:' . $this->preferences['op_hauteur_img'] . 'px;
+		padding: 5px 35px 0px 30px;
+	}
+	.jcarousel-skin-tango .jcarousel-item {
+		width:' . $this->preferences["op_largeur_img"] . 'px;
+		height:' . ($this->preferences["op_hauteur_img"]+5) . 'px;
+		margin-left:3px;
+	}
+')
+->addInlineScript('
+function mycarousel_initCallback(carousel) {
+		// Disable autoscrolling if the user clicks the prev or next button.
+		carousel.buttonNext.bind(\'click\', function() {
+				carousel.startAuto(0);
+		});
+
+		carousel.buttonPrev.bind(\'click\', function() {
+				carousel.startAuto(0);
+		});
+
+		// Pause autoscrolling if the user moves with the cursor over the clip.
+		carousel.clip.hover(function() {
+				carousel.stopAuto();
+		}, function() {
+				carousel.startAuto();
+		});
+};
+')
+->addJQueryReady('
+	jQuery(\'#mycarousel\').jcarousel({
+		auto:' . $this->preferences["op_auto"] . ',
+		wrap:\'last\',
+		scroll:' . $this->preferences["op_scroll"] . ',
+		initCallback: mycarousel_initCallback
+	});
+');
+
+?>
+
+<center>
+<?php if(!$this->notices) { ?>
+	<p style="margin-left:10px;color:red;font-size:10pt">Aucun document n'a été trouvé.</p>
+<?php }	else { ?>
+<ul id="mycarousel" class="jcarousel-skin-tango">
+	<?php foreach($this->notices as $notice) { ?>
+		<li>
+			<a href="<?php echo $this->base_url.'/id/'.$notice["id_notice"];?>" target="_parent">
+				<img src="<?php echo $notice["vignette"];?>" 
+						 title="<?php echo $notice["titre"];?>" 
+						 width="<?php echo $this->preferences["op_largeur_img"];?>" 
+						 height="<?php echo $this->preferences["op_hauteur_img"];?>" 
+						 style="border:1px solid #B0BEC7" />
+			</a>
+		</li>
+	<?php } ?>
+	</ul>
+<?php } ?>
+</center>
diff --git a/cosmogramme/cosmozend/application/modules/cosmo/controllers/EmplacementController.php b/cosmogramme/cosmozend/application/modules/cosmo/controllers/EmplacementController.php
new file mode 100644
index 0000000000000000000000000000000000000000..bbc0cea0366b6439fd5038a8df137b0dcd57a8b8
--- /dev/null
+++ b/cosmogramme/cosmozend/application/modules/cosmo/controllers/EmplacementController.php
@@ -0,0 +1,86 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Cosmo_EmplacementController extends Zend_Controller_Action {
+	public function preDispatch() {
+		$this->cosmoPath = $this->view->cosmoPath = new CosmoPaths();
+	}
+
+
+	public function indexAction() {
+		$this->view->models = Class_CodifEmplacement::findAllBy(['order' => 'libelle']);
+		$this->view->currentId = $this->_getParam('id');
+	}
+
+
+	public function addAction() {
+		$this->view->model = Class_CodifEmplacement::newInstance([
+			'libelle' => '** nouvel emplacement **',
+			'regles' => '995$k/R',
+			'ne_pas_afficher' => 0]);
+	}
+
+
+	public function validateAction() {
+		if (!$this->_request->isPost()) {
+			$this->_gotoIndex();
+			return;
+		}
+
+		if (!$model = Class_CodifEmplacement::find($this->_getParam('id')))
+			$model = Class_CodifEmplacement::newInstance();
+		
+		$model
+			->setLibelle($this->_getParam('libelle'))
+			->setRegles($this->_getParam('regles'))
+			->setNePasAfficher($this->_getParam('ne_pas_afficher'));
+
+		if (!$model->isValid()) {
+			$this->view->model = $model;
+			$this->view->errors = $model->getErrors();
+			$this->render('add');
+			return;
+		}
+
+		$model->save();
+		$this->_gotoIndex($model->getId());
+	}
+
+
+	public function deleteAction() {
+		if ($model = Class_CodifEmplacement::find($this->_getParam('id')))
+			$model->delete();
+		$this->_gotoIndex();
+	}
+
+
+	protected function _gotoIndex($id=null) {
+		$this->_redirect($this->view->url([
+			'module' => 'cosmo',
+			'controller' => 'emplacement',
+			'action' => 'index',
+			'id' => $id
+		], null, true), 
+		['prependBase' => false]);
+	}
+}
+?>
\ No newline at end of file
diff --git a/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/emplacement/add.phtml b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/emplacement/add.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..5e0ced92b84e0d96c51bdfa4afbb77e201b5de5c
--- /dev/null
+++ b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/emplacement/add.phtml
@@ -0,0 +1,19 @@
+<?php $model = $this->model; ?>
+<h1>Codification des emplacements</h1>
+<div class="liste">
+	<?php if ($this->errors) { ?>
+		<ul style="color:red;font-weight:bolder;">
+			<?php foreach ($this->errors as $error) { ?>
+			<li><?php echo $this->escape($error);?></li>
+			<?php } ?>
+		</ul>
+	<?php }  ?>
+	<?php echo $this->cosmoEmplacement($this->model, true); ?>
+</div>
+<br/><br/>
+
+<?php 
+echo $this->cosmoButton('Retour', 
+												$this->url(['module' => 'cosmo', 'controller' => 'emplacement'],
+																	 null, true));
+?>
diff --git a/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/emplacement/index.phtml b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/emplacement/index.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..b1cdb1c8aedf26e5bfaf635b6eaf004eb5796e6e
--- /dev/null
+++ b/cosmogramme/cosmozend/application/modules/cosmo/views/scripts/emplacement/index.phtml
@@ -0,0 +1,29 @@
+<h1>Codification des emplacements</h1>
+<div class="liste">
+	<?php 
+	foreach($this->models as $model) {
+		$img = 'plus.gif';
+		$display = false;
+		if ($model->getId() == $this->currentId) {
+			$img = 'moins.gif';
+			$display = true;
+		} 
+	?>
+	<div class="liste_img">
+		<?php echo $this->tagImg($this->cosmoPath->getCosmoBaseUrl() . 'images/'.$img,
+														 ['id' => 'Iemplacement' . $model->getId(),
+															'style' => 'cursor:pointer',
+															'onclick' => 'contracter_bloc(\'emplacement'.$model->getId().'\')']);?>
+	</div>
+	<div class="liste_titre"><?php echo $model->getLibelle();?></div>
+	<?php echo $this->cosmoEmplacement($model, $display); ?>
+	<?php } ?>
+</div>
+
+<br/><br/>
+<?php 
+echo $this->cosmoButton('Ajouter un emplacement', 
+												$this->url(['module' => 'cosmo',
+																		'controller' => 'emplacement', 
+																		'action' => 'add'], null, true));
+?>
diff --git a/cosmogramme/cosmozend/index.php b/cosmogramme/cosmozend/index.php
index 463da710c5c5eca6667865ac299e6f9ec42673f9..c19edeb78b1235e32edcbfa40e6f631a736ba5d5 100644
--- a/cosmogramme/cosmozend/index.php
+++ b/cosmogramme/cosmozend/index.php
@@ -37,9 +37,6 @@ Zend_Layout::getMvcInstance()
 ->getView()
 ->addHelperPath('ZendAfi/View/Helper', 'ZendAfi_View_Helper');
 
-Zend_Controller_Action_HelperBroker::addPath('ZendAfi/Controller/Action/Helper',
-                                             'ZendAfi_Controller_Action_Helper');
-
 $front = Zend_Controller_Front::getInstance()
 	->throwExceptions(true)
 	->addModuleDirectory($cosmozendPath . '/application/modules')
diff --git a/cosmogramme/cosmozend/tests/CosmoControllerTestCase.php b/cosmogramme/cosmozend/tests/CosmoControllerTestCase.php
new file mode 100644
index 0000000000000000000000000000000000000000..7376d471bb00932324691242b0aa4fa9b38fae9f
--- /dev/null
+++ b/cosmogramme/cosmozend/tests/CosmoControllerTestCase.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+abstract class CosmoControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase {
+	use Storm_Test_THelpers;
+
+	public $bootstrap = 'bootstrap_frontcontroller.php';
+
+	public function setUp() {
+		parent::setUp();
+		Storm_Model_Abstract::unsetLoaders();
+		Storm_Cache::setDefaultZendCache(null);
+	}
+
+
+	public function tearDown() {
+		Storm_Model_Abstract::unsetLoaders();
+	}
+
+
+	public function postDispatch($url, $data) {
+		$this->getRequest()
+			->setMethod('POST')
+			->setPost($data);
+		return $this->dispatch($url, true);
+	}
+
+
+	public function dispatch($url = null, $throw_exceptions = false) {
+		// redirector should not exit
+		$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
+		$redirector->setExit(false);
+
+		// json helper should not exit
+		$json = Zend_Controller_Action_HelperBroker::getStaticHelper('json');
+		$json->suppressExit = true;
+
+		$request    = $this->getRequest();
+		if (null !== $url) {
+			$request->setRequestUri($url);
+		}
+		$request->setPathInfo(null);
+
+		$this->frontController
+			->setRequest($request)
+			->setResponse($this->getResponse())
+			->throwExceptions($throw_exceptions)
+			->returnResponse(false);
+		$this->frontController->dispatch();
+	}
+}
+?>
\ No newline at end of file
diff --git a/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/AutControllerTest.php b/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/AuthControllerTest.php
similarity index 92%
rename from cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/AutControllerTest.php
rename to cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/AuthControllerTest.php
index 9cbbe2cfe372ff61fcf99889bfbe94e62c4fa6c4..00b9fef0a2096527d2e881d6089e02dcad8e7b4e 100644
--- a/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/AutControllerTest.php
+++ b/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/AuthControllerTest.php
@@ -1,4 +1,4 @@
-<?PHP
+<?php
 /**
  * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
  *
@@ -19,10 +19,7 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
 
-class AuthControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase {
-
-	public $bootstrap = 'bootstrap.php';
-
+class AuthControllerTestCase extends CosmoControllerTestCase {
 	public function setup()	{
 		parent::setup();
 		$this->dispatch('cosmo/auth/index', true);
diff --git a/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/EmplacementControllerTest.php b/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/EmplacementControllerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..f0cf073cb74169eb7776e4d1d9273335d7f3981f
--- /dev/null
+++ b/cosmogramme/cosmozend/tests/application/modules/cosmo/controllers/EmplacementControllerTest.php
@@ -0,0 +1,254 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+abstract class Cosmo_EmplacementControllerTestCase extends CosmoControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+
+		$this->fixture('Class_CodifEmplacement', [
+			'id' => 18,
+			'libelle' => 'Albums',
+			'regles' => '995$x=55',
+			'ne_pas_afficher' => 0,
+		]);
+	}
+}
+
+
+
+class Cosmo_EmplacementControllerIndexTest extends Cosmo_EmplacementControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->dispatch('/cosmo/emplacement/index', true);
+	}
+
+
+	/** @test */
+	public function titleShouldBePresent() {
+		$this->assertXpathContentContains('//h1', 'Codification des emplacements');
+	}
+
+
+	/** @test */
+	public function addButtonShouldBePresent() {
+		$this->assertXpath('//input[contains(@onclick, "/cosmo/emplacement/add")]');
+	}
+
+
+	/** @test */
+	public function albumsFormShouldBePresent() {
+		$this->assertXpath('//form[contains(@action, "/cosmo/emplacement/validate/id/18")]');
+	}
+
+
+	/** @test */
+	public function albumsLabelShouldBePresent() {
+		$this->assertXpath('//input[@name="libelle"][@value="Albums"]');
+	}
+
+
+	/** @test */
+	public function albumsRulesShouldBePresent() {
+		$this->assertXpathContentContains('//textarea[@name="regles"]', '995$x=55');
+	}
+
+
+	/** @test */
+	public function albumsDisplayShouldBePresent() {
+		$this->assertXpathContentContains(
+			'//select[@name="ne_pas_afficher"]/option[@selected="selected"]', 
+			'Afficher les exemplaires');
+	}
+
+
+	/** @test */
+	public function albumsDeleteButtonShouldBePresent() {
+		$this->assertXpath('//input[contains(@onclick, "/cosmo/emplacement/delete/id/18")]');
+	}
+}
+
+
+
+class Cosmo_EmplacementControllerAlbumsValidatePostTest extends Cosmo_EmplacementControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->postDispatch(
+			'/cosmo/emplacement/validate/id/18',
+			[
+				'libelle' => 'Alboums',
+				'regles' => '995$x=07',
+				'ne_pas_afficher' => 1]);
+
+		$this->model = Class_CodifEmplacement::find(18);
+	}
+
+
+	/** @test */
+	public function labelShouldBeAlboums() {
+		$this->assertEquals('Alboums', $this->model->getLibelle());
+	}
+
+
+	/** @test */
+	public function rulesShouldBeDollarXEqualsZeroSeven() {
+		$this->assertEquals('995$x=07', $this->model->getRegles());
+	}
+
+
+	/** @test */
+	public function displayHideShouldBeHide() {
+		$this->assertEquals(1, $this->model->getNePasAfficher());
+	}
+}
+
+
+
+class Cosmo_EmplacementControllerAddTest extends Cosmo_EmplacementControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->dispatch('/cosmo/emplacement/add', true);
+	}
+
+
+	/** @test */
+	public function titleShouldBePresent() {
+		$this->assertXpathContentContains('//h1', 'Codification des emplacements');
+	}
+
+
+	/** @test */
+	public function formActionShouldGoToValidate() {
+		$this->assertXpath('//form[contains(@action, "/cosmo/emplacement/validate")]');
+	}
+
+
+	/** @test */
+	public function labelShouldDefaultToNouvelEmplacement() {
+		$this->assertXpath('//input[@name="libelle"][@value="** nouvel emplacement **"]');
+	}
+
+
+	/** @test */
+	public function rulesShouldDefault995DollarKSlashR() {
+		$this->assertXpathContentContains('//textarea[@name="regles"]', '995$k/R');
+	}
+
+
+	/** @test */
+	public function albumsDisplayShouldBePresent() {
+		$this->assertXpathContentContains(
+			'//select[@name="ne_pas_afficher"]/option[@selected="selected"]', 
+			'Afficher les exemplaires');
+	}
+
+
+	/** @test */
+	public function backButtonShouldBePresent() {
+		$this->assertXpath('//input[@value="Retour"][contains(@onclick, "/cosmo/emplacement")]');
+	}
+}
+
+
+
+class Cosmo_EmplacementControllerAddPostTest extends Cosmo_EmplacementControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->postDispatch(
+			'/cosmo/emplacement/validate', 
+			[
+				'libelle' => 'Atlantis',
+				'regles' => '999$y/Arcadia',
+				'ne_pas_afficher' => 0]);
+
+		$this->model = Class_CodifEmplacement::find(19);
+	}
+
+
+	/** @test */
+	public function atlantisShouldBeSaved() {
+		$this->assertNotNull($this->model);
+	}
+
+
+	/** @test */
+	public function labelShouldBeAtlantis() {
+		$this->assertEquals('Atlantis', $this->model->getLibelle());
+	}
+
+
+	/** @test */
+	public function rulesShouldBe999DollarYSlashArcadia() {
+		$this->assertEquals('999$y/Arcadia', $this->model->getRegles());
+	}
+
+
+	/** @test */
+	public function displayHideShouldBeShow() {
+		$this->assertEquals(0, $this->model->getNePasAfficher());
+	}
+}
+
+
+
+class Cosmo_EmplacementControllerAlbumsValidatePostWithErrorsTest extends Cosmo_EmplacementControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->postDispatch(
+			'/cosmo/emplacement/validate/id/18',
+			[
+				'libelle' => '',
+				'regles' => '9#95$x=07',
+				'ne_pas_afficher' => 1]);
+
+		$this->model = Class_CodifEmplacement::find(18);
+	}
+
+
+	public function errorsProvider() {
+		return [
+			['Vous devez définir le libellé'],
+			['Le $ est absent ou mal positionné pour la règle 9#95$x=07'],
+			['Le champ n\'est pas compris entre a et z ni entre 0 et 9'],
+			['Signe de comparaison incorrect']];
+	}
+
+
+	/** 
+	 * @test 
+	 * @dataProvider errorsProvider
+	 */
+	public function errorShouldBePresent($message) {
+		$this->assertXpathContentContains('//li', $message, $this->_response->getBody());
+	}
+
+
+	/** @test */
+	public function labelShouldNotBeSaved() {
+		$this->assertTrue($this->model->hasChangedAttribute('libelle'));
+	}
+
+
+	/** @test */
+	public function rulesShouldNotBeSaved() {
+		$this->assertTrue($this->model->hasChangedAttribute('regles'));
+	}
+}
\ No newline at end of file
diff --git a/cosmogramme/cosmozend/tests/bootstrap.php b/cosmogramme/cosmozend/tests/bootstrap.php
index 4d4ee1a8987dcd98c41e653ec94740d88eb60d9c..fcb7f80c155977e48aa7a7a08a17a2a05d50800e 100644
--- a/cosmogramme/cosmozend/tests/bootstrap.php
+++ b/cosmogramme/cosmozend/tests/bootstrap.php
@@ -18,42 +18,31 @@
  * along with AFI-OPAC 2.0; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
-chdir(realpath(dirname(__FILE__)) . '/../');
 
-error_reporting(E_ALL^E_DEPRECATED);
+$cosmozendPath = realpath(dirname(__FILE__)) . '/../';
+
+chdir($cosmozendPath);
+
+error_reporting(E_ALL^E_DEPRECATED^E_NOTICE);
 ini_set('display_startup_errors', 1);
 ini_set('display_errors', 1);
 ini_set('memory_limit', '3072M');
 date_default_timezone_set('Europe/Paris');
 
-$basePath = realpath(dirname(__FILE__));
+require_once $cosmozendPath . '/../php/classes/classe_cosmopaths.php';
+require_once $cosmozendPath . '/../storm_init.php';
 
-set_include_path( $basePath . '/../library'
-. PATH_SEPARATOR . $basePath
-. PATH_SEPARATOR . $basePath . '/../../../../ZendFramework-1.6.2/library'
-. PATH_SEPARATOR . $basePath . '/../application'
-. PATH_SEPARATOR . $basePath . '/application'
-. PATH_SEPARATOR . $basePath . '/library'
+set_include_path( $cosmozendPath
+. PATH_SEPARATOR . $cosmozendPath . '/tests'
+. PATH_SEPARATOR . $cosmozendPath . '/application'
+. PATH_SEPARATOR . $cosmozendPath . '/library'
 . PATH_SEPARATOR . get_include_path());
 
-// boostrap ZF
-require_once 'Zend/Loader.php';
-Zend_Loader::registerAutoload();
 Zend_Session::start();
-Zend_Layout::startMvc();
-Zend_Layout::getMvcInstance()
-->getView()
-->addHelperPath('ZendAfi/View/Helper', 'ZendAfi_View_Helper');
-
-Zend_Controller_Action_HelperBroker::addPath('ZendAfi/Controller/Action/Helper',
-                                             'ZendAfi_Controller_Action_Helper');
-
-$front = Zend_Controller_Front::getInstance()
-	->throwExceptions(true)
-	->addModuleDirectory($basePath . '/../application/modules')
-	->setDefaultModule('opac');
 
 $_SERVER['SERVER_NAME'] = 'localhost';
 $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
 
+require_once 'CosmoControllerTestCase.php';
+
 ?>
\ No newline at end of file
diff --git a/cosmogramme/cosmozend/tests/bootstrap_frontcontroller.php b/cosmogramme/cosmozend/tests/bootstrap_frontcontroller.php
new file mode 100644
index 0000000000000000000000000000000000000000..90415d3aab20ad59effd3824ac80651af9cd2c65
--- /dev/null
+++ b/cosmogramme/cosmozend/tests/bootstrap_frontcontroller.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+Zend_Layout::startMvc();
+Zend_Layout::getMvcInstance()->getView()
+->addHelperPath('ZendAfi/View/Helper', 'ZendAfi_View_Helper');
+
+Zend_Controller_Front::getInstance()
+	->throwExceptions(true)
+	->addModuleDirectory(realpath(dirname(__FILE__)) . '/../application/modules')
+	->setDefaultModule('opac')
+	->registerPlugin(new ZendAfi_Controller_Plugin_CosmoAuth());
+
+$_SESSION['passe'] = 'sysadm';
+
+?>
\ No newline at end of file
diff --git a/cosmogramme/php/_init.php b/cosmogramme/php/_init.php
index 074aae1d8d21035b939612d19f96601b50c844ad..5c235a45a59914e0230925628dc6208a746c5580 100644
--- a/cosmogramme/php/_init.php
+++ b/cosmogramme/php/_init.php
@@ -2,7 +2,8 @@
 // Constantes
 error_reporting(E_ERROR | E_PARSE);
 define("VERSION_COSMOGRAMME","6.52");
-define("PATCH_LEVEL","208");
+define("PATCH_LEVEL","209");
+
 define("APPLI","cosmogramme");
 define("COSMOPATH", "/var/www/html/vhosts/opac2/www/htdocs");
 define("CRLF", chr(13) . chr(10));
diff --git a/cosmogramme/php/_menu.php b/cosmogramme/php/_menu.php
index 92abaecade6dc93aa1c1594a2dc722b5c880ff40..c7e5e733dc3274a4ec7bbacbe53a95aa38d76e73 100644
--- a/cosmogramme/php/_menu.php
+++ b/cosmogramme/php/_menu.php
@@ -102,7 +102,7 @@ else
 	<?php
 	ligneMenu("Sections","codif_section.php");
 	ligneMenu("Genres","codif_genre.php");
-	ligneMenu("Emplacements","codif_emplacement.php");
+	ligneMenu("Emplacements", '../cosmozend/cosmo/emplacement');
 	ligneMenu("Auteurs","codif_auteur.php");
 	ligneMenu("Matières","codif_matiere.php");
 	ligneMenu("Indices Dewey","codif_dewey.php");
diff --git a/cosmogramme/php/classes/classe_unimarc.php b/cosmogramme/php/classes/classe_unimarc.php
index 848307344623ef22b29c07e31ed9ae1f7426633e..0a1bd2f36207cca6137dd48f3ce727f6f267f84f 100644
--- a/cosmogramme/php/classes/classe_unimarc.php
+++ b/cosmogramme/php/classes/classe_unimarc.php
@@ -1304,7 +1304,7 @@ class notice_unimarc extends iso2709_record {
 					$valeurs = explode(';', strToUpper(substr($regle, 6)));
 					foreach ($valeurs as $valeur) { 
 						$valeur = trim($valeur);
-						if ($valeur) 
+						if ('' != $valeur) 
 							$ret[$zone][$type][$signe][$valeur] = $enreg['id_' . $type];
 					}
 				}
diff --git a/cosmogramme/php/fonctions/objets_saisie.php b/cosmogramme/php/fonctions/objets_saisie.php
index acc134fb8b25b1702d9c230e119deb4d6f4393bd..474224c82bb38efd41340a695ce6d8bcdfa77693 100644
--- a/cosmogramme/php/fonctions/objets_saisie.php
+++ b/cosmogramme/php/fonctions/objets_saisie.php
@@ -89,8 +89,11 @@ function getBlocsParams($id_bib, $type, $valeurs) {
 		if (in_array($clef, [COM_VSMART, COM_NANOOK, COM_MICROBIB, COM_BIBLIXNET])) 
 			$champs_params[0] = ['url_serveur'];
 
-		if (in_array($clef, [COM_ORPHEE, COM_CARTHAME]))
+		if (in_array($clef, [COM_CARTHAME]))
 			$champs_params[0] = ['url_serveur', 'key'];
+
+		if (in_array($clef, [COM_ORPHEE]))
+			$champs_params[0] = ['url_serveur', 'key', 'allow_hold_available_items'];
 		
 		if ($clef == COM_KOHA)  
 			$champs_params[0] = ['url_serveur',
diff --git a/cosmogramme/php/integration/pseudo_notices.php b/cosmogramme/php/integration/pseudo_notices.php
index 8154d7e8ebd0f00e42f6267756535de314c73128..e580f04ca45d195d9ddaf95c0503475648e018d6 100644
--- a/cosmogramme/php/integration/pseudo_notices.php
+++ b/cosmogramme/php/integration/pseudo_notices.php
@@ -46,7 +46,11 @@ if ($phase > 0 and $phase < 0.2) {
 				continue;
 			$log->ecrire('<span class="vert">'.$batch->getLibelle().':');
 			$phase_data["pointeur_reprise"]=$batch->getId();
-			$batch->run();
+			if ('MOISSONNAGE_CYBERLIBRIS' != $batch->getType() || $mode_cron) { 
+				$batch->run();
+			} else {
+				$log->ecrire('Ce batch n\'est traité qu\'en mode cron');
+			}
 			$log->ecrire(' OK</span><br/>');
 			$log->ecrire('<span class="vert">Temps de traitement : ' . $chrono->end() .'</span>');
 		}
diff --git a/cosmogramme/sql/patch/patch_209.php b/cosmogramme/sql/patch/patch_209.php
new file mode 100644
index 0000000000000000000000000000000000000000..89e8168e659ecc6ded5ee158cdd207489d63efb7
--- /dev/null
+++ b/cosmogramme/sql/patch/patch_209.php
@@ -0,0 +1,4 @@
+<?php
+Class_CosmoVar::addLabelInList('types_docs', 111, 'Cyberlibris');
+?>
+
diff --git a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
index 4d9dd6027ebb686eb90975826c3f00b7bab898a5..cf686dc3b7f93edd325166d64932ef1cd2ea50b6 100644
--- a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
+++ b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
@@ -19,8 +19,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
 
-require_once('classe_notice_integration.php');
-require_once('classe_notice_marc21.php');
+require_once 'classe_notice_integration.php';
+require_once 'classe_notice_marc21.php';
 require_once 'ModelTestCase.php';
 
 
@@ -55,7 +55,8 @@ abstract class NoticeIntegrationTestCase extends ModelTestCase {
 			->with($req_profils, false)
 			->answers($this->_profil_donnees);
 	}
-	
+
+
 	public function setUp() {
 		parent::setUp();
 
@@ -823,7 +824,7 @@ class NoticeIntegrationBearsBeerMicrobibTest extends NoticeIntegrationTestCase {
 
 	/** @test */
 	public function titlesContainsBEAR() {
-		$this->assertEquals('BEARS BEAR BEER BE FORMULE FORMUL N00  1',
+		$this->assertEquals('BEARS BEAR BEER BE FORMULE FORMUL 1',
 												$this->notice_integration->noticeToDBEnreg($this->notice_data)['titres']);
 	}
 
@@ -941,17 +942,14 @@ class NoticeIntegrationItemsIn999Test extends NoticeIntegrationTestCase {
 			->whenCalled('fetchAll')
 			->with('select * from codif_section', false)
 			->answers([
-									['id_section' => 2,
-									 'regles' => '996$z=ENF']
-									])
+				['id_section' => 2,  'regles' => '996$z=ENF']
+			])
 
 			->whenCalled('fetchAll')
 			->with('select * from codif_emplacement', false)
 			->answers([
-									['id_emplacement' => 54,
-									 'regles' => '996$l=07MJENF']
-									])
-;
+				['id_emplacement' => 54, 'regles' => '996$l=07MJENF']
+			]);
 
 		$this->loadNotice('unimarc_items_in_996');
 	}
@@ -961,15 +959,16 @@ class NoticeIntegrationItemsIn999Test extends NoticeIntegrationTestCase {
 	 * @return format [expected, item index, item field]
 	 */
 	public function itemsProvider() {
-		return [['00519824', 0, 'code_barres'],
-						['EM A MUS J', 0, 'cote'],
-						[2, 0, 'section'],
-						['CRETBUS', 0, 'annexe'],
-						[54, 0, 'emplacement'],
-						['2010-02-23', 0, 'date_nouveaute'],
-						[false, 0, 'ignore_exemplaire'],
-
-						[true, 3, 'ignore_exemplaire']];
+		return [
+			['00519824', 0, 'code_barres'],
+			['EM A MUS J', 0, 'cote'],
+			[2, 0, 'section'],
+			['CRETBUS', 0, 'annexe'],
+			[54, 0, 'emplacement'],
+			['2010-02-23', 0, 'date_nouveaute'],
+			[false, 0, 'ignore_exemplaire'],
+			[true, 3, 'ignore_exemplaire'],
+		];
 	}
 
 
@@ -1237,4 +1236,173 @@ class NoticeIntegrationKohaPeriodiqueTest extends NoticeIntegrationTestCase {
 			$this->getFieldsFromMarcDump($field, $dump)[$index]);
 	}
 }
+
+
+
+class NoticeIntegrationBiblioArcheoAnimauxTest extends NoticeIntegrationTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->loadNotice('unimarc_archeo_animaux');
+		$this->notice_sgbd->ouvrirNotice($this->notice_integration->noticeToDBEnreg($this->notice_data)['unimarc'], 0);
+	}
+
+
+	/** @test */
+	public function field200AShouldBeAsExpected() {
+		$this->assertEquals('ArchÂeo animaux',$this->notice_sgbd->get_subfield('200', 'a')[0]);
+	}
+
+	
+	/** @test */
+	public function field200EShouldBeAsExpected() {
+		$this->assertEquals("l'incroyable histoire de l'archÂeologie des animaux",$this->notice_sgbd->get_subfield('200', 'e')[0]);
+	}
+
+
+
+	/** @test */
+	public function field200FShouldBeLamysHachem() {
+		$this->assertEquals('Lamys Hachem',$this->notice_sgbd->get_subfield('200', 'f')[0]);
+	}
+
+	
+	/** @test */
+	public function field200GShouldBeLamysHachem() {
+		$this->assertEquals("ill. d'HÂelÁene Georges",$this->notice_sgbd->get_subfield('200', 'g')[0]);
+	}	
+
+	
+	/** @test */
+	public function firstField210AShouldBeAsExpected() {
+		$this->assertEquals('Arles',$this->notice_sgbd->get_subfield('210', 'a')[0]);
+	}
+
+
+	/** @test */
+	public function secondField210AShouldBeAsExpected() {
+		$this->assertEquals('[Paris]',$this->notice_sgbd->get_subfield('210', 'a')[1]);
+	}
+
+
+	/** @test */
+	public function field210CShouldBeAsExpected() {
+		$this->assertEquals('Actes Sud junior',$this->notice_sgbd->get_subfield('210', 'c')[0]);
+	}
+
+	
+	/** @test */
+	public function field210DShouldBeAsExpected() {
+		$this->assertEquals('2013',$this->notice_sgbd->get_subfield('210', 'd')[0]);
+	}
+
+
+	/** @test */
+	public function field215AShouldBeAsExpected() {
+		$this->assertEquals('1 vol. (84 p.)',$this->notice_sgbd->get_subfield('215', 'a')[0]);
+	}
+
+
+	/** @test */
+	public function field215CShouldBeAsExpected() {
+		$this->assertEquals('ill. en coul., couv. ill. en coul.',$this->notice_sgbd->get_subfield('215', 'c')[0]);
+	}
+	
+
+	/** @test */
+	public function field215DShouldReturn28Cm() {
+		$this->assertEquals('28 cm',$this->notice_sgbd->get_subfield('215', 'd')[0]);
+	}
+
+
+	/** @test */
+	public function unimarc330ShoulBeAsExpected() {
+		$this->assertEquals('Documentaire d’une trÁes grande qualitÂe qui permet d’apprendre ce qu’est l’archÂeozoologie (l’archÂeologie appliquÂee aux dÂecouvertes animales) et de dÂecouvrir les mÂethodes et techniques utilisÂees par les professionnels. Un livre enrichissant, Áa conseiller aux enfants comme aux adultes, pour en savoir plus sur les diffÂerents rÃoles des animaux auprÁes des hommes au fil des Âepoques et l’Âevolution des modes de vie, et dÂecouvrir les divers aspects du mÂetier passionnant d’archÂeozoologue. A noter : ce livre a remportÂe le prix « Le GoÃut des sciences 2013 », (catÂegorie « La science expliquÂee aux jeunes »).', $this->notice_sgbd->get_subfield('330', 'a')[0]);
+	}
+}
+
+
+/** 
+ * @see http://forge.afi-sa.fr/issues/14869 
+ */
+class NoticeIntegrationPergameEmplacementZeroTest extends NoticeIntegrationTestCase {
+	protected $_profil_donnees = [
+		'id_profil' => 100,
+		'libelle' => 'Unimarc Pergame',
+		'accents' => 2,
+		'rejet_periodiques' => 0,
+		'id_article_periodique' => 1,
+		'type_fichier' => 0,
+		'format' => 0,
+		'attributs' => 'a:6:{i:0;a:6:{s:8:"type_doc";a:11:{i:0;a:3:{s:4:"code";s:1:"0";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}i:1;a:3:{s:4:"code";s:1:"1";s:5:"label";s:2:"am";s:8:"zone_995";s:0:"";}i:2;a:3:{s:4:"code";s:1:"2";s:5:"label";s:2:"as";s:8:"zone_995";s:0:"";}i:3;a:3:{s:4:"code";s:1:"3";s:5:"label";s:2:"je";s:8:"zone_995";s:0:"";}i:4;a:3:{s:4:"code";s:1:"4";s:5:"label";s:2:"gd";s:8:"zone_995";s:0:"";}i:5;a:3:{s:4:"code";s:1:"5";s:5:"label";s:2:"le";s:8:"zone_995";s:0:"";}i:6;a:3:{s:4:"code";s:1:"8";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}i:7;a:3:{s:4:"code";s:1:"9";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}i:8;a:3:{s:4:"code";s:2:"10";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}i:9;a:3:{s:4:"code";s:1:"9";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}i:10;a:3:{s:4:"code";s:2:"10";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}}s:17:"champ_code_barres";s:1:"f";s:11:"champ_genre";s:0:"";s:13:"champ_section";s:1:"q";s:17:"champ_emplacement";s:1:"6";s:12:"champ_annexe";s:1:"8";}i:1;a:1:{s:6:"champs";s:0:"";}i:2;a:1:{s:6:"champs";s:0:"";}i:3;a:1:{s:6:"champs";s:0:"";}i:4;a:5:{s:4:"zone";s:3:"995";s:5:"champ";s:1:"4";s:6:"format";s:1:"1";s:5:"jours";s:2:"90";s:7:"valeurs";s:0:"";}i:5;a:2:{s:17:"xml_balise_abonne";s:0:"";s:17:"xml_champs_abonne";a:10:{s:6:"IDABON";s:0:"";s:9:"ORDREABON";s:0:"";s:3:"NOM";s:0:"";s:6:"PRENOM";s:0:"";s:9:"NAISSANCE";s:0:"";s:8:"PASSWORD";s:0:"";s:4:"MAIL";s:0:"";s:10:"DATE_DEBUT";s:0:"";s:8:"DATE_FIN";s:0:"";s:7:"ID_SIGB";s:0:"";}}}'
+	];
+
+
+	public function setUp() {
+		parent::setUp();
+		$this->_mock_sql
+			->whenCalled('fetchAll')
+			->with('select * from codif_section', false)
+			->answers([
+				['id_section' => 1, 'regles' => '995$q=A']])
+
+			->whenCalled('fetchAll')
+			->with('select * from codif_emplacement', false)
+			->answers([
+				['id_emplacement' => 3, 'regles' => '995$6=0']]);
+
+		$this->loadNotice('unimarc_emplacement_codif_zero');
+
+		$this->_item_inserts = [];
+		foreach (range(0, $this->_mock_sql->methodCallCount('insert')) as $index) {
+			$params = $this->_mock_sql->getAttributesForMethodCallAt('insert', $index);
+			if ($params[0] == 'exemplaires')
+				$this->_item_inserts[] = $params[1];
+		}
+
+		$this->firstItem = $this->_item_inserts[0];
+	}
+
+
+	/** @test */
+	public function shouldHaveOneItem() {
+		$this->assertEquals(1, count($this->_item_inserts));
+	}
+
+
+	/** @test */
+	public function itemEmplacementShouldBeThree() {
+		$this->assertEquals(3, $this->firstItem['emplacement']);
+	}
+
+
+	/** @test */
+	public function itemBarcodeShouldBeL01528() {
+		$this->assertEquals('L-01528', $this->firstItem['code_barres']);
+	}
+
+
+	/** @test */
+	public function itemCodeShouldBeOk() {
+		$this->assertEquals('R BOI B', $this->firstItem['cote']);
+	}
+
+
+	/** @test */
+	public function itemSectionShouldBeOne() {
+		$this->assertEquals(1, $this->firstItem['section']);
+	}
+
+
+	/** @test */
+	public function itemZone995ShouldContaineDollarSixEqualsZero() {
+		foreach(unserialize($this->firstItem['zone995']) as $field) {
+			if ('6' == $field['code']) {
+				$this->assertEquals('0', $field['valeur']);
+				return;
+			}
+		}
+		$this->fail('No 995$6 found');
+	}
+}
+
 ?>
\ No newline at end of file
diff --git a/cosmogramme/tests/php/classes/unimarc_archeo_animaux.txt b/cosmogramme/tests/php/classes/unimarc_archeo_animaux.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f9bf63fe2c5f4edcb0ddea553a0a99951764a818
--- /dev/null
+++ b/cosmogramme/tests/php/classes/unimarc_archeo_animaux.txt
@@ -0,0 +1 @@
+01739nam0 2200301   450 0010008000000100035000080730018000431000041000611010008001021020007001101050018001171060006001352000112001412100050002532150062003033300627003656060062009926060064010546060072011186760014011907000032012047020047012368010048012838010028013319030006013599970043013659980029014080641294  a978-2-330-01982-2bbr.d19 EUR 0a9782330019822  a20130718d2013    a  h0frey50      ba0 afre  aFR  ay   z   000aa  ar1 aArchÂeo animauxel'incroyable histoire de l'archÂeologie des animauxfLamys Hachemgill. d'HÂelÁene Georges  aArlescActes Sud juniora[Paris]cINRAPd2013  a1 vol. (84 p.)cill. en coul., couv. ill. en coul.d28 cm  aDocumentaire d’une trÁes grande qualitÂe qui permet d’apprendre ce qu’est l’archÂeozoologie (l’archÂeologie appliquÂee aux dÂecouvertes animales) et de dÂecouvrir les mÂethodes et techniques utilisÂees par les professionnels. Un livre enrichissant, Áa conseiller aux enfants comme aux adultes, pour en savoir plus sur les diffÂerents rÃoles des animaux auprÁes des hommes au fil des Âepoques et l’Âevolution des modes de vie, et dÂecouvrir les divers aspects du mÂetier passionnant d’archÂeozoologue. A noter : ce livre a remportÂe le prix « Le GoÃut des sciences 2013 », (catÂegorie « La science expliquÂee aux jeunes »).| 30008353aArchÂeologie30000042xOuvrages pour la jeunesse| 30002372aPalÂeozoologie30000042xOuvrages pour la jeunesse| 30016306aRelations homme-animal30000042xOuvrages pour la jeunesse  a930.1v22 |30641296aHachembLamys4070 |30578922aGeorgesbHÂelÁenef1978-....4440 0aFRbFR-751131015c20130718gAFNOR2intermrc 2aFRbBDP Yonnec20131205  ac  30641438a16431334112cYdJg930.1tLIV  30641360tLIVwYcYdJa1
diff --git a/cosmogramme/tests/php/classes/unimarc_emplacement_codif_zero.txt b/cosmogramme/tests/php/classes/unimarc_emplacement_codif_zero.txt
new file mode 100644
index 0000000000000000000000000000000000000000..24b35e9481c715c5b8039070fce289814ace9904
--- /dev/null
+++ b/cosmogramme/tests/php/classes/unimarc_emplacement_codif_zero.txt
@@ -0,0 +1 @@
+00872oam2 22002171  450 00100090000010000240000910100080003310500390004120000440008021000320012421500450015646100300020167600060023168600120023770000210024980100340027083500060030493000140031093200640032499502660038800002054  a20000111 0frea01 ba0 afre  1[2000-01-11-00.00.00.000000][][][]1 aBelle-grand-mèrefJanine Boissardv131  aPariscA. Fayardd1993-2004  a303 p.3303ccouv. ill. en coul.d24 cm.  tBelle-grand-mèrev132052  10  aR BOI B10aBoissardbJanine  aFRbMédiathèque Aix-les-Bains  aA  aRomans4R  aRelations familiales (parents, grands-parents...) / enfants  aMédiathèque Aix-les-BainsfL-015287*81gL-h01528kR BOI Bm20140716opqaram1[RI][Reprise d'inventaire][][][][][][0,00][][][][][][][][ ][][][][][][][][][]2[AA][Actif Adulte][0][1][En rayon - Fonds Adulte][0][0][0][0]91998-12-31-00.00.00.000000539 69260
diff --git a/cosmogramme/tests/php/classes/unimarc_items_in_996.txt b/cosmogramme/tests/php/classes/unimarc_items_in_996.txt
index a03e21dbf133640a2ae3f06bdc1aaef0a44e24d8..608dd8c35166fa56cf5a1d3273706d45d4bec241 100644
--- a/cosmogramme/tests/php/classes/unimarc_items_in_996.txt
+++ b/cosmogramme/tests/php/classes/unimarc_items_in_996.txt
@@ -1 +1 @@
-02462njm  2200313 i 4500001000700000003000600007005001700013007000300030008004200033028002300075040000900098090000800107245005500115260002800170300002100198505100400219505004801223521002301271650006601294690006401360901000601424949007301430596001501503999011901518999013301637999012601770999013201896999012002028106394SIRSI20031227171028.0sd950901s2002       uuu           1  fre d001aU 318015;bAuvidis  aCRET  a70010aMusiques du monde pour petites oreillesh[enr. CD]  a[S.l.] :bNaèive,c2002  a1 disque compact  aIntroduction "Chan chan" son de Camagèuey -- Cameroun "Le tambour d'eau" -- Cãote d'Ivoire "Chants de 2 petites filles" -- Centrafrique "Nzenzenze" -- Algâerie "Berceuse" / Houria Aèichi -- Espagne "Tanguillos-Rumba" / Nanay -- Bretagne "Doue Lann" / Bagad Kemperle -- Irlande "The bear Island Reel"/ Hickey's -- Italie "Tarentelle napolitaine" / Orchestre Campagnola -- Roumanie "Pale amende si abeau" / Nicolae Gutsa -- Ukraine "Oi Cotou, Cotou, Cototchok" / Hanna Koropnitchenko -- Russie "Troèika" / Georges Streha -- Turquie "Taksim" / Kudsi Erguner -- Inde "Le mode Ahiri-Lalita" / Ravi Shankar -- Chine "Pingsha Luo Yan" / Ding Boling -- Hong Kong "Kao Shan Liu Shui" / Lui Pui-Yen -- Australie "Chant de danse wongga" Musique aborigáene -- Chili "Cha, cha, cha de la frutera" / Angel Parra -- Argentine "La cumparsita" Tempo di tango -- Bolivie "Cebadillas" / Los Gringos -- Mexique "La raspa" / Los Mariachis -- Cuba "Pal monte" / Familia Valera Miranda -- Etats-Unis "O Suzanna" / Tim Holm  aCanada "Chant de Chamane" Chants des Inuits  aáa partir de 4 ans 7aChansons enfantinesxEnregistrements sonores pour la jeunesse  aMusiques du mondexEnregistrements sonores pour la jeunesse  aZ  a735 AwDEWEYmCRETMACl02MJENFANTt1MUSi00331635p22.00rYxCDzENF  a2 10 12 14  aEM A MUS JwASISc1i00519824d21/6/2013e21/5/2013l07MJENFmCRETBUSn11pE22.00rYsYt1MUSu25/11/2009xCDzENF  aEM A MUS JwASISc1i00624599d11/4/2014e11/4/2014kCHECKEDOUTl04MJENFANTmCRETBLEn6pE15.00rMsYt1MUSu28/11/2012xCDzENF  a7.30 AwASISc1i00643501d2/5/2014e2/5/2014kCHECKEDOUTl10JMUSTPmALFMEDAn10pE19.00rMsYt1MUSu20/12/2012xCDzENF  aEM A MUS JwASISc1i00331635d23/12/2007e27/9/2006kLOST-ASSUMl06ENFMULmCRETDOYn3pE22.00rMsYt1MUSu19/12/2005xCDzENF  aEM A MUS JwASISc2i00624598d30/11/2013e28/9/2013l06ENFMULmCRETDOYn6pE15.00rYsYt1MUSu28/11/2012xCDzENF
\ No newline at end of file
+02462njm  2200313 i 4500001000700000003000600007005001700013007000300030008004200033028002300075040000900098090000800107245005500115260002800170300002100198505100400219505004801223521002301271650006601294690006401360901000601424949007301430596001501503999011901518999013301637999012601770999013201896999012002028106394SIRSI20031227171028.0sd950901s2002       uuu           1  fre d001aU 318015;bAuvidis  aCRET  a70010aMusiques du monde pour petites oreillesh[enr. CD]  a[S.l.] :bNaèive,c2002  a1 disque compact  aIntroduction "Chan chan" son de Camagèuey -- Cameroun "Le tambour d'eau" -- Cãote d'Ivoire "Chants de 2 petites filles" -- Centrafrique "Nzenzenze" -- Algâerie "Berceuse" / Houria Aèichi -- Espagne "Tanguillos-Rumba" / Nanay -- Bretagne "Doue Lann" / Bagad Kemperle -- Irlande "The bear Island Reel"/ Hickey's -- Italie "Tarentelle napolitaine" / Orchestre Campagnola -- Roumanie "Pale amende si abeau" / Nicolae Gutsa -- Ukraine "Oi Cotou, Cotou, Cototchok" / Hanna Koropnitchenko -- Russie "Troèika" / Georges Streha -- Turquie "Taksim" / Kudsi Erguner -- Inde "Le mode Ahiri-Lalita" / Ravi Shankar -- Chine "Pingsha Luo Yan" / Ding Boling -- Hong Kong "Kao Shan Liu Shui" / Lui Pui-Yen -- Australie "Chant de danse wongga" Musique aborigáene -- Chili "Cha, cha, cha de la frutera" / Angel Parra -- Argentine "La cumparsita" Tempo di tango -- Bolivie "Cebadillas" / Los Gringos -- Mexique "La raspa" / Los Mariachis -- Cuba "Pal monte" / Familia Valera Miranda -- Etats-Unis "O Suzanna" / Tim Holm  aCanada "Chant de Chamane" Chants des Inuits  aáa partir de 4 ans 7aChansons enfantinesxEnregistrements sonores pour la jeunesse  aMusiques du mondexEnregistrements sonores pour la jeunesse  aZ  a735 AwDEWEYmCRETMACl02MJENFANTt1MUSi00331635p22.00rYxCDzENF  a2 10 12 14  aEM A MUS JwASISc1i00519824d21/6/2013e21/5/2013l07MJENFmCRETBUSn11pE22.00rYsYt1MUSu25/11/2009xCDzENF  aEM A MUS JwASISc1i00624599d11/4/2014e11/4/2014kCHECKEDOUTl04MJENFANTmCRETBLEn6pE15.00rMsYt1MUSu28/11/2012xCDzENF  a7.30 AwASISc1i00643501d2/5/2014e2/5/2014kCHECKEDOUTl10JMUSTPmALFMEDAn10pE19.00rMsYt1MUSu20/12/2012xCDzENF  aEM A MUS JwASISc1i00331635d23/12/2007e27/9/2006kLOST-ASSUMl06ENFMULmCRETDOYn3pE22.00rMsYt1MUSu19/12/2005xCDzENF  aEM A MUS JwASISc2i00624598d30/11/2013e28/9/2013l06ENFMULmCRETDOYn6pE15.00rYsYt1MUSu28/11/2012xCDzENF
diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php
index df1d6da054d22ed2953b12c77bd1671bd81a1cd1..e01a388ef3f01b6fd7070055587322d090a5e419 100644
--- a/library/Class/AdminVar.php
+++ b/library/Class/AdminVar.php
@@ -169,6 +169,14 @@ class Class_AdminVar extends Storm_Model_Abstract {
 	}
 
 
+	/**
+	 * @return bool
+	 */
+	public static function isCyberlibrisEnabled() {
+		return ('' != self::get('CYBERLIBRIS_URL') );
+	}
+
+
 	/**
 	 * @return bool
 	 */
@@ -226,6 +234,7 @@ class Class_AdminVar extends Storm_Model_Abstract {
 		return ('' != self::get('MULTIMEDIA_KEY'));
 	}
 
+
 	/**
 	 * @return bool
 	 */
@@ -233,7 +242,13 @@ class Class_AdminVar extends Storm_Model_Abstract {
 		return ('' != self::get('WEBKIOSK_KEY'));
 	}
 
-	 /**
+
+	public static function isLeKioskEnabled() {
+		return '' != self::get('LEKIOSK_ID');
+	}
+
+
+	/**
 	 * @return bool
 	 */
 	public static function isBeforeDateLastFullIntegrationUsers($date) {
@@ -285,23 +300,24 @@ class Class_AdminVar extends Storm_Model_Abstract {
 																					Class_Url::assemble(['module' => 'admin',
 																															 'action' => 'clearcache']))]),
 				'WORKFLOW' => 'Activer ou désactiver la gestion des validations des articles<br />1 = Activé, Autre valeur = désactivé',
-				'WORKFLOW_TEXT_MAIL_ARTICLE_PENDING' => '',
-				'WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED' => '',
+				'WORKFLOW_TEXT_MAIL_ARTICLE_PENDING' => 'Contenu de l\'email de notification d\'article en attente de validation',
+				'WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED' => 'Contenu de l\'email de notification de refus d\'un article à valider',
 				'BIBNUM' => 'Activer ou désactiver la bibliothèque numérique<br />1 = Activé, Autre valeur = désactivé',
 				'FORMATIONS' => 'Activer ou désactiver le module formation<br />1 = Activé, Autre valeur = désactivé',
 				'VODECLIC_KEY' => 'Clé de sécurité Vodeclic',
 				'VODECLIC_ID' => 'Identifiant partenaire Vodeclic',
 				'VODECLIC_BIB_ID' => 'Identifiant code bibliothèque Vodeclic',
-				'CVS_BMKEY' => '',
-				'CVS_BMID' => '',
-				'CVS_SOURCENAME' => '',
-				'CVS_SOURCEID' => '',
-				'CVS_SOURCEKEY' => '',
-				'CVS_SOURCEPASSWORD' => '',
-				'CVS_LOGINTEST' => '',
-				'NUMILOG_URL' => '',
-				'NUMILOG_OAI_URL' => '',
-				'NUMILOG_OAI_IDBIB' => '',
+				'CVS_BMKEY' => 'Paramétrage CVS',
+				'CVS_BMID' => 'Paramétrage CVS',
+				'CVS_SOURCENAME' => 'Paramétrage CVS',
+				'CVS_SOURCEID' => 'Paramétrage CVS',
+				'CVS_SOURCEKEY' => 'Paramétrage CVS',
+				'CVS_SOURCEPASSWORD' => 'Paramétrage CVS',
+				'CVS_LOGINTEST' => 'Paramétrage CVS',
+				'NUMILOG_URL' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>',
+				'NUMILOG_OAI_URL' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>',
+				'NUMILOG_OAI_IDBIB' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>',
+				'CYBERLIBRIS_URL' => 'Adresse du serveur OAI Cyberlibris',
 				'OAI_SERVER' => 'Activation du serveur OAI. 0 = inactif, 1 = actif',
 				'PACK_MOBILE' => 'Activation des fonctions avancées du téléphone.  0 = inactif, 1 = actif',
 				'ARTE_VOD_LOGIN' => 'Login ARTE VOD',
@@ -316,10 +332,10 @@ class Class_AdminVar extends Storm_Model_Abstract {
 				'MENU_BOITE' => 'Activation des boîtes dans les menus.  0 = inactif, 1 = actif',
 				'INTERDIRE_MODIF_FICHE_ABONNE' => 'Interdire la modification de la fiche abonne 0 = inactif, 1 = actif',
 				'ROOT_URL_ECOUTE' => '',
-				'URL_TYPO3' => 'Url d\'import d\un agenda TYPO3',
+				'URL_TYPO3' => 'Url d\'import d\'un agenda TYPO3',
 				'CHAMPS_FICHE_UTILISATEUR' => 'Liste des champs que l\'utilisateur peux modifier. <br/>Ex: nom;prenom;pseudo;adresse;<br/>code_postal;ville;mail;is_contact_mail;<br/>telephone;is_contact_telephone;',
-				'FACETTE_PCDM4_LIBELLE' => 'Libellé affichage pour la PCDM4',
-				'FACETTE_DEWEY_LIBELLE' => 'Libellé affichage pour la Dewey',
+				'FACETTE_PCDM4_LIBELLE' => 'Libellé pour la PCDM4',
+				'FACETTE_DEWEY_LIBELLE' => 'Libellé pour la Dewey',
 				'FACETTE_TYPE_DOC_LIBELLE' => '',
 				'FACETTE_LANGUE_LIBELLE' => '',
 				'FACETTE_GENRE_LIBELLE' => '',
@@ -332,16 +348,17 @@ class Class_AdminVar extends Storm_Model_Abstract {
 				'FACETTE_TAG_LIBELLE' => '',
 				'AFFICHER_DISPONIBILITE_SUR_RECHERCHE' => 'Activation de la disponibilite dans le resultat de recherche.  0 = inactif, 1 = actif',
 				'NOM_DOMAINE' => 'Nom de domaine principal de l\'OPAC, ex: monopac.macommune.fr',
-				'TOUTAPPRENDRE_BIB_ID' => '',
-				'TOUTAPPRENDRE_KEY' => '',
+				'TOUTAPPRENDRE_BIB_ID' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Tout-Apprendre">ToutApprendre</a>',
+				'TOUTAPPRENDRE_KEY' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Tout-Apprendre">ToutApprendre</a>',
 				'NUMERIQUE_PREMIUM_URL' => '',
 				'MUSICME_URL' => '',
 				'MUSICME_BIB_ID' => '',
-				'DATE_LAST_FULL_INTEGRATION_USERS' => '',
+				'DATE_LAST_FULL_INTEGRATION_USERS' => 'Date du dernier import total des abonnés (modifié par cosmogramme)',
 				'BOITE_PANIER_AUTO' => 'Ajouter automatiquement une boîte panier dans la division flottante.  0 = inactif, 1 = actif',
 				'EXTRA_SKIN_PATH' => 'Chemin vers les skins personnalisées, relatif à ' . Class_Profil_Skin::EXTRA_PATH,
 				'ENABLE_COLLABORATIVE_BROWSING' => 'Activation de la navigation collaborative. 0 = inactif, 1 = actif',
-				'KOHA_MULTI_SITES' => 'WS KOHA : Reservation d\'exemplaires pour les multi sites. 0 = inactif, 1 = actif'
+				'KOHA_MULTI_SITES' => 'WS KOHA : Reservation d\'exemplaires pour les multi sites. 0 = inactif, 1 = actif',
+				'LEKIOSK_ID' => 'Identifiant fournit par lekiosk.com',
 				];
 		return self::$_knownVars;
 	}
diff --git a/library/Class/Album.php b/library/Class/Album.php
index 43d55ed567292e012ee033e38db6639cd95da4d4..2f384c8999612c312206240636254b46886bd8ce 100644
--- a/library/Class/Album.php
+++ b/library/Class/Album.php
@@ -55,8 +55,11 @@
 
 class AlbumLoader extends Storm_Model_Loader {
 	public function getItemsOf($categoryId) {
-		return Class_Album::findAllBy(['cat_id' => $categoryId,
-																	 'order' => 'titre']);
+		return Class_Album::findAllBy([
+			'cat_id' => $categoryId,
+			'order' => 'titre',
+			'limit' => 1000
+		]);
 	}
 }
 
@@ -399,11 +402,17 @@ class Class_Album extends Storm_Model_Abstract {
 		return $this->setTypeDocId(Class_TypeDoc::ARTEVOD);
 	}
 
+
 	public function beNumilog() {
 		return $this->setTypeDocId(Class_TypeDoc::NUMILOG);
 	}
 
 
+	public function beCyberlibris() {
+		return $this->setTypeDocId(Class_TypeDoc::CYBERLIBRIS);
+	}
+
+
 	public function beNumeriquePremium() {
 		return $this->setTypeDocId(Class_TypeDoc::NUMERIQUEPREMIUM);
 	}
@@ -413,6 +422,10 @@ class Class_Album extends Storm_Model_Abstract {
 
 	}
 
+	public function isCyberlibris() {
+		return $this->getTypeDocId() == Class_TypeDoc::CYBERLIBRIS;
+	}
+
 
 	public function beFormationVodeclic() {
 		return $this->setTypeDocId(Class_TypeDoc::VODECLIC);
diff --git a/library/Class/Batch.php b/library/Class/Batch.php
index df2f91db0fc94fa3ea6a47c25d5dc524f42ab608..bcde0edf615531c3015ee4a3a3d64a165dbf76d2 100644
--- a/library/Class/Batch.php
+++ b/library/Class/Batch.php
@@ -38,6 +38,7 @@ class Class_BatchLoader extends Storm_Model_Loader{
 						'MOISSONNAGE_ARTEVOD' => new Class_Batch_ArteVOD(),
 						'MOISSONNAGE_NUMERIQUEPREMIUM' => new Class_Batch_NumeriquePremium(),
 						'MOISSONNAGE_NUMILOG' => new Class_Batch_Numilog(),
+						'MOISSONNAGE_CYBERLIBRIS' => new Class_Batch_Cyberlibris(),
 						'MOISSONNAGE_TOUTAPPRENDRE' => new Class_Batch_ToutApprendre()
 		];
 	}
diff --git a/library/Class/Batch/Cyberlibris.php b/library/Class/Batch/Cyberlibris.php
new file mode 100644
index 0000000000000000000000000000000000000000..bc0b206d23e431f48f60b52a62770c63921a0bb8
--- /dev/null
+++ b/library/Class/Batch/Cyberlibris.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Class_Batch_Cyberlibris extends Class_Batch_RessourceNumerique{
+	protected function _getService() {
+		return new Class_WebService_BibNumerique_Cyberlibris();
+	}
+}
+?>
\ No newline at end of file
diff --git a/library/Class/Calendar.php b/library/Class/Calendar.php
index a29ff5d628bf5e612dc9b3346f16f4a88877d34b..10d99a7f05e78c1f0966c97956b94e1baeccd7e0 100644
--- a/library/Class/Calendar.php
+++ b/library/Class/Calendar.php
@@ -109,7 +109,7 @@ class Class_Calendar {
 		/*if ($this->param["ALEATOIRE"] == 1)
 			shuffle($articles);*/
 
-		if (count($articles) < $this->param['NB_NEWS']) {
+		if (count($articles) < $this->param['NB_NEWS'] && $this->param['EVENT_FILTER']=='none') {
 			$next_articles = $this->_loadArticles(['event_start_after' => $this->param["DATE"],
 																						 'event_date' => '',
 																						 'event_end_after' => '',
diff --git a/library/Class/CodifEmplacement.php b/library/Class/CodifEmplacement.php
index 55556af8932714af382150d1777ee06248a24c13..f9026ddb471a217a6499b232b63be3367276787f 100644
--- a/library/Class/CodifEmplacement.php
+++ b/library/Class/CodifEmplacement.php
@@ -23,5 +23,43 @@ class Class_CodifEmplacement extends Storm_Model_Abstract {
 	const CODE_FACETTE='E';
   protected $_table_name = 'codif_emplacement';
   protected $_table_primary = 'id_emplacement';
+
+
+	public function validate() {
+		$this->check('' != $this->getLibelle(), 'Vous devez définir le libellé');
+		$this->check('' != $this->getRegles(), 'Vous devez définir au moins une règle');
+
+		$regles = str_replace(' ', '', $this->getRegles());
+		$test = explode("\n", $regles);
+		foreach($test as $regle) {
+			if ('' == $regle)
+				continue;
+
+			$zone = substr($regle, 0, 3);
+			$this->check(
+				intval($zone) == $zone, 
+				'La zone doit être un nombre pour la règle ' . $regle);
+
+			$this->check(
+				substr($regle, 3, 1) == '$', 
+				'Le $ est absent ou mal positionné pour la règle ' . $regle);
+			
+			$champ = substr($regle, 4, 1); 
+			$this->check(
+				preg_match('/^[a-z0-9]$/', $champ),  
+				'Le champ n\'est pas compris entre a et z ni entre 0 et 9 pour la règle ' . $regle);
+
+			$valeurs = substr($regle, 6); 
+			$this->check(
+				'' != trim($valeurs), 
+				'Indiquez des valeurs pour la règle ' . $regle);
+			
+			$signe = substr($regle, 5, 1);
+			$this->check(
+				false !== strpos("=/*",$signe),  
+				'Signe de comparaison incorrect pour la règle ' . $regle);
+		}
+		
+	}
 }
 ?>
diff --git a/library/Class/CosmoVar.php b/library/Class/CosmoVar.php
index 9378c7ef39312bfa68ab97376418d797a95c6608..1ec58be04e2046c72a74d89952102b12413860ef 100644
--- a/library/Class/CosmoVar.php
+++ b/library/Class/CosmoVar.php
@@ -41,6 +41,34 @@ class Class_CosmoVarLoader extends Storm_Model_Loader {
 		}
 		return '';
 	}
+
+	public function updateLabelInList($value ,$label ,$list) {
+		$new_list=[];
+		foreach (explode(chr(13).chr(10), $list) as $line) {
+			$parts = explode(':', $line);
+			if ($value == $parts[0])
+				$parts[1]=$label;
+			$new_list[]=implode(':', $parts);
+		}
+		return implode('\r\n',$new_list);
+	}
+
+
+	public function addLabelInList($name, $value, $label) {
+			if (!$model = Class_CosmoVar::find($name))
+				return false;
+
+			$liste = $model->getListe();
+
+			if (strpos($liste, "\r\n$value:") !== false)
+				$liste=$this->updateLabelInList($value,$label,$liste);
+			else 
+				$liste .= "\r\n$value:$label";
+
+			$model->setListe($liste)->save();
+
+			return $this;
+	}
 }
 
 
diff --git a/library/Class/LeKioskLink.php b/library/Class/LeKioskLink.php
new file mode 100644
index 0000000000000000000000000000000000000000..1789d73bb1983f54835852eb7c7777cc135a7ddd
--- /dev/null
+++ b/library/Class/LeKioskLink.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Class_LeKioskLink {
+	const ROOT_URL = 'http://pro.lekiosk.com';
+	const BASE_URL = '/lekiosque.authenticate.aspx?';
+	const AES_KEY = '56FGH4sTOV9ZXr4Q';
+	const SHA1_KEY = '897RDZQo789';
+
+	protected $_mail;
+	protected $_base_url;
+
+
+	public static function newFor($mail) {
+		return new self($mail);
+	}
+
+
+	public function __construct($mail) {
+		$this->_mail = ($mail) ? $mail : Class_Profil::getPortail()->getMailSiteOrPortail();
+	}
+
+
+	public function url() {
+		return static::ROOT_URL 
+			. $this->baseUrl()
+			. '&AccessHash=' . $this->accessHash();
+	}
+
+
+	protected function accessHash() {
+		return sha1($this->baseUrl() . static::SHA1_KEY);
+	}
+
+
+	protected function baseUrl() {
+		if (null === $this->_base_url)
+			$this->_base_url = static::BASE_URL 
+				. 'email=' . $this->cryptedMail()
+				. '&id=' . Class_AdminVar::get('LEKIOSK_ID')
+				;
+
+		return $this->_base_url;
+	}
+
+
+	protected function cryptedMail() {
+		return bin2hex(openssl_encrypt($this->_mail, 'aes-128-cbc', static::AES_KEY, true, static::AES_KEY));
+	}
+}
+?>
\ No newline at end of file
diff --git a/library/Class/Migration/ScriptPatchs.php b/library/Class/Migration/ScriptPatchs.php
index da5685ea0f758012cbd9cc3f79e7078f4faaf95e..81a534a7d7802e479ac34b454c818fd71232b186 100644
--- a/library/Class/Migration/ScriptPatchs.php
+++ b/library/Class/Migration/ScriptPatchs.php
@@ -21,6 +21,7 @@
 
 
 class Class_Migration_ScriptPatchs {
+	use Trait_EchoError;
 	use Trait_Translator;
 
 	protected $force=false;
@@ -32,23 +33,23 @@ class Class_Migration_ScriptPatchs {
 	}
 
  	public function visitPhpError($exception) {
-			echo("Code : ".$exception->getCode()."\n");
-			echo("Erreur :".$exception->getMessage());
+			$this->echoError("Code : ".$exception->getCode()."\n");
+			$this->echoError("Erreur :".$exception->getMessage());
 	}
 
  	public function visitHeader($patch_level) {
 	}
 
 	public function visitDisplayInstruction($instruction) {
-		echo($instruction."\n");
+		$this->echoError($instruction."\n");
 	}
 
 	public function visitSqlSkip($num_instruction) {
 		return false;
 	}
 	public function visitSqlException($e,$num_instruction) {
-			echo("Code : ".$e->getCode()."\n");
-			echo("Erreur :".$e->getMessage());
+			$this->echoError("Code : ".$e->getCode()."\n");
+			$this->echoError("Erreur :".$e->getMessage());
 	}
 
 	public function visitIsForceUpgrade() {
@@ -56,12 +57,12 @@ class Class_Migration_ScriptPatchs {
 	}
 
 	public function visitDisplayDone() {
-		echo($this->_('Mise à niveau de la base effectuée avec succès'));
+		$this->echoError($this->_('Mise à niveau de la base effectuée avec succès'));
 	}
 
 
 	public function visitDisplayPatchLevel($num_patch) {
-		echo('Execution patch n° ' . $num_patch."\n");
+		$this->echoError('Execution patch n° ' . $num_patch."\n");
 	}
 
 
diff --git a/library/Class/NoticeUnimarc.php b/library/Class/NoticeUnimarc.php
index 92819b7dc950e1e91137e9d914d8358bff639298..ede525bc23d2815821b28bf150716e4710750382 100644
--- a/library/Class/NoticeUnimarc.php
+++ b/library/Class/NoticeUnimarc.php
@@ -18,22 +18,21 @@
  * along with AFI-OPAC 2.0; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
-//////////////////////////////////////////////////////////////////////////////////////////
-// OPAC3 :	Notice UNIMARC
-//////////////////////////////////////////////////////////////////////////////////////////
+
 class Class_NoticeUnimarc {
+	const LABEL_LENGTH=24;
+
 	protected static $_tracer_accents_iso;
 	protected $type_accents;
 	protected $tracer_accents;
-	// enregistrement UNIMARC complet
+
 	protected $full_record;
-	// parties de l'enregistrement UNIMARC
+
 	protected $guide = '';
 	protected $data = '';
-	// propriétés 'publiques'
 	protected $errors;
-	// variables 'internes' de la classe
 	protected $inner_data;
+
 	// caractères spéciaux
 	protected $record_end;
 	protected $rgx_record_end;
@@ -42,13 +41,7 @@ class Class_NoticeUnimarc {
 	protected $subfield_begin;
 	protected $rgx_subfield_begin;
 
-
-	const LABEL_LENGTH=24;
-// ---------------------------------------------------
-// constructeur : init des constantes
-// ---------------------------------------------------
-	function __construct() 
-	{
+	public function __construct() {
 		$this->tracer_accents = isset(self::$_tracer_accents_iso) 
 			? self::$_tracer_accents_iso 
 			: self::$_tracer_accents_iso = Class_CosmoVar::get('tracer_accents_iso');
@@ -65,13 +58,10 @@ class Class_NoticeUnimarc {
 
 
 	public function hasNotice() {
-			return !empty($this->full_record);
+		return !empty($this->full_record);
 	}
 
 	
-// ---------------------------------------------------
-// Decoupage de l'enregistrement
-// ---------------------------------------------------
 	public function setNotice($string, $type_accents = 0)	{
 		$this->reset_notice();
 
@@ -115,28 +105,26 @@ class Class_NoticeUnimarc {
 		return $this;
 	}
 
-// ---------------------------------------------------
-// 		récupération d'un ou plusieurs sous-champ(s)
-// ---------------------------------------------------
 
 	/**
 	 * Premier argument label de champ obligatoire
 	 * Puis liste de sous-champs sinon renvoit le bloc entier
 	 */
-	public function get_subfield() {
-		$result = [];
-		
+	public function get_subfield() {		
 		if (!$args = func_get_args()) 
-			return $result;
+			return [];
 
 		$inner_data_label = $args[0];
+
+		if (!isset($this->inner_data[$inner_data_label]))
+			return [];
+
 		$subfields = array_slice($args, 1);
 		$subfields_count = count($subfields);
-		$get_method = $subfields_count == 0 ? '_getSubfieldContent' : ($subfields_count == 1 ? '_getOneSubfieldContent' : '_getSeveralSubfieldContent');
 
-		if (!isset($this->inner_data[$inner_data_label]))
-			return $result;
+		$get_method = $subfields_count == 0 ? '_getSubfieldContent' : ($subfields_count == 1 ? '_getOneSubfieldContent' : '_getSeveralSubfieldContent');
 
+		$result = [];
     foreach($this->inner_data[$inner_data_label] as $content)
 			$this->$get_method($content, $subfields, $result);
       
@@ -150,11 +138,10 @@ class Class_NoticeUnimarc {
 
 
 	protected function _getOneSubfieldContent($content, &$subfields, &$result) {
-			$mask = $this->_getPatternForSubfield($subfields[0]);
-			while (preg_match($mask, $content, $regs)) {
-				$result[] = $regs[1];
-				$content = preg_replace($mask, '', $content);
-			}
+		$mask = $this->_getPatternForSubfield($subfields[0]);
+		preg_match_all($mask, $content, $matches);
+		foreach($matches[1] as $match)	
+			$result[] = $match;
 	}
 
 
@@ -176,6 +163,7 @@ class Class_NoticeUnimarc {
     return $this->_pattern_subfield_cache[$subfield];
 	}
 
+
 	public function getValeursBloc($bloc) {
 		$valeurs = [];
 		$bloc = substr($bloc, 3);
@@ -185,9 +173,6 @@ class Class_NoticeUnimarc {
 		return $valeurs;
 	}
 
-// ---------------------------------------------------
-// Decoupe un bloc zone en sous-champs
-// ---------------------------------------------------
 
 	public function decoupe_bloc_champ($bloc,$num=false) {
 		$sc = [];
diff --git a/library/Class/NoticeUnimarc/Writer.php b/library/Class/NoticeUnimarc/Writer.php
index ec4e54d51fd9feb95069e88f042e5cf7d188f304..e32f08606da2a258a64562ce6a38b34fca6a0738 100644
--- a/library/Class/NoticeUnimarc/Writer.php
+++ b/library/Class/NoticeUnimarc/Writer.php
@@ -78,21 +78,20 @@ class Class_NoticeUnimarc_Writer extends Class_NoticeUnimarc {
 		// récupération du répertoire
 		$m = 3 + $this->inner_guide['dm1'] + $this->inner_guide['dm2'];
 		$this->directory = substr($this->full_record,	self::LABEL_LENGTH,	$this->inner_guide['ba'] - 25);
-
 		$tmp_dir = array_filter(explode('|', chunk_split($this->directory, $m, '|')));
 		$dm1 = $this->inner_guide['dm1'];
 		$dm2 = $this->inner_guide['dm2'];
 		$adress_length = 3 + $dm1;
 
-		$has_data = substr($this->full_record,
-											 $ba,
-											 strlen($this->full_record) - $ba);
+		$record = explode("\x1e", $this->full_record);
+		$label_and_dir = array_shift($record);
 
-		if ($has_data) {
+		if (count($record)) {
 			foreach ($tmp_dir as $i => $dir) {
 				$label = substr($dir, 0, 3);
 				$length = (int)substr($dir, 3, $dm1);
 				$adress = (int)substr($dir, $adress_length, $dm2);
+
 				$this->inner_directory[$i] = ['label' => $label,
 																			'length' => $length,
 																			'adress' => $adress];
@@ -100,9 +99,7 @@ class Class_NoticeUnimarc_Writer extends Class_NoticeUnimarc {
 				if (!isset($this->inner_data[$label]))
 					$this->inner_data[$label] = [];
 
-				$this->inner_data[$label][] = substr($this->full_record,
-																						 $ba + $adress,
-																						 $length);
+				$this->inner_data[$label][] = $record[$i] . "\x1e";						
 			}
 		} else {
 			$this->inner_data = array();
@@ -200,7 +197,7 @@ class Class_NoticeUnimarc_Writer extends Class_NoticeUnimarc {
 				}
 
 				foreach ($third_argument as $field) {
-					if (preg_match('/^[a-z0-9]$/', $field[0]) && $field[1]) 
+					if (preg_match('/^[a-z0-9]$/', $field[0]) && '' != trim($field[1])) 
 						$content .= $this->subfield_begin . $field[0] . $field[1];
 				}
 				$content .= $this->field_end;
diff --git a/library/Class/Profil.php b/library/Class/Profil.php
index 18f247c3927c988ebc855595cd6cbfad2bc68e2e..326a837e9dc2be9955a9718fc3968a69fe7284f9 100644
--- a/library/Class/Profil.php
+++ b/library/Class/Profil.php
@@ -192,15 +192,15 @@ class Class_Profil extends Storm_Model_Abstract {
 																																			'menus' => []]]),
 				 'cfg_modules' => '',
 				 'cfg_notice' => ZendAfi_Filters_Serialize::serialize(['exemplaires' => ['grouper' => 0,
-																																				 'annexe' => 0,
-																																				 'bib' => 1,
-																																				 'section' => 0,
-																																				 'emplacement' => 0,
-																																				 'localisation' => 1,
-																																				 'plan' => 1,
-																																				 'resa' => 1,
-																																				 'dispo' => 1,
-																																				 'date_retour' => 0],
+																																								 'annexe' => 0,
+																																								 'bib' => 1,
+																																								 'section' => 0,
+																																								 'emplacement' => 0,
+																																								 'localisation' => 1,
+																																								 'plan' => 1,
+																																								 'resa' => 1,
+																																								 'dispo' => 1,
+																																								 'date_retour' => 0],
 																															 'en_pret' => 'En prêt']),
 				 'hauteur_banniere' => 100,
 				 'mail_site' => '',
@@ -505,14 +505,14 @@ class Class_Profil extends Storm_Model_Abstract {
 	 * @param int $start_id
 	 * @return int
 	 */
-	public function createNewModuleAccueilId($start_id = 1){
+	public function createNewModuleAccueilId($start_id=1) {
 		$new_id = $start_id;
-		while ($this->getModuleAccueilConfig($new_id) != null) $new_id++;
+		while (isset($this->getLocalModuleAccueilConfig($new_id)['preferences']['id_module'])) 
+			$new_id++;
 
 		// réserve l'id pour ne pas redonner 2 fois le même
 		$cfg_accueil = $this->getCfgAccueilAsArray();
-		$cfg_accueil['modules'][$new_id] = array('preferences' => array(
-																							 'id_module' => $new_id));
+		$cfg_accueil['modules'][$new_id] = ['preferences' => ['id_module' => $new_id]];
 		$this->setCfgAccueil($cfg_accueil);
 
 		return $new_id;
@@ -523,47 +523,49 @@ class Class_Profil extends Storm_Model_Abstract {
 	 * @param int $id_module
 	 * @return array | null
 	 */
-	public function getModuleAccueilConfig($id_module) {
-		if ($this->hasParentProfil()) {
-			$parent_config = $this->getParentProfil()->getModuleAccueilConfig($id_module);
-			if (isset($parent_config['division'])
-					&& (self::DIV_BANNIERE == $parent_config['division']))
-				return $parent_config;
-		}
+	public function getModuleAccueilConfig($id_module, $type_module) {
+		$cfg_accueil = $this->getCfgAccueilAsArray();
+
+		$module = (array_isset($id_module, $cfg_accueil['modules'])) ?
+			$cfg_accueil['modules'][$id_module] : 
+			['type_module' => $type_module,
+			 'preferences' => []];
+
+		if ($this->isModulePreferencesSharedBetweenProfils($module, $type_module))
+			return $this->getModuleAccueilConfigByType($type_module, self::DIV_BANNIERE);
+
+		return $this->getLocalModuleAccueilConfig($id_module);
+	}
 
+
+	/** @return array */
+	public function getLocalModuleAccueilConfig($id_module) {
 		$cfg_accueil = $this->getCfgAccueilAsArray();
 		$modules_config = $cfg_accueil['modules'];
 
-		if (array_key_exists($id_module, $modules_config)) {
-			if (!is_array($modules_config[$id_module]))
-				$modules_config[$id_module] = [];
+		$module = ['type_module' => null, 'preferences' => []];
+		if (!array_key_exists($id_module, $modules_config))
+			return [];
 
-			$module = array_merge(['type_module' => null,
-														 'preferences' => []],
-														$modules_config[$id_module]);
+		if (!is_array($modules_config[$id_module]))
+			$modules_config[$id_module] = [];
 
-			$default_prefs = Class_Systeme_ModulesAccueil::getInstance()
-				->getValeursParDefaut($module['type_module']);
-			$default_prefs = array_merge($default_prefs,['id_module' => $id_module]);
+		$module = array_merge($module, $modules_config[$id_module]);
 
-			$module['preferences'] = (!array_isset('preferences', $module)) ?
-				$default_prefs : array_merge($default_prefs, $module['preferences']);
-		
-			return $module;
-		}
+		$default_prefs = Class_Systeme_ModulesAccueil::getInstance()
+			->getValeursParDefaut($module['type_module']);
+		$default_prefs = array_merge($default_prefs, ['id_module' => $id_module]);
 
-		return [];
+		$module['preferences'] = (!array_isset('preferences', $module)) ?
+			$default_prefs : array_merge($default_prefs, $module['preferences']);
+		
+		return $module;
 	}
 
 
-	/**
-	 * @param string $type_module
-	 * @param int $division
-	 * @return array | null
-	 */
-	public function getModuleAccueilPreferencesByType($type_module, $division = null){
+	public function getModuleAccueilConfigByType($type_module, $division=null) {
 		if ($this->hasParentProfil() && 
-		  ($preferences = $this->getParentProfil()->getModuleAccueilPreferencesByType($type_module, $division)))
+		  ($preferences = $this->getParentProfil()->getModuleAccueilConfigByType($type_module, $division)))
 			return $preferences;
 		
 		$preferences = [];
@@ -571,21 +573,35 @@ class Class_Profil extends Storm_Model_Abstract {
 
 		foreach($cfg_accueil['modules'] as $key_module => $module ) {
 			foreach($module as $key => $value){
-				if (($module[$key]===$type_module) && (!$division  || ($module['division'] == $division))) {
-					return $this->getModuleAccueilPreferences($key_module);
+				if (($module[$key]===$type_module) 
+					&& (!$division  || ($module['division'] == $division))) {
+					return $this->getLocalModuleAccueilConfig($key_module, $type_module);
 				}
 			}
 		}
+
 		return [];
 	}
 
 
+	/**
+	 * @param string $type_module
+	 * @param int $division
+	 * @return array | null
+	 */
+	public function getModuleAccueilPreferencesByType($type_module, $division = null) {
+		$config = $this->getModuleAccueilConfigByType($type_module, $division);
+		return (array_key_exists('preferences', $config)) ?
+			$config['preferences'] : [];
+	}
+
+
 	/**
 	 * @param int $id_module
 	 * @return array
 	 */
-	public function getModuleAccueilPreferences($id_module){
-		$config = $this->getModuleAccueilConfig($id_module);
+	public function getModuleAccueilPreferences($id_module, $type_module){
+		$config = $this->getModuleAccueilConfig($id_module, $type_module);
 		if ($config)
 			return $config['preferences'];
 		return array();
@@ -684,6 +700,14 @@ class Class_Profil extends Storm_Model_Abstract {
 	}
 
 
+	/**
+	 * @return array
+	 */
+	public function getDefaultCfgNotice() {
+		return $this->_unserialize(self::getDefaultValue('cfg_notice'));
+	}
+
+
 	public function getDefaultCfgAccueil() {
 		return $this->_unserialize(self::getDefaultValue('cfg_accueil'));
 	}
@@ -1837,4 +1861,4 @@ class Class_Profil extends Storm_Model_Abstract {
 	}
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/library/Class/ScriptLoader.php b/library/Class/ScriptLoader.php
index f4dfeb605dcc1da9f4c712f1f35c3befb75b3951..fae28db2a34e530186cc48bbe6647b809ce94e5f 100644
--- a/library/Class/ScriptLoader.php
+++ b/library/Class/ScriptLoader.php
@@ -416,7 +416,7 @@ class Class_ScriptLoader {
 	public function addUserFilesStylSheet($file, $additional_attributes=null) {
 		if (!$file || !file_exists(USERFILESPATH.'/css/' . $file))
 			return $this;
-		return $this->addStyleSheet(USERFILESURL . '/css/' . $file, $additional_attributes);
+		return $this->addStyleSheet(USERFILESURL . '/css/' . $file, array_merge(['media' => 'all'], $additional_attributes));
 	}
 
 
@@ -441,6 +441,28 @@ class Class_ScriptLoader {
 	}
 	
 
+	/** 
+	 * @param $file string
+	 * @param $additional_attributes array
+	 * @return Class_ScriptLoader 
+	 */
+	public function addOPACPluginStyleSheet($file, $additional_attributes=null) {
+		return $this->addStyleSheet(BASE_URL . '/public/opac/java/' . $file, 
+																$additional_attributes);
+	}
+
+
+	/**
+	 * @param $file array
+	 * @param $additional_attributes array
+	 * @return Class_ScriptLoader
+	 */
+	public function addOPACPluginStyleSheets($files, $additional_attributes=null) {
+		foreach($files as $file) 
+			$this->addOPACPluginStyleSheet($file, $additional_attributes);
+		return $this;
+	}
+
 
 	/**
 	 * @return ScriptLoader
@@ -689,6 +711,15 @@ class Class_ScriptLoader {
 			->addStyleSheets([URL_ADMIN_JS.'jquery_ui/css/jquery-ui.custom.smoothness.min.css',
 												URL_ADMIN_JS.'treeselect/treeselect.css']);
 	}
+
+
+	public function loadDataTables() {
+		return $this
+			->loadJQuery()
+			->addAdminScript('DataTables/media/js/jquery.dataTables.min')
+			->addStyleSheet(URL_ADMIN_JS.'DataTables/media/css/jquery.dataTables.min');
+
+	}
 }
 
 ?>
\ No newline at end of file
diff --git a/library/Class/Systeme/ModulesAccueil/Calendrier.php b/library/Class/Systeme/ModulesAccueil/Calendrier.php
index fd157fd9f3a60841366b327b6d8e383c1044091f..663f03505b6ec186e01bfff4c72c429ec9955c88 100644
--- a/library/Class/Systeme/ModulesAccueil/Calendrier.php
+++ b/library/Class/Systeme/ModulesAccueil/Calendrier.php
@@ -38,7 +38,7 @@ class Class_Systeme_ModulesAccueil_Calendrier extends Class_Systeme_ModulesAccue
 	protected $_isPhone = true;
 
 	/** @var array */
-	protected $_defaultValues = array(
+	protected $_defaultValues = [
 		'titre' => 'Calendrier des animations',	 // Titre de la boite
 		'id_categorie' => '',										// Catégories d'articles à afficher. ex: 2-3-4
 		'display_cat_select' => false,					 // Afficher le sélecteur de catégories
@@ -51,8 +51,9 @@ class Class_Systeme_ModulesAccueil_Calendrier extends Class_Systeme_ModulesAccue
 		'display_mode' => 'Title', // Mode d'affichage Title, Summary, FullArticle,
 		'nb_events' => '3', // Nombre de rendez-vous à afficher
 		'display_calendar' => '1', // Mode d'affichage du calendrier: 0 (caché) / 1 (calendrier) / 2 (frise chrono)
-		'mode-affichage' => 'simple' // mode d'affichage des prochains événements dans la boite: none (aucun) / simple (titre + catégorie ou bib) / article (résumé article)
-	);
+		'mode-affichage' => 'simple', // mode d'affichage des prochains événements dans la boite: none (aucun) / simple (titre + catégorie ou bib) / article (résumé article)
+		'event_filter' => 'none' // filtre les articles par mois à l'affichage
+	];
 
 
 	/** @return array */
diff --git a/library/Class/Systeme/ModulesAccueil/Kiosque.php b/library/Class/Systeme/ModulesAccueil/Kiosque.php
index 98fb0bb44ad004df0dae28f8802dcc80d6ee1420..45c3559cad2016214d11ed398abb95e497065435 100644
--- a/library/Class/Systeme/ModulesAccueil/Kiosque.php
+++ b/library/Class/Systeme/ModulesAccueil/Kiosque.php
@@ -49,6 +49,8 @@ class Class_Systeme_ModulesAccueil_Kiosque extends Class_Systeme_ModulesAccueil_
 		'op_hauteur_img' => 0, // hauteur des vignettes
 		'op_transition' => '', //type de transition pour le diaporama
 		'op_largeur_img' => 0, //largeur des vignettes 
+		'op_auto' => 0, // Animation (0 = aucune)
+		'op_scroll' => 1, // Défilement (1 = image par image)
 		'rss_avis' => 1,    // afficher les RSS
 		'id_catalogue' => 0,
 		'id_panier' => 0
diff --git a/library/Class/Systeme/ModulesAccueil/MenuVertical.php b/library/Class/Systeme/ModulesAccueil/MenuVertical.php
index 0b7526435996487aa3512763a998557d7b6a708d..7d352bcc2aba85c41336cfcc99e8047e87fb32eb 100644
--- a/library/Class/Systeme/ModulesAccueil/MenuVertical.php
+++ b/library/Class/Systeme/ModulesAccueil/MenuVertical.php
@@ -38,10 +38,9 @@ class Class_Systeme_ModulesAccueil_MenuVertical extends Class_Systeme_ModulesAcc
 	protected $_isPhone = false;
 
 	/** @var array */
-	protected $_defaultValues = array(
-		'menu' => 'V', // Menu paramétré
-		'afficher_titre' => '1', // Afficher le titre du menu
-		'menu_deplie' => 0 // Le menu est déplié par défaut
-	);
+	protected $_defaultValues = ['menu' => 'V',
+	'afficher_titre' => '1',
+	'menu_deplie' => 0,
+	'new_html' => 0];
 }
 ?>
\ No newline at end of file
diff --git a/library/Class/Systeme/ModulesMenu.php b/library/Class/Systeme/ModulesMenu.php
index dafb0865cf3d3152db3a02129ed7f907ad39472a..84714befd0fb5f8edb4083a4152b454727b4b72b 100644
--- a/library/Class/Systeme/ModulesMenu.php
+++ b/library/Class/Systeme/ModulesMenu.php
@@ -119,6 +119,7 @@ class Class_Systeme_ModulesMenu extends Class_Systeme_ModulesAbstract {
 			"CVS" => new Class_Systeme_ModulesMenu_CVS(),
 			"NUMILOG" => new Class_Systeme_ModulesMenu_Numilog(),
 			"ARTEVOD" => new Class_Systeme_ModulesMenu_ArteVod(),
+			"LEKIOSK" => new Class_Systeme_ModulesMenu_LeKiosk(),
 			"MUSICME" => new Class_Systeme_ModulesMenu_MusicMe(),
 			"RESERVER_POSTE" => new Class_Systeme_ModulesMenu_ReserverPoste(),
 			'SUGGESTION_ACHAT' => new Class_Systeme_ModulesMenu_SuggestionAchat(),
diff --git a/library/Class/Systeme/ModulesMenu/ArteVod.php b/library/Class/Systeme/ModulesMenu/ArteVod.php
index 7b1f92f43070eb6588ef33a7ca5885cb2d9993f6..43f83728c1e97c62233acd65d894213b3969581c 100644
--- a/library/Class/Systeme/ModulesMenu/ArteVod.php
+++ b/library/Class/Systeme/ModulesMenu/ArteVod.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_ArteVod extends Class_Systeme_ModulesMenu_Null {
 	use Trait_Translator;
 
+	/** @var string */
+	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
+
 	/** @var string */
 	protected $_type_module = 'ArteVod';
 
diff --git a/library/Class/Systeme/ModulesMenu/LeKiosk.php b/library/Class/Systeme/ModulesMenu/LeKiosk.php
new file mode 100644
index 0000000000000000000000000000000000000000..c2c8c4c8c69f97ca2190e4b61545d9478839fe34
--- /dev/null
+++ b/library/Class/Systeme/ModulesMenu/LeKiosk.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+class Class_Systeme_ModulesMenu_LeKiosk extends Class_Systeme_ModulesMenu_Null {
+	use Trait_Translator;
+
+	/** @var string */
+	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
+
+	/** @var string */
+	protected $_type_module = 'LEKIOSK';
+
+	/** @var string */
+	protected $_libelle = 'Lien vers LeKiosk';
+	
+	protected $_url = [
+		'controller' => 'modules',
+		'action' => 'lekiosk'
+	];
+
+
+	public function getDynamiqueUrl() {
+		$user = Class_Users::getIdentity();
+		if (!$user) {
+			return Class_Url::assemble(['controller' => 'auth',
+														 'action' => 'login']);
+		}
+
+		if (!$user->hasRightAccesLeKiosk()) {
+			$this->setMessage($this->_('Votre abonnement ne permet pas d\'accéder aux ressources LeKiosk. Merci de contacter la médiathèque'));
+			return '';
+		}
+
+		return Class_LeKioskLink::newFor($user->getMail())->url();
+	}
+
+	public function isVisibleForProfil($profil) {
+		return Class_AdminVar::isLeKioskEnabled();
+	}
+	
+}
+?>
\ No newline at end of file
diff --git a/library/Class/Systeme/ModulesMenu/MusicMe.php b/library/Class/Systeme/ModulesMenu/MusicMe.php
index f152c74c3e690266094ae234fe5ca1c7d8f2f141..55aef79f4dd5113f776d5bf979d560d285065dde 100644
--- a/library/Class/Systeme/ModulesMenu/MusicMe.php
+++ b/library/Class/Systeme/ModulesMenu/MusicMe.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_MusicMe extends Class_Systeme_ModulesMenu_Null {
 	use Trait_Translator;
 
+	/** @var string */
+	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
+
 	/** @var string */
 	protected $_type_module = 'MusicMe';
 
diff --git a/library/Class/Systeme/ModulesMenu/Numilog.php b/library/Class/Systeme/ModulesMenu/Numilog.php
index 315ff305b262b14833bfb1a32853b60a1b35c9f7..a02e0307db1b21aa3464109f9f25e693ac1d8f4f 100644
--- a/library/Class/Systeme/ModulesMenu/Numilog.php
+++ b/library/Class/Systeme/ModulesMenu/Numilog.php
@@ -32,18 +32,21 @@ class Class_Systeme_ModulesMenu_Numilog extends Class_Systeme_ModulesMenu_Null {
 	protected $_url =  ['controller' => 'modules',
 											'action' => 'numilog'];
 
+
 	public function getNumilogUrlForUser($user) {
 		if ($user && $user->hasRightAccesNumilog())
 			return Class_NumilogLink::forUser($user)->url();
 		return Class_AdminVar::get('NUMILOG_URL');
 	}
 
+
 	public function getDynamiqueUrl() {
 		return ($user = Class_Users::getIdentity())
 			? $this->getNumilogUrlForUser($user)
 			: Class_AdminVar::get('NUMILOG_URL');
 	}
 
+
 	public function shouldOpenInNewWindow($preferences) {
 		return null != Class_Users::getIdentity();
 	}
diff --git a/library/Class/Systeme/PergameService.php b/library/Class/Systeme/PergameService.php
index b70300ea2bfa315b43b0a3c862b8078124dcd2e8..922e32feaf8376b999919dfb8b164a8935bea5c5 100644
--- a/library/Class/Systeme/PergameService.php
+++ b/library/Class/Systeme/PergameService.php
@@ -210,12 +210,12 @@ class Class_Systeme_PergameService {
 		// controle quota par carte
 		$nb = Class_Reservation::countBy(['idabon' => $id_abon]);
 		if ($nb >= $regles['Max_par_carte']) 
-			return ['popup' => 'La réservation est impossible car vous avez atteint le nombre maximum de réservations sur votre carte.'];
+			return ['erreur' => 'La réservation est impossible car vous avez atteint le nombre maximum de réservations sur votre carte.'];
 		
 		// controle quota par document
 		$nb = Class_Reservation::countBy(['id_notice_origine' => $id_origine]);
 		if ($nb >= $regles['Max_par_document'])
-			return ['popup' => 'La réservation est impossible car le nombre maximum de réservations pour ce document a été atteint (' . $regles["Max_par_document"] . ').'];
+			return ['erreur' => 'La réservation est impossible car le nombre maximum de réservations pour ce document a été atteint (' . $regles["Max_par_document"] . ').'];
 		
 		if (!$id_bib) 
 			$id_bib = 1;
diff --git a/library/Class/TypeDoc.php b/library/Class/TypeDoc.php
index 1a75d6726e29b53729ad610f8b7ab3aeb712e6fc..f72bed597f0c5284e15eb645b80a08d90541d133 100644
--- a/library/Class/TypeDoc.php
+++ b/library/Class/TypeDoc.php
@@ -27,6 +27,11 @@ class TypeDocLoader extends Storm_Model_Loader  {
 	}
 
 
+	public function getCurrentMaxId() {
+		return max(array_keys($this->_all_instances));
+	}
+
+
 	public function newInstance($attributes = null) {
 		$instance = new Class_TypeDoc();
 
@@ -183,6 +188,7 @@ class Class_TypeDoc extends Storm_Model_Abstract {
 	const TOUTAPPRENDRE = 108;
 	const AUDIO_RECORD = 109;
 	const NUMERIQUEPREMIUM = 110;
+	const CYBERLIBRIS = 111;
 
 	
 	public static function getDefaultTypeDocs() {
@@ -204,7 +210,8 @@ class Class_TypeDoc extends Storm_Model_Abstract {
 						self::CVS => 'Vidéos à la demande',
 						self::TOUTAPPRENDRE => 'Cours en ligne',
 						self::AUDIO_RECORD => 'Enregistrement audio',
-						self::NUMERIQUEPREMIUM => 'Numérique Premium'];
+						self::NUMERIQUEPREMIUM => 'Numérique Premium',
+						self::CYBERLIBRIS => 'Cyberlibris'];
 	}
 
 
diff --git a/library/Class/UserGroup.php b/library/Class/UserGroup.php
index 249ea45f334d111f1f4c421c227e2428c5c152fc..251399840c971938e0aa992224300828b8d03028 100644
--- a/library/Class/UserGroup.php
+++ b/library/Class/UserGroup.php
@@ -41,6 +41,8 @@ class Class_UserGroup extends Storm_Model_Abstract {
 	const RIGHT_ACCES_TOUTAPPRENDRE = 6;
 	const RIGHT_ACCES_MUSICME = 7;
 	const RIGHT_ACCES_NUMERIQUEPREMIUM = 20;
+	const RIGHT_ACCES_LEKIOSK = 21;
+	const RIGHT_ACCES_CYBERLIBRIS = 22;
 
 	// droits moderateurs
 	const RIGHT_USER_DOMAINES_SUPPRESSION_LIMIT = 8;
@@ -67,11 +69,13 @@ class Class_UserGroup extends Storm_Model_Abstract {
 		self::RIGHT_DIRIGER_FORMATION => 'Formations: diriger une formation' ,
 		self::RIGHT_ACCES_ARTEVOD => 'Bibliothèque numérique: accéder à ARTE VOD',
 		self::RIGHT_ACCES_NUMILOG => 'Bibliothèque numérique: accéder à Numilog',
+		self::RIGHT_ACCES_CYBERLIBRIS => 'Bibliothèque numérique: accéder à Cyberlibris',
 		self::RIGHT_ACCES_CVS => 'Bibliothèque numérique: accéder à CVS',
 		self::RIGHT_ACCES_VODECLIC => 'Bibliothèque numérique: accéder à Vodéclic',
 		self::RIGHT_ACCES_TOUTAPPRENDRE => 'Bibliothèque numérique: accéder à Tout Apprendre',
 		self::RIGHT_ACCES_NUMERIQUEPREMIUM => 'Bibliothèque numérique: accéder à Numérique Premium',
 		self::RIGHT_ACCES_MUSICME => 'Bibliothèque numérique: accéder à Music Me',
+		self::RIGHT_ACCES_LEKIOSK => 'Bibliothèque numérique: accéder à Lekiosk.com',
 		self::RIGHT_USER_DOMAINES_SUPPRESSION_LIMIT => 'Domaines: accès, modification et suppression limitée au créateur',
 		self::RIGHT_USER_DOMAINES_TOTAL_ACCESS => 'Domaines: accès total en modification et suppression',
 		self::RIGHT_USER_FILE_ACCESS => 'Articles: accès sur les répertoires images et file',
@@ -84,7 +88,7 @@ class Class_UserGroup extends Storm_Model_Abstract {
 		self::RIGHT_USER_SIGB_USER_READ => 'Administration: accès en lecture aux fiches adhérents SIGB',
 		self::RIGHT_USER_CONFIG_FRONT => 'Administration: accès à la configuration des boîtes et modules depuis l\'interface publique',
 		self::RIGHT_USER_PUBLICATION_DIRECTE => 'Articles: autorise la validation d\'un article par son auteur'
-		];
+	];
 
 
 	protected $_default_attribute_values = ['rights_token' => 0, 
@@ -105,6 +109,32 @@ class Class_UserGroup extends Storm_Model_Abstract {
 	}
 
 
+	public static function getActivatedRightDefinitionList() {
+		$rights = self::getRightDefinitionList();
+		$mapping = [
+			'Formation' => [Class_UserGroup::RIGHT_SUIVRE_FORMATION,
+			                Class_UserGroup::RIGHT_DIRIGER_FORMATION],
+			'ArteVod' => [Class_UserGroup::RIGHT_ACCES_ARTEVOD],
+			'CVS' => [Class_UserGroup::RIGHT_ACCES_CVS],
+			'Numilog' => [Class_UserGroup::RIGHT_ACCES_NUMILOG],
+			'Vodeclic' => [Class_UserGroup::RIGHT_ACCES_VODECLIC],
+			'Lekiosk' => [Class_UserGroup::RIGHT_ACCES_LEKIOSK],
+			'ToutApprendre' => [Class_UserGroup::RIGHT_ACCES_TOUTAPPRENDRE],
+			'MusicMe' => [Class_UserGroup::RIGHT_ACCES_MUSICME],
+			'NumeriquePremium' => [Class_UserGroup::RIGHT_ACCES_NUMERIQUEPREMIUM],
+		];
+
+		foreach($mapping as $type => $tokens) {
+			if (call_user_func(['Class_AdminVar', 'is' . $type . 'Enabled'])) 
+				continue;
+			foreach($tokens as $token)
+				unset($rights[$token]);
+		}
+
+		return $rights;
+	}
+
+
 	/**
 	 * @return array
 	 */
diff --git a/library/Class/Users.php b/library/Class/Users.php
index 411a4fa7c3e96694ba363f5211b6a619f5590d5b..2de091388982789c63ce2d27327967d15ad52a48 100644
--- a/library/Class/Users.php
+++ b/library/Class/Users.php
@@ -317,6 +317,7 @@ class Class_Users extends Storm_Model_Abstract {
 																					'civilite' => 0,
 																					'nom' => '',
 																					'prenom' => '',
+																					'pseudo' => '',
 																					'adresse' => '',
 																					'code_postal' => '',
 																					'ville' => '',
@@ -712,6 +713,11 @@ class Class_Users extends Storm_Model_Abstract {
 	}
 
 
+	public function hasRightAccesLeKiosk() {
+		return $this->isAbonneAndHasRightToAccess(Class_UserGroup::RIGHT_ACCES_LEKIOSK);
+	}
+
+
 	public function getFirstAvisByIdNotice($id_notice) {
 		$notice = Class_Notice::getLoader()->find($id_notice);
 		$avis = $notice->getAvisByUser($this);
diff --git a/library/Class/WebService/BibNumerique/Abstract.php b/library/Class/WebService/BibNumerique/Abstract.php
index c719d78f399f114b28f6773567b56ca095637d87..66d6e9c40bf7926542a13d3c064e872501651ce0 100644
--- a/library/Class/WebService/BibNumerique/Abstract.php
+++ b/library/Class/WebService/BibNumerique/Abstract.php
@@ -61,7 +61,7 @@ abstract class Class_WebService_BibNumerique_Abstract extends Class_WebService_A
 			$this->getLogger()->info(sprintf('Traitement de la page %s / %s',
 																			 $current_page,
 																			 $total_page));
-			$ress_numerique=$reader->getRessourcesNumeriques();
+			$ress_numerique = $reader->getRessourcesNumeriques();
 			$this->_harvested_ids = array_merge($this->_harvested_ids,
 				                                  $this->_importRessources($ress_numerique));
 			$current_page++;
diff --git a/library/Class/WebService/BibNumerique/Cyberlibris.php b/library/Class/WebService/BibNumerique/Cyberlibris.php
new file mode 100644
index 0000000000000000000000000000000000000000..c825d695b7c8e846fa99aba271f896c5e28c6610
--- /dev/null
+++ b/library/Class/WebService/BibNumerique/Cyberlibris.php
@@ -0,0 +1,66 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Class_WebService_BibNumerique_Cyberlibris extends Class_WebService_BibNumerique_Abstract {
+
+	const BASE_URL = 'http://oai-bibliovox.cyberlibris.fr/oai.aspx';
+	const CATEGORY_LABEL = 'Cyberlibris';
+
+
+	protected function _deleteNonHarvested() {
+		if (0 < count($this->getHarvestedIds()))
+			Class_Album::getLoader()
+			->deleteBy(['where' => 'url_origine="'.self::BASE_URL.'" and id_origine not in (\'' . implode("', '", $this->getHarvestedIds()) . '\')']);
+	}
+
+	
+	protected function _importRessources($ressources) {
+		$harvestedIds = [];
+		$this->_albums = [];
+		foreach ($ressources as $ressource) {
+			$harvestedIds[] = $ressource->getId();
+			if ($ressource->isAlreadyHarvested())
+				continue;
+
+			$this->_albums[] = $ressource->import();
+		}
+		return $harvestedIds;
+	}
+
+
+	protected function loadPage($page_number = 1) {
+		$reader = (new Class_WebService_BibNumerique_Cyberlibris_LivresNumeriquesReader());
+		$reader->parse();
+		return $reader;
+	}
+
+
+	public function isEnabled() {
+		return Class_AdminVar::isCyberlibrisEnabled();
+	}
+
+
+	public function getName() {
+		return 'Cyberlibris';
+	}
+}
+?>
\ No newline at end of file
diff --git a/library/Class/WebService/BibNumerique/Cyberlibris/LivreNumerique.php b/library/Class/WebService/BibNumerique/Cyberlibris/LivreNumerique.php
new file mode 100644
index 0000000000000000000000000000000000000000..52480584249f6c13044309fe5c0305441e194950
--- /dev/null
+++ b/library/Class/WebService/BibNumerique/Cyberlibris/LivreNumerique.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Class_WebService_BibNumerique_Cyberlibris_LivreNumerique extends Class_WebService_BibNumerique_RessourceNumerique {
+	protected $_record;
+	protected $_titre;
+
+
+	public function getBaseUrl(){
+		return Class_WebService_BibNumerique_Cyberlibris::BASE_URL;
+	}
+
+
+	public function fillAlbum($album) {
+		$album->beCyberlibris()
+			->setDescription($this->getDescription())
+			->setEditeur($this->getEditeur());
+		foreach($this->getAuthors() as $author) 
+			$album->addAuthor($author);
+		return $album;
+	}
+
+
+	public function getRessourceCategorieLibelle() {
+		return Class_WebService_BibNumerique_Cyberlibris::CATEGORY_LABEL;
+	}
+
+	public function setOaiId($data) {
+		$result = split('=', $data);
+		$this->_id = ($result) ? $result[1] : '';
+		$this->setExternalURI($data);
+	}
+}
+?>
\ No newline at end of file
diff --git a/library/Class/WebService/BibNumerique/Cyberlibris/LivresNumeriquesReader.php b/library/Class/WebService/BibNumerique/Cyberlibris/LivresNumeriquesReader.php
new file mode 100644
index 0000000000000000000000000000000000000000..91db13fc46bcfcbddef956ef7a6d461721c9907e
--- /dev/null
+++ b/library/Class/WebService/BibNumerique/Cyberlibris/LivresNumeriquesReader.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Class_WebService_BibNumerique_Cyberlibris_LivresNumeriquesReader extends Class_WebService_DublinCoreParser { 
+	protected $_total_count;
+	protected $_page_number;
+	protected $_page_size;
+	protected $_ressourcesNumeriques;
+	protected $livres;
+	protected $_logger;
+
+
+	public function getLogger() {
+		if (null == $this->_logger)
+			return new Zend_Log(new Zend_Log_Writer_Null());
+		return $this->_logger;
+	}
+
+
+	public function parse() {
+		$this->_total_count = $this->_page_number = 0;
+		$this->_page_size = 1;
+		$this->livres = [];
+		$url = Class_AdminVar::get('CYBERLIBRIS_URL');
+		$oaiws = new Class_WebService_OAI();
+
+		$listsize = ($this->_resumptionToken) ? $this->_resumptionToken->getListSize() : '100';
+		$this->getLogger()->info($listsize .' ressources dans la base');
+		$this->livres = $oaiws
+			->setOAIHandler($url)
+			->setNumericResourceClass('Class_WebService_BibNumerique_Cyberlibris_LivreNumerique')
+			->getRecordsResourcesNumerique();
+
+		while ($oaiws->hasNextRecords())
+			$this->livres = array_merge($this->livres, $oaiws->getNextNumericResources());
+
+		$this->_total_count = sizeof($this->livres);
+		$this->_page_number = 1;
+		$this->_page_size = $this->_total_count;
+		return $this;
+	}
+
+
+	public function getTotalCount() {
+		return $this->_total_count;
+	}
+
+
+	public function getPageNumber() {
+		return $this->_page_number;
+	}
+
+
+	public function getPageCount() {
+		return ceil($this->_total_count / $this->_page_size);
+	}
+
+
+	public function setRecords($records) {
+		$this->livres=$records;
+	}
+
+
+	public function getRessourcesNumeriques() {
+		return $this->livres;
+	}
+
+}
diff --git a/library/Class/WebService/BibNumerique/NumeriquePremium.php b/library/Class/WebService/BibNumerique/NumeriquePremium.php
index 46aa5910a12c400e0c6c9cc1d706efcd608f9fa6..7a1d29dfe5ef7dcb064219685d4612fdece89040 100644
--- a/library/Class/WebService/BibNumerique/NumeriquePremium.php
+++ b/library/Class/WebService/BibNumerique/NumeriquePremium.php
@@ -56,6 +56,7 @@ class Class_WebService_BibNumerique_NumeriquePremium extends Class_WebService_Bi
 
 
 class NumeriquePremiumReader {
+	const image_base_url = 'http://www.numeriquepremium.com/docserver/covers/';
 	protected $ressources=[];
 
 	public function parse($content) {
@@ -71,6 +72,7 @@ class NumeriquePremiumReader {
 			$ressource->setEditeur($line[15]);
 			$ressource->setId($line[11]);
 			$ressource->setExternalUri($line[9]);
+			$ressource->addPoster(self::image_base_url . $line[11] . '_large.jpg');
 			$this->ressources[] = $ressource;
 		}
 		return $this;
@@ -91,4 +93,4 @@ class NumeriquePremiumReader {
 		return $this->ressources;
 	}
 }
-?>
\ No newline at end of file
+?>
diff --git a/library/Class/WebService/BibNumerique/Numilog.php b/library/Class/WebService/BibNumerique/Numilog.php
index 7b04715e1d7040dab743c8feee9dcb8f06e2ca20..d1b5199604a6bd220532e92641ac9c3728d607c5 100644
--- a/library/Class/WebService/BibNumerique/Numilog.php
+++ b/library/Class/WebService/BibNumerique/Numilog.php
@@ -64,9 +64,6 @@ class Class_WebService_BibNumerique_Numilog extends Class_WebService_BibNumeriqu
 		$id_bib = Class_AdminVar::get('NUMILOG_OAI_IDBIB');
 		$content = $this->open_oai_url($url);
 
-		$builder = new Class_Xml_Builder();
-
-
 		$reader = $this->getRessourcesNumeriquesReader()->parse($content);
 		if (1 == $page_number) 
 			$this->getLogger()->info($reader->getTotalCount() .' ressources dans la base');
diff --git a/library/Class/WebService/BibNumerique/LivreNumerique.php b/library/Class/WebService/BibNumerique/Numilog/LivreNumerique.php
similarity index 87%
rename from library/Class/WebService/BibNumerique/LivreNumerique.php
rename to library/Class/WebService/BibNumerique/Numilog/LivreNumerique.php
index 02132ffbcbc0838cc0153640e0a3eaa03a118e25..50415ff877e16dc5740b088847c58c6558511041 100644
--- a/library/Class/WebService/BibNumerique/LivreNumerique.php
+++ b/library/Class/WebService/BibNumerique/Numilog/LivreNumerique.php
@@ -19,7 +19,7 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
 
-class Class_WebService_BibNumerique_LivreNumerique extends Class_WebService_BibNumerique_RessourceNumerique {
+class Class_WebService_BibNumerique_Numilog_LivreNumerique extends Class_WebService_BibNumerique_RessourceNumerique {
 	protected $_record;
 	protected $_titre;
 
@@ -35,6 +35,7 @@ class Class_WebService_BibNumerique_LivreNumerique extends Class_WebService_BibN
 			->setEditeur($this->getEditeur());
 		foreach($this->getAuthors() as $author) 
 			$album->addAuthor($author);
+		$this->addPoster('http://couverture.numilog.com/' . $this->_id.'_GRANDE.jpg');
 		return $album;
 	}
 
diff --git a/library/Class/WebService/BibNumerique/RessourceNumerique.php b/library/Class/WebService/BibNumerique/RessourceNumerique.php
index dc7801e81cc00e38c22fc916838563f850ea9a39..e211706d78a4f01311e9d7b6814f39397e5f57d6 100644
--- a/library/Class/WebService/BibNumerique/RessourceNumerique.php
+++ b/library/Class/WebService/BibNumerique/RessourceNumerique.php
@@ -321,7 +321,6 @@
 			return;
 		$explode_id=explode(':',$id);
 		$this->_id=$explode_id[count($explode_id)-1];
-		$this->addPoster('http://couverture.numilog.com/'.$this->_id.'_GRANDE.jpg');
 	}
 
 
diff --git a/library/Class/WebService/DublinCoreParser.php b/library/Class/WebService/DublinCoreParser.php
index 1da3c7f9e49a3e53d96d34c8108935dfab6a4d70..bd3683afbcc72ef59fd23945c7365687b7af66b7 100644
--- a/library/Class/WebService/DublinCoreParser.php
+++ b/library/Class/WebService/DublinCoreParser.php
@@ -32,10 +32,11 @@ class Class_WebService_DublinCoreParser {
 	protected $ressource_numerique;
 	protected $_records_ressources;
 	protected $visitor;
+
 	public function __construct() {
-		$this->_records = array();
+		$this->_records = [];
 		$this->_records_ressources = [];
-		$this->class_ressource_numerique=new Class_WebService_BibNumerique_RessourceNumerique();
+		$this->class_ressource_numerique = new Class_WebService_BibNumerique_RessourceNumerique();
 		$this->visitor = $this;
 	}
 
diff --git a/library/Class/WebService/OAI.php b/library/Class/WebService/OAI.php
index bc799d19c6f5b2ea86d1e37e2a2b3b9970ba2f83..b0ec108703e529ee02580d4d08d7d7dc9140c1bf 100644
--- a/library/Class/WebService/OAI.php
+++ b/library/Class/WebService/OAI.php
@@ -39,7 +39,8 @@
 class Class_WebService_OAI extends Class_WebService_Abstract {
 	protected static $_default_web_client;
 	protected $web_client;
-
+	protected $numeric_resource_class = 'Class_WebService_BibNumerique_Numilog_LivreNumerique';
+	protected $_listRecordsResumptionToken;
 	const ListSets = 'ListSets';
 	const ListRecords = 'ListRecords';
 
@@ -68,6 +69,17 @@ class Class_WebService_OAI extends Class_WebService_Abstract {
 	}
 
 
+	public function setNumericResourceClass($classname) {
+		$this->numeric_resource_class = $classname;
+		return $this;
+	}
+
+
+	public function getNumericResourceClass() {
+		return $this->numeric_resource_class;
+	}
+
+
 	public function getContent($url) {
 		return $this->getWebClient()->open_url($url);
 	}
@@ -111,8 +123,17 @@ class Class_WebService_OAI extends Class_WebService_Abstract {
 	}
 
 
-	public function getRecordsFromSet($set) {
+	public function getRecordsResourcesNumerique() {
 		$xml_data = $this->oaiAsks(self::ListRecords, 
+															 array('metadataPrefix' => 'oai_dc'
+																		 ));
+		return $this->parseListRecordsRessourcesNumeriqueXML($xml_data);
+
+	}
+
+
+	public function getRecordsFromSet($set) {
+		$xml_data = $this->oaiAsks(self::ListRecords,
 															 array('metadataPrefix' => 'oai_dc',
 																		 'set' => $set));
 		return $this->parseListRecordsXML($xml_data);
@@ -120,7 +141,6 @@ class Class_WebService_OAI extends Class_WebService_Abstract {
 
 
 	public function parseListRecordsXML($xml_data) {
-
 		$parser = new Class_WebService_DublinCoreParser();
 		$parser->parse($xml_data);
 		$this->setListRecordsResumptionToken($parser->getResumptionToken());
@@ -132,15 +152,18 @@ class Class_WebService_OAI extends Class_WebService_Abstract {
 		$parser = new Class_WebService_DublinCoreParser();
 		$parser->acceptVisitor($this);
 		$parser->parseRessourcesNumeriques($xml_data);
+		$this->setListRecordsResumptionToken($parser->getResumptionToken());
 		return $parser->getRecordsRessourceNumeriques();
 	}
 
+
 	public function getNewRessourceNumerique() {
-		return new Class_WebService_BibNumerique_LivreNumerique();
+		return new $this->numeric_resource_class;
 	}
 
 
 	public function hasNextRecords() {
+		if (!$this->getListRecordsResumptionToken()) return false;
 		return ($this->getListRecordsResumptionToken()->getToken() != null);
 	}
 
@@ -154,6 +177,14 @@ class Class_WebService_OAI extends Class_WebService_Abstract {
 		return $this->parseListRecordsXML($xml_data);
 	}
 
+	public function getNextNumericResources() {
+		if (!$this->hasNextRecords()) 
+			return array();
+		$xml_data = $this->oaiAsks(
+											 self::ListRecords, 
+									     array('resumptionToken' => $this->getListRecordsResumptionToken()->getToken()));
+		return $this->parseListRecordsRessourcesNumeriqueXML($xml_data);
+	}
 
 	public function setListRecordsResumptionToken($token) {
 		$this->_listRecordsResumptionToken = $token;
diff --git a/library/Class/WebService/OAI/Numilog.php b/library/Class/WebService/OAI/Numilog.php
deleted file mode 100644
index 3dcd753e0a13a71588d09504e6b8d13a14280589..0000000000000000000000000000000000000000
--- a/library/Class/WebService/OAI/Numilog.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
- *
- * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
- * along with AFI-OPAC 2.0; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
- */
-//////////////////////////////////////////////////////////////////////////////////////////
-// OPAC3 - Interrogation dépôts Open Archives Initiative
-//
-// Voir l'exploreur: http://re.cs.uct.ac.za/
-// Lister toutes les ensembles de Gallica: http://oai.bnf.fr/oai2/OAIHandler?verb=ListSets
-// Lister toutes les notices de l'ensemble gallica:5:54 : http://oai.bnf.fr/oai2/OAIHandler?verb=ListRecords&metadataPrefix=oai_dc&set=gallica:5:54
-// Outil Repository Explorer, très utile: http://re.cs.uct.ac.za/
-//////////////////////////////////////////////////////////////////////////////////////////
-
-/* Permet d'aller chercher les données depuis un entrepôt OAI
- * Utilisation:
- * $oai_service = new Class_WebService_OAI()
- * $oai_service->setOAIHandler('http://oai.bnf.fr/oai2/OAIHandler');
- * $oai_service->getSets()   //retourne les sets sous forme de tableau associatifs
- * $oai_service->getRecords('gallica'); //les 100 premiers records du set gallica
- * while ($oai_service->hasNextRecords())  //prends les enregistrements suivants 
- *     $oai->service->getNextRecords();    // tant qu'il y en a
- */
-class Class_WebService_OAI_Numilog extends Class_WebService_OAI {
-	protected static $_default_web_client;
-	protected $web_client;
-
-	const ListSets = 'ListSets';
-	const ListRecords = 'ListRecords';
-
-	public static function baseURL() {
-		return 'http://' . $_SERVER['SERVER_NAME'] . BASE_URL . '/opac/oai/request';
-	}
-
-
-
-	public function setOAIHandler($oai_handler) {
-		$this->oai_handler = $oai_handler;
-		return $this;
-	}
-
-
-
-
-	public function listRecords() {
-		return $this->oaiAsks(self::ListSets, array());
-	}
-
-
-	public function getSetsFromHandler($oai_handler) {
-		$this->setOAIHandler($oai_handler);
-		return $this->getSets();
-	}
-
-
-	public function getRecords() {
-		/* Pour l'instant ne gère pas le resumptionToken, ça suffit pour la démo*/
-		$xml_data = $this->listSets();
-		$setspecs = array();
-		$setnames = array();
-		if (0==preg_match_all('/<setSpec>([^<]*)<\/setSpec>/i', $xml_data, $setspecs))
-			return array();
-		preg_match_all('/<setName>([^<]*)<\/setName>/i', $xml_data, $setnames);
-
-		return array_combine($setspecs[1], $setnames[1]);
-	}
-
-
-	public function getRecordsFromHandlerAndSet($oai_handler, $set) {
-		$this->setOAIHandler($oai_handler);
-		return $this->getRecordsFromSet($set);
-	}
-
-
-	public function getRecordsFromSet($set) {
-		$xml_data = $this->oaiAsks(self::ListRecords, 
-															 array('metadataPrefix' => 'oai_dc',
-																		 'set' => $set));
-		return $this->parseListRecordsXML($xml_data);
-	}
-
-
-	protected function parseListRecordsXML($xml_data) {
-		$parser = new Class_WebService_DublinCoreParser();
-		$parser->acceptVisitor($this);
-		$parser->parse($xml_data);
-		$this->setListRecordsResumptionToken($parser->getResumptionToken());
-		return $parser->getRecords();
-	}
-
-	public function getNewRessourceNumerique() {
-		return new Class_WebService_BibNumerique_LivreNumerique();
-	}
-
-	public function hasNextRecords() {
-		return ($this->getListRecordsResumptionToken()->getToken() != null);
-	}
-
-
-	public function getNextRecords() {
-		if (!$this->hasNextRecords()) 
-			return array();
-		$xml_data = $this->oaiAsks(
-											 self::ListRecords, 
-									     array('resumptionToken' => $this->getListRecordsResumptionToken()->getToken()));
-		return $this->parseListRecordsXML($xml_data);
-	}
-
-	public function parseListRecordsRessourcesNumeriqueXML($xml_data) {
-		$parser = new Class_WebService_DublinCoreParser();
-		$parser->acceptVisitor($this);
-		$parser->parseRessourcesNumeriques($xml_data);
-		return $parser->getRecordsRessourceNumeriques();
-	}
-
-
-	public function setListRecordsResumptionToken($token) {
-		$this->_listRecordsResumptionToken = $token;
-		return $this;
-	}
-
-
-	public function getListRecordsResumptionToken() {
-		return $this->_listRecordsResumptionToken;
-	}
-
-
-	public function getTotalNumberOfRecords() {
-		if (!isset($this->_listRecordsResumptionToken)) return 0;
-		return $this->_listRecordsResumptionToken->getListSize();
-	}
-}
-
-?>
\ No newline at end of file
diff --git a/library/Class/WebService/SIGB/Orphee.php b/library/Class/WebService/SIGB/Orphee.php
index 4814d5db20c6ed0ee6e314cecdf81532c1d1be0d..944e69651a62f3bd1011727b26153347395a0fd8 100644
--- a/library/Class/WebService/SIGB/Orphee.php
+++ b/library/Class/WebService/SIGB/Orphee.php
@@ -26,7 +26,8 @@ class Class_WebService_SIGB_Orphee {
 		if (!isset(self::$service)) {
 			$instance = new self();
 			self::$service = Class_WebService_SIGB_Orphee_Service::getService($params['url_serveur'], 
-																																				isset($params['key']) ? $params['key'] : null);
+			isset($params['key']) ? $params['key'] : null,
+			$params['allow_hold_available_items'] ? $params['allow_hold_available_items'] : null);
 		}
 
 		return self::$service;
diff --git a/library/Class/WebService/SIGB/Orphee/Exemplaire.php b/library/Class/WebService/SIGB/Orphee/Exemplaire.php
new file mode 100644
index 0000000000000000000000000000000000000000..4c8678712e937a770a5ea45a9666f7042ea183bf
--- /dev/null
+++ b/library/Class/WebService/SIGB/Orphee/Exemplaire.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+class Class_WebService_SIGB_Orphee_Exemplaire extends Class_WebService_SIGB_Exemplaire {
+
+	CONST DISPO_LIBRE = 'En rayon';
+
+	protected $_allow_hold_available_items;
+
+	public function __construct($id, $allow_hold_available_items=null) {
+		parent::__construct($id);
+		$this->_allow_hold_available_items = $allow_hold_available_items;
+	}
+
+	public function isReservable() {
+		return (
+			parent::isReservable()
+			|| ( $this->isDisponible() &&  $this->_allow_hold_available_items )
+		);
+	}
+
+	public function isDisponible() {
+		return self::DISPO_LIBRE == $this->disponibilite;
+	}
+}
\ No newline at end of file
diff --git a/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php b/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php
index 20bd39d1d642ffc6a74e6845635f21be2e2465ee..6193fd981c1f432570ad0ebbfe7d283e5abc6fd8 100644
--- a/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php
+++ b/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php
@@ -24,14 +24,20 @@ class Class_WebService_SIGB_Orphee_GetLstDmtResponseReader extends Class_WebServ
 	const CODE_SITUTATION_RESERVE = 3;
 	const CODE_SITUTATION_ARCHIVAGE = 14;
 	const CODE_SITUTATION_CATALOGAGE = 17;
+
+	protected $_allow_hold_available_items;
 	
 	/**
 	 * @return Class_WebService_SIGB_Orphee_GetLstDmtResponseReader
 	 */
-	public static function newInstance() {
-		return new self();
+	public static function newInstance($allow_hold_available_items) {
+		return new self($allow_hold_available_items);
 	}
 
+	public function __construct($allow_hold_available_items=null) {
+		$this->_allow_hold_available_items = $allow_hold_available_items;
+	} 
+
 
 	public function startDocuments() {
 		$this->_notice = new Class_WebService_SIGB_Notice(0);
@@ -39,7 +45,7 @@ class Class_WebService_SIGB_Orphee_GetLstDmtResponseReader extends Class_WebServ
 
 
 	public function startDocument() {
-		$this->_current_exemplaire = new Class_WebService_SIGB_Exemplaire(0);
+		$this->_current_exemplaire = new Class_WebService_SIGB_Orphee_Exemplaire(0, $this->_allow_hold_available_items);
 		$this->_notice->addExemplaire($this->_current_exemplaire);
 	}
 
@@ -67,8 +73,6 @@ class Class_WebService_SIGB_Orphee_GetLstDmtResponseReader extends Class_WebServ
 	public function endSit($data) {
 		$reservable = ($data==self::CODE_SITUTATION_SORTI || $data==self::CODE_SITUTATION_RESERVE);
 		$this->_current_exemplaire->setReservable($reservable);
-
-
 		$visible = ($data!=self::CODE_SITUTATION_ARCHIVAGE && $data!=self::CODE_SITUTATION_CATALOGAGE);
 		$this->_current_exemplaire->setVisibleOPAC($visible);
 	}
diff --git a/library/Class/WebService/SIGB/Orphee/Service.php b/library/Class/WebService/SIGB/Orphee/Service.php
index ef3808272e87dcfd038153fef21984cd50377937..683e2d2734c294d84c16938a1d3d67741f23d65e 100644
--- a/library/Class/WebService/SIGB/Orphee/Service.php
+++ b/library/Class/WebService/SIGB/Orphee/Service.php
@@ -24,11 +24,12 @@ class Class_WebService_SIGB_Orphee_Service extends Class_WebService_SIGB_Abstrac
 	protected $_session_strategy;
 	protected $_wsdl;
 	protected $_key;
+	protected $_allow_hold_available_items;
 	protected $_soap_options;
 
 
-	public static function getService($wsdl, $key=null) {
-		return new self($wsdl, $key,
+	public static function getService($wsdl, $key=null, $allow_hold_available_items=null) {
+		return new self($wsdl, $key, $allow_hold_available_items,
 										['features' => SOAP_SINGLE_ELEMENT_ARRAYS,
 										 'cache_wsdl' => WSDL_CACHE_BOTH,
 										 'trace' => false]);
@@ -38,9 +39,10 @@ class Class_WebService_SIGB_Orphee_Service extends Class_WebService_SIGB_Abstrac
 	/**
 	 * @param Class_WebService_MappedSoapClient $search_client
 	 */
-	public function __construct($wsdl, $key, $soap_options) {
+	public function __construct($wsdl, $key, $allow_hold_available_items, $soap_options) {
 		$this->_wsdl = $wsdl;
 		$this->_key = $key;
+		$this->_allow_hold_available_items = $allow_hold_available_items;
 		$this->_soap_options = $soap_options;
 	}
 
@@ -261,7 +263,8 @@ class Class_WebService_SIGB_Orphee_Service extends Class_WebService_SIGB_Abstrac
 
 		$result = $this->getSearchClient()->GetLstDmt(GetLstDmt::withNtcAndFas($id, $tome));
 		$xml = $result->getXml();
-		$notice = Class_WebService_SIGB_Orphee_GetLstDmtResponseReader::newInstance()->getNoticeFromXML($xml);
+		$notice = Class_WebService_SIGB_Orphee_GetLstDmtResponseReader::newInstance($this->_allow_hold_available_items)
+			->getNoticeFromXML($xml);
 
 		return !isset($notice) 
 			|| (null == ($exemplaire = $notice->getExemplaireByCodeBarre($code_barre)))
diff --git a/library/Class/WebService/XMLParser.php b/library/Class/WebService/XMLParser.php
index 19b6c3b529c19640431e38a5abdc278fa7b69501..4a2566f8db38d9587c7a217308d574b1828a3d1d 100644
--- a/library/Class/WebService/XMLParser.php
+++ b/library/Class/WebService/XMLParser.php
@@ -34,18 +34,58 @@ class Class_WebService_XMLParser {
 		return new static();
 	}
 
+	/**
+	 * @param string $xml
+	 * @return string
+	 */
+	protected function stripInvalidXml($xml) {
+		if (empty($xml)) {
+			return '';
+		}
+
+		$ret = "";
+		$length = strlen($xml);
+		for ($i=0; $i < $length; $i++) {
+			$current = ord($xml{$i});
+			// http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char
+			if (($current == 0x9) ||
+			($current == 0xA) ||
+			($current == 0xD) ||
+			(($current >= 0x20) && ($current <= 0xD7FF)) ||
+			(($current >= 0xE000) && ($current <= 0xFFFD)) ||
+			(($current >= 0x10000) && ($current <= 0x10FFFF)))
+				{
+					$ret .= chr($current);
+				} else {
+				$ret .= " ";
+			}
+		}
+		return $ret;
+	}
 
 	/**
 	 * @param string $xml
 	 * @return Class_WebService_XMLParser
 	 */
 	public function parse($xml) {
-		$this->_parsed_xml = $xml ;
+		$xml = preg_replace_callback("/(&#[0-9]+;)/", function($m) {
+			return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES");
+		}, $xml);
+		$xml = $this->stripInvalidXml($xml);
+		$this->_parsed_xml = $xml;
 		$this->_parents = array() ;
 		$parser = $this->_createParser() ;
-		xml_parse($parser, $xml) ;
-//		echo xml_error_string(xml_get_error_code($parser));
-		// echo xml_get_current_line_number($parser);
+		$ok = xml_parse($parser, $xml) ;
+		if (!$ok) {
+			$error_code = xml_get_error_code($parser);
+			$error_string = xml_error_string($error_code);
+			$line = xml_get_current_line_number($parser);
+			$column = xml_get_current_column_number($parser);
+			$byte = xml_get_current_byte_index($parser);
+			$error_msg = "XML parser error: $error_string"
+				. " at line $line column $column byte $byte (code: $error_code)";
+			error_log($error_msg);
+		}
 		xml_parser_free($parser) ;
 		return $this ;
 	}
@@ -109,7 +149,7 @@ class Class_WebService_XMLParser {
 	public function endElement($parser, $tag) {
 		$method_name = 'end'.$this->tagWithoutNamespace($tag);
 
-		if (method_exists($this->_element_handler, $method_name))  {
+		if (method_exists($this->_element_handler, $method_name))	 {
 			$this->_element_handler->$method_name($this->_current_data);
 		}
 		array_pop($this->_parents) ;
@@ -144,4 +184,4 @@ class Class_WebService_XMLParser {
 	}
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/library/Trait/EchoError.php b/library/Trait/EchoError.php
new file mode 100644
index 0000000000000000000000000000000000000000..c8ab45c88de953a0d88a542dbac62da0e032bc4b
--- /dev/null
+++ b/library/Trait/EchoError.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+trait Trait_EchoError {
+	protected static $_echo;
+
+	public function echoError($error) {
+		return call_user_func(function($args) {
+			if(!self::$_echo)
+				echo $args;
+			return $args;
+		},$error);
+	}
+	
+	
+	public static function setEcho($echo) {
+		self::$_echo = $echo;
+	}
+}
+?>
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/Abonne/AccesFiche.php b/library/ZendAfi/View/Helper/Abonne/AccesFiche.php
index 052085d83cac9b01176dc131b8dcbcc8cd33cb01..772a2767f14853646427f841b12df203107ad679 100644
--- a/library/ZendAfi/View/Helper/Abonne/AccesFiche.php
+++ b/library/ZendAfi/View/Helper/Abonne/AccesFiche.php
@@ -49,9 +49,7 @@ class ZendAfi_View_Helper_Abonne_AccesFiche extends Zend_View_Helper_HtmlElement
 
 
 	public function divAbonneTitre($html, $user) {
-		return sprintf('<div class="abonneTitre">%s<span>%s</span></div>', 				
-									 $user->getNomAff(),
-									 $html);
+		return $this->view->tag('div', $this->view->abonne_NamesOrLogin($user, $html), ['class' => 'abonneTitre']);
 	}
 }
 
diff --git a/library/ZendAfi/View/Helper/Abonne/NamesOrLogin.php b/library/ZendAfi/View/Helper/Abonne/NamesOrLogin.php
new file mode 100644
index 0000000000000000000000000000000000000000..438753303994b24b54a8a88a86558a9593d79296
--- /dev/null
+++ b/library/ZendAfi/View/Helper/Abonne/NamesOrLogin.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class ZendAfi_View_Helper_Abonne_NamesOrLogin extends Zend_View_Helper_HtmlElement {
+	public function Abonne_NamesOrLogin($user, $html = '') {
+		$html = $html ? $this->view->tag('span', $html): '';
+		return ($user->hasPseudo() 
+		? $this->userPseudo($user) 
+		: $this->userNames($user))
+			.$html;
+	}
+
+	protected function userPseudo($user) {
+		return $this->view->escape($user->getPseudo());
+	}
+
+	
+	protected function userNames($user) {
+		return $this->view->escape($user->getPrenom()). $this->view->tag('span', $this->view->escape($user->getNom()), ['data-name' => 'last-name']);
+		
+	}
+}
+?>
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/Abonne/RetourFiche.php b/library/ZendAfi/View/Helper/Abonne/RetourFiche.php
index 6d9b3a43c994863b5583e2389e3d5b879e0118f2..46c5cb116d022a1a8c9588c06a24752c734d016c 100644
--- a/library/ZendAfi/View/Helper/Abonne/RetourFiche.php
+++ b/library/ZendAfi/View/Helper/Abonne/RetourFiche.php
@@ -22,7 +22,7 @@ class ZendAfi_View_Helper_Abonne_RetourFiche extends ZendAfi_View_Helper_Abonne_
 	public function abonne_retourFiche() {
 	 return '<div style="margin-top:5px">
 		         <a href="'.$this->view->url(['controller' => 'abonne', 'action' => 'fiche'], null, true).'">'
-	           .$this->view->_('Retour à la fiche utilisateur').'</a>
+	           .$this->view->_('Retour à mon compte').'</a>
 		       </div>';
 	}
 }
diff --git a/library/ZendAfi/View/Helper/Accueil/Base.php b/library/ZendAfi/View/Helper/Accueil/Base.php
index 91a4899f249e2634888f9357431f3877a6985ad9..ea87bd314056ad73c036c9842c257b09a8cff644 100644
--- a/library/ZendAfi/View/Helper/Accueil/Base.php
+++ b/library/ZendAfi/View/Helper/Accueil/Base.php
@@ -289,12 +289,13 @@ class ZendAfi_View_Helper_Accueil_Base extends ZendAfi_View_Helper_ModuleAbstrac
 	}
 
 
-	/*
+	/**
 	 * Renvoie l'instance ZendAfi_View_Helper_* selon le type du module dont l'id
 	 * est donnée
 	 */
 	public static function getModuleHelper($id_module, $view) {
-		$module_params = Class_Profil::getCurrentProfil()->getModuleAccueilConfig($id_module);
+		$module_params = Class_Profil::getCurrentProfil()
+			->getLocalModuleAccueilConfig($id_module);
 		return self::getModuleHelperFromParams($id_module, $module_params, $view);
 	}
 
@@ -365,6 +366,10 @@ class ZendAfi_View_Helper_Accueil_Base extends ZendAfi_View_Helper_ModuleAbstrac
 		return "none" == $this->getDisplayType();
 	}
 
+	public function isDisplayWall() {
+		return "wall" == $this->getDisplayType();
+	}
+
 
 	public function renderSlideShowScriptsOn($script_loader, $selector, $options=null) {
 		$this->view->getHelper('TagSlideshow')
diff --git a/library/ZendAfi/View/Helper/Accueil/Calendar.php b/library/ZendAfi/View/Helper/Accueil/Calendar.php
index a77d1228a5d81a732be13af65f5ba8d3904f09aa..0433fa8f48774ebf4649175952b2f45edbbbd107 100644
--- a/library/ZendAfi/View/Helper/Accueil/Calendar.php
+++ b/library/ZendAfi/View/Helper/Accueil/Calendar.php
@@ -56,9 +56,10 @@ class ZendAfi_View_Helper_Accueil_Calendar extends ZendAfi_View_Helper_Accueil_B
 			$this->rss_interne = $this->_getRSSurl('cms', 'calendarrss');
 		
 
-		$param = array();
-		if (array_isset('display_date', $this->preferences))
-					$param['DATE'] = $this->preferences['display_date'];
+		$param = [];
+		
+
+		$param['DATE'] = array_isset('display_date', $this->preferences) ? $this->preferences['display_date'] : '';
 		$param['URL']='';
 		$param['ID_BIB']=Class_Profil::getCurrentProfil()->getIdSite();
 		$param['NB_NEWS']=(int)$this->preferences['nb_events'];
@@ -70,6 +71,8 @@ class ZendAfi_View_Helper_Accueil_Calendar extends ZendAfi_View_Helper_Accueil_B
 		$param['ALEATOIRE'] = 1;
 		$param['MODE_AFFICHAGE'] = array_key_exists('mode-affichage', $this->preferences) ? $this->preferences['mode-affichage'] : 'simple';
 		$param['DISPLAY_CALENDAR'] = $this->preferences['display_calendar'];
+		$param['EVENT_FILTER'] = array_isset('event_filter', $this->preferences) ? $this->preferences['event_filter'] : '';
+		;
 	
 		$this->contenu = $this->view->calendarContent($param);
 
diff --git a/library/ZendAfi/View/Helper/Accueil/ConteneurDeuxColonnes.php b/library/ZendAfi/View/Helper/Accueil/ConteneurDeuxColonnes.php
index 9565167c3cc1b98f0677dd1f0ebbaf43588aa9ff..0d31aac9e6821fad21258998fc32457b1e38ef82 100644
--- a/library/ZendAfi/View/Helper/Accueil/ConteneurDeuxColonnes.php
+++ b/library/ZendAfi/View/Helper/Accueil/ConteneurDeuxColonnes.php
@@ -70,13 +70,10 @@ class ZendAfi_View_Helper_Accueil_ConteneurDeuxColonnes extends ZendAfi_View_Hel
 		$modules_accueil = new Class_Systeme_ModulesAccueil();
 		$preferences = $modules_accueil->getValeursParDefaut($type_module);
 
-		$config = array("preferences" => $preferences,
-										"type_module" => $type_module);
+		$config = ["preferences" => $preferences,
+							 "type_module" => $type_module];
 
-		
-
-
-		$my_config = $profil->getModuleAccueilConfig($this->id_module);
+		$my_config = $profil->getModuleAccueilConfig($this->id_module, $type_module);
 		$my_config["preferences"][$id_key] = $id_module;
 
 		$profil
diff --git a/library/ZendAfi/View/Helper/Accueil/MenuVertical.php b/library/ZendAfi/View/Helper/Accueil/MenuVertical.php
index 7f15586699ca7421c5d377f5911844349333f24f..a5026e126c388b5abdaf605730f5666ff8390aa9 100644
--- a/library/ZendAfi/View/Helper/Accueil/MenuVertical.php
+++ b/library/ZendAfi/View/Helper/Accueil/MenuVertical.php
@@ -7,7 +7,7 @@
  * the Free Software Foundation.
  *
  * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
+g * is applied to this software (see README file).
  *
  * AFI-OPAC 2.0 is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -38,7 +38,6 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue
 	 */
 	public function getHtml()	{
 		extract($this->preferences);
-		
 		$menu = $this->preferences['menu'];
 		$menu_deplie = $this->preferences['menu_deplie'];
 		$afficher_titre = $this->preferences['afficher_titre'];
@@ -71,17 +70,9 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue
 		if ('1' == $afficher_titre)
 			$titre = array_last(explode(':: ', $config['libelle']));
 
-		$contenu = '<div class="menuGauche"><ul class="menuGauche">';
-		foreach ($config['menus'] as $entree) {
-			$contenu .= $this->_getLigne($entree);
-			if (array_isset('sous_menus', $entree)) {
-				$contenu .= sprintf('<li class="menuGauche" %s><ul>', $this->_li_style);
-				foreach ($entree["sous_menus"] as $sous_menu)
-					$contenu .= $this->_getLigne($sous_menu);
-				$contenu .= '</ul></li>';
-			}
-		}
-		$contenu .= '</ul></div>';
+		$contenu = $this->preferences['new_html'] 
+			? $this->_getContentHtml($config['menus']) 
+			: $this->_getContentAsOldHtml($config);
 
 		$this->titre = $titre;
 		$this->contenu = $contenu;
@@ -287,6 +278,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue
 	 * @return string
 	 */
 	private function _renderListItem($menuitem, $url=null, $target=null) {
+	
 		$a_href = 'href="'. ($url ? htmlspecialchars($url) : '#') . '"';
 		$a_target = $target ? "target='$target'" : "";
 
@@ -302,7 +294,12 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue
 			htmlspecialchars($menuitem["libelle"]).
 			'</a>';
 
+		if($this->preferences['new_html']=='1') {
+			$content.= $this->_getSubItemsHtml($menuitem['sous_menus']);
+		}
+
 		$content .= '</li>';
+				
 
 		return $content;
 	}
@@ -333,4 +330,48 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue
 			: 'menuGauche';
 
 	}
+
+
+	protected function _getContentAsOldHtml($config) {
+		$contenu = '<div class="menuGauche"><ul class="menuGauche">';
+		foreach ($config['menus'] as $entree) {
+			$contenu .= $this->_getLigne($entree);
+			if (array_isset('sous_menus', $entree)) {
+				$contenu .= sprintf('<li class="menuGauche" %s><ul>', $this->_li_style);
+				foreach ($entree["sous_menus"] as $sous_menu)
+					$contenu .= $this->_getLigne($sous_menu);
+				$contenu .= '</ul></li>';
+			}
+		}
+		return $contenu .= '</ul></div>';
+	}
+
+
+	protected function _getContentHtml($menus) {
+		$menus_li = '';
+
+		foreach($menus as $item) {
+			$menus_li.= $this->_getLigne($item);
+		}
+		
+		$menu = $this->view->tag('ul', $menus_li);
+		return $this->view->tag('div', $menu, ['class' => 'menu_wrapper']);
+		;
+	}
+	
+
+	protected function _getSubItemsHtml($sub_items) {
+		$sub_items = array_filter($sub_items);
+		if(count($sub_items)<1)
+			return '';
+		
+		$html = '';
+		foreach($sub_items as $item) {
+			$html.= $this->_getLigne($item);
+		}
+
+		return $this->view->tag('ul', $html);
+	}
+	
 }
+?>
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php b/library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php
index 94219415d01ca4ffdc8859a1c82114ea9ff0e32f..c2285e7b37db341310efb848fa1475fbc2aa55ec 100644
--- a/library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php
+++ b/library/ZendAfi/View/Helper/Admin/MenuGaucheAdmin.php
@@ -122,6 +122,12 @@ class ZendAfi_View_Helper_Admin_MenuGaucheAdmin extends ZendAfi_View_Helper_Base
 											Class_AdminVar::isNumilogEnabled() 
 											&& $this->filterAdmin($this->user))
 
+			/* disabled until interactive harvesting is implemented
+			.$this->addMenu("oai_16.png",				$this->translate()->_("Cyberlibris"), "/admin/harvest/cyberlibris-browse",	
+											Class_AdminVar::isCyberlibrisEnabled() 
+											&& $this->filterAdmin($this->user))
+			*/
+
 			.$this->addMenu("oai_16.png",				$this->translate()->_("Tout Apprendre"), "/admin/harvest/toutapprendre-browse",	
 											Class_AdminVar::isToutApprendreEnabled() 
 											&& $this->filterAdmin($this->user))
diff --git a/library/ZendAfi/View/Helper/Article/RenderAbstract.php b/library/ZendAfi/View/Helper/Article/RenderAbstract.php
index e6d09b1676396de04df2a6908e34abbee97f3400..cfad1c1fbc2512c871491da185e299d46a264b80 100644
--- a/library/ZendAfi/View/Helper/Article/RenderAbstract.php
+++ b/library/ZendAfi/View/Helper/Article/RenderAbstract.php
@@ -29,7 +29,7 @@ abstract class ZendAfi_View_Helper_Article_RenderAbstract extends ZendAfi_View_H
 				.$this->renderTitreHeader($article)
 				.$this->renderDraftStatus($article)
 				.$this->renderArticleInfo($article)
-				.$this->view->tagArticleEvent($article)
+				.$this->tagArticleEvent($article)
 				.'</header>'
 				.'<div class="article_content">'
 				.$this->renderContent($article)
@@ -45,6 +45,11 @@ abstract class ZendAfi_View_Helper_Article_RenderAbstract extends ZendAfi_View_H
 	}
 
 
+	public function tagArticleEvent($article) {
+		return $this->view->tagArticleEvent($article);
+	}
+
+
 	public function renderArticleHTML($html, $article) {
 		return $this->getRenderContainerStrategy()->renderArticleHTML($html, $article);
 	}
@@ -88,9 +93,21 @@ abstract class ZendAfi_View_Helper_Article_RenderAbstract extends ZendAfi_View_H
 		if (!$article->hasSummary())
 			return $article->getFullContent();
 
-		return $article->getSummary() . $this->view->tagAnchor($this->view->url($article->getUrl()),
-																													 $this->view->_("Lire l'article complet"),
-																													 ['class' => 'article_read_full']);
+		return $this->renderSummary($article);
+	}
+
+
+	public function renderSummary($article) {
+		return $article->getSummary() . $this->renderReadFullArticle($article);
+	}
+
+
+	public function renderReadFullArticle($article) {
+		if (!$article->hasSummary())
+			return '';
+		return $this->view->tagAnchor($this->view->url($article->getUrl()),
+ 		$this->view->_("Lire l'article complet"),
+		['class' => 'article_read_full']);
 	}
 
 
diff --git a/library/ZendAfi/View/Helper/Article/RenderWall.php b/library/ZendAfi/View/Helper/Article/RenderWall.php
new file mode 100644
index 0000000000000000000000000000000000000000..7c21447cac8fd5e9c0fa9500ccbdb2e79cb56158
--- /dev/null
+++ b/library/ZendAfi/View/Helper/Article/RenderWall.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+class ZendAfi_View_Helper_Article_RenderWall extends ZendAfi_View_Helper_Article_RenderAbstract { 
+	public function article_RenderWall($article) {
+		return $this->renderArticle($article, 'article_wrapper');
+	}
+
+	public function renderTitreHeader($article) {
+		return $this->view->tagArticleInfoEvent($article,$this->renderTitre($article));
+	}
+
+
+	public function renderArticleInfo($article) {
+		return $this->renderReadFullArticle($article);
+	}
+
+
+	public function renderTitre($article) {
+		return $article->getCacherTitre() ? '' : parent::renderTitre($article);
+	}
+
+
+	public function renderLieu($article) {
+		return '';
+	}
+
+
+	public function renderSummary($article) {
+		return $article->getSummary();
+	}
+
+
+	public function renderAvis($article) {
+		return '';
+	}
+}
+?>
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/BarreNav.php b/library/ZendAfi/View/Helper/BarreNav.php
index 567136eda35db09f7c58d1ff4402f38c506e849a..1422bc9b30d2f80851daa191e65d0d2f1b835380 100644
--- a/library/ZendAfi/View/Helper/BarreNav.php
+++ b/library/ZendAfi/View/Helper/BarreNav.php
@@ -28,7 +28,8 @@ class ZendAfi_View_Helper_BarreNav extends Zend_View_Helper_HtmlElement {
 		foreach($profils as $profil)
 			$links []= ['url' => $profil->getUrl(),
 									'label' => $profil->getLibelle()];
-
+		
+		$links[0]['url'] = Class_Profil::getPortail()->getUrl();
 		$links[0]['label'] = $this->_('Accueil');
 
 		$html = '<div class="barre_nav">';
diff --git a/library/ZendAfi/View/Helper/BoutonIco.php b/library/ZendAfi/View/Helper/BoutonIco.php
index 258e5d427e8a54f0d5fb294c855a1fb7f754f652..81b15b6b3ca3b1c03526124888d4e034502a4fe7 100644
--- a/library/ZendAfi/View/Helper/BoutonIco.php
+++ b/library/ZendAfi/View/Helper/BoutonIco.php
@@ -18,83 +18,66 @@
  * along with AFI-OPAC 2.0; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
-//////////////////////////////////////////////////////////////////////////////////////////
-// OPAC3 :	Bouton image
-//////////////////////////////////////////////////////////////////////////////////////////
 
-class ZendAfi_View_Helper_BoutonIco extends ZendAfi_View_Helper_BaseHelper
-{
-	//----------------------------------------------------------------------------------
-	// Main (arguments variables)
-	//----------------------------------------------------------------------------------
-	function boutonIco()	{
-		for( $i=0; $i < func_num_args(); $i++) $args[] = func_get_arg($i);
-		$type = '';
-		// Recup des paramètres
-		for($i=0; $i< count($args); $i++)
-		{
-			$attrib = $this->splitArg($args[$i]);
-			switch($attrib[0])
-			{
-				case "picto" : $picto=URL_ADMIN_IMG.$attrib[1]; break;
-				case "url" : $url=BASE_URL. "/". $attrib[1]; break;
-				case "bulle" : $bulle=$this->traduire($attrib[1]); break;
-			  case "mailto" : $url='mailto:'.$attrib[1]; break;
-				case "type" : // Types prédéterminés
-				$type=strtoupper($attrib[1]);
+class ZendAfi_View_Helper_BoutonIco extends ZendAfi_View_Helper_BaseHelper {
+	public function boutonIco()	{
+		$this->type = $this->url = $this->picto = $this->bulle = '';
+		$this->delete = false;
 
-				if($type=="ADD")
-				{
-					$picto=URL_ADMIN_IMG."ico/add.gif";
-					$bulle=$this->traduire("Ajouter");
-				}
-				elseif($type=="EDIT")
-				{
-					$picto=URL_ADMIN_IMG."ico/edit.gif";
-					$bulle=$this->traduire("Modifier");
-				}
-				elseif($type=="DEL")
-				{
-					$picto=URL_ADMIN_IMG."ico/del.gif";
-					$bulle=$this->traduire("Supprimer");
-				}
-				elseif($type=="CONFIRM")
-				{
-					$picto=URL_ADMIN_IMG."ico/coche_verte.gif";
-					$bulle=$this->traduire("Confirmer");
-				}
-				elseif($type=="VALIDATE")
-				{
-					$picto=URL_ADMIN_IMG."ico/coche_verte.gif";
-					$bulle=$this->traduire("Valider");
-				}
-				elseif($type=="TEST")
-				{
-					$picto=URL_ADMIN_IMG."ico/tester.gif";
-					$bulle=$this->traduire("Tester");
-				}
-				elseif($type=="SHOW")
-				{
-					$picto=URL_ADMIN_IMG."ico/show.gif";
-					$bulle=$this->traduire("Visualiser");
-				}
-				elseif($type=="MAIL")
-				{
-					$picto=URL_ADMIN_IMG."ico/mail.png";
-					$bulle=$this->traduire("Envoyer par mail");
-				}
-				break;
-			}
+		$mapping = [
+			'picto' =>  function($value) {$this->picto = URL_ADMIN_IMG . $value;},
+			'url' => function($value) {$this->url = BASE_URL . '/' . $value;},
+			'bulle' => function($value) {$this->bulle = $this->traduire($value);},
+			'mailto' => function($value) {$this->url = 'mailto:' . $value;},
+			'type' => function($value) {$this->predefined($value);}
+		];
+
+		$args[] = func_get_args();
+		foreach (func_get_args() as $arg) {
+			$attrib = $this->splitArg($arg);
+			$name = $attrib[0];
+			$value = $attrib[1];
+			if (array_key_exists($name, $mapping))
+				$mapping[$name]($value);
+		}
+
+
+		$options = [
+			'src' => $this->picto, 
+			'class' => 'ico'];
+
+		if ($this->bulle) {
+			$options['alt'] = $this->bulle;
+			$options['title'] = $this->bulle;
 		}
-		
-		// Html du bouton
-		if(isset($url)) $html[]='<a href="'. $url .'">';
-		$html[]='<img class="ico" src="'. $picto .'"';
-		if(isSet($bulle)) $html[]=' alt="'.$bulle.'" title="'.$bulle.'"';
-		if($type=="DEL") $html[]=' onclick="javascript:if(!confirm(\''.$this->traduire('Êtes vous sûr de vouloir supprimer cet élément ?').'\')) return false;"';
-		$html[]=' />';
-		if(isSet($url)) $html[]='</a>';
 
-		return implode("", $html);
+		if ('DEL' == strtoupper($this->type)) 
+			$options['onclick'] = 'javascript:return confirm(\'' . $this->traduire('Êtes vous sûr de vouloir supprimer cet élément ?') . '\');';
+
+		$html = $this->view->tag('img', null, $options);
+
+		return ($this->url) ?
+			$this->view->tag('a', $html, ['href' => $this->url]) :
+			$html;
+	}
+
+
+	protected function predefined($type) {
+		$mapping = [
+			'ADD' => ['add.gif', $this->traduire('Ajouter')],
+			'EDIT'=> ['edit.gif', $this->traduire('Modifier')],
+			'DEL' => ['del.gif', $this->traduire('Supprimer')],
+			'CONFIRM'=> ['coche_verte.gif', $this->traduire('Confirmer')],
+			'VALIDATE' => ['coche_verte.gif', $this->traduire('Valider')],
+			'TEST' => ['tester.gif', $this->traduire('Tester')],
+			'SHOW' => ['show.gif', $this->traduire('Visualiser')],
+			'MAIL' => ['mail.png', $this->traduire('Envoyer par mail')]
+		];
+
+		$type = strtoupper($type);
+		if (array_key_exists($type, $mapping)) {
+			$this->picto = URL_ADMIN_IMG . 'ico/' . $mapping[$type][0];
+			$this->bulle = $mapping[$type][1];
+		}
 	}
 }
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/CalendarContent.php b/library/ZendAfi/View/Helper/CalendarContent.php
index 4907fd2ff00c7f8390cfe70cd7a86018f6ba7b40..c0e2f57d60e71a5e291520b0a332ecadd691a8aa 100644
--- a/library/ZendAfi/View/Helper/CalendarContent.php
+++ b/library/ZendAfi/View/Helper/CalendarContent.php
@@ -90,10 +90,24 @@ class ZendAfi_View_Helper_CalendarContent extends Zend_View_Helper_HtmlElement {
 		if($this->param['MODE_AFFICHAGE']=='article' || $this->param['MODE_AFFICHAGE'] == 'diaporama_navigation')
 			$html .= $this->rendArticlesByArticleList($articles);
 
+
+		if($this->param['MODE_AFFICHAGE']=='wall')
+			$html .= $this->renderArticlesModeWall($articles);
+
 		return $html.='</div>';
 	}
 
 	
+
+	protected function renderArticlesModeWall($articles) {
+		$html ='';
+		
+		foreach($articles as $article){
+			$html.=$this->view->article_RenderWall($article);
+		}
+		return $this->view->tag('div', $html, [ 'class' => 'liste_mur']);
+	}
+
 	protected function rendArticlesByArticleList($articles) {
 		$html ='';
 
diff --git a/library/ZendAfi/View/Helper/CosmoButton.php b/library/ZendAfi/View/Helper/CosmoButton.php
new file mode 100644
index 0000000000000000000000000000000000000000..069e91ea6b59519a77ad8ea1cd33a17a4bae7efb
--- /dev/null
+++ b/library/ZendAfi/View/Helper/CosmoButton.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class ZendAfi_View_Helper_CosmoButton extends Zend_View_Helper_Abstract {
+	public function cosmoButton($label, $url, $confirmation='') {
+		return $this->view
+			->tag(
+				'input', null, 
+				[
+					'type' => 'button',
+					'class' => 'bouton',
+					'value' => $label,
+					'onclick' => ($confirmation ? 'if (confirm(\''.$confirmation .'\')) ' : '') 
+												. 'document.location=\'' . $url . '\'',
+				]
+			);
+	}
+}
diff --git a/library/ZendAfi/View/Helper/CosmoEmplacement.php b/library/ZendAfi/View/Helper/CosmoEmplacement.php
new file mode 100644
index 0000000000000000000000000000000000000000..3657d6aef0c2d42dc36f4f50e6d113e81d144066
--- /dev/null
+++ b/library/ZendAfi/View/Helper/CosmoEmplacement.php
@@ -0,0 +1,131 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class ZendAfi_View_Helper_CosmoEmplacement extends Zend_View_Helper_Abstract {
+	public function cosmoEmplacement($model, $display) {
+		$this->model = $model;
+		return $this->view
+			->tag('div', $this->_getForm(), [
+				'class' => 'form', 
+				'id' => 'emplacement'. $model->getId(), 
+				'style' => 'width:600px;margin-left:20px;' 
+				. ((!$display) ? 'display:none;': '')]);
+	}
+
+
+	protected function _getForm() {
+		return $this->view
+			->tag('form', $this->_getFields(), [
+				'method' => 'post', 
+				'action' => $this->view->url([
+					'module' => 'cosmo',
+					'controller' => 'emplacement', 
+					'action' => 'validate', 
+					'id' => $this->model->getId()], null, true)]);
+	}
+
+
+	protected function _getFields() {
+		return $this->view
+			->tag(
+				'table', 
+				$this->_getTitle()
+				. $this->_getLabel()
+				. $this->_getHelp()
+				. $this->_getRules()
+				. $this->_getDisplay()
+				. $this->_getActions(), 
+				['class' => 'form', 'cellspacing' => 0, 'cellpadding' => 5]);
+	}
+
+
+	protected function _getTitle() {
+		return $this->view->tag('tr', $this->view->tag('th', 'Création d\'emplacement', [
+			'class' => 'form', 'colspan' => 2, 'align' => 'left'
+		]));
+	}
+
+
+	protected function _getLabel() {
+		return $this->view->tag(
+			'tr', 
+			$this->view->tag('td', 'Libellé', [
+				'class' => 'form_first', 'align' => 'right', 'width' => '35%']) . 
+			$this->view->tag('td', $this->view->formText('libelle', $this->model->getLibelle(), ['size' => 43]), ['class' => 'form_first']));
+	}
+
+
+	protected function _getHelp() {
+		return '<tr>
+					<td class="form_first" align="center" colspan="2">
+						<div class="commentaire">Syntaxe : [zone$champ][signe][valeur1;valeur2;etc...] - Ex : 995$a = a<br>Signes : "=" égal - "/" commence par - "*" contient</div>
+					</td>
+				</tr>';
+	}
+
+
+	protected function _getRules() {
+		return $this->_getSimpleInput(
+			'Règles de reconnaissance',
+			$this->view->formTextarea('regles', $this->model->getRegles(), [
+				'cols' => 40, 'rows' => 5])
+		);
+	}
+
+
+	protected function _getDisplay() {
+		return $this->_getSimpleInput(
+			'Affichage des exemplaires', 
+			$this->view->formSelect('ne_pas_afficher', $this->model->getNePasAfficher(), null, [
+				'0' => 'Afficher les exemplaires',
+				'1' => 'Ne pas afficher les exemplaires'])
+		);
+	}
+
+
+	protected function _getSimpleInput($label, $input) {
+		return $this->view->tag('tr', 
+			$this->view->tag('td', $label, [
+				'class' => 'form', 'align' => 'right', 'valign' => 'top']) . 
+			$this->view->tag('td', $input, ['class' => 'form']));
+	}
+
+
+	protected function _getActions() {
+		return $this->view->tag('tr', 
+			$this->view->tag(
+				'th', 
+				$this->view->formSubmit('emplacementSubmit', 'Valider', ['class' => 'bouton']) .
+				($this->model->getId() ? str_repeat('&nbsp;', 5) .
+				$this->view->cosmoButton(
+					'Supprimer', 
+					$this->view->url([
+						'module' => 'cosmo',
+						'controller' => 'emplacement', 
+						'action' => 'delete',
+						'id' => $this->model->getId()], null, true),
+					'Voulez-vous vraiment supprimer cet emplacement ?') : ''), 
+				['class' => 'form', 'align' => 'center', 'colspan' => 2]
+			)
+		);
+	}
+}
diff --git a/library/ZendAfi/View/Helper/ListeNotices/Vignettes.php b/library/ZendAfi/View/Helper/ListeNotices/Vignettes.php
index 2907deee7030327671a143f4d533da9d2dab1897..bc70491ef0d8334c4b0af77b1d90e8874af566f1 100644
--- a/library/ZendAfi/View/Helper/ListeNotices/Vignettes.php
+++ b/library/ZendAfi/View/Helper/ListeNotices/Vignettes.php
@@ -42,12 +42,12 @@ class ZendAfi_View_Helper_ListeNotices_Vignettes extends ZendAfi_View_Helper_Lis
 		$read_speaker_tag = $read_speaker_helper->readSpeaker('recherche', 
 																													'readnotice', ['id' => $notice->getIdNotice()]);
 
-		//container
 		$html='<div class="vignette" data-id="'.$notice->getId().'">';
 
-		//lien reserver
 		$html.='<div class="vignette_lien_reserver">'.$this->view->Notice_LienReserver($notice).'</div>';	
 
+		$html.='<div class="vignette_lien_panier">'.$this->view->tagAddToCart($notice).'</div>';	
+
 		$html.='<div class="vignette_titre">'
 			.'<a href="'.$url_notice.'">'.$notice->getTitreEtSousTitre().'</a>&nbsp;'.$read_speaker_tag
 			.'</div>';
diff --git a/library/ZendAfi/View/Helper/Notice/Mur.php b/library/ZendAfi/View/Helper/Notice/Mur.php
index 73eee1cc29143f7080ce7231eed9450187562ca4..0ba9d87af0636c0df5b6274064685570a21c1eb2 100644
--- a/library/ZendAfi/View/Helper/Notice/Mur.php
+++ b/library/ZendAfi/View/Helper/Notice/Mur.php
@@ -92,11 +92,8 @@ class ZendAfi_View_Helper_Notice_Mur extends Zend_View_Helper_HtmlElement {
 
 
 	public function barreDeLienPanier($notice) {
-		$url = $this->view->url(['controller' => 'panier', 
-														 'action' => 'ajout-ajax',
-														 'id_notice' => $notice->getId()], null, true);
-		return '<li><a href="' . $url . '" data-popup="true" data-action="'. $url.'"  title="'.$this->_("Ajouter au panier").'">&nbsp;</a></li>';
+		return $this->view->tag('li', $this->view->tagAddToCart($notice));
 	}
 }
 
-?>
+?>
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/NuageTags.php b/library/ZendAfi/View/Helper/NuageTags.php
index 9d2f158214846f051ccd3ed22a9588ab1f8f4a71..69ec88c427600414b7e14b55b6a5825180cff414 100644
--- a/library/ZendAfi/View/Helper/NuageTags.php
+++ b/library/ZendAfi/View/Helper/NuageTags.php
@@ -66,57 +66,48 @@ class ZendAfi_View_Helper_NuageTags extends ZendAfi_View_Helper_BaseHelper {
 		return $html;
 	}
 
-	//------------------------------------------------------------------------------------------------------
-	// Calcul des tranches selon methode parametree
-	//------------------------------------------------------------------------------------------------------
-	private function calcultranches($tableau,$methode=3)
-	{
+
+	private function calcultranches($tableau,$methode=3) {
 		$tranches = [];
 		// Nouveau mode
-		if($methode == 3)
-			{
-				$distinct = array();
-				// determiner le nombre de valeurs distinctes
-				foreach ($tableau as $index => $value)
-					$distinct[$value['nombre']] = $value['nombre'];
+		if ($methode == 3) {
+			$distinct = array();
+			// determiner le nombre de valeurs distinctes
+			foreach ($tableau as $index => $value)
+				$distinct[$value['nombre']] = $value['nombre'];
 
-				// Si plus de 10 tranches on fusionne les tranches de plus faible ecart
-				if(count($distinct) > 10)
-					{
-						while( count($distinct) > 10)
-							{
-								// Recherche du plus petit ecart
-								$ecart_min=100000;
-								$sauve_index_nombre=0;
-								foreach($distinct as $key => $index_nombre)
-									{
-										$ecart= abs($index_nombre-$key);
-										if($ecart <= $ecart_min) 
-											{
-												$ecart_min=$ecart;
-												$ecart_index_suppr=$sauve_index_nombre;
-												$ecart_index_ref=$key;
-											}
-										$sauve_index_nombre=$key;
-									}
-								// Fusionner les tranches qui ont l'ecart mini
-								if (array_key_exists($ecart_index_suppr, $distinct))
-									$distinct[$ecart_index_ref]=$distinct[$ecart_index_suppr];
-								else
-									$distinct[$ecart_index_ref] = 0;
-								unset($distinct[$ecart_index_suppr]);
-							}
+			// Si plus de 10 tranches on fusionne les tranches de plus faible ecart
+			if(count($distinct) > 10) {
+				while( count($distinct) > 10) {
+					// Recherche du plus petit ecart
+					$ecart_min=100000;
+					$sauve_index_nombre=0;
+					foreach($distinct as $key => $index_nombre) {
+						$ecart= abs($index_nombre-$key);
+						if($ecart <= $ecart_min) {
+							$ecart_min=$ecart;
+							$ecart_index_suppr=$sauve_index_nombre;
+							$ecart_index_ref=$key;
+						}
+						$sauve_index_nombre=$key;
 					}
-				
-				// Constitution des tranches
-				$index=10;
-				foreach($distinct as $tranche => $valeur) 
-					{
-						$index--;
-						if($valeur >  0)$tranches[]=$valeur;
-					}		
-				return $tranches;
+					// Fusionner les tranches qui ont l'ecart mini
+					if (array_key_exists($ecart_index_suppr, $distinct))
+						$distinct[$ecart_index_ref]=$distinct[$ecart_index_suppr];
+					else
+						$distinct[$ecart_index_ref] = 0;
+					unset($distinct[$ecart_index_suppr]);
+				}
 			}
+				
+			// Constitution des tranches
+			$index=10;
+			foreach($distinct as $tranche => $valeur) {
+				$index--;
+				if($valeur >  0)$tranches[]=$valeur;
+			}		
+			return $tranches;
+		}
 
 		// Min et max
 		$nb_elements = count($tableau);
diff --git a/library/ZendAfi/View/Helper/RenderAlbum.php b/library/ZendAfi/View/Helper/RenderAlbum.php
index b0538f7a8fa121094d66cc17d9723e55ae4b7b0b..277fc735400e80eff9ba4beeabf50874b810f6ee 100644
--- a/library/ZendAfi/View/Helper/RenderAlbum.php
+++ b/library/ZendAfi/View/Helper/RenderAlbum.php
@@ -34,7 +34,7 @@ class ZendAfi_View_Helper_RenderAlbum extends Zend_View_Helper_HtmlElement {
 			return '';
 		}
 		
-		if ($album->isNumilog())
+		if ($album->isNumilog() || $album->isCyberlibris())
 			return $this->view->tagLivreNumerique($album);
 
 		if ($album->isDiaporama() && $album->hasOnlyImages())
diff --git a/library/ZendAfi/View/Helper/TagAddToCart.php b/library/ZendAfi/View/Helper/TagAddToCart.php
new file mode 100644
index 0000000000000000000000000000000000000000..5971f54239259e8520e07c067a46c5dba5657467
--- /dev/null
+++ b/library/ZendAfi/View/Helper/TagAddToCart.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class ZendAfi_View_Helper_TagAddToCart extends Zend_View_Helper_HtmlElement {
+	use Trait_Translator;
+
+
+	public function tagAddToCart($notice) {
+		$url = $this->view->url([
+			'controller' => 'panier',
+			'action' => 'ajout-ajax',
+			'id_notice' => $notice->getId(),
+		], null, true);
+
+		return $this->view->tagAnchor($url, '&nbsp;', [
+			'data-popup' => "true",
+			'data-action' => $url,
+			'title' => $this->_("Ajouter au panier"),
+		]);
+
+	}
+}
+?>
diff --git a/library/ZendAfi/View/Helper/TagArticleEvent.php b/library/ZendAfi/View/Helper/TagArticleEvent.php
index 126d7957bfb54b23aa967233a015ffce59afd268..5b916f4617a276d25a1074abea93e9b728bd896d 100644
--- a/library/ZendAfi/View/Helper/TagArticleEvent.php
+++ b/library/ZendAfi/View/Helper/TagArticleEvent.php
@@ -29,10 +29,19 @@ class ZendAfi_View_Helper_TagArticleEvent extends Zend_View_Helper_HtmlElement {
 			: '';
 	}
 
+	protected function  getStartDate($article) {
+		return strtotime(substr($article->getEventsDebut(), 0, 10));
+	}
+
+	protected function  getEndDate($article) {
+		if (!$date_end=strtotime(substr($article->getEventsFin(), 0, 10)))
+			return $this->getStartDate($article);
+		return $date_end;
+	}
+
 	public function formatEventString($article) {
-		$date_start = strtotime(substr($article->getEventsDebut(), 0, 10));
-		if (!$date_end = strtotime(substr($article->getEventsFin(), 0, 10)))
-			$date_end = $date_start;
+		$date_start = $this->getStartDate($article);
+		$date_end = $this->getEndDate($article);
 
 		if ($date_start == $date_end) {
 			$event_string = $this->view->_('Le %s', strftime('%d %B %Y', $date_start));
diff --git a/library/ZendAfi/View/Helper/TagArticleInfoEvent.php b/library/ZendAfi/View/Helper/TagArticleInfoEvent.php
new file mode 100644
index 0000000000000000000000000000000000000000..3c87c7857621a9ba006de84fc447c3fe46ba147b
--- /dev/null
+++ b/library/ZendAfi/View/Helper/TagArticleInfoEvent.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+class ZendAfi_View_Helper_TagArticleInfoEvent extends ZendAfi_View_Helper_TagArticleInfo {
+
+	public function tagArticleInfoEvent($article,$title) {
+		return 
+			'<span class="article_info_date">'.
+			$this->renderDateDebut($article).
+			$this->renderHeureDebut($article).
+			$this->renderDateFin($article).
+			$this->renderHeureFin($article).
+			'</span><span class="title">'.$title.'</span>
+      <span class="article_info_others">'.
+			$this->renderBib($article).
+			$this->renderCat($article).
+			$this->renderLocalisation($article).
+			$this->renderTags($article).
+			'</span>';
+
+	}
+
+
+	public function renderItem($html, $class, $libelle = NULL) {
+		return 
+			$html 
+			? '<span class="'.$class.'">'.$html.'</span>'
+			: '';
+	}
+
+
+	public function renderDateDebut($article) {
+		return 
+			$this->renderItem(
+				$this->view->getHumanDate($article->getEventsDebut(), 
+																	'd'),
+				'event_start_date_day').
+			$this->renderItem(
+				$this->view->getHumanDate($article->getEventsDebut(), 
+																	'MMMM'),
+				'event_start_date_month');
+	}
+
+
+	public function renderDateFin($article) {
+		return 
+			$this->renderItem(
+				$this->view->getHumanDate($article->getEventsFin(), 
+															 'd'),
+				'event_end_date_day').
+			$this->renderItem(
+				$this->view->getHumanDate($article->getEventsFin(), 
+																	'MMMM'),
+				'event_end_date_month');
+	}
+
+}
+?>
diff --git a/library/ZendAfi/View/Helper/TagNumeriquePremiumBook.php b/library/ZendAfi/View/Helper/TagNumeriquePremiumBook.php
index 0f2a01b9b8b4d17757b852dac3491887614cd63a..6763de69086737464aeb7995962ee63c6d5f7aed 100644
--- a/library/ZendAfi/View/Helper/TagNumeriquePremiumBook.php
+++ b/library/ZendAfi/View/Helper/TagNumeriquePremiumBook.php
@@ -26,8 +26,12 @@ class ZendAfi_View_Helper_TagNumeriquePremiumBook extends ZendAfi_View_Helper_Ta
 		if (!$this->canAccessRessourceNumerique())
 			return '<p>'.$this->_('Vous devez être connecté sous un compte avec abonnement valide pour pouvoir accéder à ce document').'</p>';
 
-		return $this->view->tagAnchor($album->getExternalUri(),
-																	$this->_('Accéder au document Numérique Premium'));
+    $html = '<form method="post" action="' . BASE_URL . '/modules/numeriquepremium">' .
+      '<input type="hidden" name="url" value="' . $album->getExternalUri() . '"/>' .
+      '<input type="submit" value="' . $this->_('Accéder au document Numérique Premium') . '"/>' .
+      '</form>';
+
+		return $html;
 	}
 
 
@@ -37,4 +41,4 @@ class ZendAfi_View_Helper_TagNumeriquePremiumBook extends ZendAfi_View_Helper_Ta
 
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/library/startup.php b/library/startup.php
index 9d3f49ed639d353201d8bac36f191cba67bbef0c..d8278c67fa09eef70a85c0142bc9f2325a0487ba 100644
--- a/library/startup.php
+++ b/library/startup.php
@@ -56,8 +56,8 @@ function defineConstant($name, $value) {
 
 
 function setupConstants() {
-	defineConstant('VERSION_PERGAME','6.46');
-	defineConstant('RELEASE_NUMBER', VERSION_PERGAME.'.3');
+	defineConstant('VERSION_PERGAME','6.48');
+	defineConstant('RELEASE_NUMBER', VERSION_PERGAME . '.0');
 
 	defineConstant('ROOT_PATH',  realpath(dirname(__FILE__).'/..').'/');
 
diff --git a/public/admin/js/DataTables/Contributing.md b/public/admin/js/DataTables/Contributing.md
new file mode 100644
index 0000000000000000000000000000000000000000..b3894ce2a1886984225053a3e7e59065c2ee796e
--- /dev/null
+++ b/public/admin/js/DataTables/Contributing.md
@@ -0,0 +1,9 @@
+# Contributing
+
+If you are thinking of contributing code to DataTables, first of all, thank you! All fixes, patches and enhancements to DataTables are very warmly welcomed. In order to keep thing manageable, there are a number of guidelines that should be followed in order to ensure that your modification is included in DataTables as quickly as possible:
+
+1. Make contributions in the DataTables/DataTablesSrc repo. Changes to the built files in the built repo (DataTables/DataTables) will not be accepted since they would be overwritten by the next build!
+
+2. Follow the style of the code in the existing files. DataTables doesn't have a coding standards document, but simple common sense of following the same style as in the existing files is ideal. For example use tabs not spaces (as you will see all source files use tabs).
+
+3. Link to a test page showing the bug you are fixing or the feature you are adding. This allows to me to quickly identify what is being changed and why. Don't worry about being verbose in pull requests - its much better to know exactly what is changing and why!
diff --git a/public/admin/js/DataTables/Readme.md b/public/admin/js/DataTables/Readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..4a4718bbd42f6a0a2a42353fce2c669a35279990
--- /dev/null
+++ b/public/admin/js/DataTables/Readme.md
@@ -0,0 +1,60 @@
+# DataTables plug-in for jQuery
+
+DataTables is a table enhancing plug-in for the [jQuery](//jquery.com) Javascript library, adding sorting, paging and filtering abilities to plain HTML tables with minimal effort. The stated goal of DataTables is:
+
+> To enhance the accessibility of data in HTML tables.
+
+To meet this goal, DataTables is developed with two distinct groups of users in mind:
+
+* You the developers using DataTables. For developers DataTables provides a wide array of options for how data should be obtained, displayed and acted upon, along with an extensive API for accessing and manipulating the table.
+
+* End users. For those using the interface DataTables presents, actions to get the most from the information contained in tables, such as sorting and filtering, along with paging and scrolling of the data in table, are easy to use, intuitive and fast.
+
+
+## Installation
+
+In most cases, to use DataTables all you need to do is include jQuery, the DataTables Javascript and DataTables CSS files in your HTML page:
+
+```html
+<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.0-beta.1/css/jquery.dataTables.css">
+
+<script type="text/javascript" language="javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
+<script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10-beta.1/js/jquery.dataTables.js"></script>
+```
+
+
+## Usage
+
+In its simplest case, DataTables can be initialised with a single line of Javascript:
+
+```js
+$('table').dataTable();
+```
+
+where the jQuery selector is used to obtain a reference to the table you want to enhance with DataTables. Optional configuration parameters can be passed in to DataTables to have it perform certain actions by using a configuration object as the parameter passed in to the DataTables constructor. For example:
+
+```js
+$('table').dataTable( {
+  paginate: false,
+  scrollY: 300
+} );
+```
+
+will disable paging and enable scrolling.
+
+A full list of the options available for DataTables are available in the [documentation](//datatables.net).
+
+
+## Documentation
+
+Full documentation of the DataTables options, API and pug-in interface are available on the [DataTables web-site](//datatables.net). The site also contains information on the wide variety of plug-ins that are available for DataTables, which can be used to enhance and customise your table even further.
+
+
+## Support
+
+Support for DataTables is available through the [DataTables forums](//datatables.net/forums) and [commercial support options](//datatables.net/support) are available.
+
+
+## License
+
+DataTables is release under the [MIT license](//datatables.net/license). You are free to use, modify and distribute this software, as long as the copyright header is left intact (specifically the comment block which starts with `/*!`.
diff --git a/public/admin/js/DataTables/bower.json b/public/admin/js/DataTables/bower.json
new file mode 100644
index 0000000000000000000000000000000000000000..58529774cac55cd7537886b105d83f4888764602
--- /dev/null
+++ b/public/admin/js/DataTables/bower.json
@@ -0,0 +1,11 @@
+{
+	"name": "datatables",
+	"version": "1.10.1",
+	"main": [
+		"media/js/jquery.dataTables.js",
+		"media/css/jquery.dataTables.css"
+	],
+	"dependencies": {
+		"jquery": ">=1.7.0"
+	}
+}
diff --git a/public/admin/js/DataTables/composer.json b/public/admin/js/DataTables/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..e7a4005e8e60ab76d12f6d1a7484b77a932e1035
--- /dev/null
+++ b/public/admin/js/DataTables/composer.json
@@ -0,0 +1,15 @@
+{
+	"name": "datatables/datatables",
+	"version": "1.10.1",
+	"description": "DataTables is a plug-in for the jQuery Javascript library. It is a highly flexible tool, based upon the foundations of progressive enhancement, which will add advanced interaction controls to any HTML table.", 
+	"homepage": "http://www.datatables.net/",
+	"author": "SpryMedia", 
+	"license": [
+		"MIT"
+	],
+	"prefer-stable": true,
+	"support": {
+		"forum": "https://datatables.net/forums",
+		"source": "https://github.com/DataTables/DataTablesSrc/"
+	}
+}
diff --git a/public/admin/js/DataTables/dataTables.jquery.json b/public/admin/js/DataTables/dataTables.jquery.json
new file mode 100644
index 0000000000000000000000000000000000000000..65f3b066a94aa0969e57d26588c9f0e1e1d61f67
--- /dev/null
+++ b/public/admin/js/DataTables/dataTables.jquery.json
@@ -0,0 +1,32 @@
+{
+	"name": "DataTables",
+	"version": "1.10.1",
+	"description": "DataTables enhances HTML tables with the ability to sort, filter and page the data in the table very easily. It provides a comprehensive API and set of configuration options, allowing you to consume data from virtually any data source.",
+	"homepage": "http://datatables.net/",
+	"docs": "http://datatables.net/",
+	"demo": "http://datatables.net/examples",
+	"download": "http://datatables.net/download",
+	"author": {
+		"name": "Allan Jardine",
+		"url": "http://sprymedia.co.uk"
+	},
+	"licenses": [
+		{
+			"type": "MIT",
+			"url": "http://datatables.net/license_bsd"
+		}
+	],
+	"dependencies": {
+		"jquery": ">=1.7"
+	},
+	"keywords": [
+		"DataTables",
+		"DataTable",
+		"table",
+		"grid",
+		"filter",
+		"sort",
+		"page",
+		"internationalisable"
+	]
+}
diff --git a/public/admin/js/DataTables/examples/advanced_init/column_render.html b/public/admin/js/DataTables/examples/advanced_init/column_render.html
new file mode 100644
index 0000000000000000000000000000000000000000..3d9a8c399be05d654fee2149997d6c494e86fcd4
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/column_render.html
@@ -0,0 +1,782 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Column rendering</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"columnDefs": [ 
+			{
+				// The `data` parameter refers to the data for the cell (defined by the
+				// `data` option, which defaults to the column being worked with, in
+				// this case `data: 0`.
+				"render": function ( data, type, row ) {
+					return data +' ('+ row[3]+')';
+				},
+				"targets": 0
+			},
+			{ "visible": false,  "targets": [ 3 ] }
+		]
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Column rendering</span></h1>
+
+			<div class="info">
+				<p>Each column has an optional rendering control called <a href=
+				"//datatables.net/reference/option/columns.render"><code class="option" title=
+				"DataTables initialisation option">columns.render<span>DT</span></code></a> which can be used to
+				process the content of each cell before the data is used. <a href=
+				"//datatables.net/reference/option/columns.render"><code class="option" title=
+				"DataTables initialisation option">columns.render<span>DT</span></code></a> has a wide array of options
+				available to it for rendering different types of data orthogonally (ordering, searching, display etc),
+				but it can be used very simply to manipulate the content of a cell, as shown here.</p>
+
+				<p>This example shows the person's age combined with their name in the first column, hiding the age
+				column. This technique can be useful for adding links, assigning colours based on content rules and any
+				other form of text manipulation you require.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;columnDefs&quot;: [ 
+			{
+				// The `data` parameter refers to the data for the cell (defined by the
+				// `data` option, which defaults to the column being worked with, in
+				// this case `data: 0`.
+				&quot;render&quot;: function ( data, type, row ) {
+					return data +' ('+ row[3]+')';
+				},
+				&quot;targets&quot;: 0
+			},
+			{ &quot;visible&quot;: false,  &quot;targets&quot;: [ 3 ] }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li class="active"><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/complex_header.html b/public/admin/js/DataTables/examples/advanced_init/complex_header.html
new file mode 100644
index 0000000000000000000000000000000000000000..95784040714c8ecd03788f8cee13554af5de133c
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/complex_header.html
@@ -0,0 +1,776 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Complex headers (rowspan / colspan)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"columnDefs": [ {
+			"visible": false,
+			"targets": -1
+		} ]
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Complex headers (rowspan / colspan)</span></h1>
+
+			<div class="info">
+				<p>Complex headers (using colspan / rowspan) can be used to group columns of similar information in
+				DataTables, creating a very powerful visual effect.</p>
+
+				<p>In addition to the basic behaviour, DataTables can also take colspan and rowspans into account when
+				working with hidden columns. The colspan and rowspan attributes for each cell are automatically
+				calculated and rendered on the page for you. This allows the <a href=
+				"//datatables.net/reference/option/columns.visible"><code class="option" title=
+				"DataTables initialisation option">columns.visible<span>DT</span></code></a> option and <a href=
+				"//datatables.net/reference/api/column().visible()"><code class="api" title=
+				"DataTables API method">column().visible()<span>DT</span></code></a> method to take into account
+				rowspan / colspan cells, drawing the header correctly.</p>
+
+				<p>Note that each column must have at least one unique cell (i.e. a cell without colspan) so DataTables
+				can use that cell to detect the column and use it to apply ordering.</p>
+
+				<p>The example below shows a header spanning multiple cells over the contact information, with one of
+				the columns that the span covers being hidden.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th rowspan="2">Name</th>
+						<th colspan="2">HR Information</th>
+						<th colspan="3">Contact</th>
+					</tr>
+					<tr>
+						<th>Position</th>
+						<th>Salary</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Salary</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>$320,800</td>
+						<td>Edinburgh</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>$170,750</td>
+						<td>Tokyo</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>$86,000</td>
+						<td>San Francisco</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>$433,060</td>
+						<td>Edinburgh</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>$162,700</td>
+						<td>Tokyo</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>$372,000</td>
+						<td>New York</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>$137,500</td>
+						<td>San Francisco</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>$327,900</td>
+						<td>Tokyo</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>$205,500</td>
+						<td>San Francisco</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>$103,600</td>
+						<td>Edinburgh</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>$90,560</td>
+						<td>London</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>$342,000</td>
+						<td>Edinburgh</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>$470,600</td>
+						<td>San Francisco</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>$313,500</td>
+						<td>London</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>$385,750</td>
+						<td>London</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>$198,500</td>
+						<td>London</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>$725,000</td>
+						<td>New York</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>$237,500</td>
+						<td>New York</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>$132,000</td>
+						<td>London</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>$217,500</td>
+						<td>Edinburgh</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>$345,000</td>
+						<td>New York</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>$675,000</td>
+						<td>New York</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>$106,450</td>
+						<td>New York</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>$85,600</td>
+						<td>Sidney</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>$1,200,000</td>
+						<td>London</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>$92,575</td>
+						<td>Edinburgh</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>$357,650</td>
+						<td>Singapore</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>$206,850</td>
+						<td>San Francisco</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>$850,000</td>
+						<td>San Francisco</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>$163,000</td>
+						<td>Tokyo</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>$95,400</td>
+						<td>Sidney</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>$114,500</td>
+						<td>London</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>$145,000</td>
+						<td>London</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>$235,500</td>
+						<td>San Francisco</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>$324,050</td>
+						<td>Edinburgh</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>$85,675</td>
+						<td>San Francisco</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>$164,500</td>
+						<td>San Francisco</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>$109,850</td>
+						<td>San Francisco</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>$452,500</td>
+						<td>San Francisco</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>$136,200</td>
+						<td>London</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>$645,750</td>
+						<td>New York</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>$234,500</td>
+						<td>Singapore</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>$163,500</td>
+						<td>London</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>$139,575</td>
+						<td>Tokyo</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>$98,540</td>
+						<td>New York</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>$87,500</td>
+						<td>San Francisco</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>$138,575</td>
+						<td>Singapore</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>$125,250</td>
+						<td>New York</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>$115,000</td>
+						<td>San Francisco</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>$75,650</td>
+						<td>Edinburgh</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>$145,600</td>
+						<td>New York</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>$356,250</td>
+						<td>London</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>$103,500</td>
+						<td>London</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>$86,500</td>
+						<td>San Francisco</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>$183,000</td>
+						<td>Edinburgh</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>$183,000</td>
+						<td>Singapore</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>$112,000</td>
+						<td>New York</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;columnDefs&quot;: [ {
+			&quot;visible&quot;: false,
+			&quot;targets&quot;: -1
+		} ]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li class="active"><a href="./complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/defaults.html b/public/admin/js/DataTables/examples/advanced_init/defaults.html
new file mode 100644
index 0000000000000000000000000000000000000000..031fe4d87791df9720ccfae4fc1384849e87cf9c
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/defaults.html
@@ -0,0 +1,766 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Setting defaults</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$.extend( $.fn.dataTable.defaults, {
+	"searching": false,
+	"ordering": false
+} );
+
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Setting defaults</span></h1>
+
+			<div class="info">
+				<p>When working with DataTables over multiple pages it is often useful to set the initialisation
+				defaults to common values (for example you might want to set <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> to a common value so all tables get
+				the same layout). This can be done using the <code>$.fn.dataTable.defaults</code> object. This object
+				will take all of the same parameters as the DataTables initialisation object, but in this case you are
+				setting the default for all future initialisations of DataTables.</p>
+
+				<p>This example shows the searching and ordering features of DataTables being disabled by default,
+				which is reflected in the table when it is initialised.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$.extend( $.fn.dataTable.defaults, {
+	&quot;searching&quot;: false,
+	&quot;ordering&quot;: false
+} );
+
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li class="active"><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/dom_multiple_elements.html b/public/admin/js/DataTables/examples/advanced_init/dom_multiple_elements.html
new file mode 100644
index 0000000000000000000000000000000000000000..5e6160b17980eefd9d1df57affb40817f6363360
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/dom_multiple_elements.html
@@ -0,0 +1,775 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Multiple table control elements</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	div.dataTables_length {
+	padding-left: 2em;
+	}
+	div.dataTables_length,
+	div.dataTables_filter {
+		padding-top: 0.55em;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"dom": '<"top"iflp<"clear">>rt<"bottom"iflp<"clear">>'
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Multiple table control elements</span></h1>
+
+			<div class="info">
+				<p>As is described by the basic DOM positioning example you can use the <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> initialisation parameter to move
+				DataTables features around the table to where you want them. In addition to this, you can also use
+				<a href="//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> to create multiple instances of these
+				table controls. Simply include the feature's identification letter where you want it to appear, as many
+				times as you wish, and the controls will all sync up (note that obviously the table ('t') should be
+				included only once).</p>
+
+				<p>This is shown in the demo below where for four key build-in features are duplicated above and below
+				the table.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;dom&quot;: '&lt;&quot;top&quot;iflp&lt;&quot;clear&quot;&gt;&gt;rt&lt;&quot;bottom&quot;iflp&lt;&quot;clear&quot;&gt;&gt;'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">div.dataTables_length {
+	padding-left: 2em;
+	}
+	div.dataTables_length,
+	div.dataTables_filter {
+		padding-top: 0.55em;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li class="active"><a href="./dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/dom_toolbar.html b/public/admin/js/DataTables/examples/advanced_init/dom_toolbar.html
new file mode 100644
index 0000000000000000000000000000000000000000..50c2651d84093f0d14e11d9ef32f9bf3eb4ef9b7
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/dom_toolbar.html
@@ -0,0 +1,778 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Custom toolbar elements</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+
+.toolbar {
+	float: left;
+}
+
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"dom": '<"toolbar">frtip'
+	} );
+
+	$("div.toolbar").html('<b>Custom tool bar! Text/images etc.</b>');
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Custom toolbar elements</span></h1>
+
+			<div class="info">
+				<p>DataTables inserts DOM elements around the table to control DataTables features, and you can make
+				use of this mechanism as well to insert your own custom elements. In this example a <code class="tag"
+				title="HTML tag">div</code> with a class of 'toolbar' is created using <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a>, with which HTML is inserted to create
+				the toolbar. You could put whatever HTML you want into the toolbar and add event handlers etc.</p>
+
+				<p>For more complex features, or for creating reusable plug-ins, DataTables also has a feature plug-in
+				API available, which can be used to create plug-ins which are used in a table by a single character
+				reference in the <a href="//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> option (like the built in option of
+				<code class="string" title="String">f</code> refers to 'filtering input', you could have an
+				<code class="string" title="String">F</code> option which creates your own filtering input control,
+				custom to your app).</p>
+
+				<p><a href="https://datatables.net/extras/tabletools">TableTools</a> is a feature plug-in for
+				DataTables which adds buttons into a toolbar for a table, which controls such as copy to clipboard,
+				export and custom buttons.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;dom&quot;: '&lt;&quot;toolbar&quot;&gt;frtip'
+	} );
+
+	$(&quot;div.toolbar&quot;).html('&lt;b&gt;Custom tool bar! Text/images etc.&lt;/b&gt;');
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">.toolbar {
+	float: left;
+}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li class="active"><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/dt_events.html b/public/admin/js/DataTables/examples/advanced_init/dt_events.html
new file mode 100644
index 0000000000000000000000000000000000000000..a18198548ed668ed3dd7525401f4ee86c348593b
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/dt_events.html
@@ -0,0 +1,783 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - DataTables events</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var eventFired = function ( type ) {
+		var n = $('#demo_info')[0];
+		n.innerHTML += '<div>'+type+' event - '+new Date().getTime()+'</div>';
+		n.scrollTop = n.scrollHeight;		
+	}
+
+	$('#example')
+		.on( 'order.dt',  function () { eventFired( 'Order' ); } )
+		.on( 'search.dt', function () { eventFired( 'Search' ); } )
+		.on( 'page.dt',   function () { eventFired( 'Page' ); } )
+		.dataTable();
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>DataTables events</span></h1>
+
+			<div class="info">
+				<p>DataTables fires a number of custom events which you can bind to in the standard jQuery fashion
+				(although note that the namespace <code>dt</code> <em>must</em> be used), allowing your code to perform
+				custom actions when these events occur.</p>
+
+				<p>All custom events fired by DataTables are fired with the namespace <code>dt</code> in order to
+				prevent conflicts arising with other jQuery plug-ins which also fire events. The DataTables <a href=
+				"//datatables.net/reference/api/on()"><code class="api" title=
+				"DataTables API method">on()<span>DT</span></code></a> method can be used like the jQuery
+				<code>on()</code> method, but will automatically append the <code>dt</code> namespace if required.</p>
+
+				<p>This example shows the use of the <a href="//datatables.net/reference/event/order"><code class=
+				"event" title="DataTables event">order<span>DT</span></code></a>, <a href=
+				"//datatables.net/reference/event/search"><code class="event" title=
+				"DataTables event">search<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/event/page"><code class="event" title=
+				"DataTables event">page<span>DT</span></code></a> events by adding a notification that the event fired
+				to an element on the page to show that they have indeed fired.</p>
+			</div>
+
+			<div id="demo_info" class="box"></div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var eventFired = function ( type ) {
+		var n = $('#demo_info')[0];
+		n.innerHTML += '&lt;div&gt;'+type+' event - '+new Date().getTime()+'&lt;/div&gt;';
+		n.scrollTop = n.scrollHeight;		
+	}
+
+	$('#example')
+		.on( 'order.dt',  function () { eventFired( 'Order' ); } )
+		.on( 'search.dt', function () { eventFired( 'Search' ); } )
+		.on( 'page.dt',   function () { eventFired( 'Page' ); } )
+		.dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li class="active"><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/events_live.html b/public/admin/js/DataTables/examples/advanced_init/events_live.html
new file mode 100644
index 0000000000000000000000000000000000000000..9777f915e02676bb75230f9de4d5e09522ed4ac7
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/events_live.html
@@ -0,0 +1,761 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - DOM / jQuery events</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable();
+	
+	$('#example tbody').on('click', 'tr', function () {
+		var name = $('td', this).eq(0).text();
+		alert( 'You clicked on '+name+'\'s row' );
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>DOM / jQuery events</span></h1>
+
+			<div class="info">
+				<p>Events assigned to the table can be exceptionally useful for user interaction, however you must be
+				aware that DataTables will add and remove rows from the DOM as they are needed (i.e. when paging only
+				the visible elements are actually available in the DOM). As such, this can lead to the odd hiccup when
+				working with events.</p>
+
+				<p>One of the best ways of dealing with this is through the use of delegated events with jQuery's
+				<code>on</code> method, as shown in this example.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+	
+	$('#example tbody').on('click', 'tr', function () {
+		var name = $('td', this).eq(0).text();
+		alert( 'You clicked on '+name+'\'s row' );
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/footer_callback.html b/public/admin/js/DataTables/examples/advanced_init/footer_callback.html
new file mode 100644
index 0000000000000000000000000000000000000000..219b61c6f73044f29740f2e00126e4b869614de0
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/footer_callback.html
@@ -0,0 +1,764 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Footer callback</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	th { white-space: nowrap; }
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"footerCallback": function ( row, data, start, end, display ) {
+			var api = this.api(), data;
+
+			// Remove the formatting to get integer data for summation
+			var intVal = function ( i ) {
+				return typeof i === 'string' ?
+					i.replace(/[\$,]/g, '')*1 :
+					typeof i === 'number' ?
+						i : 0;
+			};
+
+			// Total over all pages
+			data = api.column( 4 ).data();
+			total = data.length ?
+				data.reduce( function (a, b) {
+						return intVal(a) + intVal(b);
+				} ) :
+				0;
+
+			// Total over this page
+			data = api.column( 4, { page: 'current'} ).data();
+			pageTotal = data.length ?
+				data.reduce( function (a, b) {
+						return intVal(a) + intVal(b);
+				} ) :
+				0;
+
+			// Update footer
+			$( api.column( 4 ).footer() ).html(
+				'$'+pageTotal +' ( $'+ total +' total)'
+			);
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Footer callback</span></h1>
+
+			<div class="info">
+				<p>Through the use of the header and footer callback manipulation functions provided by DataTables
+				(<a href="//datatables.net/reference/option/headerCallback"><code class="option" title=
+				"DataTables initialisation option">headerCallback<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/option/footerCallback"><code class="option" title=
+				"DataTables initialisation option">footerCallback<span>DT</span></code></a>), it is possible to perform
+				some powerful and useful data manipulation functions, such as summarising data in the table.</p>
+
+				<p>The example below shows a footer callback being used to total the data for a column (both the
+				visible and the hidden data) using the <a href=
+				"//datatables.net/reference/api/column().data()"><code class="api" title=
+				"DataTables API method">column().data()<span>DT</span></code></a> API method and <a href=
+				"//datatables.net/reference/api/column().footer()"><code class="api" title=
+				"DataTables API method">column().footer()<span>DT</span></code></a> for writing the value into the
+				footer.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th colspan="4" style="text-align:right">Total:</th>
+						<th></th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;footerCallback&quot;: function ( row, data, start, end, display ) {
+			var api = this.api(), data;
+
+			// Remove the formatting to get integer data for summation
+			var intVal = function ( i ) {
+				return typeof i === 'string' ?
+					i.replace(/[\$,]/g, '')*1 :
+					typeof i === 'number' ?
+						i : 0;
+			};
+
+			// Total over all pages
+			data = api.column( 4 ).data();
+			total = data.length ?
+				data.reduce( function (a, b) {
+						return intVal(a) + intVal(b);
+				} ) :
+				0;
+
+			// Total over this page
+			data = api.column( 4, { page: 'current'} ).data();
+			pageTotal = data.length ?
+				data.reduce( function (a, b) {
+						return intVal(a) + intVal(b);
+				} ) :
+				0;
+
+			// Update footer
+			$( api.column( 4 ).footer() ).html(
+				'$'+pageTotal +' ( $'+ total +' total)'
+			);
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">th { white-space: nowrap; }</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li class="active"><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/html5-data-attributes.html b/public/admin/js/DataTables/examples/advanced_init/html5-data-attributes.html
new file mode 100644
index 0000000000000000000000000000000000000000..edf22ba24d849920da5b037c86e514fbbf93ba10
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/html5-data-attributes.html
@@ -0,0 +1,768 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - HTML5 data-* attributes</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>HTML5 data-* attributes</span></h1>
+
+			<div class="info">
+				<p>DataTables can use different data for different actions (display, ordering and searching) which can
+				be immensely powerful for transforming data in the display to be intuitive for the end user, while
+				using different, or more complex data, for other actions. For example, if a table contains a formatted
+				telephone number in the format <code>xxx-xxxx</code>, intuitively a user might search for the number
+				but without a dash. Using orthogonal data for searching allows both forms of the telephone number to be
+				used, while only the nicely formatted number is displayed in the table.</p>
+
+				<p>One method in which DataTables can obtain this orthogonal data for its different actions is through
+				<a href=
+				"http://www.w3.org/html/wg/drafts/html/master/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes">
+				custom HTML5 data attributes</a>. DataTables will automatically detect four different attributes on the
+				HTML elements:</p>
+
+				<ul class="markdown">
+					<li><code>data-sort</code> or <code>data-order</code> - for ordering data</li>
+					<li><code>data-filter</code> or <code>data-search</code> - for search data</li>
+				</ul>
+
+				<p>This example shows the use of <code>data-sort</code> and <code>data-filter</code> attributes. In
+				this case the first column has been formatted so the first name has abbreviated, but the full name is
+				still searchable (search for "Bruno" for example). Additionally, although the last column contains
+				non-numeric data in it (<code>/y</code>) the column will correctly order numerically as the
+				<code>data-sort</code> / <code>data-order</code> attribute is set on the column with plain numeric
+				data.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td data-search="Tiger Nixon">T. Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td data-order="1303686000">Mon 25th Apr 11</td>
+						<td data-order="320800">$320,800/y</td>
+					</tr>
+					<tr>
+						<td data-search="Garrett Winters">G. Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td data-order="1311548400">Mon 25th Jul 11</td>
+						<td data-order="170750">$170,750/y</td>
+					</tr>
+					<tr>
+						<td data-search="Ashton Cox">A. Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td data-order="1231718400">Mon 12th Jan 09</td>
+						<td data-order="86000">$86,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Cedric Kelly">C. Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td data-order="1332975600">Thu 29th Mar 12</td>
+						<td data-order="433060">$433,060/y</td>
+					</tr>
+					<tr>
+						<td data-search="Airi Satou">A. Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td data-order="1227830400">Fri 28th Nov 08</td>
+						<td data-order="162700">$162,700/y</td>
+					</tr>
+					<tr>
+						<td data-search="Brielle Williamson">B. Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td data-order="1354406400">Sun 2nd Dec 12</td>
+						<td data-order="372000">$372,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Herrod Chandler">H. Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td data-order="1344207600">Mon 6th Aug 12</td>
+						<td data-order="137500">$137,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Rhona Davidson">R. Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td data-order="1287010800">Thu 14th Oct 10</td>
+						<td data-order="327900">$327,900/y</td>
+					</tr>
+					<tr>
+						<td data-search="Colleen Hurst">C. Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td data-order="1252969200">Tue 15th Sep 09</td>
+						<td data-order="205500">$205,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Sonya Frost">S. Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td data-order="1229126400">Sat 13th Dec 08</td>
+						<td data-order="103600">$103,600/y</td>
+					</tr>
+					<tr>
+						<td data-search="Jena Gaines">J. Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td data-order="1229644800">Fri 19th Dec 08</td>
+						<td data-order="90560">$90,560/y</td>
+					</tr>
+					<tr>
+						<td data-search="Quinn Flynn">Q. Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td data-order="1362268800">Sun 3rd Mar 13</td>
+						<td data-order="342000">$342,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Charde Marshall">C. Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td data-order="1224111600">Thu 16th Oct 08</td>
+						<td data-order="470600">$470,600/y</td>
+					</tr>
+					<tr>
+						<td data-search="Haley Kennedy">H. Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td data-order="1355788800">Tue 18th Dec 12</td>
+						<td data-order="313500">$313,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Tatyana Fitzpatrick">T. Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td data-order="1268784000">Wed 17th Mar 10</td>
+						<td data-order="385750">$385,750/y</td>
+					</tr>
+					<tr>
+						<td data-search="Michael Silva">M. Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td data-order="1353974400">Tue 27th Nov 12</td>
+						<td data-order="198500">$198,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Paul Byrd">P. Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td data-order="1276038000">Wed 9th Jun 10</td>
+						<td data-order="725000">$725,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Gloria Little">G. Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td data-order="1239318000">Fri 10th Apr 09</td>
+						<td data-order="237500">$237,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Bradley Greer">B. Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td data-order="1350082800">Sat 13th Oct 12</td>
+						<td data-order="132000">$132,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Dai Rios">D. Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td data-order="1348614000">Wed 26th Sep 12</td>
+						<td data-order="217500">$217,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Jenette Caldwell">J. Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td data-order="1315004400">Sat 3rd Sep 11</td>
+						<td data-order="345000">$345,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Yuri Berry">Y. Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td data-order="1245884400">Thu 25th Jun 09</td>
+						<td data-order="675000">$675,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Caesar Vance">C. Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td data-order="1323648000">Mon 12th Dec 11</td>
+						<td data-order="106450">$106,450/y</td>
+					</tr>
+					<tr>
+						<td data-search="Doris Wilder">D. Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td data-order="1284937200">Mon 20th Sep 10</td>
+						<td data-order="85600">$85,600/y</td>
+					</tr>
+					<tr>
+						<td data-search="Angelica Ramos">A. Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td data-order="1255042800">Fri 9th Oct 09</td>
+						<td data-order="1200000">$1,200,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Gavin Joyce">G. Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td data-order="1292976000">Wed 22nd Dec 10</td>
+						<td data-order="92575">$92,575/y</td>
+					</tr>
+					<tr>
+						<td data-search="Jennifer Chang">J. Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td data-order="1289692800">Sun 14th Nov 10</td>
+						<td data-order="357650">$357,650/y</td>
+					</tr>
+					<tr>
+						<td data-search="Brenden Wagner">B. Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td data-order="1307401200">Tue 7th Jun 11</td>
+						<td data-order="206850">$206,850/y</td>
+					</tr>
+					<tr>
+						<td data-search="Fiona Green">F. Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td data-order="1268265600">Thu 11th Mar 10</td>
+						<td data-order="850000">$850,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Shou Itou">S. Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td data-order="1313276400">Sun 14th Aug 11</td>
+						<td data-order="163000">$163,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Michelle House">M. House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td data-order="1306969200">Thu 2nd Jun 11</td>
+						<td data-order="95400">$95,400/y</td>
+					</tr>
+					<tr>
+						<td data-search="Suki Burks">S. Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td data-order="1256166000">Thu 22nd Oct 09</td>
+						<td data-order="114500">$114,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Prescott Bartlett">P. Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td data-order="1304722800">Sat 7th May 11</td>
+						<td data-order="145000">$145,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Gavin Cortez">G. Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td data-order="1224975600">Sun 26th Oct 08</td>
+						<td data-order="235500">$235,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Martena Mccray">M. Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td data-order="1299628800">Wed 9th Mar 11</td>
+						<td data-order="324050">$324,050/y</td>
+					</tr>
+					<tr>
+						<td data-search="Unity Butler">U. Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td data-order="1260316800">Wed 9th Dec 09</td>
+						<td data-order="85675">$85,675/y</td>
+					</tr>
+					<tr>
+						<td data-search="Howard Hatfield">H. Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td data-order="1229385600">Tue 16th Dec 08</td>
+						<td data-order="164500">$164,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Hope Fuentes">H. Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td data-order="1265932800">Fri 12th Feb 10</td>
+						<td data-order="109850">$109,850/y</td>
+					</tr>
+					<tr>
+						<td data-search="Vivian Harrell">V. Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td data-order="1234569600">Sat 14th Feb 09</td>
+						<td data-order="452500">$452,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Timothy Mooney">T. Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td data-order="1228953600">Thu 11th Dec 08</td>
+						<td data-order="136200">$136,200/y</td>
+					</tr>
+					<tr>
+						<td data-search="Jackson Bradshaw">J. Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td data-order="1222383600">Fri 26th Sep 08</td>
+						<td data-order="645750">$645,750/y</td>
+					</tr>
+					<tr>
+						<td data-search="Olivia Liang">O. Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td data-order="1296691200">Thu 3rd Feb 11</td>
+						<td data-order="234500">$234,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Bruno Nash">B. Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td data-order="1304377200">Tue 3rd May 11</td>
+						<td data-order="163500">$163,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Sakura Yamamoto">S. Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td data-order="1250636400">Wed 19th Aug 09</td>
+						<td data-order="139575">$139,575/y</td>
+					</tr>
+					<tr>
+						<td data-search="Thor Walton">T. Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td data-order="1376175600">Sun 11th Aug 13</td>
+						<td data-order="98540">$98,540/y</td>
+					</tr>
+					<tr>
+						<td data-search="Finn Camacho">F. Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td data-order="1246921200">Tue 7th Jul 09</td>
+						<td data-order="87500">$87,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Serge Baldwin">S. Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td data-order="1333926000">Mon 9th Apr 12</td>
+						<td data-order="138575">$138,575/y</td>
+					</tr>
+					<tr>
+						<td data-search="Zenaida Frank">Z. Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td data-order="1262563200">Mon 4th Jan 10</td>
+						<td data-order="125250">$125,250/y</td>
+					</tr>
+					<tr>
+						<td data-search="Zorita Serrano">Z. Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td data-order="1338505200">Fri 1st Jun 12</td>
+						<td data-order="115000">$115,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Jennifer Acosta">J. Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td data-order="1359676800">Fri 1st Feb 13</td>
+						<td data-order="75650">$75,650/y</td>
+					</tr>
+					<tr>
+						<td data-search="Cara Stevens">C. Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td data-order="1323129600">Tue 6th Dec 11</td>
+						<td data-order="145600">$145,600/y</td>
+					</tr>
+					<tr>
+						<td data-search="Hermione Butler">H. Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td data-order="1300665600">Mon 21st Mar 11</td>
+						<td data-order="356250">$356,250/y</td>
+					</tr>
+					<tr>
+						<td data-search="Lael Greer">L. Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td data-order="1235692800">Fri 27th Feb 09</td>
+						<td data-order="103500">$103,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Jonas Alexander">J. Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td data-order="1279062000">Wed 14th Jul 10</td>
+						<td data-order="86500">$86,500/y</td>
+					</tr>
+					<tr>
+						<td data-search="Shad Decker">S. Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td data-order="1226534400">Thu 13th Nov 08</td>
+						<td data-order="183000">$183,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Michael Bruce">M. Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td data-order="1309129200">Mon 27th Jun 11</td>
+						<td data-order="183000">$183,000/y</td>
+					</tr>
+					<tr>
+						<td data-search="Donna Snider">D. Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td data-order="1295913600">Tue 25th Jan 11</td>
+						<td data-order="112000">$112,000/y</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li class="active"><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/index.html b/public/admin/js/DataTables/examples/advanced_init/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..cd77d69340adc6b96a6f6bb0f4f16c26c88d5b62
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/index.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+
+	<title>DataTables examples - Advanced initialisation</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Advanced initialisation</span></h1>
+
+			<div class="info">
+				<p>The configuration options offered by DataTables extend much further than the options shown in the
+				basic initialisation of this documentation. Through combinations of the options available and the use
+				of callbacks, DataTables is completely customisable and will fit into exactly what you need for your
+				table display.</p>
+
+				<p>This section shows some more advanced initialisation options. Keep in mind also that each example
+				can be combined with the other examples to get what you want!</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/language_file.html b/public/admin/js/DataTables/examples/advanced_init/language_file.html
new file mode 100644
index 0000000000000000000000000000000000000000..fe2907c1ef68e957efa15daec9cedef99c048021
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/language_file.html
@@ -0,0 +1,760 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Language file</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"language": {
+			"url": "../resources/de_DE.txt"
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Language file</span></h1>
+
+			<div class="info">
+				<p>As well as being able to pass language information to DataTables through the <a href=
+				"//datatables.net/reference/option/language"><code class="option" title=
+				"DataTables initialisation option">language<span>DT</span></code></a> initialisation option, you can
+				also store the language information in a file, which DataTables can load by Ajax using the <a href=
+				"//datatables.net/reference/option/language.url"><code class="option" title=
+				"DataTables initialisation option">language.url<span>DT</span></code></a> option.</p>
+
+				<p>The following example shows DataTables reading a German language file.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;language&quot;: {
+			&quot;url&quot;: &quot;../resources/de_DE.txt&quot;
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li class="active"><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/length_menu.html b/public/admin/js/DataTables/examples/advanced_init/length_menu.html
new file mode 100644
index 0000000000000000000000000000000000000000..9f0cbd14d4304f3bac2baa3a1fe5b83e553745f1
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/length_menu.html
@@ -0,0 +1,762 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Page length options</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Page length options</span></h1>
+
+			<div class="info">
+				<p>It is possible to easily customise the options shown in the length menu (by default at the top left
+				of the table) using the <a href="//datatables.net/reference/option/lengthMenu"><code class="option"
+				title="DataTables initialisation option">lengthMenu<span>DT</span></code></a> initialisation
+				option.</p>
+
+				<p>This parameter can take one of two forms:</p>
+
+				<ul class="markdown">
+					<li>A 1D array of options which will be used for both the displayed option and the value, or</li>
+					<li>A 2D array in which the first array is used to define the value options and the second array
+					the displayed options (useful for language strings such as 'All').</li>
+				</ul>
+
+				<p>The example below shows a 2D array being used to include a "Show all" records option.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;lengthMenu&quot;: [[10, 25, 50, -1], [10, 25, 50, &quot;All&quot;]]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li class="active"><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/row_callback.html b/public/admin/js/DataTables/examples/advanced_init/row_callback.html
new file mode 100644
index 0000000000000000000000000000000000000000..a5fa2f0273345d3a0a41a6b05efa54abc6ae5eec
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/row_callback.html
@@ -0,0 +1,775 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Row created callback</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	td.highlight {
+		font-weight: bold;
+		color: blue;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"createdRow": function ( row, data, index ) {
+			if ( data[5].replace(/[\$,]/g, '') * 1 > 4000 ) {
+				$('td', row).eq(5).addClass('highlight');
+			}
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Row created callback</span></h1>
+
+			<div class="info">
+				<p>The following example shows how a callback function can be used to format a particular row at draw
+				time. For each row that is generated for display, the <a href=
+				"//datatables.net/reference/option/createdRow"><code class="option" title=
+				"DataTables initialisation option">createdRow<span>DT</span></code></a> function is called once and
+				once only. It is passed the create row node which can then be modified.</p>
+
+				<p>In this case a trivial example of making the 'salary' column blue and bold by adding a CSS class to
+				the container cell if the salary is greater than $4,000. Note that <a href=
+				"//datatables.net/reference/option/columns.createdCell"><code class="option" title=
+				"DataTables initialisation option">columns.createdCell<span>DT</span></code></a> could also be used to
+				create exactly the same effect.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;createdRow&quot;: function ( row, data, index ) {
+			if ( data[5].replace(/[\$,]/g, '') * 1 &gt; 4000 ) {
+				$('td', row).eq(5).addClass('highlight');
+			}
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">td.highlight {
+		font-weight: bold;
+		color: blue;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li class="active"><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/row_grouping.html b/public/admin/js/DataTables/examples/advanced_init/row_grouping.html
new file mode 100644
index 0000000000000000000000000000000000000000..150bfc20667f7ad181bef6985d2da699b5e00eff
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/row_grouping.html
@@ -0,0 +1,827 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Row grouping</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+tr.group,
+tr.group:hover {
+	background-color: #ddd !important;
+}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable({
+		"columnDefs": [
+			{ "visible": false, "targets": 2 }
+		],
+		"order": [[ 2, 'asc' ]],
+		"displayLength": 25,
+		"drawCallback": function ( settings ) {
+			var api = this.api();
+			var rows = api.rows( {page:'current'} ).nodes();
+			var last=null;
+
+			api.column(2, {page:'current'} ).data().each( function ( group, i ) {
+				if ( last !== group ) {
+					$(rows).eq( i ).before(
+						'<tr class="group"><td colspan="5">'+group+'</td></tr>'
+					);
+
+					last = group;
+				}
+			} );
+		}
+	} );
+
+	// Order by the grouping
+	$('#example tbody').on( 'click', 'tr.group', function () {
+		var currentOrder = table.order()[0];
+		if ( currentOrder[0] === 2 && currentOrder[1] === 'asc' ) {
+			table.order( [ 2, 'desc' ] ).draw();
+		}
+		else {
+			table.order( [ 2, 'asc' ] ).draw();
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Row grouping</span></h1>
+
+			<div class="info">
+				<p>Although DataTables doesn't have row grouping built-in (picking one of the many methods available
+				would overly limit the DataTables core), it is most certainly possible to give the look and feel of row
+				grouping.</p>
+
+				<p>In the example below the 'group' is the office location, which is based on the information in the
+				third column (which is set to hidden). The grouping indicator is added by the <a href=
+				"//datatables.net/reference/option/drawCallback"><code class="option" title=
+				"DataTables initialisation option">drawCallback<span>DT</span></code></a> function, which will parse
+				through the rows which are displayed, and enter a grouping TR element where a new group is found. A
+				<code>click</code> event handler is added for the grouping rows to allow the grouping order to be
+				restored as well as ordering by any other column.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable({
+		&quot;columnDefs&quot;: [
+			{ &quot;visible&quot;: false, &quot;targets&quot;: 2 }
+		],
+		&quot;order&quot;: [[ 2, 'asc' ]],
+		&quot;displayLength&quot;: 25,
+		&quot;drawCallback&quot;: function ( settings ) {
+			var api = this.api();
+			var rows = api.rows( {page:'current'} ).nodes();
+			var last=null;
+
+			api.column(2, {page:'current'} ).data().each( function ( group, i ) {
+				if ( last !== group ) {
+					$(rows).eq( i ).before(
+						'&lt;tr class=&quot;group&quot;&gt;&lt;td colspan=&quot;5&quot;&gt;'+group+'&lt;/td&gt;&lt;/tr&gt;'
+					);
+
+					last = group;
+				}
+			} );
+		}
+	} );
+
+	// Order by the grouping
+	$('#example tbody').on( 'click', 'tr.group', function () {
+		var currentOrder = table.order()[0];
+		if ( currentOrder[0] === 2 &amp;&amp; currentOrder[1] === 'asc' ) {
+			table.order( [ 2, 'desc' ] ).draw();
+		}
+		else {
+			table.order( [ 2, 'asc' ] ).draw();
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">tr.group,
+tr.group:hover {
+	background-color: #ddd !important;
+}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li class="active"><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./sort_direction_control.html">Order direction sequence control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/advanced_init/sort_direction_control.html b/public/admin/js/DataTables/examples/advanced_init/sort_direction_control.html
new file mode 100644
index 0000000000000000000000000000000000000000..f0fb3bebf137d99da52ac9262d509767bc3c3b97
--- /dev/null
+++ b/public/admin/js/DataTables/examples/advanced_init/sort_direction_control.html
@@ -0,0 +1,784 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Order direction sequence control</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"aoColumns": [
+			null,
+			null,
+			{ "orderSequence": [ "asc" ] },
+			{ "orderSequence": [ "desc", "asc", "asc" ] },
+			{ "orderSequence": [ "desc" ] },
+			null
+		]
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Order direction sequence control</span></h1>
+
+			<div class="info">
+				<p>At times you may wish to change the default ordering direction sequence for columns (some or all of
+				them) to be 'descending' rather than DataTables' default ascending. This can be done through the use of
+				the <a href="//datatables.net/reference/option/columns.orderSequence"><code class="option" title=
+				"DataTables initialisation option">columns.orderSequence<span>DT</span></code></a> initialisation
+				parameter. This parameter also allows you to limit the ordering to a single direction, or you could add
+				complex behaviour to the ordering interaction.</p>
+
+				<p>The example below shows:</p>
+
+				<ul class="markdown">
+					<li>Column 1 - default ordering</li>
+					<li>Column 2 - default ordering</li>
+					<li>Column 3 - ascending ordering only</li>
+					<li>Column 4 - descending ordering, followed by ascending and then ascending again</li>
+					<li>Column 5 - descending ordering only</li>
+					<li>Column 6 - default ordering</li>
+				</ul>
+
+				<p>It's worth noting that I don't have a good use case for when you might what to mix such complex
+				ordering behaviour into a single table, but the example shows how these options can be use and
+				therefore applied across all columns.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;aoColumns&quot;: [
+			null,
+			null,
+			{ &quot;orderSequence&quot;: [ &quot;asc&quot; ] },
+			{ &quot;orderSequence&quot;: [ &quot;desc&quot;, &quot;asc&quot;, &quot;asc&quot; ] },
+			{ &quot;orderSequence&quot;: [ &quot;desc&quot; ] },
+			null
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Advanced initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./dt_events.html">DataTables events</a></li>
+							<li><a href="./column_render.html">Column rendering</a></li>
+							<li><a href="./length_menu.html">Page length options</a></li>
+							<li><a href="./dom_multiple_elements.html">Multiple table control elements</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan / colspan)</a></li>
+							<li><a href="./html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./language_file.html">Language file</a></li>
+							<li><a href="./defaults.html">Setting defaults</a></li>
+							<li><a href="./row_callback.html">Row created callback</a></li>
+							<li><a href="./row_grouping.html">Row grouping</a></li>
+							<li><a href="./footer_callback.html">Footer callback</a></li>
+							<li><a href="./dom_toolbar.html">Custom toolbar elements</a></li>
+							<li class="active"><a href="./sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/custom_data_flat.html b/public/admin/js/DataTables/examples/ajax/custom_data_flat.html
new file mode 100644
index 0000000000000000000000000000000000000000..0b84bdff452bec2bfac4da43bc3b18bc98866784
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/custom_data_flat.html
@@ -0,0 +1,336 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Flat array data source</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"ajax": {
+			"url": "data/objects_root_array.txt",
+			"dataSrc": ""
+		},
+		"columns": [
+			{ "data": "name" },
+			{ "data": "position" },
+			{ "data": "office" },
+			{ "data": "extn" },
+			{ "data": "start_date" },
+			{ "data": "salary" }
+		]
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Flat array data source</span></h1>
+
+			<div class="info">
+				<p>When loading data from an Ajax source, by default, DataTables will look for the data to use in the
+				<code>data</code> parameter of a returned object (e.g. <code>{ "data": [...] }</code>). This can easily
+				be change by using the <code>dataSrc</code> option of the <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> initiation option.</p>
+
+				<p>The <a href="//datatables.net/reference/option/ajax.dataSrc"><code class="option" title=
+				"DataTables initialisation option">ajax.dataSrc<span>DT</span></code></a> has a number of ways in which
+				it can be used:</p>
+
+				<ul class="markdown">
+					<li>As a string (e.g. <code>dataSrc: 'myData'</code>) - obtain data from a different property in
+					the source object.</li>
+					<li>As an empty string (e.g. <code>dataSrc: ''</code>) - the data source is not an object but an
+					array.</li>
+					<li>As a function (e.g. <code>dataSrc: function(json) {}</code>) - a function can be used to
+					transform the data from one source format to another (for example you could convert from XML to a
+					Javascript object). The value returned from the function is used as the data for the table.</li>
+				</ul>
+
+				<p>The example below shows <a href="//datatables.net/reference/option/ajax.dataSrc"><code class=
+				"option" title="DataTables initialisation option">ajax.dataSrc<span>DT</span></code></a> being used as
+				an empty string. This tells DataTables that the JSON loaded is a plain array, not an object with an
+				array inside it as is the default.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;ajax&quot;: {
+			&quot;url&quot;: &quot;data/objects_root_array.txt&quot;,
+			&quot;dataSrc&quot;: &quot;&quot;
+		},
+		&quot;columns&quot;: [
+			{ &quot;data&quot;: &quot;name&quot; },
+			{ &quot;data&quot;: &quot;position&quot; },
+			{ &quot;data&quot;: &quot;office&quot; },
+			{ &quot;data&quot;: &quot;extn&quot; },
+			{ &quot;data&quot;: &quot;start_date&quot; },
+			{ &quot;data&quot;: &quot;salary&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Ajax</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="./objects.html">Ajax data source (objects)</a></li>
+							<li><a href="./deep.html">Nested object data (objects)</a></li>
+							<li><a href="./objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="./orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="./null_data_source.html">Generated content for a column</a></li>
+							<li><a href="./custom_data_property.html">Custom data source property</a></li>
+							<li class="active"><a href="./custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="./defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/custom_data_property.html b/public/admin/js/DataTables/examples/ajax/custom_data_property.html
new file mode 100644
index 0000000000000000000000000000000000000000..96d59541e567b1245b9387c8cd7db83f87a94896
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/custom_data_property.html
@@ -0,0 +1,322 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Custom data source property</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"ajax": {
+			"url": "data/arrays_custom_prop.txt",
+			"dataSrc": "demo"
+		}
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Custom data source property</span></h1>
+
+			<div class="info">
+				<p>When loading data from an Ajax source, by default, DataTables will look for the data to use in the
+				<code>data</code> parameter of a returned object (e.g. <code>{ "data": [...] }</code>). This can easily
+				be change by using the <code>dataSrc</code> option of the <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> initiation option.</p>
+
+				<p>The <a href="//datatables.net/reference/option/ajax.dataSrc"><code class="option" title=
+				"DataTables initialisation option">ajax.dataSrc<span>DT</span></code></a> has a number of ways in which
+				it can be used:</p>
+
+				<ul class="markdown">
+					<li>As a string (e.g. <code>dataSrc: 'myData'</code>) - obtain data from a different property in
+					the source object.</li>
+					<li>As an empty string (e.g. <code>dataSrc: ''</code>) - the data source is not an object but an
+					array.</li>
+					<li>As a function (e.g. <code>dataSrc: function(json) {}</code>) - a function can be used to
+					transform the data from one source format to another (for example you could convert from XML to a
+					Javascript object). The value returned from the function is used as the data for the table.</li>
+				</ul>
+
+				<p>The example below shows <a href="//datatables.net/reference/option/ajax.dataSrc"><code class=
+				"option" title="DataTables initialisation option">ajax.dataSrc<span>DT</span></code></a> being used as
+				a string to get the data from a different source property, in this case <code class="string" title=
+				"String">demo</code> but it could be any value, included a nested property by using standard dotted
+				Javascript object notation.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;ajax&quot;: {
+			&quot;url&quot;: &quot;data/arrays_custom_prop.txt&quot;,
+			&quot;dataSrc&quot;: &quot;demo&quot;
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Ajax</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="./objects.html">Ajax data source (objects)</a></li>
+							<li><a href="./deep.html">Nested object data (objects)</a></li>
+							<li><a href="./objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="./orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="./null_data_source.html">Generated content for a column</a></li>
+							<li class="active"><a href="./custom_data_property.html">Custom data source
+							property</a></li>
+							<li><a href="./custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="./defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/data/arrays.txt b/public/admin/js/DataTables/examples/ajax/data/arrays.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4dadf14b79eeabc2c0d01742e51eebd90ce9f0d3
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/data/arrays.txt
@@ -0,0 +1,460 @@
+{
+    "data": [
+        [
+            "Tiger Nixon",
+            "System Architect",
+            "Edinburgh",
+            "5421",
+            "2011\/04\/25",
+            "$320,800"
+        ],
+        [
+            "Garrett Winters",
+            "Accountant",
+            "Tokyo",
+            "8422",
+            "2011\/07\/25",
+            "$170,750"
+        ],
+        [
+            "Ashton Cox",
+            "Junior Technical Author",
+            "San Francisco",
+            "1562",
+            "2009\/01\/12",
+            "$86,000"
+        ],
+        [
+            "Cedric Kelly",
+            "Senior Javascript Developer",
+            "Edinburgh",
+            "6224",
+            "2012\/03\/29",
+            "$433,060"
+        ],
+        [
+            "Airi Satou",
+            "Accountant",
+            "Tokyo",
+            "5407",
+            "2008\/11\/28",
+            "$162,700"
+        ],
+        [
+            "Brielle Williamson",
+            "Integration Specialist",
+            "New York",
+            "4804",
+            "2012\/12\/02",
+            "$372,000"
+        ],
+        [
+            "Herrod Chandler",
+            "Sales Assistant",
+            "San Francisco",
+            "9608",
+            "2012\/08\/06",
+            "$137,500"
+        ],
+        [
+            "Rhona Davidson",
+            "Integration Specialist",
+            "Tokyo",
+            "6200",
+            "2010\/10\/14",
+            "$327,900"
+        ],
+        [
+            "Colleen Hurst",
+            "Javascript Developer",
+            "San Francisco",
+            "2360",
+            "2009\/09\/15",
+            "$205,500"
+        ],
+        [
+            "Sonya Frost",
+            "Software Engineer",
+            "Edinburgh",
+            "1667",
+            "2008\/12\/13",
+            "$103,600"
+        ],
+        [
+            "Jena Gaines",
+            "Office Manager",
+            "London",
+            "3814",
+            "2008\/12\/19",
+            "$90,560"
+        ],
+        [
+            "Quinn Flynn",
+            "Support Lead",
+            "Edinburgh",
+            "9497",
+            "2013\/03\/03",
+            "$342,000"
+        ],
+        [
+            "Charde Marshall",
+            "Regional Director",
+            "San Francisco",
+            "6741",
+            "2008\/10\/16",
+            "$470,600"
+        ],
+        [
+            "Haley Kennedy",
+            "Senior Marketing Designer",
+            "London",
+            "3597",
+            "2012\/12\/18",
+            "$313,500"
+        ],
+        [
+            "Tatyana Fitzpatrick",
+            "Regional Director",
+            "London",
+            "1965",
+            "2010\/03\/17",
+            "$385,750"
+        ],
+        [
+            "Michael Silva",
+            "Marketing Designer",
+            "London",
+            "1581",
+            "2012\/11\/27",
+            "$198,500"
+        ],
+        [
+            "Paul Byrd",
+            "Chief Financial Officer (CFO)",
+            "New York",
+            "3059",
+            "2010\/06\/09",
+            "$725,000"
+        ],
+        [
+            "Gloria Little",
+            "Systems Administrator",
+            "New York",
+            "1721",
+            "2009\/04\/10",
+            "$237,500"
+        ],
+        [
+            "Bradley Greer",
+            "Software Engineer",
+            "London",
+            "2558",
+            "2012\/10\/13",
+            "$132,000"
+        ],
+        [
+            "Dai Rios",
+            "Personnel Lead",
+            "Edinburgh",
+            "2290",
+            "2012\/09\/26",
+            "$217,500"
+        ],
+        [
+            "Jenette Caldwell",
+            "Development Lead",
+            "New York",
+            "1937",
+            "2011\/09\/03",
+            "$345,000"
+        ],
+        [
+            "Yuri Berry",
+            "Chief Marketing Officer (CMO)",
+            "New York",
+            "6154",
+            "2009\/06\/25",
+            "$675,000"
+        ],
+        [
+            "Caesar Vance",
+            "Pre-Sales Support",
+            "New York",
+            "8330",
+            "2011\/12\/12",
+            "$106,450"
+        ],
+        [
+            "Doris Wilder",
+            "Sales Assistant",
+            "Sidney",
+            "3023",
+            "2010\/09\/20",
+            "$85,600"
+        ],
+        [
+            "Angelica Ramos",
+            "Chief Executive Officer (CEO)",
+            "London",
+            "5797",
+            "2009\/10\/09",
+            "$1,200,000"
+        ],
+        [
+            "Gavin Joyce",
+            "Developer",
+            "Edinburgh",
+            "8822",
+            "2010\/12\/22",
+            "$92,575"
+        ],
+        [
+            "Jennifer Chang",
+            "Regional Director",
+            "Singapore",
+            "9239",
+            "2010\/11\/14",
+            "$357,650"
+        ],
+        [
+            "Brenden Wagner",
+            "Software Engineer",
+            "San Francisco",
+            "1314",
+            "2011\/06\/07",
+            "$206,850"
+        ],
+        [
+            "Fiona Green",
+            "Chief Operating Officer (COO)",
+            "San Francisco",
+            "2947",
+            "2010\/03\/11",
+            "$850,000"
+        ],
+        [
+            "Shou Itou",
+            "Regional Marketing",
+            "Tokyo",
+            "8899",
+            "2011\/08\/14",
+            "$163,000"
+        ],
+        [
+            "Michelle House",
+            "Integration Specialist",
+            "Sidney",
+            "2769",
+            "2011\/06\/02",
+            "$95,400"
+        ],
+        [
+            "Suki Burks",
+            "Developer",
+            "London",
+            "6832",
+            "2009\/10\/22",
+            "$114,500"
+        ],
+        [
+            "Prescott Bartlett",
+            "Technical Author",
+            "London",
+            "3606",
+            "2011\/05\/07",
+            "$145,000"
+        ],
+        [
+            "Gavin Cortez",
+            "Team Leader",
+            "San Francisco",
+            "2860",
+            "2008\/10\/26",
+            "$235,500"
+        ],
+        [
+            "Martena Mccray",
+            "Post-Sales support",
+            "Edinburgh",
+            "8240",
+            "2011\/03\/09",
+            "$324,050"
+        ],
+        [
+            "Unity Butler",
+            "Marketing Designer",
+            "San Francisco",
+            "5384",
+            "2009\/12\/09",
+            "$85,675"
+        ],
+        [
+            "Howard Hatfield",
+            "Office Manager",
+            "San Francisco",
+            "7031",
+            "2008\/12\/16",
+            "$164,500"
+        ],
+        [
+            "Hope Fuentes",
+            "Secretary",
+            "San Francisco",
+            "6318",
+            "2010\/02\/12",
+            "$109,850"
+        ],
+        [
+            "Vivian Harrell",
+            "Financial Controller",
+            "San Francisco",
+            "9422",
+            "2009\/02\/14",
+            "$452,500"
+        ],
+        [
+            "Timothy Mooney",
+            "Office Manager",
+            "London",
+            "7580",
+            "2008\/12\/11",
+            "$136,200"
+        ],
+        [
+            "Jackson Bradshaw",
+            "Director",
+            "New York",
+            "1042",
+            "2008\/09\/26",
+            "$645,750"
+        ],
+        [
+            "Olivia Liang",
+            "Support Engineer",
+            "Singapore",
+            "2120",
+            "2011\/02\/03",
+            "$234,500"
+        ],
+        [
+            "Bruno Nash",
+            "Software Engineer",
+            "London",
+            "6222",
+            "2011\/05\/03",
+            "$163,500"
+        ],
+        [
+            "Sakura Yamamoto",
+            "Support Engineer",
+            "Tokyo",
+            "9383",
+            "2009\/08\/19",
+            "$139,575"
+        ],
+        [
+            "Thor Walton",
+            "Developer",
+            "New York",
+            "8327",
+            "2013\/08\/11",
+            "$98,540"
+        ],
+        [
+            "Finn Camacho",
+            "Support Engineer",
+            "San Francisco",
+            "2927",
+            "2009\/07\/07",
+            "$87,500"
+        ],
+        [
+            "Serge Baldwin",
+            "Data Coordinator",
+            "Singapore",
+            "8352",
+            "2012\/04\/09",
+            "$138,575"
+        ],
+        [
+            "Zenaida Frank",
+            "Software Engineer",
+            "New York",
+            "7439",
+            "2010\/01\/04",
+            "$125,250"
+        ],
+        [
+            "Zorita Serrano",
+            "Software Engineer",
+            "San Francisco",
+            "4389",
+            "2012\/06\/01",
+            "$115,000"
+        ],
+        [
+            "Jennifer Acosta",
+            "Junior Javascript Developer",
+            "Edinburgh",
+            "3431",
+            "2013\/02\/01",
+            "$75,650"
+        ],
+        [
+            "Cara Stevens",
+            "Sales Assistant",
+            "New York",
+            "3990",
+            "2011\/12\/06",
+            "$145,600"
+        ],
+        [
+            "Hermione Butler",
+            "Regional Director",
+            "London",
+            "1016",
+            "2011\/03\/21",
+            "$356,250"
+        ],
+        [
+            "Lael Greer",
+            "Systems Administrator",
+            "London",
+            "6733",
+            "2009\/02\/27",
+            "$103,500"
+        ],
+        [
+            "Jonas Alexander",
+            "Developer",
+            "San Francisco",
+            "8196",
+            "2010\/07\/14",
+            "$86,500"
+        ],
+        [
+            "Shad Decker",
+            "Regional Director",
+            "Edinburgh",
+            "6373",
+            "2008\/11\/13",
+            "$183,000"
+        ],
+        [
+            "Michael Bruce",
+            "Javascript Developer",
+            "Singapore",
+            "5384",
+            "2011\/06\/27",
+            "$183,000"
+        ],
+        [
+            "Donna Snider",
+            "Customer Support",
+            "New York",
+            "4226",
+            "2011\/01\/25",
+            "$112,000"
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/data/arrays_custom_prop.txt b/public/admin/js/DataTables/examples/ajax/data/arrays_custom_prop.txt
new file mode 100644
index 0000000000000000000000000000000000000000..06e8265de62b5e5f7c66a1bf13ce0daca300949a
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/data/arrays_custom_prop.txt
@@ -0,0 +1,460 @@
+{
+    "demo": [
+        [
+            "Tiger Nixon",
+            "System Architect",
+            "Edinburgh",
+            "5421",
+            "2011\/04\/25",
+            "$320,800"
+        ],
+        [
+            "Garrett Winters",
+            "Accountant",
+            "Tokyo",
+            "8422",
+            "2011\/07\/25",
+            "$170,750"
+        ],
+        [
+            "Ashton Cox",
+            "Junior Technical Author",
+            "San Francisco",
+            "1562",
+            "2009\/01\/12",
+            "$86,000"
+        ],
+        [
+            "Cedric Kelly",
+            "Senior Javascript Developer",
+            "Edinburgh",
+            "6224",
+            "2012\/03\/29",
+            "$433,060"
+        ],
+        [
+            "Airi Satou",
+            "Accountant",
+            "Tokyo",
+            "5407",
+            "2008\/11\/28",
+            "$162,700"
+        ],
+        [
+            "Brielle Williamson",
+            "Integration Specialist",
+            "New York",
+            "4804",
+            "2012\/12\/02",
+            "$372,000"
+        ],
+        [
+            "Herrod Chandler",
+            "Sales Assistant",
+            "San Francisco",
+            "9608",
+            "2012\/08\/06",
+            "$137,500"
+        ],
+        [
+            "Rhona Davidson",
+            "Integration Specialist",
+            "Tokyo",
+            "6200",
+            "2010\/10\/14",
+            "$327,900"
+        ],
+        [
+            "Colleen Hurst",
+            "Javascript Developer",
+            "San Francisco",
+            "2360",
+            "2009\/09\/15",
+            "$205,500"
+        ],
+        [
+            "Sonya Frost",
+            "Software Engineer",
+            "Edinburgh",
+            "1667",
+            "2008\/12\/13",
+            "$103,600"
+        ],
+        [
+            "Jena Gaines",
+            "Office Manager",
+            "London",
+            "3814",
+            "2008\/12\/19",
+            "$90,560"
+        ],
+        [
+            "Quinn Flynn",
+            "Support Lead",
+            "Edinburgh",
+            "9497",
+            "2013\/03\/03",
+            "$342,000"
+        ],
+        [
+            "Charde Marshall",
+            "Regional Director",
+            "San Francisco",
+            "6741",
+            "2008\/10\/16",
+            "$470,600"
+        ],
+        [
+            "Haley Kennedy",
+            "Senior Marketing Designer",
+            "London",
+            "3597",
+            "2012\/12\/18",
+            "$313,500"
+        ],
+        [
+            "Tatyana Fitzpatrick",
+            "Regional Director",
+            "London",
+            "1965",
+            "2010\/03\/17",
+            "$385,750"
+        ],
+        [
+            "Michael Silva",
+            "Marketing Designer",
+            "London",
+            "1581",
+            "2012\/11\/27",
+            "$198,500"
+        ],
+        [
+            "Paul Byrd",
+            "Chief Financial Officer (CFO)",
+            "New York",
+            "3059",
+            "2010\/06\/09",
+            "$725,000"
+        ],
+        [
+            "Gloria Little",
+            "Systems Administrator",
+            "New York",
+            "1721",
+            "2009\/04\/10",
+            "$237,500"
+        ],
+        [
+            "Bradley Greer",
+            "Software Engineer",
+            "London",
+            "2558",
+            "2012\/10\/13",
+            "$132,000"
+        ],
+        [
+            "Dai Rios",
+            "Personnel Lead",
+            "Edinburgh",
+            "2290",
+            "2012\/09\/26",
+            "$217,500"
+        ],
+        [
+            "Jenette Caldwell",
+            "Development Lead",
+            "New York",
+            "1937",
+            "2011\/09\/03",
+            "$345,000"
+        ],
+        [
+            "Yuri Berry",
+            "Chief Marketing Officer (CMO)",
+            "New York",
+            "6154",
+            "2009\/06\/25",
+            "$675,000"
+        ],
+        [
+            "Caesar Vance",
+            "Pre-Sales Support",
+            "New York",
+            "8330",
+            "2011\/12\/12",
+            "$106,450"
+        ],
+        [
+            "Doris Wilder",
+            "Sales Assistant",
+            "Sidney",
+            "3023",
+            "2010\/09\/20",
+            "$85,600"
+        ],
+        [
+            "Angelica Ramos",
+            "Chief Executive Officer (CEO)",
+            "London",
+            "5797",
+            "2009\/10\/09",
+            "$1,200,000"
+        ],
+        [
+            "Gavin Joyce",
+            "Developer",
+            "Edinburgh",
+            "8822",
+            "2010\/12\/22",
+            "$92,575"
+        ],
+        [
+            "Jennifer Chang",
+            "Regional Director",
+            "Singapore",
+            "9239",
+            "2010\/11\/14",
+            "$357,650"
+        ],
+        [
+            "Brenden Wagner",
+            "Software Engineer",
+            "San Francisco",
+            "1314",
+            "2011\/06\/07",
+            "$206,850"
+        ],
+        [
+            "Fiona Green",
+            "Chief Operating Officer (COO)",
+            "San Francisco",
+            "2947",
+            "2010\/03\/11",
+            "$850,000"
+        ],
+        [
+            "Shou Itou",
+            "Regional Marketing",
+            "Tokyo",
+            "8899",
+            "2011\/08\/14",
+            "$163,000"
+        ],
+        [
+            "Michelle House",
+            "Integration Specialist",
+            "Sidney",
+            "2769",
+            "2011\/06\/02",
+            "$95,400"
+        ],
+        [
+            "Suki Burks",
+            "Developer",
+            "London",
+            "6832",
+            "2009\/10\/22",
+            "$114,500"
+        ],
+        [
+            "Prescott Bartlett",
+            "Technical Author",
+            "London",
+            "3606",
+            "2011\/05\/07",
+            "$145,000"
+        ],
+        [
+            "Gavin Cortez",
+            "Team Leader",
+            "San Francisco",
+            "2860",
+            "2008\/10\/26",
+            "$235,500"
+        ],
+        [
+            "Martena Mccray",
+            "Post-Sales support",
+            "Edinburgh",
+            "8240",
+            "2011\/03\/09",
+            "$324,050"
+        ],
+        [
+            "Unity Butler",
+            "Marketing Designer",
+            "San Francisco",
+            "5384",
+            "2009\/12\/09",
+            "$85,675"
+        ],
+        [
+            "Howard Hatfield",
+            "Office Manager",
+            "San Francisco",
+            "7031",
+            "2008\/12\/16",
+            "$164,500"
+        ],
+        [
+            "Hope Fuentes",
+            "Secretary",
+            "San Francisco",
+            "6318",
+            "2010\/02\/12",
+            "$109,850"
+        ],
+        [
+            "Vivian Harrell",
+            "Financial Controller",
+            "San Francisco",
+            "9422",
+            "2009\/02\/14",
+            "$452,500"
+        ],
+        [
+            "Timothy Mooney",
+            "Office Manager",
+            "London",
+            "7580",
+            "2008\/12\/11",
+            "$136,200"
+        ],
+        [
+            "Jackson Bradshaw",
+            "Director",
+            "New York",
+            "1042",
+            "2008\/09\/26",
+            "$645,750"
+        ],
+        [
+            "Olivia Liang",
+            "Support Engineer",
+            "Singapore",
+            "2120",
+            "2011\/02\/03",
+            "$234,500"
+        ],
+        [
+            "Bruno Nash",
+            "Software Engineer",
+            "London",
+            "6222",
+            "2011\/05\/03",
+            "$163,500"
+        ],
+        [
+            "Sakura Yamamoto",
+            "Support Engineer",
+            "Tokyo",
+            "9383",
+            "2009\/08\/19",
+            "$139,575"
+        ],
+        [
+            "Thor Walton",
+            "Developer",
+            "New York",
+            "8327",
+            "2013\/08\/11",
+            "$98,540"
+        ],
+        [
+            "Finn Camacho",
+            "Support Engineer",
+            "San Francisco",
+            "2927",
+            "2009\/07\/07",
+            "$87,500"
+        ],
+        [
+            "Serge Baldwin",
+            "Data Coordinator",
+            "Singapore",
+            "8352",
+            "2012\/04\/09",
+            "$138,575"
+        ],
+        [
+            "Zenaida Frank",
+            "Software Engineer",
+            "New York",
+            "7439",
+            "2010\/01\/04",
+            "$125,250"
+        ],
+        [
+            "Zorita Serrano",
+            "Software Engineer",
+            "San Francisco",
+            "4389",
+            "2012\/06\/01",
+            "$115,000"
+        ],
+        [
+            "Jennifer Acosta",
+            "Junior Javascript Developer",
+            "Edinburgh",
+            "3431",
+            "2013\/02\/01",
+            "$75,650"
+        ],
+        [
+            "Cara Stevens",
+            "Sales Assistant",
+            "New York",
+            "3990",
+            "2011\/12\/06",
+            "$145,600"
+        ],
+        [
+            "Hermione Butler",
+            "Regional Director",
+            "London",
+            "1016",
+            "2011\/03\/21",
+            "$356,250"
+        ],
+        [
+            "Lael Greer",
+            "Systems Administrator",
+            "London",
+            "6733",
+            "2009\/02\/27",
+            "$103,500"
+        ],
+        [
+            "Jonas Alexander",
+            "Developer",
+            "San Francisco",
+            "8196",
+            "2010\/07\/14",
+            "$86,500"
+        ],
+        [
+            "Shad Decker",
+            "Regional Director",
+            "Edinburgh",
+            "6373",
+            "2008\/11\/13",
+            "$183,000"
+        ],
+        [
+            "Michael Bruce",
+            "Javascript Developer",
+            "Singapore",
+            "5384",
+            "2011\/06\/27",
+            "$183,000"
+        ],
+        [
+            "Donna Snider",
+            "Customer Support",
+            "New York",
+            "4226",
+            "2011\/01\/25",
+            "$112,000"
+        ]
+    ]
+}
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/data/arrays_subobjects.txt b/public/admin/js/DataTables/examples/ajax/data/arrays_subobjects.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a45518117cf1866e08dfd3c9c851018ac4d7e11d
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/data/arrays_subobjects.txt
@@ -0,0 +1,688 @@
+{
+    "data": [
+        {
+            "0": "Tiger Nixon",
+            "hr": {
+                "position": "System Architect",
+                "salary": "$320,800",
+                "start_date": "2011\/04\/25"
+            },
+            "contact": {
+                "office": "Edinburgh",
+                "extn": "5421"
+            }
+        },
+        {
+            "0": "Garrett Winters",
+            "hr": {
+                "position": "Accountant",
+                "salary": "$170,750",
+                "start_date": "2011\/07\/25"
+            },
+            "contact": {
+                "office": "Tokyo",
+                "extn": "8422"
+            }
+        },
+        {
+            "0": "Ashton Cox",
+            "hr": {
+                "position": "Junior Technical Author",
+                "salary": "$86,000",
+                "start_date": "2009\/01\/12"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "1562"
+            }
+        },
+        {
+            "0": "Cedric Kelly",
+            "hr": {
+                "position": "Senior Javascript Developer",
+                "salary": "$433,060",
+                "start_date": "2012\/03\/29"
+            },
+            "contact": {
+                "office": "Edinburgh",
+                "extn": "6224"
+            }
+        },
+        {
+            "0": "Airi Satou",
+            "hr": {
+                "position": "Accountant",
+                "salary": "$162,700",
+                "start_date": "2008\/11\/28"
+            },
+            "contact": {
+                "office": "Tokyo",
+                "extn": "5407"
+            }
+        },
+        {
+            "0": "Brielle Williamson",
+            "hr": {
+                "position": "Integration Specialist",
+                "salary": "$372,000",
+                "start_date": "2012\/12\/02"
+            },
+            "contact": {
+                "office": "New York",
+                "extn": "4804"
+            }
+        },
+        {
+            "0": "Herrod Chandler",
+            "hr": {
+                "position": "Sales Assistant",
+                "salary": "$137,500",
+                "start_date": "2012\/08\/06"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "9608"
+            }
+        },
+        {
+            "0": "Rhona Davidson",
+            "hr": {
+                "position": "Integration Specialist",
+                "salary": "$327,900",
+                "start_date": "2010\/10\/14"
+            },
+            "contact": {
+                "office": "Tokyo",
+                "extn": "6200"
+            }
+        },
+        {
+            "0": "Colleen Hurst",
+            "hr": {
+                "position": "Javascript Developer",
+                "salary": "$205,500",
+                "start_date": "2009\/09\/15"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "2360"
+            }
+        },
+        {
+            "0": "Sonya Frost",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$103,600",
+                "start_date": "2008\/12\/13"
+            },
+            "contact": {
+                "office": "Edinburgh",
+                "extn": "1667"
+            }
+        },
+        {
+            "0": "Jena Gaines",
+            "hr": {
+                "position": "Office Manager",
+                "salary": "$90,560",
+                "start_date": "2008\/12\/19"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "3814"
+            }
+        },
+        {
+            "0": "Quinn Flynn",
+            "hr": {
+                "position": "Support Lead",
+                "salary": "$342,000",
+                "start_date": "2013\/03\/03"
+            },
+            "contact": {
+                "office": "Edinburgh",
+                "extn": "9497"
+            }
+        },
+        {
+            "0": "Charde Marshall",
+            "hr": {
+                "position": "Regional Director",
+                "salary": "$470,600",
+                "start_date": "2008\/10\/16"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "6741"
+            }
+        },
+        {
+            "0": "Haley Kennedy",
+            "hr": {
+                "position": "Senior Marketing Designer",
+                "salary": "$313,500",
+                "start_date": "2012\/12\/18"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "3597"
+            }
+        },
+        {
+            "0": "Tatyana Fitzpatrick",
+            "hr": {
+                "position": "Regional Director",
+                "salary": "$385,750",
+                "start_date": "2010\/03\/17"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "1965"
+            }
+        },
+        {
+            "0": "Michael Silva",
+            "hr": {
+                "position": "Marketing Designer",
+                "salary": "$198,500",
+                "start_date": "2012\/11\/27"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "1581"
+            }
+        },
+        {
+            "0": "Paul Byrd",
+            "hr": {
+                "position": "Chief Financial Officer (CFO)",
+                "salary": "$725,000",
+                "start_date": "2010\/06\/09"
+            },
+            "contact": {
+                "office": "New York",
+                "extn": "3059"
+            }
+        },
+        {
+            "0": "Gloria Little",
+            "hr": {
+                "position": "Systems Administrator",
+                "salary": "$237,500",
+                "start_date": "2009\/04\/10"
+            },
+            "contact": {
+                "office": "New York",
+                "extn": "1721"
+            }
+        },
+        {
+            "0": "Bradley Greer",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$132,000",
+                "start_date": "2012\/10\/13"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "2558"
+            }
+        },
+        {
+            "0": "Dai Rios",
+            "hr": {
+                "position": "Personnel Lead",
+                "salary": "$217,500",
+                "start_date": "2012\/09\/26"
+            },
+            "contact": {
+                "office": "Edinburgh",
+                "extn": "2290"
+            }
+        },
+        {
+            "0": "Jenette Caldwell",
+            "hr": {
+                "position": "Development Lead",
+                "salary": "$345,000",
+                "start_date": "2011\/09\/03"
+            },
+            "contact": {
+                "office": "New York",
+                "extn": "1937"
+            }
+        },
+        {
+            "0": "Yuri Berry",
+            "hr": {
+                "position": "Chief Marketing Officer (CMO)",
+                "salary": "$675,000",
+                "start_date": "2009\/06\/25"
+            },
+            "contact": {
+                "office": "New York",
+                "extn": "6154"
+            }
+        },
+        {
+            "0": "Caesar Vance",
+            "hr": {
+                "position": "Pre-Sales Support",
+                "salary": "$106,450",
+                "start_date": "2011\/12\/12"
+            },
+            "contact": {
+                "office": "New York",
+                "extn": "8330"
+            }
+        },
+        {
+            "0": "Doris Wilder",
+            "hr": {
+                "position": "Sales Assistant",
+                "salary": "$85,600",
+                "start_date": "2010\/09\/20"
+            },
+            "contact": {
+                "office": "Sidney",
+                "extn": "3023"
+            }
+        },
+        {
+            "0": "Angelica Ramos",
+            "hr": {
+                "position": "Chief Executive Officer (CEO)",
+                "salary": "$1,200,000",
+                "start_date": "2009\/10\/09"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "5797"
+            }
+        },
+        {
+            "0": "Gavin Joyce",
+            "hr": {
+                "position": "Developer",
+                "salary": "$92,575",
+                "start_date": "2010\/12\/22"
+            },
+            "contact": {
+                "office": "Edinburgh",
+                "extn": "8822"
+            }
+        },
+        {
+            "0": "Jennifer Chang",
+            "hr": {
+                "position": "Regional Director",
+                "salary": "$357,650",
+                "start_date": "2010\/11\/14"
+            },
+            "contact": {
+                "office": "Singapore",
+                "extn": "9239"
+            }
+        },
+        {
+            "0": "Brenden Wagner",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$206,850",
+                "start_date": "2011\/06\/07"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "1314"
+            }
+        },
+        {
+            "0": "Fiona Green",
+            "hr": {
+                "position": "Chief Operating Officer (COO)",
+                "salary": "$850,000",
+                "start_date": "2010\/03\/11"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "2947"
+            }
+        },
+        {
+            "0": "Shou Itou",
+            "hr": {
+                "position": "Regional Marketing",
+                "salary": "$163,000",
+                "start_date": "2011\/08\/14"
+            },
+            "contact": {
+                "office": "Tokyo",
+                "extn": "8899"
+            }
+        },
+        {
+            "0": "Michelle House",
+            "hr": {
+                "position": "Integration Specialist",
+                "salary": "$95,400",
+                "start_date": "2011\/06\/02"
+            },
+            "contact": {
+                "office": "Sidney",
+                "extn": "2769"
+            }
+        },
+        {
+            "0": "Suki Burks",
+            "hr": {
+                "position": "Developer",
+                "salary": "$114,500",
+                "start_date": "2009\/10\/22"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "6832"
+            }
+        },
+        {
+            "0": "Prescott Bartlett",
+            "hr": {
+                "position": "Technical Author",
+                "salary": "$145,000",
+                "start_date": "2011\/05\/07"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "3606"
+            }
+        },
+        {
+            "0": "Gavin Cortez",
+            "hr": {
+                "position": "Team Leader",
+                "salary": "$235,500",
+                "start_date": "2008\/10\/26"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "2860"
+            }
+        },
+        {
+            "0": "Martena Mccray",
+            "hr": {
+                "position": "Post-Sales support",
+                "salary": "$324,050",
+                "start_date": "2011\/03\/09"
+            },
+            "contact": {
+                "office": "Edinburgh",
+                "extn": "8240"
+            }
+        },
+        {
+            "0": "Unity Butler",
+            "hr": {
+                "position": "Marketing Designer",
+                "salary": "$85,675",
+                "start_date": "2009\/12\/09"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "5384"
+            }
+        },
+        {
+            "0": "Howard Hatfield",
+            "hr": {
+                "position": "Office Manager",
+                "salary": "$164,500",
+                "start_date": "2008\/12\/16"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "7031"
+            }
+        },
+        {
+            "0": "Hope Fuentes",
+            "hr": {
+                "position": "Secretary",
+                "salary": "$109,850",
+                "start_date": "2010\/02\/12"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "6318"
+            }
+        },
+        {
+            "0": "Vivian Harrell",
+            "hr": {
+                "position": "Financial Controller",
+                "salary": "$452,500",
+                "start_date": "2009\/02\/14"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "9422"
+            }
+        },
+        {
+            "0": "Timothy Mooney",
+            "hr": {
+                "position": "Office Manager",
+                "salary": "$136,200",
+                "start_date": "2008\/12\/11"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "7580"
+            }
+        },
+        {
+            "0": "Jackson Bradshaw",
+            "hr": {
+                "position": "Director",
+                "salary": "$645,750",
+                "start_date": "2008\/09\/26"
+            },
+            "contact": {
+                "office": "New York",
+                "extn": "1042"
+            }
+        },
+        {
+            "0": "Olivia Liang",
+            "hr": {
+                "position": "Support Engineer",
+                "salary": "$234,500",
+                "start_date": "2011\/02\/03"
+            },
+            "contact": {
+                "office": "Singapore",
+                "extn": "2120"
+            }
+        },
+        {
+            "0": "Bruno Nash",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$163,500",
+                "start_date": "2011\/05\/03"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "6222"
+            }
+        },
+        {
+            "0": "Sakura Yamamoto",
+            "hr": {
+                "position": "Support Engineer",
+                "salary": "$139,575",
+                "start_date": "2009\/08\/19"
+            },
+            "contact": {
+                "office": "Tokyo",
+                "extn": "9383"
+            }
+        },
+        {
+            "0": "Thor Walton",
+            "hr": {
+                "position": "Developer",
+                "salary": "$98,540",
+                "start_date": "2013\/08\/11"
+            },
+            "contact": {
+                "office": "New York",
+                "extn": "8327"
+            }
+        },
+        {
+            "0": "Finn Camacho",
+            "hr": {
+                "position": "Support Engineer",
+                "salary": "$87,500",
+                "start_date": "2009\/07\/07"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "2927"
+            }
+        },
+        {
+            "0": "Serge Baldwin",
+            "hr": {
+                "position": "Data Coordinator",
+                "salary": "$138,575",
+                "start_date": "2012\/04\/09"
+            },
+            "contact": {
+                "office": "Singapore",
+                "extn": "8352"
+            }
+        },
+        {
+            "0": "Zenaida Frank",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$125,250",
+                "start_date": "2010\/01\/04"
+            },
+            "contact": {
+                "office": "New York",
+                "extn": "7439"
+            }
+        },
+        {
+            "0": "Zorita Serrano",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$115,000",
+                "start_date": "2012\/06\/01"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "4389"
+            }
+        },
+        {
+            "0": "Jennifer Acosta",
+            "hr": {
+                "position": "Junior Javascript Developer",
+                "salary": "$75,650",
+                "start_date": "2013\/02\/01"
+            },
+            "contact": {
+                "office": "Edinburgh",
+                "extn": "3431"
+            }
+        },
+        {
+            "0": "Cara Stevens",
+            "hr": {
+                "position": "Sales Assistant",
+                "salary": "$145,600",
+                "start_date": "2011\/12\/06"
+            },
+            "contact": {
+                "office": "New York",
+                "extn": "3990"
+            }
+        },
+        {
+            "0": "Hermione Butler",
+            "hr": {
+                "position": "Regional Director",
+                "salary": "$356,250",
+                "start_date": "2011\/03\/21"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "1016"
+            }
+        },
+        {
+            "0": "Lael Greer",
+            "hr": {
+                "position": "Systems Administrator",
+                "salary": "$103,500",
+                "start_date": "2009\/02\/27"
+            },
+            "contact": {
+                "office": "London",
+                "extn": "6733"
+            }
+        },
+        {
+            "0": "Jonas Alexander",
+            "hr": {
+                "position": "Developer",
+                "salary": "$86,500",
+                "start_date": "2010\/07\/14"
+            },
+            "contact": {
+                "office": "San Francisco",
+                "extn": "8196"
+            }
+        },
+        {
+            "0": "Shad Decker",
+            "hr": {
+                "position": "Regional Director",
+                "salary": "$183,000",
+                "start_date": "2008\/11\/13"
+            },
+            "contact": {
+                "office": "Edinburgh",
+                "extn": "6373"
+            }
+        },
+        {
+            "0": "Michael Bruce",
+            "hr": {
+                "position": "Javascript Developer",
+                "salary": "$183,000",
+                "start_date": "2011\/06\/27"
+            },
+            "contact": {
+                "office": "Singapore",
+                "extn": "5384"
+            }
+        },
+        {
+            "0": "Donna Snider",
+            "hr": {
+                "position": "Customer Support",
+                "salary": "$112,000",
+                "start_date": "2011\/01\/25"
+            },
+            "contact": {
+                "office": "New York",
+                "extn": "4226"
+            }
+        }
+    ]
+}
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/data/objects.txt b/public/admin/js/DataTables/examples/ajax/data/objects.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b908653ae8c608292405ff3a7c8cc2cc14bb785d
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/data/objects.txt
@@ -0,0 +1,460 @@
+{
+    "data": [
+        {
+            "name": "Tiger Nixon",
+            "position": "System Architect",
+            "salary": "$320,800",
+            "start_date": "2011\/04\/25",
+            "office": "Edinburgh",
+            "extn": "5421"
+        },
+        {
+            "name": "Garrett Winters",
+            "position": "Accountant",
+            "salary": "$170,750",
+            "start_date": "2011\/07\/25",
+            "office": "Tokyo",
+            "extn": "8422"
+        },
+        {
+            "name": "Ashton Cox",
+            "position": "Junior Technical Author",
+            "salary": "$86,000",
+            "start_date": "2009\/01\/12",
+            "office": "San Francisco",
+            "extn": "1562"
+        },
+        {
+            "name": "Cedric Kelly",
+            "position": "Senior Javascript Developer",
+            "salary": "$433,060",
+            "start_date": "2012\/03\/29",
+            "office": "Edinburgh",
+            "extn": "6224"
+        },
+        {
+            "name": "Airi Satou",
+            "position": "Accountant",
+            "salary": "$162,700",
+            "start_date": "2008\/11\/28",
+            "office": "Tokyo",
+            "extn": "5407"
+        },
+        {
+            "name": "Brielle Williamson",
+            "position": "Integration Specialist",
+            "salary": "$372,000",
+            "start_date": "2012\/12\/02",
+            "office": "New York",
+            "extn": "4804"
+        },
+        {
+            "name": "Herrod Chandler",
+            "position": "Sales Assistant",
+            "salary": "$137,500",
+            "start_date": "2012\/08\/06",
+            "office": "San Francisco",
+            "extn": "9608"
+        },
+        {
+            "name": "Rhona Davidson",
+            "position": "Integration Specialist",
+            "salary": "$327,900",
+            "start_date": "2010\/10\/14",
+            "office": "Tokyo",
+            "extn": "6200"
+        },
+        {
+            "name": "Colleen Hurst",
+            "position": "Javascript Developer",
+            "salary": "$205,500",
+            "start_date": "2009\/09\/15",
+            "office": "San Francisco",
+            "extn": "2360"
+        },
+        {
+            "name": "Sonya Frost",
+            "position": "Software Engineer",
+            "salary": "$103,600",
+            "start_date": "2008\/12\/13",
+            "office": "Edinburgh",
+            "extn": "1667"
+        },
+        {
+            "name": "Jena Gaines",
+            "position": "Office Manager",
+            "salary": "$90,560",
+            "start_date": "2008\/12\/19",
+            "office": "London",
+            "extn": "3814"
+        },
+        {
+            "name": "Quinn Flynn",
+            "position": "Support Lead",
+            "salary": "$342,000",
+            "start_date": "2013\/03\/03",
+            "office": "Edinburgh",
+            "extn": "9497"
+        },
+        {
+            "name": "Charde Marshall",
+            "position": "Regional Director",
+            "salary": "$470,600",
+            "start_date": "2008\/10\/16",
+            "office": "San Francisco",
+            "extn": "6741"
+        },
+        {
+            "name": "Haley Kennedy",
+            "position": "Senior Marketing Designer",
+            "salary": "$313,500",
+            "start_date": "2012\/12\/18",
+            "office": "London",
+            "extn": "3597"
+        },
+        {
+            "name": "Tatyana Fitzpatrick",
+            "position": "Regional Director",
+            "salary": "$385,750",
+            "start_date": "2010\/03\/17",
+            "office": "London",
+            "extn": "1965"
+        },
+        {
+            "name": "Michael Silva",
+            "position": "Marketing Designer",
+            "salary": "$198,500",
+            "start_date": "2012\/11\/27",
+            "office": "London",
+            "extn": "1581"
+        },
+        {
+            "name": "Paul Byrd",
+            "position": "Chief Financial Officer (CFO)",
+            "salary": "$725,000",
+            "start_date": "2010\/06\/09",
+            "office": "New York",
+            "extn": "3059"
+        },
+        {
+            "name": "Gloria Little",
+            "position": "Systems Administrator",
+            "salary": "$237,500",
+            "start_date": "2009\/04\/10",
+            "office": "New York",
+            "extn": "1721"
+        },
+        {
+            "name": "Bradley Greer",
+            "position": "Software Engineer",
+            "salary": "$132,000",
+            "start_date": "2012\/10\/13",
+            "office": "London",
+            "extn": "2558"
+        },
+        {
+            "name": "Dai Rios",
+            "position": "Personnel Lead",
+            "salary": "$217,500",
+            "start_date": "2012\/09\/26",
+            "office": "Edinburgh",
+            "extn": "2290"
+        },
+        {
+            "name": "Jenette Caldwell",
+            "position": "Development Lead",
+            "salary": "$345,000",
+            "start_date": "2011\/09\/03",
+            "office": "New York",
+            "extn": "1937"
+        },
+        {
+            "name": "Yuri Berry",
+            "position": "Chief Marketing Officer (CMO)",
+            "salary": "$675,000",
+            "start_date": "2009\/06\/25",
+            "office": "New York",
+            "extn": "6154"
+        },
+        {
+            "name": "Caesar Vance",
+            "position": "Pre-Sales Support",
+            "salary": "$106,450",
+            "start_date": "2011\/12\/12",
+            "office": "New York",
+            "extn": "8330"
+        },
+        {
+            "name": "Doris Wilder",
+            "position": "Sales Assistant",
+            "salary": "$85,600",
+            "start_date": "2010\/09\/20",
+            "office": "Sidney",
+            "extn": "3023"
+        },
+        {
+            "name": "Angelica Ramos",
+            "position": "Chief Executive Officer (CEO)",
+            "salary": "$1,200,000",
+            "start_date": "2009\/10\/09",
+            "office": "London",
+            "extn": "5797"
+        },
+        {
+            "name": "Gavin Joyce",
+            "position": "Developer",
+            "salary": "$92,575",
+            "start_date": "2010\/12\/22",
+            "office": "Edinburgh",
+            "extn": "8822"
+        },
+        {
+            "name": "Jennifer Chang",
+            "position": "Regional Director",
+            "salary": "$357,650",
+            "start_date": "2010\/11\/14",
+            "office": "Singapore",
+            "extn": "9239"
+        },
+        {
+            "name": "Brenden Wagner",
+            "position": "Software Engineer",
+            "salary": "$206,850",
+            "start_date": "2011\/06\/07",
+            "office": "San Francisco",
+            "extn": "1314"
+        },
+        {
+            "name": "Fiona Green",
+            "position": "Chief Operating Officer (COO)",
+            "salary": "$850,000",
+            "start_date": "2010\/03\/11",
+            "office": "San Francisco",
+            "extn": "2947"
+        },
+        {
+            "name": "Shou Itou",
+            "position": "Regional Marketing",
+            "salary": "$163,000",
+            "start_date": "2011\/08\/14",
+            "office": "Tokyo",
+            "extn": "8899"
+        },
+        {
+            "name": "Michelle House",
+            "position": "Integration Specialist",
+            "salary": "$95,400",
+            "start_date": "2011\/06\/02",
+            "office": "Sidney",
+            "extn": "2769"
+        },
+        {
+            "name": "Suki Burks",
+            "position": "Developer",
+            "salary": "$114,500",
+            "start_date": "2009\/10\/22",
+            "office": "London",
+            "extn": "6832"
+        },
+        {
+            "name": "Prescott Bartlett",
+            "position": "Technical Author",
+            "salary": "$145,000",
+            "start_date": "2011\/05\/07",
+            "office": "London",
+            "extn": "3606"
+        },
+        {
+            "name": "Gavin Cortez",
+            "position": "Team Leader",
+            "salary": "$235,500",
+            "start_date": "2008\/10\/26",
+            "office": "San Francisco",
+            "extn": "2860"
+        },
+        {
+            "name": "Martena Mccray",
+            "position": "Post-Sales support",
+            "salary": "$324,050",
+            "start_date": "2011\/03\/09",
+            "office": "Edinburgh",
+            "extn": "8240"
+        },
+        {
+            "name": "Unity Butler",
+            "position": "Marketing Designer",
+            "salary": "$85,675",
+            "start_date": "2009\/12\/09",
+            "office": "San Francisco",
+            "extn": "5384"
+        },
+        {
+            "name": "Howard Hatfield",
+            "position": "Office Manager",
+            "salary": "$164,500",
+            "start_date": "2008\/12\/16",
+            "office": "San Francisco",
+            "extn": "7031"
+        },
+        {
+            "name": "Hope Fuentes",
+            "position": "Secretary",
+            "salary": "$109,850",
+            "start_date": "2010\/02\/12",
+            "office": "San Francisco",
+            "extn": "6318"
+        },
+        {
+            "name": "Vivian Harrell",
+            "position": "Financial Controller",
+            "salary": "$452,500",
+            "start_date": "2009\/02\/14",
+            "office": "San Francisco",
+            "extn": "9422"
+        },
+        {
+            "name": "Timothy Mooney",
+            "position": "Office Manager",
+            "salary": "$136,200",
+            "start_date": "2008\/12\/11",
+            "office": "London",
+            "extn": "7580"
+        },
+        {
+            "name": "Jackson Bradshaw",
+            "position": "Director",
+            "salary": "$645,750",
+            "start_date": "2008\/09\/26",
+            "office": "New York",
+            "extn": "1042"
+        },
+        {
+            "name": "Olivia Liang",
+            "position": "Support Engineer",
+            "salary": "$234,500",
+            "start_date": "2011\/02\/03",
+            "office": "Singapore",
+            "extn": "2120"
+        },
+        {
+            "name": "Bruno Nash",
+            "position": "Software Engineer",
+            "salary": "$163,500",
+            "start_date": "2011\/05\/03",
+            "office": "London",
+            "extn": "6222"
+        },
+        {
+            "name": "Sakura Yamamoto",
+            "position": "Support Engineer",
+            "salary": "$139,575",
+            "start_date": "2009\/08\/19",
+            "office": "Tokyo",
+            "extn": "9383"
+        },
+        {
+            "name": "Thor Walton",
+            "position": "Developer",
+            "salary": "$98,540",
+            "start_date": "2013\/08\/11",
+            "office": "New York",
+            "extn": "8327"
+        },
+        {
+            "name": "Finn Camacho",
+            "position": "Support Engineer",
+            "salary": "$87,500",
+            "start_date": "2009\/07\/07",
+            "office": "San Francisco",
+            "extn": "2927"
+        },
+        {
+            "name": "Serge Baldwin",
+            "position": "Data Coordinator",
+            "salary": "$138,575",
+            "start_date": "2012\/04\/09",
+            "office": "Singapore",
+            "extn": "8352"
+        },
+        {
+            "name": "Zenaida Frank",
+            "position": "Software Engineer",
+            "salary": "$125,250",
+            "start_date": "2010\/01\/04",
+            "office": "New York",
+            "extn": "7439"
+        },
+        {
+            "name": "Zorita Serrano",
+            "position": "Software Engineer",
+            "salary": "$115,000",
+            "start_date": "2012\/06\/01",
+            "office": "San Francisco",
+            "extn": "4389"
+        },
+        {
+            "name": "Jennifer Acosta",
+            "position": "Junior Javascript Developer",
+            "salary": "$75,650",
+            "start_date": "2013\/02\/01",
+            "office": "Edinburgh",
+            "extn": "3431"
+        },
+        {
+            "name": "Cara Stevens",
+            "position": "Sales Assistant",
+            "salary": "$145,600",
+            "start_date": "2011\/12\/06",
+            "office": "New York",
+            "extn": "3990"
+        },
+        {
+            "name": "Hermione Butler",
+            "position": "Regional Director",
+            "salary": "$356,250",
+            "start_date": "2011\/03\/21",
+            "office": "London",
+            "extn": "1016"
+        },
+        {
+            "name": "Lael Greer",
+            "position": "Systems Administrator",
+            "salary": "$103,500",
+            "start_date": "2009\/02\/27",
+            "office": "London",
+            "extn": "6733"
+        },
+        {
+            "name": "Jonas Alexander",
+            "position": "Developer",
+            "salary": "$86,500",
+            "start_date": "2010\/07\/14",
+            "office": "San Francisco",
+            "extn": "8196"
+        },
+        {
+            "name": "Shad Decker",
+            "position": "Regional Director",
+            "salary": "$183,000",
+            "start_date": "2008\/11\/13",
+            "office": "Edinburgh",
+            "extn": "6373"
+        },
+        {
+            "name": "Michael Bruce",
+            "position": "Javascript Developer",
+            "salary": "$183,000",
+            "start_date": "2011\/06\/27",
+            "office": "Singapore",
+            "extn": "5384"
+        },
+        {
+            "name": "Donna Snider",
+            "position": "Customer Support",
+            "salary": "$112,000",
+            "start_date": "2011\/01\/25",
+            "office": "New York",
+            "extn": "4226"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/data/objects_deep.txt b/public/admin/js/DataTables/examples/ajax/data/objects_deep.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a69f18d756717fb81b36448b5baf3f3f9c00f80d
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/data/objects_deep.txt
@@ -0,0 +1,688 @@
+{
+    "data": [
+        {
+            "name": "Tiger Nixon",
+            "hr": {
+                "position": "System Architect",
+                "salary": "$320,800",
+                "start_date": "2011\/04\/25"
+            },
+            "contact": [
+                "Edinburgh",
+                "5421"
+            ]
+        },
+        {
+            "name": "Garrett Winters",
+            "hr": {
+                "position": "Accountant",
+                "salary": "$170,750",
+                "start_date": "2011\/07\/25"
+            },
+            "contact": [
+                "Tokyo",
+                "8422"
+            ]
+        },
+        {
+            "name": "Ashton Cox",
+            "hr": {
+                "position": "Junior Technical Author",
+                "salary": "$86,000",
+                "start_date": "2009\/01\/12"
+            },
+            "contact": [
+                "San Francisco",
+                "1562"
+            ]
+        },
+        {
+            "name": "Cedric Kelly",
+            "hr": {
+                "position": "Senior Javascript Developer",
+                "salary": "$433,060",
+                "start_date": "2012\/03\/29"
+            },
+            "contact": [
+                "Edinburgh",
+                "6224"
+            ]
+        },
+        {
+            "name": "Airi Satou",
+            "hr": {
+                "position": "Accountant",
+                "salary": "$162,700",
+                "start_date": "2008\/11\/28"
+            },
+            "contact": [
+                "Tokyo",
+                "5407"
+            ]
+        },
+        {
+            "name": "Brielle Williamson",
+            "hr": {
+                "position": "Integration Specialist",
+                "salary": "$372,000",
+                "start_date": "2012\/12\/02"
+            },
+            "contact": [
+                "New York",
+                "4804"
+            ]
+        },
+        {
+            "name": "Herrod Chandler",
+            "hr": {
+                "position": "Sales Assistant",
+                "salary": "$137,500",
+                "start_date": "2012\/08\/06"
+            },
+            "contact": [
+                "San Francisco",
+                "9608"
+            ]
+        },
+        {
+            "name": "Rhona Davidson",
+            "hr": {
+                "position": "Integration Specialist",
+                "salary": "$327,900",
+                "start_date": "2010\/10\/14"
+            },
+            "contact": [
+                "Tokyo",
+                "6200"
+            ]
+        },
+        {
+            "name": "Colleen Hurst",
+            "hr": {
+                "position": "Javascript Developer",
+                "salary": "$205,500",
+                "start_date": "2009\/09\/15"
+            },
+            "contact": [
+                "San Francisco",
+                "2360"
+            ]
+        },
+        {
+            "name": "Sonya Frost",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$103,600",
+                "start_date": "2008\/12\/13"
+            },
+            "contact": [
+                "Edinburgh",
+                "1667"
+            ]
+        },
+        {
+            "name": "Jena Gaines",
+            "hr": {
+                "position": "Office Manager",
+                "salary": "$90,560",
+                "start_date": "2008\/12\/19"
+            },
+            "contact": [
+                "London",
+                "3814"
+            ]
+        },
+        {
+            "name": "Quinn Flynn",
+            "hr": {
+                "position": "Support Lead",
+                "salary": "$342,000",
+                "start_date": "2013\/03\/03"
+            },
+            "contact": [
+                "Edinburgh",
+                "9497"
+            ]
+        },
+        {
+            "name": "Charde Marshall",
+            "hr": {
+                "position": "Regional Director",
+                "salary": "$470,600",
+                "start_date": "2008\/10\/16"
+            },
+            "contact": [
+                "San Francisco",
+                "6741"
+            ]
+        },
+        {
+            "name": "Haley Kennedy",
+            "hr": {
+                "position": "Senior Marketing Designer",
+                "salary": "$313,500",
+                "start_date": "2012\/12\/18"
+            },
+            "contact": [
+                "London",
+                "3597"
+            ]
+        },
+        {
+            "name": "Tatyana Fitzpatrick",
+            "hr": {
+                "position": "Regional Director",
+                "salary": "$385,750",
+                "start_date": "2010\/03\/17"
+            },
+            "contact": [
+                "London",
+                "1965"
+            ]
+        },
+        {
+            "name": "Michael Silva",
+            "hr": {
+                "position": "Marketing Designer",
+                "salary": "$198,500",
+                "start_date": "2012\/11\/27"
+            },
+            "contact": [
+                "London",
+                "1581"
+            ]
+        },
+        {
+            "name": "Paul Byrd",
+            "hr": {
+                "position": "Chief Financial Officer (CFO)",
+                "salary": "$725,000",
+                "start_date": "2010\/06\/09"
+            },
+            "contact": [
+                "New York",
+                "3059"
+            ]
+        },
+        {
+            "name": "Gloria Little",
+            "hr": {
+                "position": "Systems Administrator",
+                "salary": "$237,500",
+                "start_date": "2009\/04\/10"
+            },
+            "contact": [
+                "New York",
+                "1721"
+            ]
+        },
+        {
+            "name": "Bradley Greer",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$132,000",
+                "start_date": "2012\/10\/13"
+            },
+            "contact": [
+                "London",
+                "2558"
+            ]
+        },
+        {
+            "name": "Dai Rios",
+            "hr": {
+                "position": "Personnel Lead",
+                "salary": "$217,500",
+                "start_date": "2012\/09\/26"
+            },
+            "contact": [
+                "Edinburgh",
+                "2290"
+            ]
+        },
+        {
+            "name": "Jenette Caldwell",
+            "hr": {
+                "position": "Development Lead",
+                "salary": "$345,000",
+                "start_date": "2011\/09\/03"
+            },
+            "contact": [
+                "New York",
+                "1937"
+            ]
+        },
+        {
+            "name": "Yuri Berry",
+            "hr": {
+                "position": "Chief Marketing Officer (CMO)",
+                "salary": "$675,000",
+                "start_date": "2009\/06\/25"
+            },
+            "contact": [
+                "New York",
+                "6154"
+            ]
+        },
+        {
+            "name": "Caesar Vance",
+            "hr": {
+                "position": "Pre-Sales Support",
+                "salary": "$106,450",
+                "start_date": "2011\/12\/12"
+            },
+            "contact": [
+                "New York",
+                "8330"
+            ]
+        },
+        {
+            "name": "Doris Wilder",
+            "hr": {
+                "position": "Sales Assistant",
+                "salary": "$85,600",
+                "start_date": "2010\/09\/20"
+            },
+            "contact": [
+                "Sidney",
+                "3023"
+            ]
+        },
+        {
+            "name": "Angelica Ramos",
+            "hr": {
+                "position": "Chief Executive Officer (CEO)",
+                "salary": "$1,200,000",
+                "start_date": "2009\/10\/09"
+            },
+            "contact": [
+                "London",
+                "5797"
+            ]
+        },
+        {
+            "name": "Gavin Joyce",
+            "hr": {
+                "position": "Developer",
+                "salary": "$92,575",
+                "start_date": "2010\/12\/22"
+            },
+            "contact": [
+                "Edinburgh",
+                "8822"
+            ]
+        },
+        {
+            "name": "Jennifer Chang",
+            "hr": {
+                "position": "Regional Director",
+                "salary": "$357,650",
+                "start_date": "2010\/11\/14"
+            },
+            "contact": [
+                "Singapore",
+                "9239"
+            ]
+        },
+        {
+            "name": "Brenden Wagner",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$206,850",
+                "start_date": "2011\/06\/07"
+            },
+            "contact": [
+                "San Francisco",
+                "1314"
+            ]
+        },
+        {
+            "name": "Fiona Green",
+            "hr": {
+                "position": "Chief Operating Officer (COO)",
+                "salary": "$850,000",
+                "start_date": "2010\/03\/11"
+            },
+            "contact": [
+                "San Francisco",
+                "2947"
+            ]
+        },
+        {
+            "name": "Shou Itou",
+            "hr": {
+                "position": "Regional Marketing",
+                "salary": "$163,000",
+                "start_date": "2011\/08\/14"
+            },
+            "contact": [
+                "Tokyo",
+                "8899"
+            ]
+        },
+        {
+            "name": "Michelle House",
+            "hr": {
+                "position": "Integration Specialist",
+                "salary": "$95,400",
+                "start_date": "2011\/06\/02"
+            },
+            "contact": [
+                "Sidney",
+                "2769"
+            ]
+        },
+        {
+            "name": "Suki Burks",
+            "hr": {
+                "position": "Developer",
+                "salary": "$114,500",
+                "start_date": "2009\/10\/22"
+            },
+            "contact": [
+                "London",
+                "6832"
+            ]
+        },
+        {
+            "name": "Prescott Bartlett",
+            "hr": {
+                "position": "Technical Author",
+                "salary": "$145,000",
+                "start_date": "2011\/05\/07"
+            },
+            "contact": [
+                "London",
+                "3606"
+            ]
+        },
+        {
+            "name": "Gavin Cortez",
+            "hr": {
+                "position": "Team Leader",
+                "salary": "$235,500",
+                "start_date": "2008\/10\/26"
+            },
+            "contact": [
+                "San Francisco",
+                "2860"
+            ]
+        },
+        {
+            "name": "Martena Mccray",
+            "hr": {
+                "position": "Post-Sales support",
+                "salary": "$324,050",
+                "start_date": "2011\/03\/09"
+            },
+            "contact": [
+                "Edinburgh",
+                "8240"
+            ]
+        },
+        {
+            "name": "Unity Butler",
+            "hr": {
+                "position": "Marketing Designer",
+                "salary": "$85,675",
+                "start_date": "2009\/12\/09"
+            },
+            "contact": [
+                "San Francisco",
+                "5384"
+            ]
+        },
+        {
+            "name": "Howard Hatfield",
+            "hr": {
+                "position": "Office Manager",
+                "salary": "$164,500",
+                "start_date": "2008\/12\/16"
+            },
+            "contact": [
+                "San Francisco",
+                "7031"
+            ]
+        },
+        {
+            "name": "Hope Fuentes",
+            "hr": {
+                "position": "Secretary",
+                "salary": "$109,850",
+                "start_date": "2010\/02\/12"
+            },
+            "contact": [
+                "San Francisco",
+                "6318"
+            ]
+        },
+        {
+            "name": "Vivian Harrell",
+            "hr": {
+                "position": "Financial Controller",
+                "salary": "$452,500",
+                "start_date": "2009\/02\/14"
+            },
+            "contact": [
+                "San Francisco",
+                "9422"
+            ]
+        },
+        {
+            "name": "Timothy Mooney",
+            "hr": {
+                "position": "Office Manager",
+                "salary": "$136,200",
+                "start_date": "2008\/12\/11"
+            },
+            "contact": [
+                "London",
+                "7580"
+            ]
+        },
+        {
+            "name": "Jackson Bradshaw",
+            "hr": {
+                "position": "Director",
+                "salary": "$645,750",
+                "start_date": "2008\/09\/26"
+            },
+            "contact": [
+                "New York",
+                "1042"
+            ]
+        },
+        {
+            "name": "Olivia Liang",
+            "hr": {
+                "position": "Support Engineer",
+                "salary": "$234,500",
+                "start_date": "2011\/02\/03"
+            },
+            "contact": [
+                "Singapore",
+                "2120"
+            ]
+        },
+        {
+            "name": "Bruno Nash",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$163,500",
+                "start_date": "2011\/05\/03"
+            },
+            "contact": [
+                "London",
+                "6222"
+            ]
+        },
+        {
+            "name": "Sakura Yamamoto",
+            "hr": {
+                "position": "Support Engineer",
+                "salary": "$139,575",
+                "start_date": "2009\/08\/19"
+            },
+            "contact": [
+                "Tokyo",
+                "9383"
+            ]
+        },
+        {
+            "name": "Thor Walton",
+            "hr": {
+                "position": "Developer",
+                "salary": "$98,540",
+                "start_date": "2013\/08\/11"
+            },
+            "contact": [
+                "New York",
+                "8327"
+            ]
+        },
+        {
+            "name": "Finn Camacho",
+            "hr": {
+                "position": "Support Engineer",
+                "salary": "$87,500",
+                "start_date": "2009\/07\/07"
+            },
+            "contact": [
+                "San Francisco",
+                "2927"
+            ]
+        },
+        {
+            "name": "Serge Baldwin",
+            "hr": {
+                "position": "Data Coordinator",
+                "salary": "$138,575",
+                "start_date": "2012\/04\/09"
+            },
+            "contact": [
+                "Singapore",
+                "8352"
+            ]
+        },
+        {
+            "name": "Zenaida Frank",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$125,250",
+                "start_date": "2010\/01\/04"
+            },
+            "contact": [
+                "New York",
+                "7439"
+            ]
+        },
+        {
+            "name": "Zorita Serrano",
+            "hr": {
+                "position": "Software Engineer",
+                "salary": "$115,000",
+                "start_date": "2012\/06\/01"
+            },
+            "contact": [
+                "San Francisco",
+                "4389"
+            ]
+        },
+        {
+            "name": "Jennifer Acosta",
+            "hr": {
+                "position": "Junior Javascript Developer",
+                "salary": "$75,650",
+                "start_date": "2013\/02\/01"
+            },
+            "contact": [
+                "Edinburgh",
+                "3431"
+            ]
+        },
+        {
+            "name": "Cara Stevens",
+            "hr": {
+                "position": "Sales Assistant",
+                "salary": "$145,600",
+                "start_date": "2011\/12\/06"
+            },
+            "contact": [
+                "New York",
+                "3990"
+            ]
+        },
+        {
+            "name": "Hermione Butler",
+            "hr": {
+                "position": "Regional Director",
+                "salary": "$356,250",
+                "start_date": "2011\/03\/21"
+            },
+            "contact": [
+                "London",
+                "1016"
+            ]
+        },
+        {
+            "name": "Lael Greer",
+            "hr": {
+                "position": "Systems Administrator",
+                "salary": "$103,500",
+                "start_date": "2009\/02\/27"
+            },
+            "contact": [
+                "London",
+                "6733"
+            ]
+        },
+        {
+            "name": "Jonas Alexander",
+            "hr": {
+                "position": "Developer",
+                "salary": "$86,500",
+                "start_date": "2010\/07\/14"
+            },
+            "contact": [
+                "San Francisco",
+                "8196"
+            ]
+        },
+        {
+            "name": "Shad Decker",
+            "hr": {
+                "position": "Regional Director",
+                "salary": "$183,000",
+                "start_date": "2008\/11\/13"
+            },
+            "contact": [
+                "Edinburgh",
+                "6373"
+            ]
+        },
+        {
+            "name": "Michael Bruce",
+            "hr": {
+                "position": "Javascript Developer",
+                "salary": "$183,000",
+                "start_date": "2011\/06\/27"
+            },
+            "contact": [
+                "Singapore",
+                "5384"
+            ]
+        },
+        {
+            "name": "Donna Snider",
+            "hr": {
+                "position": "Customer Support",
+                "salary": "$112,000",
+                "start_date": "2011\/01\/25"
+            },
+            "contact": [
+                "New York",
+                "4226"
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/data/objects_root_array.txt b/public/admin/js/DataTables/examples/ajax/data/objects_root_array.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1c2faf343983606ebdd493e219cb9d38d90a2651
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/data/objects_root_array.txt
@@ -0,0 +1,458 @@
+[
+    {
+        "name": "Tiger Nixon",
+        "position": "System Architect",
+        "salary": "$320,800",
+        "start_date": "2011\/04\/25",
+        "office": "Edinburgh",
+        "extn": "5421"
+    },
+    {
+        "name": "Garrett Winters",
+        "position": "Accountant",
+        "salary": "$170,750",
+        "start_date": "2011\/07\/25",
+        "office": "Tokyo",
+        "extn": "8422"
+    },
+    {
+        "name": "Ashton Cox",
+        "position": "Junior Technical Author",
+        "salary": "$86,000",
+        "start_date": "2009\/01\/12",
+        "office": "San Francisco",
+        "extn": "1562"
+    },
+    {
+        "name": "Cedric Kelly",
+        "position": "Senior Javascript Developer",
+        "salary": "$433,060",
+        "start_date": "2012\/03\/29",
+        "office": "Edinburgh",
+        "extn": "6224"
+    },
+    {
+        "name": "Airi Satou",
+        "position": "Accountant",
+        "salary": "$162,700",
+        "start_date": "2008\/11\/28",
+        "office": "Tokyo",
+        "extn": "5407"
+    },
+    {
+        "name": "Brielle Williamson",
+        "position": "Integration Specialist",
+        "salary": "$372,000",
+        "start_date": "2012\/12\/02",
+        "office": "New York",
+        "extn": "4804"
+    },
+    {
+        "name": "Herrod Chandler",
+        "position": "Sales Assistant",
+        "salary": "$137,500",
+        "start_date": "2012\/08\/06",
+        "office": "San Francisco",
+        "extn": "9608"
+    },
+    {
+        "name": "Rhona Davidson",
+        "position": "Integration Specialist",
+        "salary": "$327,900",
+        "start_date": "2010\/10\/14",
+        "office": "Tokyo",
+        "extn": "6200"
+    },
+    {
+        "name": "Colleen Hurst",
+        "position": "Javascript Developer",
+        "salary": "$205,500",
+        "start_date": "2009\/09\/15",
+        "office": "San Francisco",
+        "extn": "2360"
+    },
+    {
+        "name": "Sonya Frost",
+        "position": "Software Engineer",
+        "salary": "$103,600",
+        "start_date": "2008\/12\/13",
+        "office": "Edinburgh",
+        "extn": "1667"
+    },
+    {
+        "name": "Jena Gaines",
+        "position": "Office Manager",
+        "salary": "$90,560",
+        "start_date": "2008\/12\/19",
+        "office": "London",
+        "extn": "3814"
+    },
+    {
+        "name": "Quinn Flynn",
+        "position": "Support Lead",
+        "salary": "$342,000",
+        "start_date": "2013\/03\/03",
+        "office": "Edinburgh",
+        "extn": "9497"
+    },
+    {
+        "name": "Charde Marshall",
+        "position": "Regional Director",
+        "salary": "$470,600",
+        "start_date": "2008\/10\/16",
+        "office": "San Francisco",
+        "extn": "6741"
+    },
+    {
+        "name": "Haley Kennedy",
+        "position": "Senior Marketing Designer",
+        "salary": "$313,500",
+        "start_date": "2012\/12\/18",
+        "office": "London",
+        "extn": "3597"
+    },
+    {
+        "name": "Tatyana Fitzpatrick",
+        "position": "Regional Director",
+        "salary": "$385,750",
+        "start_date": "2010\/03\/17",
+        "office": "London",
+        "extn": "1965"
+    },
+    {
+        "name": "Michael Silva",
+        "position": "Marketing Designer",
+        "salary": "$198,500",
+        "start_date": "2012\/11\/27",
+        "office": "London",
+        "extn": "1581"
+    },
+    {
+        "name": "Paul Byrd",
+        "position": "Chief Financial Officer (CFO)",
+        "salary": "$725,000",
+        "start_date": "2010\/06\/09",
+        "office": "New York",
+        "extn": "3059"
+    },
+    {
+        "name": "Gloria Little",
+        "position": "Systems Administrator",
+        "salary": "$237,500",
+        "start_date": "2009\/04\/10",
+        "office": "New York",
+        "extn": "1721"
+    },
+    {
+        "name": "Bradley Greer",
+        "position": "Software Engineer",
+        "salary": "$132,000",
+        "start_date": "2012\/10\/13",
+        "office": "London",
+        "extn": "2558"
+    },
+    {
+        "name": "Dai Rios",
+        "position": "Personnel Lead",
+        "salary": "$217,500",
+        "start_date": "2012\/09\/26",
+        "office": "Edinburgh",
+        "extn": "2290"
+    },
+    {
+        "name": "Jenette Caldwell",
+        "position": "Development Lead",
+        "salary": "$345,000",
+        "start_date": "2011\/09\/03",
+        "office": "New York",
+        "extn": "1937"
+    },
+    {
+        "name": "Yuri Berry",
+        "position": "Chief Marketing Officer (CMO)",
+        "salary": "$675,000",
+        "start_date": "2009\/06\/25",
+        "office": "New York",
+        "extn": "6154"
+    },
+    {
+        "name": "Caesar Vance",
+        "position": "Pre-Sales Support",
+        "salary": "$106,450",
+        "start_date": "2011\/12\/12",
+        "office": "New York",
+        "extn": "8330"
+    },
+    {
+        "name": "Doris Wilder",
+        "position": "Sales Assistant",
+        "salary": "$85,600",
+        "start_date": "2010\/09\/20",
+        "office": "Sidney",
+        "extn": "3023"
+    },
+    {
+        "name": "Angelica Ramos",
+        "position": "Chief Executive Officer (CEO)",
+        "salary": "$1,200,000",
+        "start_date": "2009\/10\/09",
+        "office": "London",
+        "extn": "5797"
+    },
+    {
+        "name": "Gavin Joyce",
+        "position": "Developer",
+        "salary": "$92,575",
+        "start_date": "2010\/12\/22",
+        "office": "Edinburgh",
+        "extn": "8822"
+    },
+    {
+        "name": "Jennifer Chang",
+        "position": "Regional Director",
+        "salary": "$357,650",
+        "start_date": "2010\/11\/14",
+        "office": "Singapore",
+        "extn": "9239"
+    },
+    {
+        "name": "Brenden Wagner",
+        "position": "Software Engineer",
+        "salary": "$206,850",
+        "start_date": "2011\/06\/07",
+        "office": "San Francisco",
+        "extn": "1314"
+    },
+    {
+        "name": "Fiona Green",
+        "position": "Chief Operating Officer (COO)",
+        "salary": "$850,000",
+        "start_date": "2010\/03\/11",
+        "office": "San Francisco",
+        "extn": "2947"
+    },
+    {
+        "name": "Shou Itou",
+        "position": "Regional Marketing",
+        "salary": "$163,000",
+        "start_date": "2011\/08\/14",
+        "office": "Tokyo",
+        "extn": "8899"
+    },
+    {
+        "name": "Michelle House",
+        "position": "Integration Specialist",
+        "salary": "$95,400",
+        "start_date": "2011\/06\/02",
+        "office": "Sidney",
+        "extn": "2769"
+    },
+    {
+        "name": "Suki Burks",
+        "position": "Developer",
+        "salary": "$114,500",
+        "start_date": "2009\/10\/22",
+        "office": "London",
+        "extn": "6832"
+    },
+    {
+        "name": "Prescott Bartlett",
+        "position": "Technical Author",
+        "salary": "$145,000",
+        "start_date": "2011\/05\/07",
+        "office": "London",
+        "extn": "3606"
+    },
+    {
+        "name": "Gavin Cortez",
+        "position": "Team Leader",
+        "salary": "$235,500",
+        "start_date": "2008\/10\/26",
+        "office": "San Francisco",
+        "extn": "2860"
+    },
+    {
+        "name": "Martena Mccray",
+        "position": "Post-Sales support",
+        "salary": "$324,050",
+        "start_date": "2011\/03\/09",
+        "office": "Edinburgh",
+        "extn": "8240"
+    },
+    {
+        "name": "Unity Butler",
+        "position": "Marketing Designer",
+        "salary": "$85,675",
+        "start_date": "2009\/12\/09",
+        "office": "San Francisco",
+        "extn": "5384"
+    },
+    {
+        "name": "Howard Hatfield",
+        "position": "Office Manager",
+        "salary": "$164,500",
+        "start_date": "2008\/12\/16",
+        "office": "San Francisco",
+        "extn": "7031"
+    },
+    {
+        "name": "Hope Fuentes",
+        "position": "Secretary",
+        "salary": "$109,850",
+        "start_date": "2010\/02\/12",
+        "office": "San Francisco",
+        "extn": "6318"
+    },
+    {
+        "name": "Vivian Harrell",
+        "position": "Financial Controller",
+        "salary": "$452,500",
+        "start_date": "2009\/02\/14",
+        "office": "San Francisco",
+        "extn": "9422"
+    },
+    {
+        "name": "Timothy Mooney",
+        "position": "Office Manager",
+        "salary": "$136,200",
+        "start_date": "2008\/12\/11",
+        "office": "London",
+        "extn": "7580"
+    },
+    {
+        "name": "Jackson Bradshaw",
+        "position": "Director",
+        "salary": "$645,750",
+        "start_date": "2008\/09\/26",
+        "office": "New York",
+        "extn": "1042"
+    },
+    {
+        "name": "Olivia Liang",
+        "position": "Support Engineer",
+        "salary": "$234,500",
+        "start_date": "2011\/02\/03",
+        "office": "Singapore",
+        "extn": "2120"
+    },
+    {
+        "name": "Bruno Nash",
+        "position": "Software Engineer",
+        "salary": "$163,500",
+        "start_date": "2011\/05\/03",
+        "office": "London",
+        "extn": "6222"
+    },
+    {
+        "name": "Sakura Yamamoto",
+        "position": "Support Engineer",
+        "salary": "$139,575",
+        "start_date": "2009\/08\/19",
+        "office": "Tokyo",
+        "extn": "9383"
+    },
+    {
+        "name": "Thor Walton",
+        "position": "Developer",
+        "salary": "$98,540",
+        "start_date": "2013\/08\/11",
+        "office": "New York",
+        "extn": "8327"
+    },
+    {
+        "name": "Finn Camacho",
+        "position": "Support Engineer",
+        "salary": "$87,500",
+        "start_date": "2009\/07\/07",
+        "office": "San Francisco",
+        "extn": "2927"
+    },
+    {
+        "name": "Serge Baldwin",
+        "position": "Data Coordinator",
+        "salary": "$138,575",
+        "start_date": "2012\/04\/09",
+        "office": "Singapore",
+        "extn": "8352"
+    },
+    {
+        "name": "Zenaida Frank",
+        "position": "Software Engineer",
+        "salary": "$125,250",
+        "start_date": "2010\/01\/04",
+        "office": "New York",
+        "extn": "7439"
+    },
+    {
+        "name": "Zorita Serrano",
+        "position": "Software Engineer",
+        "salary": "$115,000",
+        "start_date": "2012\/06\/01",
+        "office": "San Francisco",
+        "extn": "4389"
+    },
+    {
+        "name": "Jennifer Acosta",
+        "position": "Junior Javascript Developer",
+        "salary": "$75,650",
+        "start_date": "2013\/02\/01",
+        "office": "Edinburgh",
+        "extn": "3431"
+    },
+    {
+        "name": "Cara Stevens",
+        "position": "Sales Assistant",
+        "salary": "$145,600",
+        "start_date": "2011\/12\/06",
+        "office": "New York",
+        "extn": "3990"
+    },
+    {
+        "name": "Hermione Butler",
+        "position": "Regional Director",
+        "salary": "$356,250",
+        "start_date": "2011\/03\/21",
+        "office": "London",
+        "extn": "1016"
+    },
+    {
+        "name": "Lael Greer",
+        "position": "Systems Administrator",
+        "salary": "$103,500",
+        "start_date": "2009\/02\/27",
+        "office": "London",
+        "extn": "6733"
+    },
+    {
+        "name": "Jonas Alexander",
+        "position": "Developer",
+        "salary": "$86,500",
+        "start_date": "2010\/07\/14",
+        "office": "San Francisco",
+        "extn": "8196"
+    },
+    {
+        "name": "Shad Decker",
+        "position": "Regional Director",
+        "salary": "$183,000",
+        "start_date": "2008\/11\/13",
+        "office": "Edinburgh",
+        "extn": "6373"
+    },
+    {
+        "name": "Michael Bruce",
+        "position": "Javascript Developer",
+        "salary": "$183,000",
+        "start_date": "2011\/06\/27",
+        "office": "Singapore",
+        "extn": "5384"
+    },
+    {
+        "name": "Donna Snider",
+        "position": "Customer Support",
+        "salary": "$112,000",
+        "start_date": "2011\/01\/25",
+        "office": "New York",
+        "extn": "4226"
+    }
+]
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/data/objects_subarrays.txt b/public/admin/js/DataTables/examples/ajax/data/objects_subarrays.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fd4b0ffdc9a84e09332e29f67754906ec8ff27de
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/data/objects_subarrays.txt
@@ -0,0 +1,745 @@
+{
+    "data": [
+        {
+            "name": [
+                "Nixon",
+                "Tiger"
+            ],
+            "hr": [
+                "System Architect",
+                "$320,800",
+                "2011\/04\/25"
+            ],
+            "office": "Edinburgh",
+            "extn": "5421"
+        },
+        {
+            "name": [
+                "Winters",
+                "Garrett"
+            ],
+            "hr": [
+                "Accountant",
+                "$170,750",
+                "2011\/07\/25"
+            ],
+            "office": "Tokyo",
+            "extn": "8422"
+        },
+        {
+            "name": [
+                "Cox",
+                "Ashton"
+            ],
+            "hr": [
+                "Junior Technical Author",
+                "$86,000",
+                "2009\/01\/12"
+            ],
+            "office": "San Francisco",
+            "extn": "1562"
+        },
+        {
+            "name": [
+                "Kelly",
+                "Cedric"
+            ],
+            "hr": [
+                "Senior Javascript Developer",
+                "$433,060",
+                "2012\/03\/29"
+            ],
+            "office": "Edinburgh",
+            "extn": "6224"
+        },
+        {
+            "name": [
+                "Satou",
+                "Airi"
+            ],
+            "hr": [
+                "Accountant",
+                "$162,700",
+                "2008\/11\/28"
+            ],
+            "office": "Tokyo",
+            "extn": "5407"
+        },
+        {
+            "name": [
+                "Williamson",
+                "Brielle"
+            ],
+            "hr": [
+                "Integration Specialist",
+                "$372,000",
+                "2012\/12\/02"
+            ],
+            "office": "New York",
+            "extn": "4804"
+        },
+        {
+            "name": [
+                "Chandler",
+                "Herrod"
+            ],
+            "hr": [
+                "Sales Assistant",
+                "$137,500",
+                "2012\/08\/06"
+            ],
+            "office": "San Francisco",
+            "extn": "9608"
+        },
+        {
+            "name": [
+                "Davidson",
+                "Rhona"
+            ],
+            "hr": [
+                "Integration Specialist",
+                "$327,900",
+                "2010\/10\/14"
+            ],
+            "office": "Tokyo",
+            "extn": "6200"
+        },
+        {
+            "name": [
+                "Hurst",
+                "Colleen"
+            ],
+            "hr": [
+                "Javascript Developer",
+                "$205,500",
+                "2009\/09\/15"
+            ],
+            "office": "San Francisco",
+            "extn": "2360"
+        },
+        {
+            "name": [
+                "Frost",
+                "Sonya"
+            ],
+            "hr": [
+                "Software Engineer",
+                "$103,600",
+                "2008\/12\/13"
+            ],
+            "office": "Edinburgh",
+            "extn": "1667"
+        },
+        {
+            "name": [
+                "Gaines",
+                "Jena"
+            ],
+            "hr": [
+                "Office Manager",
+                "$90,560",
+                "2008\/12\/19"
+            ],
+            "office": "London",
+            "extn": "3814"
+        },
+        {
+            "name": [
+                "Flynn",
+                "Quinn"
+            ],
+            "hr": [
+                "Support Lead",
+                "$342,000",
+                "2013\/03\/03"
+            ],
+            "office": "Edinburgh",
+            "extn": "9497"
+        },
+        {
+            "name": [
+                "Marshall",
+                "Charde"
+            ],
+            "hr": [
+                "Regional Director",
+                "$470,600",
+                "2008\/10\/16"
+            ],
+            "office": "San Francisco",
+            "extn": "6741"
+        },
+        {
+            "name": [
+                "Kennedy",
+                "Haley"
+            ],
+            "hr": [
+                "Senior Marketing Designer",
+                "$313,500",
+                "2012\/12\/18"
+            ],
+            "office": "London",
+            "extn": "3597"
+        },
+        {
+            "name": [
+                "Fitzpatrick",
+                "Tatyana"
+            ],
+            "hr": [
+                "Regional Director",
+                "$385,750",
+                "2010\/03\/17"
+            ],
+            "office": "London",
+            "extn": "1965"
+        },
+        {
+            "name": [
+                "Silva",
+                "Michael"
+            ],
+            "hr": [
+                "Marketing Designer",
+                "$198,500",
+                "2012\/11\/27"
+            ],
+            "office": "London",
+            "extn": "1581"
+        },
+        {
+            "name": [
+                "Byrd",
+                "Paul"
+            ],
+            "hr": [
+                "Chief Financial Officer (CFO)",
+                "$725,000",
+                "2010\/06\/09"
+            ],
+            "office": "New York",
+            "extn": "3059"
+        },
+        {
+            "name": [
+                "Little",
+                "Gloria"
+            ],
+            "hr": [
+                "Systems Administrator",
+                "$237,500",
+                "2009\/04\/10"
+            ],
+            "office": "New York",
+            "extn": "1721"
+        },
+        {
+            "name": [
+                "Greer",
+                "Bradley"
+            ],
+            "hr": [
+                "Software Engineer",
+                "$132,000",
+                "2012\/10\/13"
+            ],
+            "office": "London",
+            "extn": "2558"
+        },
+        {
+            "name": [
+                "Rios",
+                "Dai"
+            ],
+            "hr": [
+                "Personnel Lead",
+                "$217,500",
+                "2012\/09\/26"
+            ],
+            "office": "Edinburgh",
+            "extn": "2290"
+        },
+        {
+            "name": [
+                "Caldwell",
+                "Jenette"
+            ],
+            "hr": [
+                "Development Lead",
+                "$345,000",
+                "2011\/09\/03"
+            ],
+            "office": "New York",
+            "extn": "1937"
+        },
+        {
+            "name": [
+                "Berry",
+                "Yuri"
+            ],
+            "hr": [
+                "Chief Marketing Officer (CMO)",
+                "$675,000",
+                "2009\/06\/25"
+            ],
+            "office": "New York",
+            "extn": "6154"
+        },
+        {
+            "name": [
+                "Vance",
+                "Caesar"
+            ],
+            "hr": [
+                "Pre-Sales Support",
+                "$106,450",
+                "2011\/12\/12"
+            ],
+            "office": "New York",
+            "extn": "8330"
+        },
+        {
+            "name": [
+                "Wilder",
+                "Doris"
+            ],
+            "hr": [
+                "Sales Assistant",
+                "$85,600",
+                "2010\/09\/20"
+            ],
+            "office": "Sidney",
+            "extn": "3023"
+        },
+        {
+            "name": [
+                "Ramos",
+                "Angelica"
+            ],
+            "hr": [
+                "Chief Executive Officer (CEO)",
+                "$1,200,000",
+                "2009\/10\/09"
+            ],
+            "office": "London",
+            "extn": "5797"
+        },
+        {
+            "name": [
+                "Joyce",
+                "Gavin"
+            ],
+            "hr": [
+                "Developer",
+                "$92,575",
+                "2010\/12\/22"
+            ],
+            "office": "Edinburgh",
+            "extn": "8822"
+        },
+        {
+            "name": [
+                "Chang",
+                "Jennifer"
+            ],
+            "hr": [
+                "Regional Director",
+                "$357,650",
+                "2010\/11\/14"
+            ],
+            "office": "Singapore",
+            "extn": "9239"
+        },
+        {
+            "name": [
+                "Wagner",
+                "Brenden"
+            ],
+            "hr": [
+                "Software Engineer",
+                "$206,850",
+                "2011\/06\/07"
+            ],
+            "office": "San Francisco",
+            "extn": "1314"
+        },
+        {
+            "name": [
+                "Green",
+                "Fiona"
+            ],
+            "hr": [
+                "Chief Operating Officer (COO)",
+                "$850,000",
+                "2010\/03\/11"
+            ],
+            "office": "San Francisco",
+            "extn": "2947"
+        },
+        {
+            "name": [
+                "Itou",
+                "Shou"
+            ],
+            "hr": [
+                "Regional Marketing",
+                "$163,000",
+                "2011\/08\/14"
+            ],
+            "office": "Tokyo",
+            "extn": "8899"
+        },
+        {
+            "name": [
+                "House",
+                "Michelle"
+            ],
+            "hr": [
+                "Integration Specialist",
+                "$95,400",
+                "2011\/06\/02"
+            ],
+            "office": "Sidney",
+            "extn": "2769"
+        },
+        {
+            "name": [
+                "Burks",
+                "Suki"
+            ],
+            "hr": [
+                "Developer",
+                "$114,500",
+                "2009\/10\/22"
+            ],
+            "office": "London",
+            "extn": "6832"
+        },
+        {
+            "name": [
+                "Bartlett",
+                "Prescott"
+            ],
+            "hr": [
+                "Technical Author",
+                "$145,000",
+                "2011\/05\/07"
+            ],
+            "office": "London",
+            "extn": "3606"
+        },
+        {
+            "name": [
+                "Cortez",
+                "Gavin"
+            ],
+            "hr": [
+                "Team Leader",
+                "$235,500",
+                "2008\/10\/26"
+            ],
+            "office": "San Francisco",
+            "extn": "2860"
+        },
+        {
+            "name": [
+                "Mccray",
+                "Martena"
+            ],
+            "hr": [
+                "Post-Sales support",
+                "$324,050",
+                "2011\/03\/09"
+            ],
+            "office": "Edinburgh",
+            "extn": "8240"
+        },
+        {
+            "name": [
+                "Butler",
+                "Unity"
+            ],
+            "hr": [
+                "Marketing Designer",
+                "$85,675",
+                "2009\/12\/09"
+            ],
+            "office": "San Francisco",
+            "extn": "5384"
+        },
+        {
+            "name": [
+                "Hatfield",
+                "Howard"
+            ],
+            "hr": [
+                "Office Manager",
+                "$164,500",
+                "2008\/12\/16"
+            ],
+            "office": "San Francisco",
+            "extn": "7031"
+        },
+        {
+            "name": [
+                "Fuentes",
+                "Hope"
+            ],
+            "hr": [
+                "Secretary",
+                "$109,850",
+                "2010\/02\/12"
+            ],
+            "office": "San Francisco",
+            "extn": "6318"
+        },
+        {
+            "name": [
+                "Harrell",
+                "Vivian"
+            ],
+            "hr": [
+                "Financial Controller",
+                "$452,500",
+                "2009\/02\/14"
+            ],
+            "office": "San Francisco",
+            "extn": "9422"
+        },
+        {
+            "name": [
+                "Mooney",
+                "Timothy"
+            ],
+            "hr": [
+                "Office Manager",
+                "$136,200",
+                "2008\/12\/11"
+            ],
+            "office": "London",
+            "extn": "7580"
+        },
+        {
+            "name": [
+                "Bradshaw",
+                "Jackson"
+            ],
+            "hr": [
+                "Director",
+                "$645,750",
+                "2008\/09\/26"
+            ],
+            "office": "New York",
+            "extn": "1042"
+        },
+        {
+            "name": [
+                "Liang",
+                "Olivia"
+            ],
+            "hr": [
+                "Support Engineer",
+                "$234,500",
+                "2011\/02\/03"
+            ],
+            "office": "Singapore",
+            "extn": "2120"
+        },
+        {
+            "name": [
+                "Nash",
+                "Bruno"
+            ],
+            "hr": [
+                "Software Engineer",
+                "$163,500",
+                "2011\/05\/03"
+            ],
+            "office": "London",
+            "extn": "6222"
+        },
+        {
+            "name": [
+                "Yamamoto",
+                "Sakura"
+            ],
+            "hr": [
+                "Support Engineer",
+                "$139,575",
+                "2009\/08\/19"
+            ],
+            "office": "Tokyo",
+            "extn": "9383"
+        },
+        {
+            "name": [
+                "Walton",
+                "Thor"
+            ],
+            "hr": [
+                "Developer",
+                "$98,540",
+                "2013\/08\/11"
+            ],
+            "office": "New York",
+            "extn": "8327"
+        },
+        {
+            "name": [
+                "Camacho",
+                "Finn"
+            ],
+            "hr": [
+                "Support Engineer",
+                "$87,500",
+                "2009\/07\/07"
+            ],
+            "office": "San Francisco",
+            "extn": "2927"
+        },
+        {
+            "name": [
+                "Baldwin",
+                "Serge"
+            ],
+            "hr": [
+                "Data Coordinator",
+                "$138,575",
+                "2012\/04\/09"
+            ],
+            "office": "Singapore",
+            "extn": "8352"
+        },
+        {
+            "name": [
+                "Frank",
+                "Zenaida"
+            ],
+            "hr": [
+                "Software Engineer",
+                "$125,250",
+                "2010\/01\/04"
+            ],
+            "office": "New York",
+            "extn": "7439"
+        },
+        {
+            "name": [
+                "Serrano",
+                "Zorita"
+            ],
+            "hr": [
+                "Software Engineer",
+                "$115,000",
+                "2012\/06\/01"
+            ],
+            "office": "San Francisco",
+            "extn": "4389"
+        },
+        {
+            "name": [
+                "Acosta",
+                "Jennifer"
+            ],
+            "hr": [
+                "Junior Javascript Developer",
+                "$75,650",
+                "2013\/02\/01"
+            ],
+            "office": "Edinburgh",
+            "extn": "3431"
+        },
+        {
+            "name": [
+                "Stevens",
+                "Cara"
+            ],
+            "hr": [
+                "Sales Assistant",
+                "$145,600",
+                "2011\/12\/06"
+            ],
+            "office": "New York",
+            "extn": "3990"
+        },
+        {
+            "name": [
+                "Butler",
+                "Hermione"
+            ],
+            "hr": [
+                "Regional Director",
+                "$356,250",
+                "2011\/03\/21"
+            ],
+            "office": "London",
+            "extn": "1016"
+        },
+        {
+            "name": [
+                "Greer",
+                "Lael"
+            ],
+            "hr": [
+                "Systems Administrator",
+                "$103,500",
+                "2009\/02\/27"
+            ],
+            "office": "London",
+            "extn": "6733"
+        },
+        {
+            "name": [
+                "Alexander",
+                "Jonas"
+            ],
+            "hr": [
+                "Developer",
+                "$86,500",
+                "2010\/07\/14"
+            ],
+            "office": "San Francisco",
+            "extn": "8196"
+        },
+        {
+            "name": [
+                "Decker",
+                "Shad"
+            ],
+            "hr": [
+                "Regional Director",
+                "$183,000",
+                "2008\/11\/13"
+            ],
+            "office": "Edinburgh",
+            "extn": "6373"
+        },
+        {
+            "name": [
+                "Bruce",
+                "Michael"
+            ],
+            "hr": [
+                "Javascript Developer",
+                "$183,000",
+                "2011\/06\/27"
+            ],
+            "office": "Singapore",
+            "extn": "5384"
+        },
+        {
+            "name": [
+                "Snider",
+                "Donna"
+            ],
+            "hr": [
+                "Customer Support",
+                "$112,000",
+                "2011\/01\/25"
+            ],
+            "office": "New York",
+            "extn": "4226"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/data/orthogonal.txt b/public/admin/js/DataTables/examples/ajax/data/orthogonal.txt
new file mode 100644
index 0000000000000000000000000000000000000000..11b408c6c65207639a91670114eb379bbd8b8ff1
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/data/orthogonal.txt
@@ -0,0 +1,631 @@
+{
+    "data": [
+        {
+            "name": "Tiger Nixon",
+            "position": "System Architect",
+            "salary": "$320,800",
+            "start_date": {
+                "display": "Mon 25th Apr 11",
+                "timestamp": "1303686000"
+            },
+            "office": "Edinburgh",
+            "extn": "5421"
+        },
+        {
+            "name": "Garrett Winters",
+            "position": "Accountant",
+            "salary": "$170,750",
+            "start_date": {
+                "display": "Mon 25th Jul 11",
+                "timestamp": "1311548400"
+            },
+            "office": "Tokyo",
+            "extn": "8422"
+        },
+        {
+            "name": "Ashton Cox",
+            "position": "Junior Technical Author",
+            "salary": "$86,000",
+            "start_date": {
+                "display": "Mon 12th Jan 09",
+                "timestamp": "1231718400"
+            },
+            "office": "San Francisco",
+            "extn": "1562"
+        },
+        {
+            "name": "Cedric Kelly",
+            "position": "Senior Javascript Developer",
+            "salary": "$433,060",
+            "start_date": {
+                "display": "Thu 29th Mar 12",
+                "timestamp": "1332975600"
+            },
+            "office": "Edinburgh",
+            "extn": "6224"
+        },
+        {
+            "name": "Airi Satou",
+            "position": "Accountant",
+            "salary": "$162,700",
+            "start_date": {
+                "display": "Fri 28th Nov 08",
+                "timestamp": "1227830400"
+            },
+            "office": "Tokyo",
+            "extn": "5407"
+        },
+        {
+            "name": "Brielle Williamson",
+            "position": "Integration Specialist",
+            "salary": "$372,000",
+            "start_date": {
+                "display": "Sun 2nd Dec 12",
+                "timestamp": "1354406400"
+            },
+            "office": "New York",
+            "extn": "4804"
+        },
+        {
+            "name": "Herrod Chandler",
+            "position": "Sales Assistant",
+            "salary": "$137,500",
+            "start_date": {
+                "display": "Mon 6th Aug 12",
+                "timestamp": "1344207600"
+            },
+            "office": "San Francisco",
+            "extn": "9608"
+        },
+        {
+            "name": "Rhona Davidson",
+            "position": "Integration Specialist",
+            "salary": "$327,900",
+            "start_date": {
+                "display": "Thu 14th Oct 10",
+                "timestamp": "1287010800"
+            },
+            "office": "Tokyo",
+            "extn": "6200"
+        },
+        {
+            "name": "Colleen Hurst",
+            "position": "Javascript Developer",
+            "salary": "$205,500",
+            "start_date": {
+                "display": "Tue 15th Sep 09",
+                "timestamp": "1252969200"
+            },
+            "office": "San Francisco",
+            "extn": "2360"
+        },
+        {
+            "name": "Sonya Frost",
+            "position": "Software Engineer",
+            "salary": "$103,600",
+            "start_date": {
+                "display": "Sat 13th Dec 08",
+                "timestamp": "1229126400"
+            },
+            "office": "Edinburgh",
+            "extn": "1667"
+        },
+        {
+            "name": "Jena Gaines",
+            "position": "Office Manager",
+            "salary": "$90,560",
+            "start_date": {
+                "display": "Fri 19th Dec 08",
+                "timestamp": "1229644800"
+            },
+            "office": "London",
+            "extn": "3814"
+        },
+        {
+            "name": "Quinn Flynn",
+            "position": "Support Lead",
+            "salary": "$342,000",
+            "start_date": {
+                "display": "Sun 3rd Mar 13",
+                "timestamp": "1362268800"
+            },
+            "office": "Edinburgh",
+            "extn": "9497"
+        },
+        {
+            "name": "Charde Marshall",
+            "position": "Regional Director",
+            "salary": "$470,600",
+            "start_date": {
+                "display": "Thu 16th Oct 08",
+                "timestamp": "1224111600"
+            },
+            "office": "San Francisco",
+            "extn": "6741"
+        },
+        {
+            "name": "Haley Kennedy",
+            "position": "Senior Marketing Designer",
+            "salary": "$313,500",
+            "start_date": {
+                "display": "Tue 18th Dec 12",
+                "timestamp": "1355788800"
+            },
+            "office": "London",
+            "extn": "3597"
+        },
+        {
+            "name": "Tatyana Fitzpatrick",
+            "position": "Regional Director",
+            "salary": "$385,750",
+            "start_date": {
+                "display": "Wed 17th Mar 10",
+                "timestamp": "1268784000"
+            },
+            "office": "London",
+            "extn": "1965"
+        },
+        {
+            "name": "Michael Silva",
+            "position": "Marketing Designer",
+            "salary": "$198,500",
+            "start_date": {
+                "display": "Tue 27th Nov 12",
+                "timestamp": "1353974400"
+            },
+            "office": "London",
+            "extn": "1581"
+        },
+        {
+            "name": "Paul Byrd",
+            "position": "Chief Financial Officer (CFO)",
+            "salary": "$725,000",
+            "start_date": {
+                "display": "Wed 9th Jun 10",
+                "timestamp": "1276038000"
+            },
+            "office": "New York",
+            "extn": "3059"
+        },
+        {
+            "name": "Gloria Little",
+            "position": "Systems Administrator",
+            "salary": "$237,500",
+            "start_date": {
+                "display": "Fri 10th Apr 09",
+                "timestamp": "1239318000"
+            },
+            "office": "New York",
+            "extn": "1721"
+        },
+        {
+            "name": "Bradley Greer",
+            "position": "Software Engineer",
+            "salary": "$132,000",
+            "start_date": {
+                "display": "Sat 13th Oct 12",
+                "timestamp": "1350082800"
+            },
+            "office": "London",
+            "extn": "2558"
+        },
+        {
+            "name": "Dai Rios",
+            "position": "Personnel Lead",
+            "salary": "$217,500",
+            "start_date": {
+                "display": "Wed 26th Sep 12",
+                "timestamp": "1348614000"
+            },
+            "office": "Edinburgh",
+            "extn": "2290"
+        },
+        {
+            "name": "Jenette Caldwell",
+            "position": "Development Lead",
+            "salary": "$345,000",
+            "start_date": {
+                "display": "Sat 3rd Sep 11",
+                "timestamp": "1315004400"
+            },
+            "office": "New York",
+            "extn": "1937"
+        },
+        {
+            "name": "Yuri Berry",
+            "position": "Chief Marketing Officer (CMO)",
+            "salary": "$675,000",
+            "start_date": {
+                "display": "Thu 25th Jun 09",
+                "timestamp": "1245884400"
+            },
+            "office": "New York",
+            "extn": "6154"
+        },
+        {
+            "name": "Caesar Vance",
+            "position": "Pre-Sales Support",
+            "salary": "$106,450",
+            "start_date": {
+                "display": "Mon 12th Dec 11",
+                "timestamp": "1323648000"
+            },
+            "office": "New York",
+            "extn": "8330"
+        },
+        {
+            "name": "Doris Wilder",
+            "position": "Sales Assistant",
+            "salary": "$85,600",
+            "start_date": {
+                "display": "Mon 20th Sep 10",
+                "timestamp": "1284937200"
+            },
+            "office": "Sidney",
+            "extn": "3023"
+        },
+        {
+            "name": "Angelica Ramos",
+            "position": "Chief Executive Officer (CEO)",
+            "salary": "$1,200,000",
+            "start_date": {
+                "display": "Fri 9th Oct 09",
+                "timestamp": "1255042800"
+            },
+            "office": "London",
+            "extn": "5797"
+        },
+        {
+            "name": "Gavin Joyce",
+            "position": "Developer",
+            "salary": "$92,575",
+            "start_date": {
+                "display": "Wed 22nd Dec 10",
+                "timestamp": "1292976000"
+            },
+            "office": "Edinburgh",
+            "extn": "8822"
+        },
+        {
+            "name": "Jennifer Chang",
+            "position": "Regional Director",
+            "salary": "$357,650",
+            "start_date": {
+                "display": "Sun 14th Nov 10",
+                "timestamp": "1289692800"
+            },
+            "office": "Singapore",
+            "extn": "9239"
+        },
+        {
+            "name": "Brenden Wagner",
+            "position": "Software Engineer",
+            "salary": "$206,850",
+            "start_date": {
+                "display": "Tue 7th Jun 11",
+                "timestamp": "1307401200"
+            },
+            "office": "San Francisco",
+            "extn": "1314"
+        },
+        {
+            "name": "Fiona Green",
+            "position": "Chief Operating Officer (COO)",
+            "salary": "$850,000",
+            "start_date": {
+                "display": "Thu 11th Mar 10",
+                "timestamp": "1268265600"
+            },
+            "office": "San Francisco",
+            "extn": "2947"
+        },
+        {
+            "name": "Shou Itou",
+            "position": "Regional Marketing",
+            "salary": "$163,000",
+            "start_date": {
+                "display": "Sun 14th Aug 11",
+                "timestamp": "1313276400"
+            },
+            "office": "Tokyo",
+            "extn": "8899"
+        },
+        {
+            "name": "Michelle House",
+            "position": "Integration Specialist",
+            "salary": "$95,400",
+            "start_date": {
+                "display": "Thu 2nd Jun 11",
+                "timestamp": "1306969200"
+            },
+            "office": "Sidney",
+            "extn": "2769"
+        },
+        {
+            "name": "Suki Burks",
+            "position": "Developer",
+            "salary": "$114,500",
+            "start_date": {
+                "display": "Thu 22nd Oct 09",
+                "timestamp": "1256166000"
+            },
+            "office": "London",
+            "extn": "6832"
+        },
+        {
+            "name": "Prescott Bartlett",
+            "position": "Technical Author",
+            "salary": "$145,000",
+            "start_date": {
+                "display": "Sat 7th May 11",
+                "timestamp": "1304722800"
+            },
+            "office": "London",
+            "extn": "3606"
+        },
+        {
+            "name": "Gavin Cortez",
+            "position": "Team Leader",
+            "salary": "$235,500",
+            "start_date": {
+                "display": "Sun 26th Oct 08",
+                "timestamp": "1224975600"
+            },
+            "office": "San Francisco",
+            "extn": "2860"
+        },
+        {
+            "name": "Martena Mccray",
+            "position": "Post-Sales support",
+            "salary": "$324,050",
+            "start_date": {
+                "display": "Wed 9th Mar 11",
+                "timestamp": "1299628800"
+            },
+            "office": "Edinburgh",
+            "extn": "8240"
+        },
+        {
+            "name": "Unity Butler",
+            "position": "Marketing Designer",
+            "salary": "$85,675",
+            "start_date": {
+                "display": "Wed 9th Dec 09",
+                "timestamp": "1260316800"
+            },
+            "office": "San Francisco",
+            "extn": "5384"
+        },
+        {
+            "name": "Howard Hatfield",
+            "position": "Office Manager",
+            "salary": "$164,500",
+            "start_date": {
+                "display": "Tue 16th Dec 08",
+                "timestamp": "1229385600"
+            },
+            "office": "San Francisco",
+            "extn": "7031"
+        },
+        {
+            "name": "Hope Fuentes",
+            "position": "Secretary",
+            "salary": "$109,850",
+            "start_date": {
+                "display": "Fri 12th Feb 10",
+                "timestamp": "1265932800"
+            },
+            "office": "San Francisco",
+            "extn": "6318"
+        },
+        {
+            "name": "Vivian Harrell",
+            "position": "Financial Controller",
+            "salary": "$452,500",
+            "start_date": {
+                "display": "Sat 14th Feb 09",
+                "timestamp": "1234569600"
+            },
+            "office": "San Francisco",
+            "extn": "9422"
+        },
+        {
+            "name": "Timothy Mooney",
+            "position": "Office Manager",
+            "salary": "$136,200",
+            "start_date": {
+                "display": "Thu 11th Dec 08",
+                "timestamp": "1228953600"
+            },
+            "office": "London",
+            "extn": "7580"
+        },
+        {
+            "name": "Jackson Bradshaw",
+            "position": "Director",
+            "salary": "$645,750",
+            "start_date": {
+                "display": "Fri 26th Sep 08",
+                "timestamp": "1222383600"
+            },
+            "office": "New York",
+            "extn": "1042"
+        },
+        {
+            "name": "Olivia Liang",
+            "position": "Support Engineer",
+            "salary": "$234,500",
+            "start_date": {
+                "display": "Thu 3rd Feb 11",
+                "timestamp": "1296691200"
+            },
+            "office": "Singapore",
+            "extn": "2120"
+        },
+        {
+            "name": "Bruno Nash",
+            "position": "Software Engineer",
+            "salary": "$163,500",
+            "start_date": {
+                "display": "Tue 3rd May 11",
+                "timestamp": "1304377200"
+            },
+            "office": "London",
+            "extn": "6222"
+        },
+        {
+            "name": "Sakura Yamamoto",
+            "position": "Support Engineer",
+            "salary": "$139,575",
+            "start_date": {
+                "display": "Wed 19th Aug 09",
+                "timestamp": "1250636400"
+            },
+            "office": "Tokyo",
+            "extn": "9383"
+        },
+        {
+            "name": "Thor Walton",
+            "position": "Developer",
+            "salary": "$98,540",
+            "start_date": {
+                "display": "Sun 11th Aug 13",
+                "timestamp": "1376175600"
+            },
+            "office": "New York",
+            "extn": "8327"
+        },
+        {
+            "name": "Finn Camacho",
+            "position": "Support Engineer",
+            "salary": "$87,500",
+            "start_date": {
+                "display": "Tue 7th Jul 09",
+                "timestamp": "1246921200"
+            },
+            "office": "San Francisco",
+            "extn": "2927"
+        },
+        {
+            "name": "Serge Baldwin",
+            "position": "Data Coordinator",
+            "salary": "$138,575",
+            "start_date": {
+                "display": "Mon 9th Apr 12",
+                "timestamp": "1333926000"
+            },
+            "office": "Singapore",
+            "extn": "8352"
+        },
+        {
+            "name": "Zenaida Frank",
+            "position": "Software Engineer",
+            "salary": "$125,250",
+            "start_date": {
+                "display": "Mon 4th Jan 10",
+                "timestamp": "1262563200"
+            },
+            "office": "New York",
+            "extn": "7439"
+        },
+        {
+            "name": "Zorita Serrano",
+            "position": "Software Engineer",
+            "salary": "$115,000",
+            "start_date": {
+                "display": "Fri 1st Jun 12",
+                "timestamp": "1338505200"
+            },
+            "office": "San Francisco",
+            "extn": "4389"
+        },
+        {
+            "name": "Jennifer Acosta",
+            "position": "Junior Javascript Developer",
+            "salary": "$75,650",
+            "start_date": {
+                "display": "Fri 1st Feb 13",
+                "timestamp": "1359676800"
+            },
+            "office": "Edinburgh",
+            "extn": "3431"
+        },
+        {
+            "name": "Cara Stevens",
+            "position": "Sales Assistant",
+            "salary": "$145,600",
+            "start_date": {
+                "display": "Tue 6th Dec 11",
+                "timestamp": "1323129600"
+            },
+            "office": "New York",
+            "extn": "3990"
+        },
+        {
+            "name": "Hermione Butler",
+            "position": "Regional Director",
+            "salary": "$356,250",
+            "start_date": {
+                "display": "Mon 21st Mar 11",
+                "timestamp": "1300665600"
+            },
+            "office": "London",
+            "extn": "1016"
+        },
+        {
+            "name": "Lael Greer",
+            "position": "Systems Administrator",
+            "salary": "$103,500",
+            "start_date": {
+                "display": "Fri 27th Feb 09",
+                "timestamp": "1235692800"
+            },
+            "office": "London",
+            "extn": "6733"
+        },
+        {
+            "name": "Jonas Alexander",
+            "position": "Developer",
+            "salary": "$86,500",
+            "start_date": {
+                "display": "Wed 14th Jul 10",
+                "timestamp": "1279062000"
+            },
+            "office": "San Francisco",
+            "extn": "8196"
+        },
+        {
+            "name": "Shad Decker",
+            "position": "Regional Director",
+            "salary": "$183,000",
+            "start_date": {
+                "display": "Thu 13th Nov 08",
+                "timestamp": "1226534400"
+            },
+            "office": "Edinburgh",
+            "extn": "6373"
+        },
+        {
+            "name": "Michael Bruce",
+            "position": "Javascript Developer",
+            "salary": "$183,000",
+            "start_date": {
+                "display": "Mon 27th Jun 11",
+                "timestamp": "1309129200"
+            },
+            "office": "Singapore",
+            "extn": "5384"
+        },
+        {
+            "name": "Donna Snider",
+            "position": "Customer Support",
+            "salary": "$112,000",
+            "start_date": {
+                "display": "Tue 25th Jan 11",
+                "timestamp": "1295913600"
+            },
+            "office": "New York",
+            "extn": "4226"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/deep.html b/public/admin/js/DataTables/examples/ajax/deep.html
new file mode 100644
index 0000000000000000000000000000000000000000..69913e5acca2a102da35d3dd42f7cb0129ed795b
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/deep.html
@@ -0,0 +1,339 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Nested object data (objects)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"processing": true,
+		"ajax": "data/objects_deep.txt",
+		"columns": [
+			{ "data": "name" },
+			{ "data": "hr.position" },
+			{ "data": "contact.0" },
+			{ "data": "contact.1" },
+			{ "data": "hr.start_date" },
+			{ "data": "hr.salary" }
+		]
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Nested object data (objects)</span></h1>
+
+			<div class="info">
+				<p>DataTables has the ability to use data from almost data JSON data source through the use of the
+				<a href="//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> option. In its simplest case,
+				it can be used to read arbitrary object properties, but can also be extended to <em>n</em> levels of
+				nested objects / arrays through the use of standard Javascript dotted object notation. Each dot
+				(<code>.</code>) in the <a href="//datatables.net/reference/option/columns.data"><code class="option"
+				title="DataTables initialisation option">columns.data<span>DT</span></code></a> option represents
+				another object level.</p>
+
+				<p>In this example <code>hr.position</code> refers to the <code>position</code> property of the
+				<code>hr</code> object in the row's data source object, while <code>contact.0</code> refers to the
+				first element of the <code>contact</code> array. Any number of dots can be used to obtain deeply nested
+				data.</p>
+
+				<p>The example below shows DataTables reading information for the columns from nested objects and
+				arrays, where the structure of the row's data source in this example is:</p>
+				<pre>
+<code class="multiline">{
+	"name": "Tiger Nixon",
+	"hr": {
+		"position": "System Architect",
+		"salary": "$3,120",
+		"start_date": "2011/04/25"
+	},
+	"contact": [
+		"Edinburgh",
+		"5421"
+	]
+}
+</code>
+</pre>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;processing&quot;: true,
+		&quot;ajax&quot;: &quot;data/objects_deep.txt&quot;,
+		&quot;columns&quot;: [
+			{ &quot;data&quot;: &quot;name&quot; },
+			{ &quot;data&quot;: &quot;hr.position&quot; },
+			{ &quot;data&quot;: &quot;contact.0&quot; },
+			{ &quot;data&quot;: &quot;contact.1&quot; },
+			{ &quot;data&quot;: &quot;hr.start_date&quot; },
+			{ &quot;data&quot;: &quot;hr.salary&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Ajax</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="./objects.html">Ajax data source (objects)</a></li>
+							<li class="active"><a href="./deep.html">Nested object data (objects)</a></li>
+							<li><a href="./objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="./orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="./null_data_source.html">Generated content for a column</a></li>
+							<li><a href="./custom_data_property.html">Custom data source property</a></li>
+							<li><a href="./custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="./defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/defer_render.html b/public/admin/js/DataTables/examples/ajax/defer_render.html
new file mode 100644
index 0000000000000000000000000000000000000000..a3c313e19ea82aab3a41434e65ba99868c2588f1
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/defer_render.html
@@ -0,0 +1,307 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Deferred rendering for speed</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"ajax": "data/arrays.txt",
+		"deferRender": true
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Deferred rendering for speed</span></h1>
+
+			<div class="info">
+				<p>When working with large data sources, you might seek to improve the speed at which DataTables runs.
+				One method to do this is to make use of the built-in deferred rendering option in DataTables with the
+				<a href="//datatables.net/reference/option/deferRender"><code class="option" title=
+				"DataTables initialisation option">deferRender<span>DT</span></code></a> option.</p>
+
+				<p>When deferred rendering is enabled, rather than having DataTables create all <code class="tag"
+				title="HTML tag">TR</code> and <code class="tag" title="HTML tag">TD</code> nodes required for the
+				table when the data is loaded, DataTables will only create the nodes required for each individual row
+				at the time of that row being drawn on the page (these nodes are then retained in case they are needed
+				again so they aren't created multiple times). This can give a significant performance increase, since a
+				lot less work is done at initialisation time.</p>
+
+				<p>The example below shows DataTables with deferred rendering enabled. For this small example you'll
+				likely notice no difference, but larger tables can benefit significantly from simply enabling this
+				parameter.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;ajax&quot;: &quot;data/arrays.txt&quot;,
+		&quot;deferRender&quot;: true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Ajax</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="./objects.html">Ajax data source (objects)</a></li>
+							<li><a href="./deep.html">Nested object data (objects)</a></li>
+							<li><a href="./objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="./orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="./null_data_source.html">Generated content for a column</a></li>
+							<li><a href="./custom_data_property.html">Custom data source property</a></li>
+							<li><a href="./custom_data_flat.html">Flat array data source</a></li>
+							<li class="active"><a href="./defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/index.html b/public/admin/js/DataTables/examples/ajax/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..fea0e5b8473b5644d1af053d66528c849ebab53d
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/index.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+
+	<title>DataTables examples - Ajax sourced data</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Ajax sourced data</span></h1>
+
+			<div class="info">
+				<p>DataTables can read data from a server via Ajax, while still performing searching, ordering, paging
+				etc on the client-side. This is done through use of the <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> option, which has a number of options
+				to customise how the data is retrieved from the server.</p>
+
+				<p>The examples in this section demonstrate the use of Ajax loading data in DataTables, with
+				client-side processing.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="./simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="./objects.html">Ajax data source (objects)</a></li>
+							<li><a href="./deep.html">Nested object data (objects)</a></li>
+							<li><a href="./objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="./orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="./null_data_source.html">Generated content for a column</a></li>
+							<li><a href="./custom_data_property.html">Custom data source property</a></li>
+							<li><a href="./custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="./defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/null_data_source.html b/public/admin/js/DataTables/examples/ajax/null_data_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..8401c33076a6e834a4540632ba79a938f955973b
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/null_data_source.html
@@ -0,0 +1,337 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Generated content for a column</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		"ajax": "data/arrays.txt",
+		"columnDefs": [ {
+			"targets": -1,
+			"data": null,
+			"defaultContent": "<button>Click!</button>"
+		} ]
+	} );
+
+	$('#example tbody').on( 'click', 'button', function () {
+		var data = table.row( $(this).parents('tr') ).data();
+		alert( data[0] +"'s salary is: "+ data[ 5 ] );
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Generated content for a column</span></h1>
+
+			<div class="info">
+				<p>In some tables you might wish to have some content generated automatically. This can be done in a
+				number of ways:</p>
+
+				<ul class="markdown">
+					<li><a href="//datatables.net/reference/option/columns.render"><code class="option" title=
+					"DataTables initialisation option">columns.render<span>DT</span></code></a> for content that is
+					dynamic (i.e. based upon the row's data)</li>
+					<li><a href="//datatables.net/reference/option/columns.defaultContent"><code class="option" title=
+					"DataTables initialisation option">columns.defaultContent<span>DT</span></code></a> for static
+					content (i.e. simple strings)</li>
+				</ul>
+
+				<p>This examples shows the use of <a href=
+				"//datatables.net/reference/option/columns.defaultContent"><code class="option" title=
+				"DataTables initialisation option">columns.defaultContent<span>DT</span></code></a> to create a
+				<em>button</em> element in the last column of the table. A simple jQuery <code>click</code> event
+				listener is used to watch for clicks on the row, and when activated uses the <a href=
+				"//datatables.net/reference/api/row().data()"><code class="api" title=
+				"DataTables API method">row().data()<span>DT</span></code></a> method to get the data for the row and
+				show a bit of information about it in an <code>alert</code> box. This is a simple use case, but it can
+				be built up to be arbitrarily complex.</p>
+
+				<p>Note also that the <a href="//datatables.net/reference/option/columns.data"><code class="option"
+				title="DataTables initialisation option">columns.data<span>DT</span></code></a> option for the column
+				has been set to <code>null</code> to indicate that the column has no information that should be
+				obtained data source object.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		&quot;ajax&quot;: &quot;data/arrays.txt&quot;,
+		&quot;columnDefs&quot;: [ {
+			&quot;targets&quot;: -1,
+			&quot;data&quot;: null,
+			&quot;defaultContent&quot;: &quot;&lt;button&gt;Click!&lt;/button&gt;&quot;
+		} ]
+	} );
+
+	$('#example tbody').on( 'click', 'button', function () {
+		var data = table.row( $(this).parents('tr') ).data();
+		alert( data[0] +&quot;'s salary is: &quot;+ data[ 5 ] );
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Ajax</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="./objects.html">Ajax data source (objects)</a></li>
+							<li><a href="./deep.html">Nested object data (objects)</a></li>
+							<li><a href="./objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="./orthogonal-data.html">Orthogonal data</a></li>
+							<li class="active"><a href="./null_data_source.html">Generated content for a
+							column</a></li>
+							<li><a href="./custom_data_property.html">Custom data source property</a></li>
+							<li><a href="./custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="./defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/objects.html b/public/admin/js/DataTables/examples/ajax/objects.html
new file mode 100644
index 0000000000000000000000000000000000000000..5541b637cf8d3bae9d8466c7a4cfdc810c0cc132
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/objects.html
@@ -0,0 +1,330 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Ajax data source (objects)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"ajax": "data/objects.txt",
+		"columns": [
+			{ "data": "name" },
+			{ "data": "position" },
+			{ "data": "office" },
+			{ "data": "extn" },
+			{ "data": "start_date" },
+			{ "data": "salary" }
+		]
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Ajax data source (objects)</span></h1>
+
+			<div class="info">
+				<p>To try and make life easy, by default, DataTables expects arrays to be used as the data source for
+				rows in the table. However, this isn't always useful, and you may wish to have DataTables use objects
+				as the data source for each row (i.e. each row has its data described by an object) as this can make
+				working with the data much more understandable, particularly if you are using the API and you don't
+				need to keep track of array indexes.</p>
+
+				<p>This can be done quite simply by using the <a href=
+				"//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> option which you use to tell
+				DataTables which property to use from the data source object for each column.</p>
+
+				<p>In this example the Ajax source returns an array of objects, which DataTables uses to display the
+				table. The structure of the row's data source in this example is:</p>
+				<pre>
+<code class="multiline">{
+	"name":	   "Tiger Nixon",
+	"position":   "System Architect",
+	"salary":	 "$3,120",
+	"start_date": "2011/04/25",
+	"office":	 "Edinburgh",
+	"extn":	   "5421"
+}
+</code>
+</pre>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;ajax&quot;: &quot;data/objects.txt&quot;,
+		&quot;columns&quot;: [
+			{ &quot;data&quot;: &quot;name&quot; },
+			{ &quot;data&quot;: &quot;position&quot; },
+			{ &quot;data&quot;: &quot;office&quot; },
+			{ &quot;data&quot;: &quot;extn&quot; },
+			{ &quot;data&quot;: &quot;start_date&quot; },
+			{ &quot;data&quot;: &quot;salary&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Ajax</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Ajax data source (arrays)</a></li>
+							<li class="active"><a href="./objects.html">Ajax data source (objects)</a></li>
+							<li><a href="./deep.html">Nested object data (objects)</a></li>
+							<li><a href="./objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="./orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="./null_data_source.html">Generated content for a column</a></li>
+							<li><a href="./custom_data_property.html">Custom data source property</a></li>
+							<li><a href="./custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="./defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/objects_subarrays.html b/public/admin/js/DataTables/examples/ajax/objects_subarrays.html
new file mode 100644
index 0000000000000000000000000000000000000000..ee638fa1103a3c4aca941f244f776c92e4c30628
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/objects_subarrays.html
@@ -0,0 +1,351 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Nested object data (arrays)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"ajax": "data/objects_subarrays.txt",
+		"columns": [
+			{ "data": "name[, ]" },
+			{ "data": "hr.0" },
+			{ "data": "office" },
+			{ "data": "extn" },
+			{ "data": "hr.2" },
+			{ "data": "hr.1" }
+		]
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Nested object data (arrays)</span></h1>
+
+			<div class="info">
+				<p>The information read from an Ajax data source can be arbitrarily complex, but still be displayed by
+				DataTables through the <a href="//datatables.net/reference/option/columns.data"><code class="option"
+				title="DataTables initialisation option">columns.data<span>DT</span></code></a> option, which is
+				particularly useful for working with JSON feeds in an already defined format.</p>
+
+				<p>The <a href="//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> option has the ability to
+				read information not only from objects, but also from arrays using the same dotted object syntax as for
+				objects. In addition to this, when working with an array data source <a href=
+				"//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> can process the data to
+				combine and display the data in simple forms (more complex forms can be defined by using <a href=
+				"//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> as a function).</p>
+
+				<p>This example shows two different aspects of using <a href=
+				"//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> to read arrays:</p>
+
+				<ul class="markdown">
+					<li>The <em>Name</em> column is sourced from an array of two elements (first and last name), which
+					are automatically concatenated together. This is done by using array bracket syntax, with the
+					characters between the brackets being used as the glue between elements (e.g. <code>name[,
+					]</code>).</li>
+					<li>The <em>Position</em>, <em>Start date</em> and <em>Salary</em> columns are read directly from
+					array elements using dotted object notation (e.g. <code>hr.0</code>). Note that the order in which
+					the data can be used in the columns does not have to match the order in which it is defined in the
+					data source. The structure of the row's data source in this example is:</li>
+				</ul>
+				<pre>
+<code class="multiline">{
+	"name": [
+		"Nixon",
+		"Tiger"
+	],
+	"hr": [
+		"System Architect",
+		"$3,120",
+		"2011/04/25"
+	],
+	"office": "Edinburgh",
+	"extn": "5421"
+}
+</code>
+</pre>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;ajax&quot;: &quot;data/objects_subarrays.txt&quot;,
+		&quot;columns&quot;: [
+			{ &quot;data&quot;: &quot;name[, ]&quot; },
+			{ &quot;data&quot;: &quot;hr.0&quot; },
+			{ &quot;data&quot;: &quot;office&quot; },
+			{ &quot;data&quot;: &quot;extn&quot; },
+			{ &quot;data&quot;: &quot;hr.2&quot; },
+			{ &quot;data&quot;: &quot;hr.1&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Ajax</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="./objects.html">Ajax data source (objects)</a></li>
+							<li><a href="./deep.html">Nested object data (objects)</a></li>
+							<li class="active"><a href="./objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="./orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="./null_data_source.html">Generated content for a column</a></li>
+							<li><a href="./custom_data_property.html">Custom data source property</a></li>
+							<li><a href="./custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="./defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/orthogonal-data.html b/public/admin/js/DataTables/examples/ajax/orthogonal-data.html
new file mode 100644
index 0000000000000000000000000000000000000000..630160bcc33fe1373bbf08fb607de0d791a0af9a
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/orthogonal-data.html
@@ -0,0 +1,339 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Orthogonal data</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		ajax: "data/orthogonal.txt",
+		columns: [
+			{ data: "name" },
+			{ data: "position" },
+			{ data: "office" },
+			{ data: "extn" },
+			{ data: {
+				_:    "start_date.display",
+				sort: "start_date.timestamp"
+			} },
+			{ data: "salary" }
+		]
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Orthogonal data</span></h1>
+
+			<div class="info">
+				<p>To try and make life easy, by default, DataTables expects arrays to be used as the data source for
+				rows in the table. However, this isn't always useful, and you may wish to have DataTables use objects
+				as the data source for each row (i.e. each row has its data described by an object) as this can make
+				working with the data much more understandable, particularly if you are using the API and you don't
+				need to keep track of array indexes.</p>
+
+				<p>This can be done quite simply by using the <a href=
+				"//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> option which you use to tell
+				DataTables which property to use from the data source object for each column.</p>
+
+				<p>In this example the Ajax source returns an array of objects, which DataTables uses to display the
+				table. The structure of the row's data source in this example is:</p>
+				<pre>
+<code class="multiline">{
+	"name":	   "Tiger Nixon",
+	"position":   "System Architect",
+	"salary":	 "$3,120",
+	"start_date": {
+		"display": "Mon 25th Apr 11",
+		"timestamp": "1303682400"
+	},
+	"office":	 "Edinburgh",
+	"extn":	   "5421"
+}
+</code>
+</pre>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		ajax: &quot;data/orthogonal.txt&quot;,
+		columns: [
+			{ data: &quot;name&quot; },
+			{ data: &quot;position&quot; },
+			{ data: &quot;office&quot; },
+			{ data: &quot;extn&quot; },
+			{ data: {
+				_:    &quot;start_date.display&quot;,
+				sort: &quot;start_date.timestamp&quot;
+			} },
+			{ data: &quot;salary&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Ajax</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="./objects.html">Ajax data source (objects)</a></li>
+							<li><a href="./deep.html">Nested object data (objects)</a></li>
+							<li><a href="./objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li class="active"><a href="./orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="./null_data_source.html">Generated content for a column</a></li>
+							<li><a href="./custom_data_property.html">Custom data source property</a></li>
+							<li><a href="./custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="./defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/ajax/simple.html b/public/admin/js/DataTables/examples/ajax/simple.html
new file mode 100644
index 0000000000000000000000000000000000000000..7cfd5539a4545378f02834e7bb0c50324385d097
--- /dev/null
+++ b/public/admin/js/DataTables/examples/ajax/simple.html
@@ -0,0 +1,323 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Ajax data source (arrays)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"ajax": "data/arrays.txt"
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Ajax data source (arrays)</span></h1>
+
+			<div class="info">
+				<p>DataTables has the ability to read data from virtually any JSON data source that can be obtained by
+				Ajax. This can be done, in its most simple form, by setting the <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> option to the address of the JSON
+				data source.</p>
+
+				<p>The <a href="//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> option also allows for more advanced
+				configuration such as altering how the Ajax request is made. See the <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> documentation or the other Ajax
+				examples for DataTables for further information.</p>
+
+				<p>By default DataTables will assume that an array data source is to be used and will read the
+				information to be displayed in each column from the row's array using the column index, making working
+				with arrays very simple (note that this can be changed, or objects used may using the <a href=
+				"//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> option, shown in other
+				examples).</p>
+
+				<p>The example below shows DataTables loading data for a table from arrays as the data source, where
+				the structure of the row's data source in this example is:</p>
+				<pre>
+<code class="multiline">[
+	"Tiger Nixon",
+	"System Architect",
+	"Edinburgh",
+	"5421",
+	"2011/04/25",
+	"$3,120"
+]
+</code>
+</pre>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;ajax&quot;: &quot;data/arrays.txt&quot;
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Ajax</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="./objects.html">Ajax data source (objects)</a></li>
+							<li><a href="./deep.html">Nested object data (objects)</a></li>
+							<li><a href="./objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="./orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="./null_data_source.html">Generated content for a column</a></li>
+							<li><a href="./custom_data_property.html">Custom data source property</a></li>
+							<li><a href="./custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="./defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/add_row.html b/public/admin/js/DataTables/examples/api/add_row.html
new file mode 100644
index 0000000000000000000000000000000000000000..8a3e163edd1abe70168bc0b844e5a8b1eaa4d140
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/add_row.html
@@ -0,0 +1,329 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Add rows</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var t = $('#example').DataTable();
+	var counter = 1;
+
+	$('#addRow').on( 'click', function () {
+		t.row.add( [
+			counter +'.1',
+			counter +'.2',
+			counter +'.3',
+			counter +'.4',
+			counter +'.5'
+		] ).draw();
+
+		counter++;
+	} );
+
+	// Automatically add a first row of data
+	$('#addRow').click();
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Add rows</span></h1>
+
+			<div class="info">
+				<p>New rows can be added to a DataTable very easily using the <a href=
+				"//datatables.net/reference/api/row.add()"><code class="api" title=
+				"DataTables API method">row.add()<span>DT</span></code></a> API method. Simply call the API function
+				with the data that is to be used for the new row (be it an array or object). Multiple rows can be added
+				using the <a href="//datatables.net/reference/api/rows.add()"><code class="api" title=
+				"DataTables API method">rows.add()<span>DT</span></code></a> method (note the plural).</p>
+
+				<p>Note that in order to see the new row in the table you must call the <a href=
+				"//datatables.net/reference/api/draw()"><code class="api" title=
+				"DataTables API method">draw()<span>DT</span></code></a> method, which is easily done through the
+				chaining that the DataTables API makes use of.</p>
+
+				<p>This example shows a single row being added each time the button below is clicked upon.</p>
+			</div><button id="addRow">Add new row</button>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Column 1</th>
+						<th>Column 2</th>
+						<th>Column 3</th>
+						<th>Column 4</th>
+						<th>Column 5</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Column 1</th>
+						<th>Column 2</th>
+						<th>Column 3</th>
+						<th>Column 4</th>
+						<th>Column 5</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var t = $('#example').DataTable();
+	var counter = 1;
+
+	$('#addRow').on( 'click', function () {
+		t.row.add( [
+			counter +'.1',
+			counter +'.2',
+			counter +'.3',
+			counter +'.4',
+			counter +'.5'
+		] ).draw();
+
+		counter++;
+	} );
+
+	// Automatically add a first row of data
+	$('#addRow').click();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/api_in_init.html b/public/admin/js/DataTables/examples/api/api_in_init.html
new file mode 100644
index 0000000000000000000000000000000000000000..9bfbc18c720f25ff557f05bb0e6ee3296d00fbe2
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/api_in_init.html
@@ -0,0 +1,779 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Using API in callbacks</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"initComplete": function () {
+			var api = this.api();
+			api.$('td').click( function () {
+				api.search( this.innerHTML ).draw();
+			} );
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Using API in callbacks</span></h1>
+
+			<div class="info">
+				<p>There are times when you may wish to call API functions inside the DataTables callback functions
+				(for example <a href="//datatables.net/reference/option/initComplete"><code class="option" title=
+				"DataTables initialisation option">initComplete<span>DT</span></code></a>, <a href=
+				"//datatables.net/reference/option/rowCallback"><code class="option" title=
+				"DataTables initialisation option">rowCallback<span>DT</span></code></a> etc). The complicating issue
+				with this is that the object hasn't fully initialised, so you can't assign the result to a variable and
+				then use that variable in the callback. However, all of DataTables' callback functions are executed in
+				the scope of the DataTable instance, so you can use the Javascript special variable <code>this</code>
+				to access the API (<code>this.api()</code> will give an API instance) as <code>this</code> is the
+				<code class="tag" title="HTML tag">table</code> node.</p>
+
+				<p>In this example you will be able to see that the <a href=
+				"//datatables.net/reference/api/%24()"><code class="api" title=
+				"DataTables API method">$()<span>DT</span></code></a> method is used to get all cell nodes in the
+				table's body and then act on them (in this case adding a click event). The action here is to apply a
+				filter to the table with the value of what is in each cell.</p>
+
+				<p>It is also worth noting that this same effect could be achieved by attaching a delegated click event
+				after the table has been initialised - but the example shows the use of the API inside the
+				callbacks!</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;initComplete&quot;: function () {
+			var api = this.api();
+			api.$('td').click( function () {
+				api.search( this.innerHTML ).draw();
+			} );
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li class="active"><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/counter_columns.html b/public/admin/js/DataTables/examples/api/counter_columns.html
new file mode 100644
index 0000000000000000000000000000000000000000..c162312f67342a88a32f12e6908834a1059aec82
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/counter_columns.html
@@ -0,0 +1,788 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Index column</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var t = $('#example').DataTable( {
+		"columnDefs": [ {
+			"searchable": false,
+			"orderable": false,
+			"targets": 0
+		} ],
+		"order": [[ 1, 'asc' ]]
+	} );
+
+	t.on( 'order.dt search.dt', function () {
+		t.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
+			cell.innerHTML = i+1;
+		} );
+	} ).draw();
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Index column</span></h1>
+
+			<div class="info">
+				<p>A fairly common requirement for highly interactive tables which are displayed on the web is to have
+				a column which with a 'counter' for the row number. This column should not be sortable, and will change
+				dynamically as the ordering and searching applied to the table is altered by the end user.</p>
+
+				<p>This example shows how this can be achieved with DataTables, where the first column is the counter
+				column, and is updated when ordering or searching occurs. This is done by listening for the <a href=
+				"//datatables.net/reference/event/order"><code class="event" title=
+				"DataTables event">order<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/event/search"><code class="event" title=
+				"DataTables event">search<span>DT</span></code></a> events emitted by the table. When these events are
+				detected the <a href="//datatables.net/reference/api/column().nodes()"><code class="api" title=
+				"DataTables API method">column().nodes()<span>DT</span></code></a> method is used to get the TD/TH
+				nodes for the target column and the <code>each()</code> helper function used to iterate over each,
+				which have their contents updated as needed. Note that the <code>filter</code> and <code>order</code>
+				options are using in the <a href="//datatables.net/reference/api/column()"><code class="api" title=
+				"DataTables API method">column()<span>DT</span></code></a> method to get the nodes in the current order
+				and with the currently applied filter.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th></th>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th></th>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td></td>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var t = $('#example').DataTable( {
+		&quot;columnDefs&quot;: [ {
+			&quot;searchable&quot;: false,
+			&quot;orderable&quot;: false,
+			&quot;targets&quot;: 0
+		} ],
+		&quot;order&quot;: [[ 1, 'asc' ]]
+	} );
+
+	t.on( 'order.dt search.dt', function () {
+		t.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
+			cell.innerHTML = i+1;
+		} );
+	} ).draw();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li class="active"><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/form.html b/public/admin/js/DataTables/examples/api/form.html
new file mode 100644
index 0000000000000000000000000000000000000000..ea1deba51c03156e5e4d54f9e76e46cdf0149bfc
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/form.html
@@ -0,0 +1,1841 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Form inputs</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	$('button').click( function() {
+		var data = table.$('input, select').serialize();
+		alert(
+			"The following data would have been submitted to the server: \n\n"+
+			data.substr( 0, 120 )+'...'
+		);
+		return false;
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Form inputs</span></h1>
+
+			<div class="info">
+				<p>In order to perform paging, ordering, searching etc, DataTables can remove rows and cells from the
+				document (i.e. those rows / cells which are not needed are not inserted into the document). This
+				increases performance and compatibility, however, it means that submitting forms which span multiple
+				pages requires a little bit of additional work to get the information that is not in the document any
+				longer.</p>
+
+				<p>The <a href="//datatables.net/reference/api/%24()"><code class="api" title=
+				"DataTables API method">$()<span>DT</span></code></a> method can be used to get nodes from the document
+				regardless of paging, ordering etc. This example shows <a href=
+				"//datatables.net/reference/api/%24()"><code class="api" title=
+				"DataTables API method">$()<span>DT</span></code></a> being used to get all <code class="tag" title=
+				"HTML tag">input</code> elements from the table.</p>
+
+				<p>In the example a simple <code>alert()</code> is used to show the information from the form, but an
+				Ajax call to the server with the form data could easily be performed.</p>
+			</div><button type="submit">Submit form</button>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Age</th>
+						<th>Position</th>
+						<th>Office</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Age</th>
+						<th>Position</th>
+						<th>Office</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td><input type="text" id="row-1-age" name="row-1-age" value="61"></td>
+						<td><input type="text" id="row-1-position" name="row-1-position" value="System Architect"></td>
+						<td><select size="1" id="row-1-office" name="row-1-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td><input type="text" id="row-2-age" name="row-2-age" value="63"></td>
+						<td><input type="text" id="row-2-position" name="row-2-position" value="Accountant"></td>
+						<td><select size="1" id="row-2-office" name="row-2-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo" selected="selected">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td><input type="text" id="row-3-age" name="row-3-age" value="66"></td>
+						<td><input type="text" id="row-3-position" name="row-3-position" value=
+						"Junior Technical Author"></td>
+						<td><select size="1" id="row-3-office" name="row-3-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td><input type="text" id="row-4-age" name="row-4-age" value="22"></td>
+						<td><input type="text" id="row-4-position" name="row-4-position" value=
+						"Senior Javascript Developer"></td>
+						<td><select size="1" id="row-4-office" name="row-4-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td><input type="text" id="row-5-age" name="row-5-age" value="33"></td>
+						<td><input type="text" id="row-5-position" name="row-5-position" value="Accountant"></td>
+						<td><select size="1" id="row-5-office" name="row-5-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo" selected="selected">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td><input type="text" id="row-6-age" name="row-6-age" value="61"></td>
+						<td><input type="text" id="row-6-position" name="row-6-position" value=
+						"Integration Specialist"></td>
+						<td><select size="1" id="row-6-office" name="row-6-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td><input type="text" id="row-7-age" name="row-7-age" value="59"></td>
+						<td><input type="text" id="row-7-position" name="row-7-position" value="Sales Assistant"></td>
+						<td><select size="1" id="row-7-office" name="row-7-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td><input type="text" id="row-8-age" name="row-8-age" value="55"></td>
+						<td><input type="text" id="row-8-position" name="row-8-position" value=
+						"Integration Specialist"></td>
+						<td><select size="1" id="row-8-office" name="row-8-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo" selected="selected">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td><input type="text" id="row-9-age" name="row-9-age" value="39"></td>
+						<td><input type="text" id="row-9-position" name="row-9-position" value=
+						"Javascript Developer"></td>
+						<td><select size="1" id="row-9-office" name="row-9-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td><input type="text" id="row-10-age" name="row-10-age" value="23"></td>
+						<td><input type="text" id="row-10-position" name="row-10-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-10-office" name="row-10-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td><input type="text" id="row-11-age" name="row-11-age" value="30"></td>
+						<td><input type="text" id="row-11-position" name="row-11-position" value="Office Manager"></td>
+						<td><select size="1" id="row-11-office" name="row-11-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td><input type="text" id="row-12-age" name="row-12-age" value="22"></td>
+						<td><input type="text" id="row-12-position" name="row-12-position" value="Support Lead"></td>
+						<td><select size="1" id="row-12-office" name="row-12-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td><input type="text" id="row-13-age" name="row-13-age" value="36"></td>
+						<td><input type="text" id="row-13-position" name="row-13-position" value=
+						"Regional Director"></td>
+						<td><select size="1" id="row-13-office" name="row-13-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td><input type="text" id="row-14-age" name="row-14-age" value="43"></td>
+						<td><input type="text" id="row-14-position" name="row-14-position" value=
+						"Senior Marketing Designer"></td>
+						<td><select size="1" id="row-14-office" name="row-14-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td><input type="text" id="row-15-age" name="row-15-age" value="19"></td>
+						<td><input type="text" id="row-15-position" name="row-15-position" value=
+						"Regional Director"></td>
+						<td><select size="1" id="row-15-office" name="row-15-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td><input type="text" id="row-16-age" name="row-16-age" value="66"></td>
+						<td><input type="text" id="row-16-position" name="row-16-position" value=
+						"Marketing Designer"></td>
+						<td><select size="1" id="row-16-office" name="row-16-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td><input type="text" id="row-17-age" name="row-17-age" value="64"></td>
+						<td><input type="text" id="row-17-position" name="row-17-position" value=
+						"Chief Financial Officer (CFO)"></td>
+						<td><select size="1" id="row-17-office" name="row-17-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td><input type="text" id="row-18-age" name="row-18-age" value="59"></td>
+						<td><input type="text" id="row-18-position" name="row-18-position" value=
+						"Systems Administrator"></td>
+						<td><select size="1" id="row-18-office" name="row-18-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td><input type="text" id="row-19-age" name="row-19-age" value="41"></td>
+						<td><input type="text" id="row-19-position" name="row-19-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-19-office" name="row-19-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td><input type="text" id="row-20-age" name="row-20-age" value="35"></td>
+						<td><input type="text" id="row-20-position" name="row-20-position" value="Personnel Lead"></td>
+						<td><select size="1" id="row-20-office" name="row-20-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td><input type="text" id="row-21-age" name="row-21-age" value="30"></td>
+						<td><input type="text" id="row-21-position" name="row-21-position" value=
+						"Development Lead"></td>
+						<td><select size="1" id="row-21-office" name="row-21-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td><input type="text" id="row-22-age" name="row-22-age" value="40"></td>
+						<td><input type="text" id="row-22-position" name="row-22-position" value=
+						"Chief Marketing Officer (CMO)"></td>
+						<td><select size="1" id="row-22-office" name="row-22-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td><input type="text" id="row-23-age" name="row-23-age" value="21"></td>
+						<td><input type="text" id="row-23-position" name="row-23-position" value=
+						"Pre-Sales Support"></td>
+						<td><select size="1" id="row-23-office" name="row-23-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td><input type="text" id="row-24-age" name="row-24-age" value="23"></td>
+						<td><input type="text" id="row-24-position" name="row-24-position" value=
+						"Sales Assistant"></td>
+						<td><select size="1" id="row-24-office" name="row-24-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td><input type="text" id="row-25-age" name="row-25-age" value="47"></td>
+						<td><input type="text" id="row-25-position" name="row-25-position" value=
+						"Chief Executive Officer (CEO)"></td>
+						<td><select size="1" id="row-25-office" name="row-25-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td><input type="text" id="row-26-age" name="row-26-age" value="42"></td>
+						<td><input type="text" id="row-26-position" name="row-26-position" value="Developer"></td>
+						<td><select size="1" id="row-26-office" name="row-26-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td><input type="text" id="row-27-age" name="row-27-age" value="28"></td>
+						<td><input type="text" id="row-27-position" name="row-27-position" value=
+						"Regional Director"></td>
+						<td><select size="1" id="row-27-office" name="row-27-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td><input type="text" id="row-28-age" name="row-28-age" value="28"></td>
+						<td><input type="text" id="row-28-position" name="row-28-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-28-office" name="row-28-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td><input type="text" id="row-29-age" name="row-29-age" value="48"></td>
+						<td><input type="text" id="row-29-position" name="row-29-position" value=
+						"Chief Operating Officer (COO)"></td>
+						<td><select size="1" id="row-29-office" name="row-29-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td><input type="text" id="row-30-age" name="row-30-age" value="20"></td>
+						<td><input type="text" id="row-30-position" name="row-30-position" value=
+						"Regional Marketing"></td>
+						<td><select size="1" id="row-30-office" name="row-30-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo" selected="selected">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td><input type="text" id="row-31-age" name="row-31-age" value="37"></td>
+						<td><input type="text" id="row-31-position" name="row-31-position" value=
+						"Integration Specialist"></td>
+						<td><select size="1" id="row-31-office" name="row-31-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td><input type="text" id="row-32-age" name="row-32-age" value="53"></td>
+						<td><input type="text" id="row-32-position" name="row-32-position" value="Developer"></td>
+						<td><select size="1" id="row-32-office" name="row-32-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td><input type="text" id="row-33-age" name="row-33-age" value="27"></td>
+						<td><input type="text" id="row-33-position" name="row-33-position" value=
+						"Technical Author"></td>
+						<td><select size="1" id="row-33-office" name="row-33-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td><input type="text" id="row-34-age" name="row-34-age" value="22"></td>
+						<td><input type="text" id="row-34-position" name="row-34-position" value="Team Leader"></td>
+						<td><select size="1" id="row-34-office" name="row-34-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td><input type="text" id="row-35-age" name="row-35-age" value="46"></td>
+						<td><input type="text" id="row-35-position" name="row-35-position" value=
+						"Post-Sales support"></td>
+						<td><select size="1" id="row-35-office" name="row-35-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td><input type="text" id="row-36-age" name="row-36-age" value="47"></td>
+						<td><input type="text" id="row-36-position" name="row-36-position" value=
+						"Marketing Designer"></td>
+						<td><select size="1" id="row-36-office" name="row-36-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td><input type="text" id="row-37-age" name="row-37-age" value="51"></td>
+						<td><input type="text" id="row-37-position" name="row-37-position" value="Office Manager"></td>
+						<td><select size="1" id="row-37-office" name="row-37-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td><input type="text" id="row-38-age" name="row-38-age" value="41"></td>
+						<td><input type="text" id="row-38-position" name="row-38-position" value="Secretary"></td>
+						<td><select size="1" id="row-38-office" name="row-38-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td><input type="text" id="row-39-age" name="row-39-age" value="62"></td>
+						<td><input type="text" id="row-39-position" name="row-39-position" value=
+						"Financial Controller"></td>
+						<td><select size="1" id="row-39-office" name="row-39-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td><input type="text" id="row-40-age" name="row-40-age" value="37"></td>
+						<td><input type="text" id="row-40-position" name="row-40-position" value="Office Manager"></td>
+						<td><select size="1" id="row-40-office" name="row-40-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td><input type="text" id="row-41-age" name="row-41-age" value="65"></td>
+						<td><input type="text" id="row-41-position" name="row-41-position" value="Director"></td>
+						<td><select size="1" id="row-41-office" name="row-41-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td><input type="text" id="row-42-age" name="row-42-age" value="64"></td>
+						<td><input type="text" id="row-42-position" name="row-42-position" value=
+						"Support Engineer"></td>
+						<td><select size="1" id="row-42-office" name="row-42-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td><input type="text" id="row-43-age" name="row-43-age" value="38"></td>
+						<td><input type="text" id="row-43-position" name="row-43-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-43-office" name="row-43-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td><input type="text" id="row-44-age" name="row-44-age" value="37"></td>
+						<td><input type="text" id="row-44-position" name="row-44-position" value=
+						"Support Engineer"></td>
+						<td><select size="1" id="row-44-office" name="row-44-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo" selected="selected">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td><input type="text" id="row-45-age" name="row-45-age" value="61"></td>
+						<td><input type="text" id="row-45-position" name="row-45-position" value="Developer"></td>
+						<td><select size="1" id="row-45-office" name="row-45-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td><input type="text" id="row-46-age" name="row-46-age" value="47"></td>
+						<td><input type="text" id="row-46-position" name="row-46-position" value=
+						"Support Engineer"></td>
+						<td><select size="1" id="row-46-office" name="row-46-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td><input type="text" id="row-47-age" name="row-47-age" value="64"></td>
+						<td><input type="text" id="row-47-position" name="row-47-position" value=
+						"Data Coordinator"></td>
+						<td><select size="1" id="row-47-office" name="row-47-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td><input type="text" id="row-48-age" name="row-48-age" value="63"></td>
+						<td><input type="text" id="row-48-position" name="row-48-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-48-office" name="row-48-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td><input type="text" id="row-49-age" name="row-49-age" value="56"></td>
+						<td><input type="text" id="row-49-position" name="row-49-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-49-office" name="row-49-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td><input type="text" id="row-50-age" name="row-50-age" value="43"></td>
+						<td><input type="text" id="row-50-position" name="row-50-position" value=
+						"Junior Javascript Developer"></td>
+						<td><select size="1" id="row-50-office" name="row-50-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td><input type="text" id="row-51-age" name="row-51-age" value="46"></td>
+						<td><input type="text" id="row-51-position" name="row-51-position" value=
+						"Sales Assistant"></td>
+						<td><select size="1" id="row-51-office" name="row-51-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td><input type="text" id="row-52-age" name="row-52-age" value="47"></td>
+						<td><input type="text" id="row-52-position" name="row-52-position" value=
+						"Regional Director"></td>
+						<td><select size="1" id="row-52-office" name="row-52-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td><input type="text" id="row-53-age" name="row-53-age" value="21"></td>
+						<td><input type="text" id="row-53-position" name="row-53-position" value=
+						"Systems Administrator"></td>
+						<td><select size="1" id="row-53-office" name="row-53-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td><input type="text" id="row-54-age" name="row-54-age" value="30"></td>
+						<td><input type="text" id="row-54-position" name="row-54-position" value="Developer"></td>
+						<td><select size="1" id="row-54-office" name="row-54-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td><input type="text" id="row-55-age" name="row-55-age" value="51"></td>
+						<td><input type="text" id="row-55-position" name="row-55-position" value=
+						"Regional Director"></td>
+						<td><select size="1" id="row-55-office" name="row-55-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td><input type="text" id="row-56-age" name="row-56-age" value="29"></td>
+						<td><input type="text" id="row-56-position" name="row-56-position" value=
+						"Javascript Developer"></td>
+						<td><select size="1" id="row-56-office" name="row-56-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td><input type="text" id="row-57-age" name="row-57-age" value="27"></td>
+						<td><input type="text" id="row-57-position" name="row-57-position" value=
+						"Customer Support"></td>
+						<td><select size="1" id="row-57-office" name="row-57-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	$('button').click( function() {
+		var data = table.$('input, select').serialize();
+		alert(
+			&quot;The following data would have been submitted to the server: \n\n&quot;+
+			data.substr( 0, 120 )+'...'
+		);
+		return false;
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li class="active"><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/highlight.html b/public/admin/js/DataTables/examples/api/highlight.html
new file mode 100644
index 0000000000000000000000000000000000000000..02977e46fa92f3ea88e7f431c45282055084c84b
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/highlight.html
@@ -0,0 +1,794 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Highlighting rows and columns</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+
+td.highlight {
+	background-color: whitesmoke !important;
+}
+
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var lastIdx = null;
+	var table = $('#example').DataTable();
+	
+	$('#example tbody')
+		.on( 'mouseover', 'td', function () {
+			var colIdx = table.cell(this).index().column;
+
+			if ( colIdx !== lastIdx ) {
+				$( table.cells().nodes() ).removeClass( 'highlight' );
+				$( table.column( colIdx ).nodes() ).addClass( 'highlight' );
+			}
+		} )
+		.on( 'mouseleave', function () {
+			$( table.cells().nodes() ).removeClass( 'highlight' );
+		} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Highlighting rows and columns</span></h1>
+
+			<div class="info">
+				<p>Highlighting rows and columns have be quite useful for drawing attention to where the user's cursor
+				is in a table, particularly if you have a lot of narrow columns. Of course the highlighting of a row is
+				easy enough using CSS, but for column highlighting, you need to use a little bit of Javascript.</p>
+
+				<p>This example shows that in action on DataTable by making use of the <a href=
+				"//datatables.net/reference/api/cell().index()"><code class="api" title=
+				"DataTables API method">cell().index()<span>DT</span></code></a> method to get the index of the column
+				that is to be operated on, and then the <a href=
+				"//datatables.net/reference/api/cells().nodes()"><code class="api" title=
+				"DataTables API method">cells().nodes()<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/api/column().nodes()"><code class="api" title=
+				"DataTables API method">column().nodes()<span>DT</span></code></a> methods to remove old classes and
+				apply the new highlighted class, respectively.</p>
+			</div>
+
+			<table id="example" class="row-border hover order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var lastIdx = null;
+	var table = $('#example').DataTable();
+	
+	$('#example tbody')
+		.on( 'mouseover', 'td', function () {
+			var colIdx = table.cell(this).index().column;
+
+			if ( colIdx !== lastIdx ) {
+				$( table.cells().nodes() ).removeClass( 'highlight' );
+				$( table.column( colIdx ).nodes() ).addClass( 'highlight' );
+			}
+		} )
+		.on( 'mouseleave', function () {
+			$( table.cells().nodes() ).removeClass( 'highlight' );
+		} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">td.highlight {
+	background-color: whitesmoke !important;
+}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li class="active"><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/index.html b/public/admin/js/DataTables/examples/api/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..0adcf71ed9c8a5ac53cb838100d240184f36f13e
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/index.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+
+	<title>DataTables examples - API</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>API</span></h1>
+
+			<div class="info">
+				<p>The real power of DataTables can be exploited through the use of the API that it presents. The
+				DataTables API is designed to be simple, consistent and easy to use. The examples in this section show
+				how the API may be used.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/multi_filter.html b/public/admin/js/DataTables/examples/api/multi_filter.html
new file mode 100644
index 0000000000000000000000000000000000000000..bac1dc1a593c9be48fb3b4144b49f8ee5c3d8c1b
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/multi_filter.html
@@ -0,0 +1,812 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Individual column filtering (text inputs)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	tfoot input {
+		width: 100%;
+		padding: 3px;
+		box-sizing: border-box;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	// Setup - add a text input to each footer cell
+	$('#example tfoot th').each( function () {
+		var title = $('#example thead th').eq( $(this).index() ).text();
+		$(this).html( '<input type="text" placeholder="Search '+title+'" />' );
+	} );
+
+	// DataTable
+	var table = $('#example').DataTable();
+
+	// Apply the filter
+	table.columns().eq( 0 ).each( function ( colIdx ) {
+		$( 'input', table.column( colIdx ).footer() ).on( 'keyup change', function () {
+			table
+				.column( colIdx )
+				.search( this.value )
+				.draw();
+		} );
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Individual column filtering (text inputs)</span></h1>
+
+			<div class="info">
+				<p>The filtering functionality that is provided by DataTables is very useful for quickly search through
+				the information in the table - however the search is global, and you may wish to present controls to
+				filter on specific columns only.</p>
+
+				<p>DataTables has the ability to apply filtering to a specific column through the <a href=
+				"//datatables.net/reference/api/column().search()"><code class="api" title=
+				"DataTables API method">column().search()<span>DT</span></code></a> method (note that the name of the
+				method is <code>search</code> not <code>filter</code> since <a href=
+				"//datatables.net/reference/api/filter()"><code class="api" title=
+				"DataTables API method">filter()<span>DT</span></code></a> is used to apply a filter to a data
+				set).</p>
+
+				<p>The column filters are cumulative, so you can apply multiple individual column filters, in addition
+				to the global filter, allowing complex filtering options to be presented to the user.</p>
+
+				<p>This examples shows text elements being used with the <a href=
+				"//datatables.net/reference/api/column().search()"><code class="api" title=
+				"DataTables API method">column().search()<span>DT</span></code></a> method to add input controls in the
+				footer of the table for each column. Note that the <code>*index*:visible</code> option is used for the
+				column selector to ensure that the <a href="//datatables.net/reference/api/column()"><code class="api"
+				title="DataTables API method">column()<span>DT</span></code></a> method takes into account any hidden
+				columns when selecting the column to act upon.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	// Setup - add a text input to each footer cell
+	$('#example tfoot th').each( function () {
+		var title = $('#example thead th').eq( $(this).index() ).text();
+		$(this).html( '&lt;input type=&quot;text&quot; placeholder=&quot;Search '+title+'&quot; /&gt;' );
+	} );
+
+	// DataTable
+	var table = $('#example').DataTable();
+
+	// Apply the filter
+	table.columns().eq( 0 ).each( function ( colIdx ) {
+		$( 'input', table.column( colIdx ).footer() ).on( 'keyup change', function () {
+			table
+				.column( colIdx )
+				.search( this.value )
+				.draw();
+		} );
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">tfoot input {
+		width: 100%;
+		padding: 3px;
+		box-sizing: border-box;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li class="active"><a href="./multi_filter.html">Individual column filtering (text
+							inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/multi_filter_select.html b/public/admin/js/DataTables/examples/api/multi_filter_select.html
new file mode 100644
index 0000000000000000000000000000000000000000..e00538062e060056d867f384a231ff1a7ffb556d
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/multi_filter_select.html
@@ -0,0 +1,802 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Individual column filtering (select inputs)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	$("#example tfoot th").each( function ( i ) {
+		var select = $('<select><option value=""></option></select>')
+			.appendTo( $(this).empty() )
+			.on( 'change', function () {
+				var val = $(this).val();
+
+				table.column( i )
+					.search( val ? '^'+$(this).val()+'$' : val, true, false )
+					.draw();
+			} );
+
+		table.column( i ).data().unique().sort().each( function ( d, j ) {
+			select.append( '<option value="'+d+'">'+d+'</option>' )
+		} );
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Individual column filtering (select inputs)</span></h1>
+
+			<div class="info">
+				<p>This example is almost identical to text based individual column example and provides the same
+				functionality, but in this case using <code class="tag" title="HTML tag">select</code> input
+				controls.</p>
+
+				<p>After the table is initialised, the API is used to build the <code class="tag" title=
+				"HTML tag">select</code> inputs through the use of the <a href=
+				"//datatables.net/reference/api/column().data()"><code class="api" title=
+				"DataTables API method">column().data()<span>DT</span></code></a> method to get the data for each
+				column in turn. The helper methods <a href="//datatables.net/reference/api/unique()"><code class="api"
+				title="DataTables API method">unique()<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/api/sort()"><code class="api" title=
+				"DataTables API method">sort()<span>DT</span></code></a> are also used to reduce the data for set input
+				to unique and ordered elements. Finally the <code>change</code> event from the <code class="tag" title=
+				"HTML tag">select</code> input is used to trigger a column search using the <a href=
+				"//datatables.net/reference/api/column().search()"><code class="api" title=
+				"DataTables API method">column().search()<span>DT</span></code></a> method.</p>
+
+				<p>Note that the <a href="//datatables.net/reference/api/column().search()"><code class="api" title=
+				"DataTables API method">column().search()<span>DT</span></code></a> method in this particular case
+				performs an exact match through the use of a custom regular expression and disabling DataTables built
+				in smart searching. For more information on the search options in DataTables API please refer to the
+				documentation for <a href="//datatables.net/reference/api/search()"><code class="api" title=
+				"DataTables API method">search()<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/api/column().search()"><code class="api" title=
+				"DataTables API method">column().search()<span>DT</span></code></a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	$(&quot;#example tfoot th&quot;).each( function ( i ) {
+		var select = $('&lt;select&gt;&lt;option value=&quot;&quot;&gt;&lt;/option&gt;&lt;/select&gt;')
+			.appendTo( $(this).empty() )
+			.on( 'change', function () {
+				var val = $(this).val();
+
+				table.column( i )
+					.search( val ? '^'+$(this).val()+'$' : val, true, false )
+					.draw();
+			} );
+
+		table.column( i ).data().unique().sort().each( function ( d, j ) {
+			select.append( '&lt;option value=&quot;'+d+'&quot;&gt;'+d+'&lt;/option&gt;' )
+		} );
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li class="active"><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/regex.html b/public/admin/js/DataTables/examples/api/regex.html
new file mode 100644
index 0000000000000000000000000000000000000000..a929729dee3d85ce1a8ca51418a350fbf411aa1d
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/regex.html
@@ -0,0 +1,873 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Filtering API (regular expressions)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+function filterGlobal () {
+	$('#example').DataTable().search( 
+		$('#global_filter').val(),
+		$('#global_regex').prop('checked'), 
+		$('#global_smart').prop('checked')
+	).draw();
+}
+
+function filterColumn ( i ) {
+	$('#example').DataTable().column( i ).search( 
+		$('#col'+i+'_filter').val(),
+		$('#col'+i+'_regex').prop('checked'), 
+		$('#col'+i+'_smart').prop('checked')
+	).draw();
+}
+
+$(document).ready(function() {
+	$('#example').dataTable();
+
+	$('input.global_filter').on( 'keyup click', function () {
+		filterGlobal();
+	} );
+
+	$('input.column_filter').on( 'keyup click', function () {
+		filterColumn( $(this).parents('tr').attr('data-column') );
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Filtering API (regular expressions)</span></h1>
+
+			<div class="info">
+				<p>Filtering a table is one of the most common user interactions with a DataTables table, and
+				DataTables provides a number of methods for you to control this interaction. There are APIs for the
+				global filter (<a href="//datatables.net/reference/api/search()"><code class="api" title=
+				"DataTables API method">search()<span>DT</span></code></a>) and for each individual column (<a href=
+				"//datatables.net/reference/api/column().search()"><code class="api" title=
+				"DataTables API method">column().search()<span>DT</span></code></a>).</p>
+
+				<p>Note also that you must call the <a href="//datatables.net/reference/api/draw()"><code class="api"
+				title="DataTables API method">draw()<span>DT</span></code></a> method after performing the search, in
+				order for the results to be displayed.</p>
+
+				<p>Each filter (global or column) can be marked as a regular expression (allowing you to create very
+				complex interactions) and as a smart filter or not. When smart filtering is enabled on a particular
+				filter, DataTables will modify the user input string to a complex regular expression which can make
+				filtering more intuitive.</p>
+
+				<p>This example allows you to "play" with the various filtering options that DataTables provides.</p>
+			</div>
+
+			<table cellpadding="3" cellspacing="0" border="0" style="width: 67%; margin: 0 auto 2em auto;">
+				<thead>
+					<tr>
+						<th>Target</th>
+						<th>Filter text</th>
+						<th>Treat as regex</th>
+						<th>Use smart filter</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr id="filter_global">
+						<td>Global filtering</td>
+						<td align="center"><input type="text" class="global_filter" id="global_filter"></td>
+						<td align="center"><input type="checkbox" class="global_filter" id="global_regex"></td>
+						<td align="center"><input type="checkbox" class="global_filter" id="global_smart" checked=
+						"checked"></td>
+					</tr>
+					<tr id="filter_col1" data-column="0">
+						<td>Column - Name</td>
+						<td align="center"><input type="text" class="column_filter" id="col0_filter"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col0_regex"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col0_smart" checked=
+						"checked"></td>
+					</tr>
+					<tr id="filter_col2" data-column="1">
+						<td>Column - Position</td>
+						<td align="center"><input type="text" class="column_filter" id="col1_filter"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col1_regex"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col1_smart" checked=
+						"checked"></td>
+					</tr>
+					<tr id="filter_col3" data-column="2">
+						<td>Column - Office</td>
+						<td align="center"><input type="text" class="column_filter" id="col2_filter"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col2_regex"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col2_smart" checked=
+						"checked"></td>
+					</tr>
+					<tr id="filter_col4" data-column="3">
+						<td>Column - Age</td>
+						<td align="center"><input type="text" class="column_filter" id="col3_filter"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col3_regex"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col3_smart" checked=
+						"checked"></td>
+					</tr>
+					<tr id="filter_col5" data-column="4">
+						<td>Column - Start date</td>
+						<td align="center"><input type="text" class="column_filter" id="col4_filter"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col4_regex"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col4_smart" checked=
+						"checked"></td>
+					</tr>
+					<tr id="filter_col6" data-column="5">
+						<td>Column - Salary</td>
+						<td align="center"><input type="text" class="column_filter" id="col5_filter"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col5_regex"></td>
+						<td align="center"><input type="checkbox" class="column_filter" id="col5_smart" checked=
+						"checked"></td>
+					</tr>
+				</tbody>
+			</table>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">function filterGlobal () {
+	$('#example').DataTable().search( 
+		$('#global_filter').val(),
+		$('#global_regex').prop('checked'), 
+		$('#global_smart').prop('checked')
+	).draw();
+}
+
+function filterColumn ( i ) {
+	$('#example').DataTable().column( i ).search( 
+		$('#col'+i+'_filter').val(),
+		$('#col'+i+'_regex').prop('checked'), 
+		$('#col'+i+'_smart').prop('checked')
+	).draw();
+}
+
+$(document).ready(function() {
+	$('#example').dataTable();
+
+	$('input.global_filter').on( 'keyup click', function () {
+		filterGlobal();
+	} );
+
+	$('input.column_filter').on( 'keyup click', function () {
+		filterColumn( $(this).parents('tr').attr('data-column') );
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li class="active"><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/row_details.html b/public/admin/js/DataTables/examples/api/row_details.html
new file mode 100644
index 0000000000000000000000000000000000000000..7702bb4c1527a1091a3097557312f8667a09d696
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/row_details.html
@@ -0,0 +1,415 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Child rows (show extra / detailed information)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+td.details-control {
+	background: url('../resources/details_open.png') no-repeat center center;
+	cursor: pointer;
+}
+tr.shown td.details-control {
+	background: url('../resources/details_close.png') no-repeat center center;
+}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+/* Formatting function for row details - modify as you need */
+function format ( d ) {
+	// `d` is the original data object for the row
+	return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
+		'<tr>'+
+			'<td>Full name:</td>'+
+			'<td>'+d.name+'</td>'+
+		'</tr>'+
+		'<tr>'+
+			'<td>Extension number:</td>'+
+			'<td>'+d.extn+'</td>'+
+		'</tr>'+
+		'<tr>'+
+			'<td>Extra info:</td>'+
+			'<td>And any further details here (images etc)...</td>'+
+		'</tr>'+
+	'</table>';
+}
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		"ajax": "../ajax/data/objects.txt",
+		"columns": [
+			{
+				"class":          'details-control',
+				"orderable":      false,
+				"data":           null,
+				"defaultContent": ''
+			},
+			{ "data": "name" },
+			{ "data": "position" },
+			{ "data": "office" },
+			{ "data": "salary" }
+		],
+		"order": [[1, 'asc']]
+	} );
+	
+	// Add event listener for opening and closing details
+	$('#example tbody').on('click', 'td.details-control', function () {
+		var tr = $(this).closest('tr');
+		var row = table.row( tr );
+
+		if ( row.child.isShown() ) {
+			// This row is already open - close it
+			row.child.hide();
+			tr.removeClass('shown');
+		}
+		else {
+			// Open this row
+			row.child( format(row.data()) ).show();
+			tr.addClass('shown');
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Child rows (show extra / detailed information)</span></h1>
+
+			<div class="info">
+				<p>The DataTables API has a number of methods available for attaching child rows to a <em>parent</em>
+				row in the DataTable. This can be used to show additional information about a row, useful for cases
+				where you wish to convey more information about a row than there is space for in the host table.</p>
+
+				<p>The example below makes use of the <a href="//datatables.net/reference/api/row().child"><code class=
+				"api" title="DataTables API method">row().child<span>DT</span></code></a> methods to firstly check if a
+				row is already displayed, and if so hide it (<a href=
+				"//datatables.net/reference/api/row().child.hide()"><code class="api" title=
+				"DataTables API method">row().child.hide()<span>DT</span></code></a>), otherwise show it (<a href=
+				"//datatables.net/reference/api/row().child.show()"><code class="api" title=
+				"DataTables API method">row().child.show()<span>DT</span></code></a>). The content of the child row is,
+				in this example, defined by the <code>formatDetails()</code> function, but you would replace that with
+				whatever you wanted to show the content required, possibly including, for example, an Ajax call to the
+				server to obtain the extra information to show.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th></th>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th></th>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">/* Formatting function for row details - modify as you need */
+function format ( d ) {
+	// `d` is the original data object for the row
+	return '&lt;table cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; border=&quot;0&quot; style=&quot;padding-left:50px;&quot;&gt;'+
+		'&lt;tr&gt;'+
+			'&lt;td&gt;Full name:&lt;/td&gt;'+
+			'&lt;td&gt;'+d.name+'&lt;/td&gt;'+
+		'&lt;/tr&gt;'+
+		'&lt;tr&gt;'+
+			'&lt;td&gt;Extension number:&lt;/td&gt;'+
+			'&lt;td&gt;'+d.extn+'&lt;/td&gt;'+
+		'&lt;/tr&gt;'+
+		'&lt;tr&gt;'+
+			'&lt;td&gt;Extra info:&lt;/td&gt;'+
+			'&lt;td&gt;And any further details here (images etc)...&lt;/td&gt;'+
+		'&lt;/tr&gt;'+
+	'&lt;/table&gt;';
+}
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		&quot;ajax&quot;: &quot;../ajax/data/objects.txt&quot;,
+		&quot;columns&quot;: [
+			{
+				&quot;class&quot;:          'details-control',
+				&quot;orderable&quot;:      false,
+				&quot;data&quot;:           null,
+				&quot;defaultContent&quot;: ''
+			},
+			{ &quot;data&quot;: &quot;name&quot; },
+			{ &quot;data&quot;: &quot;position&quot; },
+			{ &quot;data&quot;: &quot;office&quot; },
+			{ &quot;data&quot;: &quot;salary&quot; }
+		],
+		&quot;order&quot;: [[1, 'asc']]
+	} );
+	
+	// Add event listener for opening and closing details
+	$('#example tbody').on('click', 'td.details-control', function () {
+		var tr = $(this).closest('tr');
+		var row = table.row( tr );
+
+		if ( row.child.isShown() ) {
+			// This row is already open - close it
+			row.child.hide();
+			tr.removeClass('shown');
+		}
+		else {
+			// Open this row
+			row.child( format(row.data()) ).show();
+			tr.addClass('shown');
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">td.details-control {
+	background: url('../resources/details_open.png') no-repeat center center;
+	cursor: pointer;
+}
+tr.shown td.details-control {
+	background: url('../resources/details_close.png') no-repeat center center;
+}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li class="active"><a href="./row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/select_row.html b/public/admin/js/DataTables/examples/api/select_row.html
new file mode 100644
index 0000000000000000000000000000000000000000..0ada6452abcbd751f48bcc92c62702ea37691e5f
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/select_row.html
@@ -0,0 +1,771 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Row selection (multiple rows)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	$('#example tbody').on( 'click', 'tr', function () {
+		$(this).toggleClass('selected');
+	} );
+
+	$('#button').click( function () {
+		alert( table.rows('.selected').data().length +' row(s) selected' );
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Row selection (multiple rows)</span></h1>
+
+			<div class="info">
+				<p>It can be quite useful at times to provide the user with the option to select rows in a DataTable.
+				This can be done by simply using a click event to add / remove a class on the table rows. The <a href=
+				"//datatables.net/reference/api/rows().data()"><code class="api" title=
+				"DataTables API method">rows().data()<span>DT</span></code></a> method can then be used to get the data
+				for the selected rows. In this case it is simply counting the number of selected rows, but much more
+				complex interactions can easily be developed.</p>
+
+				<p>If you are looking for a more complete row selection option <a href=
+				"http://datatables.net/extras/tabletools">TableTools for DataTables</a> provides a complete API for
+				selecting rows and acting upon those selected rows.</p>
+			</div><button id="button">Row count</button>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	$('#example tbody').on( 'click', 'tr', function () {
+		$(this).toggleClass('selected');
+	} );
+
+	$('#button').click( function () {
+		alert( table.rows('.selected').data().length +' row(s) selected' );
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li class="active"><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/select_single_row.html b/public/admin/js/DataTables/examples/api/select_single_row.html
new file mode 100644
index 0000000000000000000000000000000000000000..b48cb406d73be2455297976ddd73190b9dc78324
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/select_single_row.html
@@ -0,0 +1,789 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Row selection and deletion (single row)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	$('#example tbody').on( 'click', 'tr', function () {
+		if ( $(this).hasClass('selected') ) {
+			$(this).removeClass('selected');
+		}
+		else {
+			table.$('tr.selected').removeClass('selected');
+			$(this).addClass('selected');
+		}
+	} );
+
+	$('#button').click( function () {
+		table.row('.selected').remove().draw( false );
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Row selection and deletion (single row)</span></h1>
+
+			<div class="info">
+				<p>This example shows a modification of the multiple row selection example, where just a single can now
+				be selected. This is done simply by checking to see if the row already has a selected class or not, and
+				if so removing it, if not then the class is removed from any other row in the table which does have it
+				and applied to the row to be selected.</p>
+
+				<p>Also shown is the <a href="//datatables.net/reference/api/row().remove()"><code class="api" title=
+				"DataTables API method">row().remove()<span>DT</span></code></a> method which will delete a row from a
+				table, and the <a href="//datatables.net/reference/api/draw()"><code class="api" title=
+				"DataTables API method">draw()<span>DT</span></code></a> method with <code>false</code> as its first
+				parameter. This will redraw the table keeping the current paging (without the <code>false</code>
+				parameter the paging would be reset to the first page).</p>
+
+				<p>If you are looking for a more complete row selection option <a href=
+				"http://datatables.net/extras/tabletools">TableTools for DataTables</a> provides a complete API for
+				selecting rows and acting upon those selected rows.</p>
+			</div><button id="button">Delete selected row</button>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	$('#example tbody').on( 'click', 'tr', function () {
+		if ( $(this).hasClass('selected') ) {
+			$(this).removeClass('selected');
+		}
+		else {
+			table.$('tr.selected').removeClass('selected');
+			$(this).addClass('selected');
+		}
+	} );
+
+	$('#button').click( function () {
+		table.row('.selected').remove().draw( false );
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li class="active"><a href="./select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/show_hide.html b/public/admin/js/DataTables/examples/api/show_hide.html
new file mode 100644
index 0000000000000000000000000000000000000000..87cd9ac0d4f53ca9d1f3d3eca811c3beb58b0545
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/show_hide.html
@@ -0,0 +1,793 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Show / hide columns dynamically</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		"scrollY": "200px",
+		"paging": false
+	} );
+
+	$('a.toggle-vis').on( 'click', function (e) {
+		e.preventDefault();
+
+		// Get the column API object
+		var column = table.column( $(this).attr('data-column') );
+
+		// Toggle the visibility
+		column.visible( ! column.visible() );
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Show / hide columns dynamically</span></h1>
+
+			<div class="info">
+				<p>This example shows how you can make use of the <a href=
+				"//datatables.net/reference/api/column().visible()"><code class="api" title=
+				"DataTables API method">column().visible()<span>DT</span></code></a> API method to dynamically show and
+				hide columns in a table. Also included here is scrolling, just to show it enabled with this API method,
+				although that is not required for the API function to work.</p>
+
+				<p>In addition to this, groups of columns can be shown and hidden at the same time using the <a href=
+				"//datatables.net/reference/api/columns()"><code class="api" title=
+				"DataTables API method">columns()<span>DT</span></code></a> method to select multiple columns and then
+				using the <a href="//datatables.net/reference/api/columns().visible()"><code class="api" title=
+				"DataTables API method">columns().visible()<span>DT</span></code></a> method to set their state.</p>
+
+				<p>If you are looking for a more complete column visibility interaction controls <a href=
+				"http://datatables.net/extras/colvis">ColVis for DataTables</a> provides a complete interface for
+				allowing the user to show and hide columns in the table.</p>
+			</div>
+
+			<div>
+				Toggle column: <a class="toggle-vis" data-column="0">Name</a> - <a class="toggle-vis" data-column=
+				"1">Position</a> - <a class="toggle-vis" data-column="2">Office</a> - <a class="toggle-vis"
+				data-column="3">Age</a> - <a class="toggle-vis" data-column="4">Start date</a> - <a class="toggle-vis"
+				data-column="5">Salary</a>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		&quot;scrollY&quot;: &quot;200px&quot;,
+		&quot;paging&quot;: false
+	} );
+
+	$('a.toggle-vis').on( 'click', function (e) {
+		e.preventDefault();
+
+		// Get the column API object
+		var column = table.column( $(this).attr('data-column') );
+
+		// Toggle the visibility
+		column.visible( ! column.visible() );
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li class="active"><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/api/tabs_and_scrolling.html b/public/admin/js/DataTables/examples/api/tabs_and_scrolling.html
new file mode 100644
index 0000000000000000000000000000000000000000..d77856b099ded2584b480c9c1be36bc89a47a972
--- /dev/null
+++ b/public/admin/js/DataTables/examples/api/tabs_and_scrolling.html
@@ -0,0 +1,790 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Scrolling and jQuery UI tabs</title>
+	<link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
+	<link rel="stylesheet" type="text/css" href=
+	"../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="//code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$("#tabs").tabs( {
+		"activate": function(event, ui) {
+			$( $.fn.dataTable.tables( true ) ).DataTable().columns.adjust();
+		}
+	} );
+	
+	$('table.display').dataTable( {
+		"scrollY": "200px",
+		"scrollCollapse": true,
+		"paging": false,
+		"jQueryUI": true
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Scrolling and jQuery UI tabs</span></h1>
+
+			<div class="info">
+				<p>This example shows how DataTables with scrolling can be used together with jQuery UI tabs (or indeed
+				any other method whereby the table is in a hidden, <code>display:none</code>, element when it is
+				initialised). The reason this requires special consideration, is that when the DataTable is initialised
+				in a hidden element the browser doesn't have any measurements with which to give the DataTable, and
+				this will result in the misalignment of columns when scrolling is enabled.</p>
+
+				<p>This misalignment can be corrected by the <a href=
+				"//datatables.net/reference/api/columns.adjust()"><code class="api" title=
+				"DataTables API method">columns.adjust()<span>DT</span></code></a> method when the table is made
+				visible (i.e. it has dimensions).</p>
+
+				<p>This example shows how the jQuery UI <code>show</code> event can be used to trigger this method
+				call. The visible tables on the page are selected using the static <code>dt-api-static tables()</code>
+				method and passing the result to <a href="//datatables.net/reference/api/columns.adjust()"><code class=
+				"api" title="DataTables API method">columns.adjust()<span>DT</span></code></a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$(&quot;#tabs&quot;).tabs( {
+		&quot;activate&quot;: function(event, ui) {
+			$( $.fn.dataTable.tables( true ) ).DataTable().columns.adjust();
+		}
+	} );
+	
+	$('table.display').dataTable( {
+		&quot;scrollY&quot;: &quot;200px&quot;,
+		&quot;scrollCollapse&quot;: true,
+		&quot;paging&quot;: false,
+		&quot;jQueryUI&quot;: true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href=
+						"//code.jquery.com/ui/1.10.3/jquery-ui.js">//code.jquery.com/ui/1.10.3/jquery-ui.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css</a></li>
+						<li><a href=
+						"../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.css">../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">API</a></h3>
+						<ul class="toc active">
+							<li><a href="./add_row.html">Add rows</a></li>
+							<li><a href="./multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./row_details.html">Child rows (show extra / detailed information)</a></li>
+							<li><a href="./select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./form.html">Form inputs</a></li>
+							<li><a href="./counter_columns.html">Index column</a></li>
+							<li><a href="./show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api_in_init.html">Using API in callbacks</a></li>
+							<li class="active"><a href="./tabs_and_scrolling.html">Scrolling and jQuery UI
+							tabs</a></li>
+							<li><a href="./regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/alt_pagination.html b/public/admin/js/DataTables/examples/basic_init/alt_pagination.html
new file mode 100644
index 0000000000000000000000000000000000000000..5dc2f8d7e0c975e3e36f06822536279ae01222b5
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/alt_pagination.html
@@ -0,0 +1,777 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Alternative pagination</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"pagingType": "full_numbers"
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Alternative pagination</span></h1>
+
+			<div class="info">
+				<p>The default page control presented by DataTables (forward and backward buttons with up to 7 page
+				numbers in-between) is fine for most situations, but there are cases where you may wish to customise
+				the options presented to the end user. This is done through DataTables' extensible pagination
+				mechanism, the <a href="//datatables.net/reference/option/pagingType"><code class="option" title=
+				"DataTables initialisation option">pagingType<span>DT</span></code></a> option.</p>
+
+				<p>There are four built-in options for which pagination controls DataTables should show:</p>
+
+				<ul class="markdown">
+					<li><code class="string" title="String">simple</code> - 'Previous' and 'Next' buttons only</li>
+					<li><code class="string" title="String">simple_numbers</code> - 'Previous' and 'Next' buttons, plus
+					page numbers</li>
+					<li><code class="string" title="String">full</code> - 'First', 'Previous', 'Next' and 'Last'
+					buttons</li>
+					<li><code class="string" title="String">full_numbers</code> - 'First', 'Previous', 'Next' and
+					'Last' buttons, plus page numbers</li>
+				</ul>
+
+				<p>The language strings of 'First', 'Previous' etc can be optionally through the internationalisation
+				options of DataTables; <a href="//datatables.net/reference/option/language.paginate.first"><code class=
+				"option" title="DataTables initialisation option">language.paginate.first<span>DT</span></code></a>,
+				<a href="//datatables.net/reference/option/language.paginate.previous"><code class="option" title=
+				"DataTables initialisation option">language.paginate.previous<span>DT</span></code></a> etc.</p>
+
+				<p>Additional options for the buttons that are shown can be added through the use of pagination type
+				plug-ins. Furthermore, how the buttons are actually shown can be altered through the use of plug-in
+				pagination renderers.</p>
+
+				<p>The example below shows the <code class="string" title="String">full_numbers</code> type of
+				pagination.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;pagingType&quot;: &quot;full_numbers&quot;
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li class="active"><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/comma-decimal.html b/public/admin/js/DataTables/examples/basic_init/comma-decimal.html
new file mode 100644
index 0000000000000000000000000000000000000000..b36bf9a0efc6a759db0459c84a4a2cbe4de7bc3e
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/comma-decimal.html
@@ -0,0 +1,774 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Language - Comma decimal place</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"language": {
+			"decimal": ",",
+			"thousands": "."
+		}
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Language - Comma decimal place</span></h1>
+
+			<div class="info">
+				<p>A dot (<code>.</code>) is used to mark the decimal place in Javascript, however, <a href=
+				"http://en.wikipedia.org/wiki/Decimal_mark">many parts of the world use a comma</a> (<code>,</code>)
+				and other characters such as the Unicode decimal separator (<code>&#9110;</code>) or a dash
+				(<code>-</code>) are often used to show the decimal place in a displayed number.</p>
+
+				<p>When reading such numbers, Javascript won't automatically recognise them as numbers, however,
+				DataTables' type detection and sorting methods can be instructed through the <a href=
+				"//datatables.net/reference/option/language.decimal"><code class="option" title=
+				"DataTables initialisation option">language.decimal<span>DT</span></code></a> option which character is
+				used as the decimal place in your numbers. This will be used to correctly adjust DataTables' type
+				detection and sorting algorithms to sort numbers in your table.</p>
+
+				<p>Any character can be passed in using the <a href=
+				"//datatables.net/reference/option/language.decimal"><code class="option" title=
+				"DataTables initialisation option">language.decimal<span>DT</span></code></a> option, although the
+				decimal place character used in a single table must be consistent (i.e. numbers with a dot decimal
+				place and comma decimal place cannot both appear in the same table). Different tables on the same page
+				can use different decimal characters if required.</p>
+
+				<p>The example below shows a comma being used as the decimal place in the currency numbers shown in the
+				final column.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320.800,00</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170.750,00</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86.000,00</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433.060,00</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162.700,00</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372.000,00</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137.500,00</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327.900,00</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205.500,00</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103.600,00</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90.560,00</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342.000,00</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470.600,00</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313.500,00</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385.750,00</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198.500,00</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725.000,00</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237.500,00</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132.000,00</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217.500,00</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345.000,00</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675.000,00</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106.450,00</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85.600,00</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1.200.000,00</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92.575,00</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357.650,00</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206.850,00</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850.000,00</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163.000,00</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95.400,00</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114.500,00</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145.000,00</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235.500,00</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324.050,00</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85.675,00</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164.500,00</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109.850,00</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452.500,00</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136.200,00</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645.750,00</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234.500,00</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163.500,00</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139.575,00</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98.540,00</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87.500,00</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138.575,00</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125.250,00</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115.000,00</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75.650,00</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145.600,00</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356.250,00</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103.500,00</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86.500,00</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183.000,00</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183.000,00</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112.000,00</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;language&quot;: {
+			&quot;decimal&quot;: &quot;,&quot;,
+			&quot;thousands&quot;: &quot;.&quot;
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li class="active"><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/complex_header.html b/public/admin/js/DataTables/examples/basic_init/complex_header.html
new file mode 100644
index 0000000000000000000000000000000000000000..2836962532ecded0446f37019bda820af01a9b6c
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/complex_header.html
@@ -0,0 +1,760 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Complex headers (rowspan and colspan)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Complex headers (rowspan and colspan)</span></h1>
+
+			<div class="info">
+				<p>When using tables to display data, you will often wish to display column information in groups.
+				DataTables fully supports <code>colspan</code> and <code>rowspan</code> in the table's header,
+				assigning the required order listeners to the TH element suitable for that column.</p>
+
+				<p>Each column must have one TH cell which is unique to it for the listeners to be added. By default
+				DataTables will use the bottom unique cell for the column to attach the order listener, if more than
+				one cell for a column if found. The <a href=
+				"//datatables.net/reference/option/orderCellsTop"><code class="option" title=
+				"DataTables initialisation option">orderCellsTop<span>DT</span></code></a> option can be used to tell
+				DataTables to use the top cell if you prefer.</p>
+
+				<p>The example shown below has two sets of grouped information, grouped by colspan in the header.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th rowspan="2">Name</th>
+						<th colspan="2">HR Information</th>
+						<th colspan="3">Contact</th>
+					</tr>
+					<tr>
+						<th>Position</th>
+						<th>Salary</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Salary</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>$320,800</td>
+						<td>Edinburgh</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>$170,750</td>
+						<td>Tokyo</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>$86,000</td>
+						<td>San Francisco</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>$433,060</td>
+						<td>Edinburgh</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>$162,700</td>
+						<td>Tokyo</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>$372,000</td>
+						<td>New York</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>$137,500</td>
+						<td>San Francisco</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>$327,900</td>
+						<td>Tokyo</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>$205,500</td>
+						<td>San Francisco</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>$103,600</td>
+						<td>Edinburgh</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>$90,560</td>
+						<td>London</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>$342,000</td>
+						<td>Edinburgh</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>$470,600</td>
+						<td>San Francisco</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>$313,500</td>
+						<td>London</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>$385,750</td>
+						<td>London</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>$198,500</td>
+						<td>London</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>$725,000</td>
+						<td>New York</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>$237,500</td>
+						<td>New York</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>$132,000</td>
+						<td>London</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>$217,500</td>
+						<td>Edinburgh</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>$345,000</td>
+						<td>New York</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>$675,000</td>
+						<td>New York</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>$106,450</td>
+						<td>New York</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>$85,600</td>
+						<td>Sidney</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>$1,200,000</td>
+						<td>London</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>$92,575</td>
+						<td>Edinburgh</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>$357,650</td>
+						<td>Singapore</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>$206,850</td>
+						<td>San Francisco</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>$850,000</td>
+						<td>San Francisco</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>$163,000</td>
+						<td>Tokyo</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>$95,400</td>
+						<td>Sidney</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>$114,500</td>
+						<td>London</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>$145,000</td>
+						<td>London</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>$235,500</td>
+						<td>San Francisco</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>$324,050</td>
+						<td>Edinburgh</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>$85,675</td>
+						<td>San Francisco</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>$164,500</td>
+						<td>San Francisco</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>$109,850</td>
+						<td>San Francisco</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>$452,500</td>
+						<td>San Francisco</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>$136,200</td>
+						<td>London</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>$645,750</td>
+						<td>New York</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>$234,500</td>
+						<td>Singapore</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>$163,500</td>
+						<td>London</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>$139,575</td>
+						<td>Tokyo</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>$98,540</td>
+						<td>New York</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>$87,500</td>
+						<td>San Francisco</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>$138,575</td>
+						<td>Singapore</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>$125,250</td>
+						<td>New York</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>$115,000</td>
+						<td>San Francisco</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>$75,650</td>
+						<td>Edinburgh</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>$145,600</td>
+						<td>New York</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>$356,250</td>
+						<td>London</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>$103,500</td>
+						<td>London</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>$86,500</td>
+						<td>San Francisco</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>$183,000</td>
+						<td>Edinburgh</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>$183,000</td>
+						<td>Singapore</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>$112,000</td>
+						<td>New York</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li class="active"><a href="./complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/dom.html b/public/admin/js/DataTables/examples/basic_init/dom.html
new file mode 100644
index 0000000000000000000000000000000000000000..60cbbaf42e3777144d848423186bc6e2a9c05182
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/dom.html
@@ -0,0 +1,824 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - DOM positioning</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"dom": '<"top"i>rt<"bottom"flp><"clear">'
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>DOM positioning</span></h1>
+
+			<div class="info">
+				<p>When customising DataTables for your own usage, you might find that the default position of the
+				feature elements (filter input etc) is not quite to your liking. To address this issue DataTables takes
+				inspiration from the CSS 3 Advanced Layout Module and provides the <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> initialisation parameter which can be
+				set to indicate where you which particular features to appear in the DOM. You can also specify
+				<code>div</code> wrapping containers (with an id and / or class) to provide complete layout
+				flexibility.</p>
+
+				<p>Each HTML control element presented by DataTables is denoted by a single character in the <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> option. For example the <code>l</code>
+				option is used for the <code>L</code>ength changing input option.</p>
+
+				<p>The built-in options available are:</p>
+
+				<ul class="markdown">
+					<li><code>l</code> - <code>L</code>ength changing</li>
+					<li><code>f</code> - <code>F</code>iltering input</li>
+					<li><code>t</code> - The <code>T</code>able!</li>
+					<li><code>i</code> - <code>I</code>nformation</li>
+					<li><code>p</code> - <code>P</code>agination</li>
+					<li><code>r</code> - p<code>R</code>ocessing</li>
+					<li><code>&lt;</code> and <code>&gt;</code> - div elements</li>
+					<li><code>&lt;"#id"</code> and <code>&gt;</code> - div with an id</li>
+					<li><code>&lt;"class"</code> and <code>&gt;</code> - div with a class</li>
+					<li><code>&lt;"#id.class"</code> and <code>&gt;</code> - div with an id and class</li>
+				</ul>
+
+				<p>Example 1:</p>
+				<pre>
+<code class="multiline">&lt;"wrapper"flipt&gt;
+</code>
+</pre>
+
+				<p>This results in the following DOM structure:</p>
+				<pre>
+<code class="multiline">&lt;div class="wrapper"&gt;
+	{ filter }
+	{ length }
+	{ info }
+	{ paging }
+	{ table }
+&lt;/div&gt;
+</code>
+</pre>
+
+				<p>Example 2:</p>
+				<pre>
+<code class="multiline">&lt;lf&lt;t&gt;ip&gt;
+</code>
+</pre>
+
+				<p>This results in the following DOM structure:</p>
+				<pre>
+<code class="multiline">&lt;div&gt;
+	{ length }
+	{ filter }
+	&lt;div&gt;
+		{ table }
+	&lt;/div&gt;
+	{ info }
+	{ paging }
+&lt;/div&gt;
+</code>
+</pre>
+
+				<p>All options (with the exception of the <code>t</code> (table) option can be specified multiple
+				times, for if you want to show the same control multiple times (pagination at the top and bottom of the
+				table for example).</p>
+
+				<p>Furthermore, note that additional <a href="//datatables.net/reference/option/dom"><code class=
+				"option" title="DataTables initialisation option">dom<span>DT</span></code></a> options can be added to
+				DataTables through the use of plug-ins.</p>
+
+				<p>In the example below, the table information is moved to the top of the table, and all the
+				interaction elements to the bottom, each wrapper in a container <code>div</code>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;dom&quot;: '&lt;&quot;top&quot;i&gt;rt&lt;&quot;bottom&quot;flp&gt;&lt;&quot;clear&quot;&gt;'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li class="active"><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/filter_only.html b/public/admin/js/DataTables/examples/basic_init/filter_only.html
new file mode 100644
index 0000000000000000000000000000000000000000..8bc8cd3e248059b833e3cb860c7b48a0319de0c2
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/filter_only.html
@@ -0,0 +1,754 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Feature enable / disable</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"paging":   false,
+		"ordering": false,
+		"info":     false
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Feature enable / disable</span></h1>
+
+			<div class="info">
+				<p>Disabling features that you don't wish to use for a particular table is easily done by setting a
+				variable in the initialisation object. In the following example only the filter feature is left enabled
+				(which is enabled by default).</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;paging&quot;:   false,
+		&quot;ordering&quot;: false,
+		&quot;info&quot;:     false
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li class="active"><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/flexible_width.html b/public/admin/js/DataTables/examples/basic_init/flexible_width.html
new file mode 100644
index 0000000000000000000000000000000000000000..289f07dadc80c16a466d3b1851de4f7e4ba23115
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/flexible_width.html
@@ -0,0 +1,757 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Flexible table width</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	div.container {
+		width: 80%;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Flexible table width</span></h1>
+
+			<div class="info">
+				<p>Often you may want to have your table resize dynamically with the page. Typically this is done by
+				assigning <code>width:100%</code> in your CSS, but this presents a problem for Javascript since it can
+				be very hard to get that relative size rather than the absolute pixels. As such, if you apply the
+				<code>width</code> attribute to the HTML table tag, it will be used as the width for the table
+				(overruling any CSS styles).</p>
+
+				<p>This example shows a table with <code>width="100%"</code> and the container is also flexible width,
+				so as the window is resized, the table will also resize dynamically.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">div.container {
+		width: 80%;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li class="active"><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/hidden_columns.html b/public/admin/js/DataTables/examples/basic_init/hidden_columns.html
new file mode 100644
index 0000000000000000000000000000000000000000..1fee7cc0cecdbac845b8177a0f07d8546a297e1b
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/hidden_columns.html
@@ -0,0 +1,783 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Hidden columns</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"columnDefs": [ 
+			{
+				"targets": [ 2 ],
+				"visible": false,
+				"searchable": false
+			},
+			{
+				"targets": [ 3 ],
+				"visible": false
+			}
+		]
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Hidden columns</span></h1>
+
+			<div class="info">
+				<p>There are times when you might find it useful to display only a sub-set of the information that was
+				available in the original table. For example you might want to reduce the amount of data shown on
+				screen to make it clearer for the user. This is done through the <a href=
+				"//datatables.net/reference/option/columns.visible"><code class="option" title=
+				"DataTables initialisation option">columns.visible<span>DT</span></code></a> column option.</p>
+
+				<p>The column that is hidden is still part of the table and can be made visible through the <code>api
+				column().visible()</code> API method at a future time if you wish to have columns which can be shown
+				and hidden.</p>
+
+				<p>Furthermore, as the hidden data is still part of the table, it can still, optionally, be filtered
+				upon allowing the user access to that data (for example 'tag' information for a row entry might
+				used).</p>
+
+				<p>In the table below both the office and age version columns have been hidden, the former is
+				searchable, the latter is not.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;columnDefs&quot;: [ 
+			{
+				&quot;targets&quot;: [ 2 ],
+				&quot;visible&quot;: false,
+				&quot;searchable&quot;: false
+			},
+			{
+				&quot;targets&quot;: [ 3 ],
+				&quot;visible&quot;: false
+			}
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li class="active"><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/index.html b/public/admin/js/DataTables/examples/basic_init/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..bbfdbe6a492e214526c216505b65a408acb10478
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/index.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+
+	<title>DataTables examples - Basic initialisation</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Basic initialisation</span></h1>
+
+			<div class="info">
+				<p>DataTables is very simple to use as a jQuery plug-in with a huge range of customisable option. The
+				examples in this section demonstrate basic initialisation of DataTables and how it can be easily
+				customised by passing an object with the options you want.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/language.html b/public/admin/js/DataTables/examples/basic_init/language.html
new file mode 100644
index 0000000000000000000000000000000000000000..2807d602111e9aeede1ac97afb2c3dfb72cecc6b
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/language.html
@@ -0,0 +1,765 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Language options</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"language": {
+			"lengthMenu": "Display _MENU_ records per page",
+			"zeroRecords": "Nothing found - sorry",
+			"info": "Showing page _PAGE_ of _PAGES_",
+			"infoEmpty": "No records available",
+			"infoFiltered": "(filtered from _MAX_ total records)"
+		}
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Language options</span></h1>
+
+			<div class="info">
+				<p>Changing the language information displayed by DataTables is as simple as passing in a <a href=
+				"//datatables.net/reference/option/language"><code class="option" title=
+				"DataTables initialisation option">language<span>DT</span></code></a> object to the DataTable
+				constructor.</p>
+
+				<p>The example above shows a different set of English string being used, rather than the defaults.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;language&quot;: {
+			&quot;lengthMenu&quot;: &quot;Display _MENU_ records per page&quot;,
+			&quot;zeroRecords&quot;: &quot;Nothing found - sorry&quot;,
+			&quot;info&quot;: &quot;Showing page _PAGE_ of _PAGES_&quot;,
+			&quot;infoEmpty&quot;: &quot;No records available&quot;,
+			&quot;infoFiltered&quot;: &quot;(filtered from _MAX_ total records)&quot;
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li class="active"><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/multi_col_sort.html b/public/admin/js/DataTables/examples/basic_init/multi_col_sort.html
new file mode 100644
index 0000000000000000000000000000000000000000..3a4a57234b0cdd6bce5da0d1e56c5c7277edf93e
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/multi_col_sort.html
@@ -0,0 +1,722 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Multi-column ordering</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		columnDefs: [ {
+			targets: [ 0 ],
+			orderData: [ 0, 1 ]
+		}, {
+			targets: [ 1 ],
+			orderData: [ 1, 0 ]
+		}, {
+			targets: [ 4 ],
+			orderData: [ 4, 0 ]
+		} ]
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Multi-column ordering</span></h1>
+
+			<div class="info">
+				<p>DataTables allows ordering by multiple columns at the same time, which can be activated in a number
+				of different ways:</p>
+
+				<ul class="markdown">
+					<li>User shift click on a column (added the clicked column as a secondary, tertiary etc ordering
+					column).</li>
+					<li>On a per-column basis (i.e. order by a specific column and then a secondary column if the data
+					in the first column is identical), through the <a href=
+					"//datatables.net/reference/option/columns.orderData"><code class="option" title=
+					"DataTables initialisation option">columns.orderData<span>DT</span></code></a> option.</li>
+					<li>Using the <a href="//datatables.net/reference/option/columns.orderData"><code class="option"
+					title="DataTables initialisation option">columns.orderData<span>DT</span></code></a> option to
+					specify a multiple column order by default (for example <code>[ [0,'asc'], [1,'asc']
+					]</code>).</li>
+					<li>Through the <a href="//datatables.net/reference/api/order()"><code class="api" title=
+					"DataTables API method">order()<span>DT</span></code></a> API method.</li>
+				</ul>
+
+				<p>Note that, the ability for the user to shift click to order multiple columns can be disabled through
+				the <a href="//datatables.net/reference/option/orderMulti"><code class="option" title=
+				"DataTables initialisation option">orderMulti<span>DT</span></code></a> option.</p>
+
+				<p>The example below shows the first column having a secondary order applied to the second column in
+				the table, vice-versa for the second column being tied directly to the first and the salary column to
+				the first name column.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		columnDefs: [ {
+			targets: [ 0 ],
+			orderData: [ 0, 1 ]
+		}, {
+			targets: [ 1 ],
+			orderData: [ 1, 0 ]
+		}, {
+			targets: [ 4 ],
+			orderData: [ 4, 0 ]
+		} ]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li class="active"><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/multiple_tables.html b/public/admin/js/DataTables/examples/basic_init/multiple_tables.html
new file mode 100644
index 0000000000000000000000000000000000000000..db8876a0d4f997cd11c9193599bf7c022392415c
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/multiple_tables.html
@@ -0,0 +1,475 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Multiple tables</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	div.dataTables_wrapper {
+		margin-bottom: 3em;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('table.display').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Multiple tables</span></h1>
+
+			<div class="info">
+				<p>Often you might wish to initialise multiple tables with a single statement. This is trivially done
+				by using a jQuery selector which will pick up multiple tables.</p>
+
+				<p>The tables are independent for user control (i.e. user controlled paging on one table does not
+				effect the others), but they do share the initialisation parameters given (for example if you specific
+				the Spanish language file, all tables will be shown in Spanish). Additionally, the API can be used to
+				manipulate both together, or independently.</p>
+
+				<p>The example below shows two tables initialised with a single line of code, through the use of the
+				<code>table.display</code> selector (i.e. select all elements which have the class of
+				<code>table.display</code> (which is suitable in this example, you might wish to use a different
+				selector).</p>
+			</div>
+
+			<table id="" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>$183,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<table id="" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>$103,500</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('table.display').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">div.dataTables_wrapper {
+		margin-bottom: 3em;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li class="active"><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/scroll_x.html b/public/admin/js/DataTables/examples/basic_init/scroll_x.html
new file mode 100644
index 0000000000000000000000000000000000000000..717ad0067dba9c1714478b16db956f41c5e44266
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/scroll_x.html
@@ -0,0 +1,931 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Scroll - horizontal</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"scrollX": true
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Scroll - horizontal</span></h1>
+
+			<div class="info">
+				<p>DataTables has the ability to show tables with horizontal scrolling, which is very useful for when
+				you have a wide table, but want to constrain it to a limited horizontal display area. To enable
+				x-scrolling simply set the <a href="//datatables.net/reference/option/scrollX"><code class="option"
+				title="DataTables initialisation option">scrollX<span>DT</span></code></a> parameter to be whatever you
+				want the container wrapper's width to be (this should be 100% in almost all cases with the width being
+				constrained by the container element).</p>
+
+				<p>The example below shows a table too wide for the containing element with x-scrolling enabled. The
+				CSS option of <code>th, td { white-space: nowrap; }</code> is also set to have the text content of each
+				row on a single line (otherwise the browser will line break the text to have it fit into the available
+				area).</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;scrollX&quot;: true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li class="active"><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/scroll_xy.html b/public/admin/js/DataTables/examples/basic_init/scroll_xy.html
new file mode 100644
index 0000000000000000000000000000000000000000..d2613c020edc5da17e6858f9c200866ba482daf9
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/scroll_xy.html
@@ -0,0 +1,924 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Scroll - horizontal and vertical</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"scrollY": 200,
+		"scrollX": true
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Scroll - horizontal and vertical</span></h1>
+
+			<div class="info">
+				<p>In this example you can see DataTables doing both horizontal and vertical scrolling at the same
+				time. Note also that pagination is enabled in this example, and the scrolling accounts for this.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;scrollY&quot;: 200,
+		&quot;scrollX&quot;: true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li class="active"><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/scroll_y.html b/public/admin/js/DataTables/examples/basic_init/scroll_y.html
new file mode 100644
index 0000000000000000000000000000000000000000..94ab4909b110f452b0edd6decf259ef6e74174a0
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/scroll_y.html
@@ -0,0 +1,768 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Scroll - vertical</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"scrollY":        "200px",
+		"scrollCollapse": true,
+		"paging":         false
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Scroll - vertical</span></h1>
+
+			<div class="info">
+				<p>This example shows the DataTables table body scrolling in the vertical direction. This can generally
+				be seen as an alternative method to pagination for displaying a large table in a fairly small vertical
+				area, and as such pagination has been disabled here (note that this is not mandatory, it will work just
+				fine with pagination enabled as well!).</p>
+
+				<p>To enable y-scrolling simply set the <a href=
+				"//datatables.net/reference/option/scrollY"><code class="option" title=
+				"DataTables initialisation option">scrollY<span>DT</span></code></a> parameter to be whatever you want
+				the container wrapper's height to be (any CSS measurement is acceptable, or just a number which is
+				treated as pixels).</p>
+
+				<p>Note also that the <a href="//datatables.net/reference/option/scrollCollapse"><code class="option"
+				title="DataTables initialisation option">scrollCollapse<span>DT</span></code></a> option is enabled in
+				this example. This will have the container match the height of the rows shown in the table if that
+				height is smaller than that given height by the <a href=
+				"//datatables.net/reference/option/scrollY"><code class="option" title=
+				"DataTables initialisation option">scrollY<span>DT</span></code></a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;scrollY&quot;:        &quot;200px&quot;,
+		&quot;scrollCollapse&quot;: true,
+		&quot;paging&quot;:         false
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li class="active"><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/scroll_y_theme.html b/public/admin/js/DataTables/examples/basic_init/scroll_y_theme.html
new file mode 100644
index 0000000000000000000000000000000000000000..ff74578ed2aba78070f0136fdb0a1baff7bdd71c
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/scroll_y_theme.html
@@ -0,0 +1,758 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Scroll - vertical with jQuery UI ThemeRoller</title>
+	<link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
+	<link rel="stylesheet" type="text/css" href=
+	"../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"scrollY":        200,
+		"scrollCollapse": true,
+		"jQueryUI":       true
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Scroll - vertical with jQuery UI ThemeRoller</span></h1>
+
+			<div class="info">
+				<p>This example is an extension of the vertical scrolling example, showing DataTables ability to be
+				themed by jQuery UI's ThemeRoller.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;scrollY&quot;:        200,
+		&quot;scrollCollapse&quot;: true,
+		&quot;jQueryUI&quot;:       true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css</a></li>
+						<li><a href=
+						"../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.css">../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li class="active"><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/state_save.html b/public/admin/js/DataTables/examples/basic_init/state_save.html
new file mode 100644
index 0000000000000000000000000000000000000000..76702aa0f36adf2748bde660421669bc7b99f411
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/state_save.html
@@ -0,0 +1,771 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - State saving</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		stateSave: true
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>State saving</span></h1>
+
+			<div class="info">
+				<p>DataTables has the option of being able to save the state of a table (its paging position, ordering
+				state etc) so that is can be restored when the user reloads a page, or comes back to the page after
+				visiting a sub-page. This state saving ability is enabled by the <a href=
+				"//datatables.net/reference/option/stateSave"><code class="option" title=
+				"DataTables initialisation option">stateSave<span>DT</span></code></a> option.</p>
+
+				<p>The built in state saving method uses the HTML5 <code>localStorage</code> and
+				<code>sessionStorage</code> APIs for efficient storage of the data. Please note that this means that
+				the built in state saving option <strong>will not work with IE6/7</strong> as these browsers do not
+				support these APIs. Alternative options of using cookies or saving the state on the server through Ajax
+				can be used through the <a href="//datatables.net/reference/option/stateSaveCallback"><code class=
+				"option" title="DataTables initialisation option">stateSaveCallback<span>DT</span></code></a> and
+				<a href="//datatables.net/reference/option/stateLoadCallback"><code class="option" title=
+				"DataTables initialisation option">stateLoadCallback<span>DT</span></code></a> options.</p>
+
+				<p>The duration for which the saved state is valid and can be used to restore the table state can be
+				set using the <a href="//datatables.net/reference/option/stateDuration"><code class="option" title=
+				"DataTables initialisation option">stateDuration<span>DT</span></code></a> initialisation parameter (2
+				hours by default). This parameter also controls if <code>localStorage</code> (0 or greater) or
+				<code>sessionStorage</code> (-1) is used to store the data.</p>
+
+				<p>The example below simply shows state saving enabled in DataTables with the <a href=
+				"//datatables.net/reference/option/stateSave"><code class="option" title=
+				"DataTables initialisation option">stateSave<span>DT</span></code></a> option.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		stateSave: true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li class="active"><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/table_sorting.html b/public/admin/js/DataTables/examples/basic_init/table_sorting.html
new file mode 100644
index 0000000000000000000000000000000000000000..d5626f4dd326bdc02f8458b9c0d13b726d55949a
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/table_sorting.html
@@ -0,0 +1,762 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Default ordering (sorting)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"order": [[ 3, "desc" ]]
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Default ordering (sorting)</span></h1>
+
+			<div class="info">
+				<p>With DataTables you can alter the ordering characteristics of the table at initialisation time.
+				Using the <a href="//datatables.net/reference/option/order"><code class="option" title=
+				"DataTables initialisation option">order<span>DT</span></code></a> initialisation parameter, you can
+				set the table to display the data in exactly the order that you want.</p>
+
+				<p>The <a href="//datatables.net/reference/option/order"><code class="option" title=
+				"DataTables initialisation option">order<span>DT</span></code></a> parameter is an array of arrays
+				where the first value of the inner array is the column to order on, and the second is <code class=
+				"string" title="String">'asc'</code> (ascending ordering) or <code class="string" title=
+				"String">'desc'</code> (descending ordering) as required. <a href=
+				"//datatables.net/reference/option/order"><code class="option" title=
+				"DataTables initialisation option">order<span>DT</span></code></a> is a 2D array to allow multi-column
+				ordering to be defined.</p>
+
+				<p>The table below is ordered (descending) by the Age column.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;order&quot;: [[ 3, &quot;desc&quot; ]]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li class="active"><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/basic_init/zero_configuration.html b/public/admin/js/DataTables/examples/basic_init/zero_configuration.html
new file mode 100644
index 0000000000000000000000000000000000000000..670fe8eb6b32e315da85d6d35a75c24fdcc56d95
--- /dev/null
+++ b/public/admin/js/DataTables/examples/basic_init/zero_configuration.html
@@ -0,0 +1,750 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Zero configuration</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Zero configuration</span></h1>
+
+			<div class="info">
+				<p>DataTables has most features enabled by default, so all you need to do to use it with your own
+				tables is to call the construction function.</p>
+
+				<p>Searching, ordering, paging etc goodness will be immediately added to the table, as shown in this
+				example.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./complex_header.html">Complex headers (rowspan and colspan)</a></li>
+							<li><a href="./dom.html">DOM positioning</a></li>
+							<li><a href="./flexible_width.html">Flexible table width</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./scroll_y_theme.html">Scroll - vertical with jQuery UI ThemeRoller</a></li>
+							<li><a href="./comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/data_sources/ajax.html b/public/admin/js/DataTables/examples/data_sources/ajax.html
new file mode 100644
index 0000000000000000000000000000000000000000..9dc368b8412496538072664fbed906491371db14
--- /dev/null
+++ b/public/admin/js/DataTables/examples/data_sources/ajax.html
@@ -0,0 +1,309 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Ajax sourced data</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"ajax": '../ajax/data/arrays.txt'
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Ajax sourced data</span></h1>
+
+			<div class="info">
+				<p>DataTables has the ability to read data from virtually any JSON data source that can be obtained by
+				Ajax. This can be done, in its most simple form, by setting the <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> option to the address of the JSON
+				data source.</p>
+
+				<p>The <a href="//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> option also allows for more advanced
+				configuration such as altering how the Ajax request is made. See the <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> documentation and the <a href=
+				"../ajax">other Ajax examples</a> for further information.</p>
+
+				<p>The example below shows DataTables loading data for a table from arrays as the data source (object
+				parameters can also be used through the <a href=
+				"//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> option ).</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;ajax&quot;: '../ajax/data/arrays.txt'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Data sources</a></h3>
+						<ul class="toc active">
+							<li><a href="./dom.html">HTML (DOM) sourced data</a></li>
+							<li class="active"><a href="./ajax.html">Ajax sourced data</a></li>
+							<li><a href="./js_array.html">Javascript sourced data</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/data_sources/dom.html b/public/admin/js/DataTables/examples/data_sources/dom.html
new file mode 100644
index 0000000000000000000000000000000000000000..93bbe66f515149ddd2c18151b46bd667bf919571
--- /dev/null
+++ b/public/admin/js/DataTables/examples/data_sources/dom.html
@@ -0,0 +1,754 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - HTML (DOM) sourced data</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>HTML (DOM) sourced data</span></h1>
+
+			<div class="info">
+				<p>The foundation for DataTables is progressive enhancement, so it is very adept at reading table
+				information directly from the DOM. This example shows how easy it is to add searching, ordering and
+				paging to your HTML table by simply running DataTables on it.</p>
+
+				<p>For further and more complex examples of using DataTables with DOM sourced data, please refer to the
+				<a href="../basic_init">basic initialisation</a> and <a href="../advanced_init">advanced</a>
+				examples.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Data sources</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="./ajax.html">Ajax sourced data</a></li>
+							<li><a href="./js_array.html">Javascript sourced data</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/data_sources/index.html b/public/admin/js/DataTables/examples/data_sources/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..4189bf8dfc61f94340d88e326f8e4db534c1262b
--- /dev/null
+++ b/public/admin/js/DataTables/examples/data_sources/index.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+
+	<title>DataTables examples - Data sources</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Data sources</span></h1>
+
+			<div class="info">
+				<p>DataTables can obtain data from four different fundamental sources:</p>
+
+				<ul class="markdown">
+					<li>HTML document (DOM)</li>
+					<li>Javascript (array / objects)</li>
+					<li>Ajax sourced data with client-side processing</li>
+					<li>Ajax sourced data with server-side processing</li>
+				</ul>
+
+				<p>Which of these options is used to populate the table with data depends upon how the table is
+				initialised. The examples in this section show these four different data source types.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="./dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="./ajax.html">Ajax sourced data</a></li>
+							<li><a href="./js_array.html">Javascript sourced data</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/data_sources/js_array.html b/public/admin/js/DataTables/examples/data_sources/js_array.html
new file mode 100644
index 0000000000000000000000000000000000000000..d95d06b9797630657a9fee340d4754db1cb5f66c
--- /dev/null
+++ b/public/admin/js/DataTables/examples/data_sources/js_array.html
@@ -0,0 +1,419 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Javascript sourced data</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+var dataSet = [
+	['Trident','Internet Explorer 4.0','Win 95+','4','X'],
+	['Trident','Internet Explorer 5.0','Win 95+','5','C'],
+	['Trident','Internet Explorer 5.5','Win 95+','5.5','A'],
+	['Trident','Internet Explorer 6','Win 98+','6','A'],
+	['Trident','Internet Explorer 7','Win XP SP2+','7','A'],
+	['Trident','AOL browser (AOL desktop)','Win XP','6','A'],
+	['Gecko','Firefox 1.0','Win 98+ / OSX.2+','1.7','A'],
+	['Gecko','Firefox 1.5','Win 98+ / OSX.2+','1.8','A'],
+	['Gecko','Firefox 2.0','Win 98+ / OSX.2+','1.8','A'],
+	['Gecko','Firefox 3.0','Win 2k+ / OSX.3+','1.9','A'],
+	['Gecko','Camino 1.0','OSX.2+','1.8','A'],
+	['Gecko','Camino 1.5','OSX.3+','1.8','A'],
+	['Gecko','Netscape 7.2','Win 95+ / Mac OS 8.6-9.2','1.7','A'],
+	['Gecko','Netscape Browser 8','Win 98SE+','1.7','A'],
+	['Gecko','Netscape Navigator 9','Win 98+ / OSX.2+','1.8','A'],
+	['Gecko','Mozilla 1.0','Win 95+ / OSX.1+',1,'A'],
+	['Gecko','Mozilla 1.1','Win 95+ / OSX.1+',1.1,'A'],
+	['Gecko','Mozilla 1.2','Win 95+ / OSX.1+',1.2,'A'],
+	['Gecko','Mozilla 1.3','Win 95+ / OSX.1+',1.3,'A'],
+	['Gecko','Mozilla 1.4','Win 95+ / OSX.1+',1.4,'A'],
+	['Gecko','Mozilla 1.5','Win 95+ / OSX.1+',1.5,'A'],
+	['Gecko','Mozilla 1.6','Win 95+ / OSX.1+',1.6,'A'],
+	['Gecko','Mozilla 1.7','Win 98+ / OSX.1+',1.7,'A'],
+	['Gecko','Mozilla 1.8','Win 98+ / OSX.1+',1.8,'A'],
+	['Gecko','Seamonkey 1.1','Win 98+ / OSX.2+','1.8','A'],
+	['Gecko','Epiphany 2.20','Gnome','1.8','A'],
+	['Webkit','Safari 1.2','OSX.3','125.5','A'],
+	['Webkit','Safari 1.3','OSX.3','312.8','A'],
+	['Webkit','Safari 2.0','OSX.4+','419.3','A'],
+	['Webkit','Safari 3.0','OSX.4+','522.1','A'],
+	['Webkit','OmniWeb 5.5','OSX.4+','420','A'],
+	['Webkit','iPod Touch / iPhone','iPod','420.1','A'],
+	['Webkit','S60','S60','413','A'],
+	['Presto','Opera 7.0','Win 95+ / OSX.1+','-','A'],
+	['Presto','Opera 7.5','Win 95+ / OSX.2+','-','A'],
+	['Presto','Opera 8.0','Win 95+ / OSX.2+','-','A'],
+	['Presto','Opera 8.5','Win 95+ / OSX.2+','-','A'],
+	['Presto','Opera 9.0','Win 95+ / OSX.3+','-','A'],
+	['Presto','Opera 9.2','Win 88+ / OSX.3+','-','A'],
+	['Presto','Opera 9.5','Win 88+ / OSX.3+','-','A'],
+	['Presto','Opera for Wii','Wii','-','A'],
+	['Presto','Nokia N800','N800','-','A'],
+	['Presto','Nintendo DS browser','Nintendo DS','8.5','C/A<sup>1</sup>'],
+	['KHTML','Konqureror 3.1','KDE 3.1','3.1','C'],
+	['KHTML','Konqureror 3.3','KDE 3.3','3.3','A'],
+	['KHTML','Konqureror 3.5','KDE 3.5','3.5','A'],
+	['Tasman','Internet Explorer 4.5','Mac OS 8-9','-','X'],
+	['Tasman','Internet Explorer 5.1','Mac OS 7.6-9','1','C'],
+	['Tasman','Internet Explorer 5.2','Mac OS 8-X','1','C'],
+	['Misc','NetFront 3.1','Embedded devices','-','C'],
+	['Misc','NetFront 3.4','Embedded devices','-','A'],
+	['Misc','Dillo 0.8','Embedded devices','-','X'],
+	['Misc','Links','Text only','-','X'],
+	['Misc','Lynx','Text only','-','X'],
+	['Misc','IE Mobile','Windows Mobile 6','-','C'],
+	['Misc','PSP browser','PSP','-','C'],
+	['Other browsers','All others','-','-','U']
+];
+
+$(document).ready(function() {
+	$('#demo').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>' );
+
+	$('#example').dataTable( {
+		"data": dataSet,
+		"columns": [
+			{ "title": "Engine" },
+			{ "title": "Browser" },
+			{ "title": "Platform" },
+			{ "title": "Version", "class": "center" },
+			{ "title": "Grade", "class": "center" }
+		]
+	} );	
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Javascript sourced data</span></h1>
+
+			<div class="info">
+				<p>At times you will wish to be able to create a table from dynamic information passed directly to
+				DataTables, rather than having it read from the document. This is achieved using the <a href=
+				"//datatables.net/reference/option/data"><code class="option" title=
+				"DataTables initialisation option">data<span>DT</span></code></a> option in the initialisation object,
+				passing in an array of data to be used (like all other DataTables handled data, this can be arrays or
+				objects using the <a href="//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> option).</p>
+
+				<p>A <code>&lt;table&gt;</code> must be available on the page for DataTables to use. This examples
+				shows the element being added by Javascript and then initialising the DataTable with a set of data from
+				a Javascript array.</p>
+			</div>
+
+			<div id="demo"></div>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">var dataSet = [
+	['Trident','Internet Explorer 4.0','Win 95+','4','X'],
+	['Trident','Internet Explorer 5.0','Win 95+','5','C'],
+	['Trident','Internet Explorer 5.5','Win 95+','5.5','A'],
+	['Trident','Internet Explorer 6','Win 98+','6','A'],
+	['Trident','Internet Explorer 7','Win XP SP2+','7','A'],
+	['Trident','AOL browser (AOL desktop)','Win XP','6','A'],
+	['Gecko','Firefox 1.0','Win 98+ / OSX.2+','1.7','A'],
+	['Gecko','Firefox 1.5','Win 98+ / OSX.2+','1.8','A'],
+	['Gecko','Firefox 2.0','Win 98+ / OSX.2+','1.8','A'],
+	['Gecko','Firefox 3.0','Win 2k+ / OSX.3+','1.9','A'],
+	['Gecko','Camino 1.0','OSX.2+','1.8','A'],
+	['Gecko','Camino 1.5','OSX.3+','1.8','A'],
+	['Gecko','Netscape 7.2','Win 95+ / Mac OS 8.6-9.2','1.7','A'],
+	['Gecko','Netscape Browser 8','Win 98SE+','1.7','A'],
+	['Gecko','Netscape Navigator 9','Win 98+ / OSX.2+','1.8','A'],
+	['Gecko','Mozilla 1.0','Win 95+ / OSX.1+',1,'A'],
+	['Gecko','Mozilla 1.1','Win 95+ / OSX.1+',1.1,'A'],
+	['Gecko','Mozilla 1.2','Win 95+ / OSX.1+',1.2,'A'],
+	['Gecko','Mozilla 1.3','Win 95+ / OSX.1+',1.3,'A'],
+	['Gecko','Mozilla 1.4','Win 95+ / OSX.1+',1.4,'A'],
+	['Gecko','Mozilla 1.5','Win 95+ / OSX.1+',1.5,'A'],
+	['Gecko','Mozilla 1.6','Win 95+ / OSX.1+',1.6,'A'],
+	['Gecko','Mozilla 1.7','Win 98+ / OSX.1+',1.7,'A'],
+	['Gecko','Mozilla 1.8','Win 98+ / OSX.1+',1.8,'A'],
+	['Gecko','Seamonkey 1.1','Win 98+ / OSX.2+','1.8','A'],
+	['Gecko','Epiphany 2.20','Gnome','1.8','A'],
+	['Webkit','Safari 1.2','OSX.3','125.5','A'],
+	['Webkit','Safari 1.3','OSX.3','312.8','A'],
+	['Webkit','Safari 2.0','OSX.4+','419.3','A'],
+	['Webkit','Safari 3.0','OSX.4+','522.1','A'],
+	['Webkit','OmniWeb 5.5','OSX.4+','420','A'],
+	['Webkit','iPod Touch / iPhone','iPod','420.1','A'],
+	['Webkit','S60','S60','413','A'],
+	['Presto','Opera 7.0','Win 95+ / OSX.1+','-','A'],
+	['Presto','Opera 7.5','Win 95+ / OSX.2+','-','A'],
+	['Presto','Opera 8.0','Win 95+ / OSX.2+','-','A'],
+	['Presto','Opera 8.5','Win 95+ / OSX.2+','-','A'],
+	['Presto','Opera 9.0','Win 95+ / OSX.3+','-','A'],
+	['Presto','Opera 9.2','Win 88+ / OSX.3+','-','A'],
+	['Presto','Opera 9.5','Win 88+ / OSX.3+','-','A'],
+	['Presto','Opera for Wii','Wii','-','A'],
+	['Presto','Nokia N800','N800','-','A'],
+	['Presto','Nintendo DS browser','Nintendo DS','8.5','C/A&lt;sup&gt;1&lt;/sup&gt;'],
+	['KHTML','Konqureror 3.1','KDE 3.1','3.1','C'],
+	['KHTML','Konqureror 3.3','KDE 3.3','3.3','A'],
+	['KHTML','Konqureror 3.5','KDE 3.5','3.5','A'],
+	['Tasman','Internet Explorer 4.5','Mac OS 8-9','-','X'],
+	['Tasman','Internet Explorer 5.1','Mac OS 7.6-9','1','C'],
+	['Tasman','Internet Explorer 5.2','Mac OS 8-X','1','C'],
+	['Misc','NetFront 3.1','Embedded devices','-','C'],
+	['Misc','NetFront 3.4','Embedded devices','-','A'],
+	['Misc','Dillo 0.8','Embedded devices','-','X'],
+	['Misc','Links','Text only','-','X'],
+	['Misc','Lynx','Text only','-','X'],
+	['Misc','IE Mobile','Windows Mobile 6','-','C'],
+	['Misc','PSP browser','PSP','-','C'],
+	['Other browsers','All others','-','-','U']
+];
+
+$(document).ready(function() {
+	$('#demo').html( '&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; border=&quot;0&quot; class=&quot;display&quot; id=&quot;example&quot;&gt;&lt;/table&gt;' );
+
+	$('#example').dataTable( {
+		&quot;data&quot;: dataSet,
+		&quot;columns&quot;: [
+			{ &quot;title&quot;: &quot;Engine&quot; },
+			{ &quot;title&quot;: &quot;Browser&quot; },
+			{ &quot;title&quot;: &quot;Platform&quot; },
+			{ &quot;title&quot;: &quot;Version&quot;, &quot;class&quot;: &quot;center&quot; },
+			{ &quot;title&quot;: &quot;Grade&quot;, &quot;class&quot;: &quot;center&quot; }
+		]
+	} );	
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Data sources</a></h3>
+						<ul class="toc active">
+							<li><a href="./dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="./ajax.html">Ajax sourced data</a></li>
+							<li class="active"><a href="./js_array.html">Javascript sourced data</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/data_sources/server_side.html b/public/admin/js/DataTables/examples/data_sources/server_side.html
new file mode 100644
index 0000000000000000000000000000000000000000..b4914f4a15905d443696ceca83c011b64308454c
--- /dev/null
+++ b/public/admin/js/DataTables/examples/data_sources/server_side.html
@@ -0,0 +1,310 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Server-side processing</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"processing": true,
+		"serverSide": true,
+		"ajax": "../server_side/scripts/server_processing.php"
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Server-side processing</span></h1>
+
+			<div class="info">
+				<p>There are many ways to get your data into DataTables, and if you are working with seriously large
+				databases, you might want to consider using the server-side options that DataTables provides. With
+				server-side processing enabled, all paging, searching, ordering actions that DataTables performs are
+				handed off to a server where an SQL engine (or similar) can perform these actions on the large data set
+				(after all, that's what the database engine is designed for!). As such, each draw of the table will
+				result in a new Ajax request being made to get the required data.</p>
+
+				<p>Server-side processing is enabled by setting the <a href=
+				"//datatables.net/reference/option/serverSide"><code class="option" title=
+				"DataTables initialisation option">serverSide<span>DT</span></code></a> option to <code>true</code> and
+				providing an Ajax data source through the <a href="//datatables.net/reference/option/ajax"><code class=
+				"option" title="DataTables initialisation option">ajax<span>DT</span></code></a> option.</p>
+
+				<p>This example shows a very simple table, matching the other examples, but in this instance using
+				server-side processing. For further and more complex examples of using server-side processing, please
+				refer to the <a href="../server_side">server-side processing</a> examples.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;processing&quot;: true,
+		&quot;serverSide&quot;: true,
+		&quot;ajax&quot;: &quot;../server_side/scripts/server_processing.php&quot;
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Data sources</a></h3>
+						<ul class="toc active">
+							<li><a href="./dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="./ajax.html">Ajax sourced data</a></li>
+							<li><a href="./js_array.html">Javascript sourced data</a></li>
+							<li class="active"><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/index.html b/public/admin/js/DataTables/examples/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..b55f01f3cb495f3cef73861021e67cd6b2ee16f4
--- /dev/null
+++ b/public/admin/js/DataTables/examples/index.html
@@ -0,0 +1,191 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="./resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="./resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="./resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="./resources/demo.js"></script>
+
+	<title>DataTables examples - Examples index</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Examples index</span></h1>
+
+			<div class="info">
+				<p>One of the best ways to learn how to do anything new (including software APIs!) is to get your hands
+				dirty as quickly as possible. These examples will show you how to perform tasks ranging from something
+				as simple as applying DataTables to an HTML table, right the way through to doing server-side
+				processing with pipelining and custom plug-in functions.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="./basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="./basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="./basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="./basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="./basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="./basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="./basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="./basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="./basic_init/state_save.html">State saving</a></li>
+							<li><a href="./basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="./basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="./basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="./basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="./basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="./basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="./basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="./advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="./advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="./advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="./advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="./advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="./advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="./advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="./advanced_init/language_file.html">Language file</a></li>
+							<li><a href="./advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="./advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="./advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="./advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="./advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="./advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="./styling/display.html">Base style</a></li>
+							<li><a href="./styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./styling/compact.html">Base style - compact</a></li>
+							<li><a href="./styling/hover.html">Base style - hover</a></li>
+							<li><a href="./styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="./styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="./styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="./styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="./styling/foundation.html">Foundation</a></li>
+							<li><a href="./styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="./data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="./data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="./data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="./data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="./api/add_row.html">Add rows</a></li>
+							<li><a href="./api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="./api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="./api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="./api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="./api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="./api/select_single_row.html">Row selection and deletion (single row)</a></li>
+							<li><a href="./api/form.html">Form inputs</a></li>
+							<li><a href="./api/counter_columns.html">Index column</a></li>
+							<li><a href="./api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="./api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="./api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="./api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="./ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="./ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="./ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="./ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="./ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="./ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="./ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="./ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="./ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="./server_side/simple.html">Server-side processing</a></li>
+							<li><a href="./server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="./server_side/post.html">POST data</a></li>
+							<li><a href="./server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="./server_side/object_data.html">Object data source</a></li>
+							<li><a href="./server_side/row_details.html">Row details</a></li>
+							<li><a href="./server_side/select_rows.html">Row selection</a></li>
+							<li><a href="./server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="./server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="./server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="./plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="./plug-ins/sorting_auto.html">Ordering plug-ins (with type detection)</a></li>
+							<li><a href="./plug-ins/sorting_manual.html">Ordering plug-ins (no type detection)</a></li>
+							<li><a href="./plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="./plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/plug-ins/api.html b/public/admin/js/DataTables/examples/plug-ins/api.html
new file mode 100644
index 0000000000000000000000000000000000000000..eb7c5f9c8460101774889335341d8a7cce03cb67
--- /dev/null
+++ b/public/admin/js/DataTables/examples/plug-ins/api.html
@@ -0,0 +1,803 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - API plug-in methods</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$.fn.dataTable.Api.register( 'column().data().sum()', function () {
+	return this.reduce( function (a, b) {
+		var x = parseFloat( a ) || 0;
+		var y = parseFloat( b ) || 0;
+		return x + y;
+	} );
+} );
+
+/* Init the table and fire off a call to get the hidden nodes. */
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+	
+	$('<button>Click to sum age in all rows</button>')
+		.prependTo( '#demo' )
+		.on( 'click', function () {
+			alert( 'Column sum is: '+ table.column( 3 ).data().sum() );
+		} );
+
+	$('<button>Click to sum age of visible rows</button>')
+		.prependTo( '#demo' )
+		.on( 'click', function () {
+			alert( 'Column sum is: '+ table.column( 3, {page:'current'} ).data().sum() );
+		} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>API plug-in methods</span></h1>
+
+			<div class="info">
+				<p>The DataTables API is designed to be fully extensible, with custom functions being very easy to add
+				using the <code>$.fn.dataTable.Api.register</code> function. This function takes two arguments; the
+				first being the name of the method to be added and its chaining hierarchy, and the second the function
+				itself.</p>
+
+				<p>This example shows how a <code>sum()</code> method can easily be added to the Api so you can get the
+				sum of a column in a single line: <code>table.column().data().sum()</code>. Due to the chaining of the
+				methods, this allows <code>sum()</code> to very easily give the sum for any selected column, and to
+				limit the sum to just the current page, filtered data or all pages. This is done using the options for
+				the <a href="//datatables.net/reference/api/column()"><code class="api" title=
+				"DataTables API method">column()<span>DT</span></code></a> method and the options for its
+				selectors.</p>
+
+				<p>For more information about API plug-ins; creating them and their requirements, please refer to the
+				plug-in development documentation.</p>
+			</div>
+			<div id="demo">
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$.fn.dataTable.Api.register( 'column().data().sum()', function () {
+	return this.reduce( function (a, b) {
+		var x = parseFloat( a ) || 0;
+		var y = parseFloat( b ) || 0;
+		return x + y;
+	} );
+} );
+
+/* Init the table and fire off a call to get the hidden nodes. */
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+	
+	$('&lt;button&gt;Click to sum age in all rows&lt;/button&gt;')
+		.prependTo( '#demo' )
+		.on( 'click', function () {
+			alert( 'Column sum is: '+ table.column( 3 ).data().sum() );
+		} );
+
+	$('&lt;button&gt;Click to sum age of visible rows&lt;/button&gt;')
+		.prependTo( '#demo' )
+		.on( 'click', function () {
+			alert( 'Column sum is: '+ table.column( 3, {page:'current'} ).data().sum() );
+		} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Plug-ins</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./api.html">API plug-in methods</a></li>
+							<li><a href="./sorting_auto.html">Ordering plug-ins (with type detection)</a></li>
+							<li><a href="./sorting_manual.html">Ordering plug-ins (no type detection)</a></li>
+							<li><a href="./range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="./dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/plug-ins/dom_sort.html b/public/admin/js/DataTables/examples/plug-ins/dom_sort.html
new file mode 100644
index 0000000000000000000000000000000000000000..7e14e76ac1461af920a5db82561e8fa1b24cab27
--- /dev/null
+++ b/public/admin/js/DataTables/examples/plug-ins/dom_sort.html
@@ -0,0 +1,1906 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Live DOM ordering</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+/* Create an array with the values of all the input boxes in a column */
+$.fn.dataTable.ext.order['dom-text'] = function  ( settings, col )
+{
+	return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+		return $('input', td).val();
+	} );
+}
+
+/* Create an array with the values of all the input boxes in a column, parsed as numbers */
+$.fn.dataTable.ext.order['dom-text-numeric'] = function  ( settings, col )
+{
+	return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+		return $('input', td).val() * 1;
+	} );
+}
+
+/* Create an array with the values of all the select options in a column */
+$.fn.dataTable.ext.order['dom-select'] = function  ( settings, col )
+{
+	return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+		return $('select', td).val();
+	} );
+}
+
+/* Create an array with the values of all the checkboxes in a column */
+$.fn.dataTable.ext.order['dom-checkbox'] = function  ( settings, col )
+{
+	return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+		return $('input', td).prop('checked') ? '1' : '0';
+	} );
+}
+
+/* Initialise the table with the required column ordering data types */
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"columns": [
+			null,
+			{ "orderDataType": "dom-text-numeric" },
+			{ "orderDataType": "dom-text" },
+			{ "orderDataType": "dom-select" }
+		]
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Live DOM ordering</span></h1>
+
+			<div class="info">
+				<p>This example shows how you can use information available in the DOM to order columns. Typically
+				DataTables will read information to be ordered during it's initialisation phase, and this will not be
+				updated based on user interaction, so ordering on columns which have, for example, form elements in
+				them, may not reflect the current value of the input. To overcome this problem, you must update the
+				data that DataTables will order on, just prior to the order. This method is much more efficient than
+				actually ordering using the DOM, since only one DOM query is needed for each cell to be ordered.</p>
+
+				<p>The example below shows the first two columns as normal text with ordering as you would expect. The
+				following columns all have a form input element of different kinds, and the information contained
+				within is what DataTables will perform the order on, based on the value at the time of the order.</p>
+
+				<p>This is a fairly simple example, but it you aren't constrained to just using form input elements,
+				you could use anything and customise your DOM queries to suit yourself. You could also update the
+				ordering live as a user in entered data into a form using an event handler calling <a href=
+				"//datatables.net/reference/api/order()"><code class="api" title=
+				"DataTables API method">order()<span>DT</span></code></a> or <a href=
+				"//datatables.net/reference/api/draw()"><code class="api" title=
+				"DataTables API method">draw()<span>DT</span></code></a> methods.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Age</th>
+						<th>Position</th>
+						<th>Office</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Age</th>
+						<th>Position</th>
+						<th>Office</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td><input type="text" id="row-1-age" name="row-1-age" value="61"></td>
+						<td><input type="text" id="row-1-position" name="row-1-position" value="System Architect"></td>
+						<td><select size="1" id="row-1-office" name="row-1-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td><input type="text" id="row-2-age" name="row-2-age" value="63"></td>
+						<td><input type="text" id="row-2-position" name="row-2-position" value="Accountant"></td>
+						<td><select size="1" id="row-2-office" name="row-2-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo" selected="selected">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td><input type="text" id="row-3-age" name="row-3-age" value="66"></td>
+						<td><input type="text" id="row-3-position" name="row-3-position" value=
+						"Junior Technical Author"></td>
+						<td><select size="1" id="row-3-office" name="row-3-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td><input type="text" id="row-4-age" name="row-4-age" value="22"></td>
+						<td><input type="text" id="row-4-position" name="row-4-position" value=
+						"Senior Javascript Developer"></td>
+						<td><select size="1" id="row-4-office" name="row-4-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td><input type="text" id="row-5-age" name="row-5-age" value="33"></td>
+						<td><input type="text" id="row-5-position" name="row-5-position" value="Accountant"></td>
+						<td><select size="1" id="row-5-office" name="row-5-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo" selected="selected">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td><input type="text" id="row-6-age" name="row-6-age" value="61"></td>
+						<td><input type="text" id="row-6-position" name="row-6-position" value=
+						"Integration Specialist"></td>
+						<td><select size="1" id="row-6-office" name="row-6-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td><input type="text" id="row-7-age" name="row-7-age" value="59"></td>
+						<td><input type="text" id="row-7-position" name="row-7-position" value="Sales Assistant"></td>
+						<td><select size="1" id="row-7-office" name="row-7-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td><input type="text" id="row-8-age" name="row-8-age" value="55"></td>
+						<td><input type="text" id="row-8-position" name="row-8-position" value=
+						"Integration Specialist"></td>
+						<td><select size="1" id="row-8-office" name="row-8-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo" selected="selected">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td><input type="text" id="row-9-age" name="row-9-age" value="39"></td>
+						<td><input type="text" id="row-9-position" name="row-9-position" value=
+						"Javascript Developer"></td>
+						<td><select size="1" id="row-9-office" name="row-9-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td><input type="text" id="row-10-age" name="row-10-age" value="23"></td>
+						<td><input type="text" id="row-10-position" name="row-10-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-10-office" name="row-10-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td><input type="text" id="row-11-age" name="row-11-age" value="30"></td>
+						<td><input type="text" id="row-11-position" name="row-11-position" value="Office Manager"></td>
+						<td><select size="1" id="row-11-office" name="row-11-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td><input type="text" id="row-12-age" name="row-12-age" value="22"></td>
+						<td><input type="text" id="row-12-position" name="row-12-position" value="Support Lead"></td>
+						<td><select size="1" id="row-12-office" name="row-12-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td><input type="text" id="row-13-age" name="row-13-age" value="36"></td>
+						<td><input type="text" id="row-13-position" name="row-13-position" value=
+						"Regional Director"></td>
+						<td><select size="1" id="row-13-office" name="row-13-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td><input type="text" id="row-14-age" name="row-14-age" value="43"></td>
+						<td><input type="text" id="row-14-position" name="row-14-position" value=
+						"Senior Marketing Designer"></td>
+						<td><select size="1" id="row-14-office" name="row-14-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td><input type="text" id="row-15-age" name="row-15-age" value="19"></td>
+						<td><input type="text" id="row-15-position" name="row-15-position" value=
+						"Regional Director"></td>
+						<td><select size="1" id="row-15-office" name="row-15-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td><input type="text" id="row-16-age" name="row-16-age" value="66"></td>
+						<td><input type="text" id="row-16-position" name="row-16-position" value=
+						"Marketing Designer"></td>
+						<td><select size="1" id="row-16-office" name="row-16-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td><input type="text" id="row-17-age" name="row-17-age" value="64"></td>
+						<td><input type="text" id="row-17-position" name="row-17-position" value=
+						"Chief Financial Officer (CFO)"></td>
+						<td><select size="1" id="row-17-office" name="row-17-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td><input type="text" id="row-18-age" name="row-18-age" value="59"></td>
+						<td><input type="text" id="row-18-position" name="row-18-position" value=
+						"Systems Administrator"></td>
+						<td><select size="1" id="row-18-office" name="row-18-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td><input type="text" id="row-19-age" name="row-19-age" value="41"></td>
+						<td><input type="text" id="row-19-position" name="row-19-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-19-office" name="row-19-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td><input type="text" id="row-20-age" name="row-20-age" value="35"></td>
+						<td><input type="text" id="row-20-position" name="row-20-position" value="Personnel Lead"></td>
+						<td><select size="1" id="row-20-office" name="row-20-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td><input type="text" id="row-21-age" name="row-21-age" value="30"></td>
+						<td><input type="text" id="row-21-position" name="row-21-position" value=
+						"Development Lead"></td>
+						<td><select size="1" id="row-21-office" name="row-21-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td><input type="text" id="row-22-age" name="row-22-age" value="40"></td>
+						<td><input type="text" id="row-22-position" name="row-22-position" value=
+						"Chief Marketing Officer (CMO)"></td>
+						<td><select size="1" id="row-22-office" name="row-22-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td><input type="text" id="row-23-age" name="row-23-age" value="21"></td>
+						<td><input type="text" id="row-23-position" name="row-23-position" value=
+						"Pre-Sales Support"></td>
+						<td><select size="1" id="row-23-office" name="row-23-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td><input type="text" id="row-24-age" name="row-24-age" value="23"></td>
+						<td><input type="text" id="row-24-position" name="row-24-position" value=
+						"Sales Assistant"></td>
+						<td><select size="1" id="row-24-office" name="row-24-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td><input type="text" id="row-25-age" name="row-25-age" value="47"></td>
+						<td><input type="text" id="row-25-position" name="row-25-position" value=
+						"Chief Executive Officer (CEO)"></td>
+						<td><select size="1" id="row-25-office" name="row-25-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td><input type="text" id="row-26-age" name="row-26-age" value="42"></td>
+						<td><input type="text" id="row-26-position" name="row-26-position" value="Developer"></td>
+						<td><select size="1" id="row-26-office" name="row-26-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td><input type="text" id="row-27-age" name="row-27-age" value="28"></td>
+						<td><input type="text" id="row-27-position" name="row-27-position" value=
+						"Regional Director"></td>
+						<td><select size="1" id="row-27-office" name="row-27-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td><input type="text" id="row-28-age" name="row-28-age" value="28"></td>
+						<td><input type="text" id="row-28-position" name="row-28-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-28-office" name="row-28-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td><input type="text" id="row-29-age" name="row-29-age" value="48"></td>
+						<td><input type="text" id="row-29-position" name="row-29-position" value=
+						"Chief Operating Officer (COO)"></td>
+						<td><select size="1" id="row-29-office" name="row-29-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td><input type="text" id="row-30-age" name="row-30-age" value="20"></td>
+						<td><input type="text" id="row-30-position" name="row-30-position" value=
+						"Regional Marketing"></td>
+						<td><select size="1" id="row-30-office" name="row-30-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo" selected="selected">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td><input type="text" id="row-31-age" name="row-31-age" value="37"></td>
+						<td><input type="text" id="row-31-position" name="row-31-position" value=
+						"Integration Specialist"></td>
+						<td><select size="1" id="row-31-office" name="row-31-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td><input type="text" id="row-32-age" name="row-32-age" value="53"></td>
+						<td><input type="text" id="row-32-position" name="row-32-position" value="Developer"></td>
+						<td><select size="1" id="row-32-office" name="row-32-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td><input type="text" id="row-33-age" name="row-33-age" value="27"></td>
+						<td><input type="text" id="row-33-position" name="row-33-position" value=
+						"Technical Author"></td>
+						<td><select size="1" id="row-33-office" name="row-33-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td><input type="text" id="row-34-age" name="row-34-age" value="22"></td>
+						<td><input type="text" id="row-34-position" name="row-34-position" value="Team Leader"></td>
+						<td><select size="1" id="row-34-office" name="row-34-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td><input type="text" id="row-35-age" name="row-35-age" value="46"></td>
+						<td><input type="text" id="row-35-position" name="row-35-position" value=
+						"Post-Sales support"></td>
+						<td><select size="1" id="row-35-office" name="row-35-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td><input type="text" id="row-36-age" name="row-36-age" value="47"></td>
+						<td><input type="text" id="row-36-position" name="row-36-position" value=
+						"Marketing Designer"></td>
+						<td><select size="1" id="row-36-office" name="row-36-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td><input type="text" id="row-37-age" name="row-37-age" value="51"></td>
+						<td><input type="text" id="row-37-position" name="row-37-position" value="Office Manager"></td>
+						<td><select size="1" id="row-37-office" name="row-37-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td><input type="text" id="row-38-age" name="row-38-age" value="41"></td>
+						<td><input type="text" id="row-38-position" name="row-38-position" value="Secretary"></td>
+						<td><select size="1" id="row-38-office" name="row-38-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td><input type="text" id="row-39-age" name="row-39-age" value="62"></td>
+						<td><input type="text" id="row-39-position" name="row-39-position" value=
+						"Financial Controller"></td>
+						<td><select size="1" id="row-39-office" name="row-39-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td><input type="text" id="row-40-age" name="row-40-age" value="37"></td>
+						<td><input type="text" id="row-40-position" name="row-40-position" value="Office Manager"></td>
+						<td><select size="1" id="row-40-office" name="row-40-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td><input type="text" id="row-41-age" name="row-41-age" value="65"></td>
+						<td><input type="text" id="row-41-position" name="row-41-position" value="Director"></td>
+						<td><select size="1" id="row-41-office" name="row-41-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td><input type="text" id="row-42-age" name="row-42-age" value="64"></td>
+						<td><input type="text" id="row-42-position" name="row-42-position" value=
+						"Support Engineer"></td>
+						<td><select size="1" id="row-42-office" name="row-42-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td><input type="text" id="row-43-age" name="row-43-age" value="38"></td>
+						<td><input type="text" id="row-43-position" name="row-43-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-43-office" name="row-43-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td><input type="text" id="row-44-age" name="row-44-age" value="37"></td>
+						<td><input type="text" id="row-44-position" name="row-44-position" value=
+						"Support Engineer"></td>
+						<td><select size="1" id="row-44-office" name="row-44-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo" selected="selected">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td><input type="text" id="row-45-age" name="row-45-age" value="61"></td>
+						<td><input type="text" id="row-45-position" name="row-45-position" value="Developer"></td>
+						<td><select size="1" id="row-45-office" name="row-45-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td><input type="text" id="row-46-age" name="row-46-age" value="47"></td>
+						<td><input type="text" id="row-46-position" name="row-46-position" value=
+						"Support Engineer"></td>
+						<td><select size="1" id="row-46-office" name="row-46-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td><input type="text" id="row-47-age" name="row-47-age" value="64"></td>
+						<td><input type="text" id="row-47-position" name="row-47-position" value=
+						"Data Coordinator"></td>
+						<td><select size="1" id="row-47-office" name="row-47-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td><input type="text" id="row-48-age" name="row-48-age" value="63"></td>
+						<td><input type="text" id="row-48-position" name="row-48-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-48-office" name="row-48-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td><input type="text" id="row-49-age" name="row-49-age" value="56"></td>
+						<td><input type="text" id="row-49-position" name="row-49-position" value=
+						"Software Engineer"></td>
+						<td><select size="1" id="row-49-office" name="row-49-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td><input type="text" id="row-50-age" name="row-50-age" value="43"></td>
+						<td><input type="text" id="row-50-position" name="row-50-position" value=
+						"Junior Javascript Developer"></td>
+						<td><select size="1" id="row-50-office" name="row-50-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td><input type="text" id="row-51-age" name="row-51-age" value="46"></td>
+						<td><input type="text" id="row-51-position" name="row-51-position" value=
+						"Sales Assistant"></td>
+						<td><select size="1" id="row-51-office" name="row-51-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td><input type="text" id="row-52-age" name="row-52-age" value="47"></td>
+						<td><input type="text" id="row-52-position" name="row-52-position" value=
+						"Regional Director"></td>
+						<td><select size="1" id="row-52-office" name="row-52-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td><input type="text" id="row-53-age" name="row-53-age" value="21"></td>
+						<td><input type="text" id="row-53-position" name="row-53-position" value=
+						"Systems Administrator"></td>
+						<td><select size="1" id="row-53-office" name="row-53-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London" selected="selected">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td><input type="text" id="row-54-age" name="row-54-age" value="30"></td>
+						<td><input type="text" id="row-54-position" name="row-54-position" value="Developer"></td>
+						<td><select size="1" id="row-54-office" name="row-54-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco" selected="selected">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td><input type="text" id="row-55-age" name="row-55-age" value="51"></td>
+						<td><input type="text" id="row-55-position" name="row-55-position" value=
+						"Regional Director"></td>
+						<td><select size="1" id="row-55-office" name="row-55-office">
+							<option value="Edinburgh" selected="selected">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td><input type="text" id="row-56-age" name="row-56-age" value="29"></td>
+						<td><input type="text" id="row-56-position" name="row-56-position" value=
+						"Javascript Developer"></td>
+						<td><select size="1" id="row-56-office" name="row-56-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td><input type="text" id="row-57-age" name="row-57-age" value="27"></td>
+						<td><input type="text" id="row-57-position" name="row-57-position" value=
+						"Customer Support"></td>
+						<td><select size="1" id="row-57-office" name="row-57-office">
+							<option value="Edinburgh">
+								Edinburgh
+							</option>
+
+							<option value="London">
+								London
+							</option>
+
+							<option value="New York" selected="selected">
+								New York
+							</option>
+
+							<option value="San Francisco">
+								San Francisco
+							</option>
+
+							<option value="Tokyo">
+								Tokyo
+							</option>
+						</select></td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">/* Create an array with the values of all the input boxes in a column */
+$.fn.dataTable.ext.order['dom-text'] = function  ( settings, col )
+{
+	return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+		return $('input', td).val();
+	} );
+}
+
+/* Create an array with the values of all the input boxes in a column, parsed as numbers */
+$.fn.dataTable.ext.order['dom-text-numeric'] = function  ( settings, col )
+{
+	return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+		return $('input', td).val() * 1;
+	} );
+}
+
+/* Create an array with the values of all the select options in a column */
+$.fn.dataTable.ext.order['dom-select'] = function  ( settings, col )
+{
+	return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+		return $('select', td).val();
+	} );
+}
+
+/* Create an array with the values of all the checkboxes in a column */
+$.fn.dataTable.ext.order['dom-checkbox'] = function  ( settings, col )
+{
+	return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+		return $('input', td).prop('checked') ? '1' : '0';
+	} );
+}
+
+/* Initialise the table with the required column ordering data types */
+$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;columns&quot;: [
+			null,
+			{ &quot;orderDataType&quot;: &quot;dom-text-numeric&quot; },
+			{ &quot;orderDataType&quot;: &quot;dom-text&quot; },
+			{ &quot;orderDataType&quot;: &quot;dom-select&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Plug-ins</a></h3>
+						<ul class="toc active">
+							<li><a href="./api.html">API plug-in methods</a></li>
+							<li><a href="./sorting_auto.html">Ordering plug-ins (with type detection)</a></li>
+							<li><a href="./sorting_manual.html">Ordering plug-ins (no type detection)</a></li>
+							<li><a href="./range_filtering.html">Custom filtering - range search</a></li>
+							<li class="active"><a href="./dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/plug-ins/index.html b/public/admin/js/DataTables/examples/plug-ins/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..6bb5ca011b41f12c275f4c7df685f9d4b9f8084f
--- /dev/null
+++ b/public/admin/js/DataTables/examples/plug-ins/index.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+
+	<title>DataTables examples - Plug-ins</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Plug-ins</span></h1>
+
+			<div class="info">
+				<p>While DataTables has a wide range of options and data type support built in, it can never cater for
+				every type of data out of the box. For this reason, DataTables exposes an extension API which allows
+				you, the developers using DataTables, to add support for your own data types, searching, ordering and
+				feature plug-ins.</p>
+
+				<p>The examples in this section show how plug-ins can be used and developed for DataTables.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="./api.html">API plug-in methods</a></li>
+							<li><a href="./sorting_auto.html">Ordering plug-ins (with type detection)</a></li>
+							<li><a href="./sorting_manual.html">Ordering plug-ins (no type detection)</a></li>
+							<li><a href="./range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="./dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/plug-ins/range_filtering.html b/public/admin/js/DataTables/examples/plug-ins/range_filtering.html
new file mode 100644
index 0000000000000000000000000000000000000000..c1c61441d18638218420db369d21cf0a88410e5f
--- /dev/null
+++ b/public/admin/js/DataTables/examples/plug-ins/range_filtering.html
@@ -0,0 +1,811 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Custom filtering - range search</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+/* Custom filtering function which will search data in column four between two values */
+$.fn.dataTable.ext.search.push(
+	function( settings, data, dataIndex ) {
+		var min = parseInt( $('#min').val(), 10 );
+		var max = parseInt( $('#max').val(), 10 );
+		var age = parseFloat( data[3] ) || 0; // use data for the age column
+
+		if ( ( isNaN( min ) && isNaN( max ) ) ||
+			 ( isNaN( min ) && age <= max ) ||
+			 ( min <= age   && isNaN( max ) ) ||
+			 ( min <= age   && age <= max ) )
+		{
+			return true;
+		}
+		return false;
+	}
+);
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+	
+	// Event listener to the two range filtering inputs to redraw on input
+	$('#min, #max').keyup( function() {
+		table.draw();
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Custom filtering - range search</span></h1>
+
+			<div class="info">
+				<p>There may be occasions when you wish to search data presented to the end user in your own manner,
+				common examples are number range search (in between two numbers) and date range search. DataTables
+				provide an API method to add your own search functions, <code>$.fn.dataTable.ext.search</code>. This is
+				an array of functions (push your own onto it) which will will be run at table draw time to see if a
+				particular row should be included or not.</p>
+
+				<p>This example shows a search being performed on the age column in the data, based upon two
+				inputs.</p>
+			</div>
+
+			<table border="0" cellspacing="5" cellpadding="5">
+				<tr>
+					<td>Minimum age:</td>
+					<td><input type="text" id="min" name="min"></td>
+				</tr>
+				<tr>
+					<td>Maximum age:</td>
+					<td><input type="text" id="max" name="max"></td>
+				</tr>
+			</table>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">/* Custom filtering function which will search data in column four between two values */
+$.fn.dataTable.ext.search.push(
+	function( settings, data, dataIndex ) {
+		var min = parseInt( $('#min').val(), 10 );
+		var max = parseInt( $('#max').val(), 10 );
+		var age = parseFloat( data[3] ) || 0; // use data for the age column
+
+		if ( ( isNaN( min ) &amp;&amp; isNaN( max ) ) ||
+			 ( isNaN( min ) &amp;&amp; age &lt;= max ) ||
+			 ( min &lt;= age   &amp;&amp; isNaN( max ) ) ||
+			 ( min &lt;= age   &amp;&amp; age &lt;= max ) )
+		{
+			return true;
+		}
+		return false;
+	}
+);
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+	
+	// Event listener to the two range filtering inputs to redraw on input
+	$('#min, #max').keyup( function() {
+		table.draw();
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Plug-ins</a></h3>
+						<ul class="toc active">
+							<li><a href="./api.html">API plug-in methods</a></li>
+							<li><a href="./sorting_auto.html">Ordering plug-ins (with type detection)</a></li>
+							<li><a href="./sorting_manual.html">Ordering plug-ins (no type detection)</a></li>
+							<li class="active"><a href="./range_filtering.html">Custom filtering - range
+							search</a></li>
+							<li><a href="./dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/plug-ins/sorting_auto.html b/public/admin/js/DataTables/examples/plug-ins/sorting_auto.html
new file mode 100644
index 0000000000000000000000000000000000000000..22b6db036f6eecdee907a104331c97e4684fa176
--- /dev/null
+++ b/public/admin/js/DataTables/examples/plug-ins/sorting_auto.html
@@ -0,0 +1,796 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Ordering plug-ins (with type detection)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$.fn.dataTable.ext.type.detect.unshift(
+	function ( d ) {
+		return d === 'Low' || d === 'Medium' || d === 'High' ?
+			'salary-grade' :
+			null;
+	}
+);
+
+$.fn.dataTable.ext.type.order['salary-grade-pre'] = function ( d ) {
+	switch ( d ) {
+		case 'Low':    return 1;
+		case 'Medium': return 2;
+		case 'High':   return 3;
+	}
+	return 0;
+};
+
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Ordering plug-ins (with type detection)</span></h1>
+
+			<div class="info">
+				<p>Although DataTables will automatically order data from a number of different data types using the
+				built in methods, When dealing with more complex formatted data, it can be desirable to define the
+				ordering order yourself. Using plug-in ordering functions, you have have DataTables sort data in any
+				manner you wish.</p>
+
+				<p>Formatted data of a particular kind can be automatically detected and a suitable ordering plug-in
+				assigned to it by making use of DataTables' plug-in type detection abilities. For complete information
+				about type detection and ordering plug-ins; creating them and their requirements, please refer to the
+				plug-in development documentation.</p>
+
+				<p>This example shows ordering with using an enumerated type.</p>
+
+				<p>A wide variety of ready made ordering plug-ins can be found on <a href=
+				"//datatables.net/plug-ins/sorting">the DataTables plug-ins page</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>High</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>High</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>High</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>High</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>Low</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$.fn.dataTable.ext.type.detect.unshift(
+	function ( d ) {
+		return d === 'Low' || d === 'Medium' || d === 'High' ?
+			'salary-grade' :
+			null;
+	}
+);
+
+$.fn.dataTable.ext.type.order['salary-grade-pre'] = function ( d ) {
+	switch ( d ) {
+		case 'Low':    return 1;
+		case 'Medium': return 2;
+		case 'High':   return 3;
+	}
+	return 0;
+};
+
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Plug-ins</a></h3>
+						<ul class="toc active">
+							<li><a href="./api.html">API plug-in methods</a></li>
+							<li class="active"><a href="./sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="./sorting_manual.html">Ordering plug-ins (no type detection)</a></li>
+							<li><a href="./range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="./dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/plug-ins/sorting_manual.html b/public/admin/js/DataTables/examples/plug-ins/sorting_manual.html
new file mode 100644
index 0000000000000000000000000000000000000000..a97d36be1ea100d063fbc849dbf7f01d9a7c6742
--- /dev/null
+++ b/public/admin/js/DataTables/examples/plug-ins/sorting_manual.html
@@ -0,0 +1,789 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Ordering plug-ins (no type detection)</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$.fn.dataTable.ext.type.order['salary-grade-pre'] = function ( d ) {
+	switch ( d ) {
+		case 'Low':    return 1;
+		case 'Medium': return 2;
+		case 'High':   return 3;
+	}
+	return 0;
+};
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"columnDefs": [ {
+			"type": "salary-grade",
+			"targets": -1
+		} ]
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Ordering plug-ins (no type detection)</span></h1>
+
+			<div class="info">
+				<p>Although DataTables will order a number of data types using the built in methods, When dealing with
+				more complex formatted data, it can be desirable to define the ordering order yourself. Using plug-in
+				ordering functions, you have have DataTables order data in any manner you wish.</p>
+
+				<p>This is done by using the <a href="//datatables.net/reference/option/columns.type"><code class=
+				"option" title="DataTables initialisation option">columns.type<span>DT</span></code></a> parameter, in
+				combination with a ordering plug-in. The ordering plug-in can be be of any level of complexity (natural
+				ordering for example can be fairly complex while also very powerful), and is defined by attaching to
+				the <code>$.fn.dataTable.ext.type.order</code> object. For more information about ordering plug-ins;
+				creating them and their requirements, please refer to the plug-in development documentation.</p>
+
+				<p>This example shows ordering with using an enumerated type.</p>
+
+				<p>A wide variety of ready made ordering plug-ins can be found on <a href=
+				"//datatables.net/plug-ins/sorting">the DataTables plug-ins page</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>High</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>High</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>High</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>High</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>Medium</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>Low</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>Low</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$.fn.dataTable.ext.type.order['salary-grade-pre'] = function ( d ) {
+	switch ( d ) {
+		case 'Low':    return 1;
+		case 'Medium': return 2;
+		case 'High':   return 3;
+	}
+	return 0;
+};
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;columnDefs&quot;: [ {
+			&quot;type&quot;: &quot;salary-grade&quot;,
+			&quot;targets&quot;: -1
+		} ]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Plug-ins</a></h3>
+						<ul class="toc active">
+							<li><a href="./api.html">API plug-in methods</a></li>
+							<li><a href="./sorting_auto.html">Ordering plug-ins (with type detection)</a></li>
+							<li class="active"><a href="./sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="./range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="./dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/resources/bootstrap/3/dataTables.bootstrap.css b/public/admin/js/DataTables/examples/resources/bootstrap/3/dataTables.bootstrap.css
new file mode 100644
index 0000000000000000000000000000000000000000..416f17e3545cd4796ce2b100b90ff9272b5ba14b
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/bootstrap/3/dataTables.bootstrap.css
@@ -0,0 +1,204 @@
+
+div.dataTables_length label {
+	font-weight: normal;
+	float: left;
+	text-align: left;
+}
+
+div.dataTables_length select {
+	width: 75px;
+}
+
+div.dataTables_filter label {
+	font-weight: normal;
+	float: right;
+}
+
+div.dataTables_filter input {
+	width: 16em;
+}
+
+div.dataTables_info {
+	padding-top: 8px;
+}
+
+div.dataTables_paginate {
+	float: right;
+	margin: 0;
+}
+
+div.dataTables_paginate ul.pagination {
+	margin: 2px;
+}
+
+table.table {
+	clear: both;
+	margin-top: 6px !important;
+	margin-bottom: 6px !important;
+	max-width: none !important;
+}
+
+table.table thead .sorting,
+table.table thead .sorting_asc,
+table.table thead .sorting_desc,
+table.table thead .sorting_asc_disabled,
+table.table thead .sorting_desc_disabled {
+	cursor: pointer;
+}
+
+table.table thead .sorting { background: url('../images/sort_both.png') no-repeat center right; }
+table.table thead .sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; }
+table.table thead .sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; }
+
+table.table thead .sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; }
+table.table thead .sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; }
+
+table.dataTable th:active {
+	outline: none;
+}
+
+/* Scrolling */
+div.dataTables_scrollHead table {
+	margin-bottom: 0 !important;
+	border-bottom-left-radius: 0;
+	border-bottom-right-radius: 0;
+}
+
+div.dataTables_scrollHead table thead tr:last-child th:first-child,
+div.dataTables_scrollHead table thead tr:last-child td:first-child {
+	border-bottom-left-radius: 0 !important;
+	border-bottom-right-radius: 0 !important;
+}
+
+div.dataTables_scrollBody table {
+	border-top: none;
+	margin-bottom: 0 !important;
+}
+
+div.dataTables_scrollBody tbody tr:first-child th,
+div.dataTables_scrollBody tbody tr:first-child td {
+	border-top: none;
+}
+
+div.dataTables_scrollFoot table {
+	border-top: none;
+}
+
+
+
+
+/*
+ * TableTools styles
+ */
+.table tbody tr.active td,
+.table tbody tr.active th {
+	background-color: #08C;
+	color: white;
+}
+
+.table tbody tr.active:hover td,
+.table tbody tr.active:hover th {
+	background-color: #0075b0 !important;
+}
+
+.table-striped tbody tr.active:nth-child(odd) td,
+.table-striped tbody tr.active:nth-child(odd) th {
+	background-color: #017ebc;
+}
+
+table.DTTT_selectable tbody tr {
+	cursor: pointer;
+}
+
+div.DTTT .btn {
+	color: #333 !important;
+	font-size: 12px;
+}
+
+div.DTTT .btn:hover {
+	text-decoration: none !important;
+}
+
+ul.DTTT_dropdown.dropdown-menu {
+  z-index: 2003;
+}
+
+ul.DTTT_dropdown.dropdown-menu a {
+	color: #333 !important; /* needed only when demo_page.css is included */
+}
+
+ul.DTTT_dropdown.dropdown-menu li {
+	position: relative;
+}
+
+ul.DTTT_dropdown.dropdown-menu li:hover a {
+	background-color: #0088cc;
+	color: white !important;
+}
+
+/* TableTools information display */
+div.DTTT_print_info.modal {
+	height: 150px;
+	margin-top: -75px;
+	text-align: center;
+}
+
+div.DTTT_print_info h6 {
+	font-weight: normal;
+	font-size: 28px;
+	line-height: 28px;
+	margin: 1em;
+}
+
+div.DTTT_print_info p {
+	font-size: 14px;
+	line-height: 20px;
+}
+
+
+
+/*
+ * FixedColumns styles
+ */
+div.DTFC_LeftHeadWrapper table,
+div.DTFC_LeftFootWrapper table,
+div.DTFC_RightHeadWrapper table,
+div.DTFC_RightFootWrapper table,
+table.DTFC_Cloned tr.even {
+    background-color: white;
+}
+ 
+div.DTFC_RightHeadWrapper table ,
+div.DTFC_LeftHeadWrapper table {
+    margin-bottom: 0 !important;
+    border-top-right-radius: 0 !important;
+    border-bottom-left-radius: 0 !important;
+    border-bottom-right-radius: 0 !important;
+}
+ 
+div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child,
+div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child,
+div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,
+div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {
+    border-bottom-left-radius: 0 !important;
+    border-bottom-right-radius: 0 !important;
+}
+ 
+div.DTFC_RightBodyWrapper table,
+div.DTFC_LeftBodyWrapper table {
+    border-top: none;
+    margin-bottom: 0 !important;
+}
+ 
+div.DTFC_RightBodyWrapper tbody tr:first-child th,
+div.DTFC_RightBodyWrapper tbody tr:first-child td,
+div.DTFC_LeftBodyWrapper tbody tr:first-child th,
+div.DTFC_LeftBodyWrapper tbody tr:first-child td {
+    border-top: none;
+}
+ 
+div.DTFC_RightFootWrapper table,
+div.DTFC_LeftFootWrapper table {
+    border-top: none;
+}
+
diff --git a/public/admin/js/DataTables/examples/resources/bootstrap/3/dataTables.bootstrap.js b/public/admin/js/DataTables/examples/resources/bootstrap/3/dataTables.bootstrap.js
new file mode 100644
index 0000000000000000000000000000000000000000..5037d7d59f968afee91746b2e847d895d66f6355
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/bootstrap/3/dataTables.bootstrap.js
@@ -0,0 +1,152 @@
+/* Set the defaults for DataTables initialisation */
+$.extend( true, $.fn.dataTable.defaults, {
+	"sDom": "<'row'<'col-xs-6'l><'col-xs-6'f>r>t<'row'<'col-xs-6'i><'col-xs-6'p>>",
+	"sPaginationType": "bootstrap",
+	"oLanguage": {
+		"sLengthMenu": "_MENU_ records per page"
+	}
+} );
+
+
+
+
+/* Default class modification */
+$.extend( $.fn.dataTableExt.oStdClasses, {
+	"sWrapper": "dataTables_wrapper form-inline",
+	"sFilterInput": "form-control input-sm",
+	"sLengthSelect": "form-control input-sm"
+} );
+
+
+/* API method to get paging information */
+$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )
+{
+	return {
+		"iStart":         oSettings._iDisplayStart,
+		"iEnd":           oSettings.fnDisplayEnd(),
+		"iLength":        oSettings._iDisplayLength,
+		"iTotal":         oSettings.fnRecordsTotal(),
+		"iFilteredTotal": oSettings.fnRecordsDisplay(),
+		"iPage":          oSettings._iDisplayLength === -1 ?
+			0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
+		"iTotalPages":    oSettings._iDisplayLength === -1 ?
+			0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
+	};
+};
+
+
+/* Bootstrap style pagination control */
+$.extend( $.fn.dataTableExt.oPagination, {
+	"bootstrap": {
+		"fnInit": function( oSettings, nPaging, fnDraw ) {
+			var oLang = oSettings.oLanguage.oPaginate;
+			var fnClickHandler = function ( e ) {
+				e.preventDefault();
+				if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
+					fnDraw( oSettings );
+				}
+			};
+
+			$(nPaging).append(
+				'<ul class="pagination">'+
+					'<li class="prev disabled"><a href="#">&larr; '+oLang.sPrevious+'</a></li>'+
+					'<li class="next disabled"><a href="#">'+oLang.sNext+' &rarr; </a></li>'+
+				'</ul>'
+			);
+			var els = $('a', nPaging);
+			$(els[0]).bind( 'click.DT', { action: "previous" }, fnClickHandler );
+			$(els[1]).bind( 'click.DT', { action: "next" }, fnClickHandler );
+		},
+
+		"fnUpdate": function ( oSettings, fnDraw ) {
+			var iListLength = 5;
+			var oPaging = oSettings.oInstance.fnPagingInfo();
+			var an = oSettings.aanFeatures.p;
+			var i, ien, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);
+
+			if ( oPaging.iTotalPages < iListLength) {
+				iStart = 1;
+				iEnd = oPaging.iTotalPages;
+			}
+			else if ( oPaging.iPage <= iHalf ) {
+				iStart = 1;
+				iEnd = iListLength;
+			} else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {
+				iStart = oPaging.iTotalPages - iListLength + 1;
+				iEnd = oPaging.iTotalPages;
+			} else {
+				iStart = oPaging.iPage - iHalf + 1;
+				iEnd = iStart + iListLength - 1;
+			}
+
+			for ( i=0, ien=an.length ; i<ien ; i++ ) {
+				// Remove the middle elements
+				$('li:gt(0)', an[i]).filter(':not(:last)').remove();
+
+				// Add the new list items and their event handlers
+				for ( j=iStart ; j<=iEnd ; j++ ) {
+					sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';
+					$('<li '+sClass+'><a href="#">'+j+'</a></li>')
+						.insertBefore( $('li:last', an[i])[0] )
+						.bind('click', function (e) {
+							e.preventDefault();
+							oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
+							fnDraw( oSettings );
+						} );
+				}
+
+				// Add / remove disabled classes from the static elements
+				if ( oPaging.iPage === 0 ) {
+					$('li:first', an[i]).addClass('disabled');
+				} else {
+					$('li:first', an[i]).removeClass('disabled');
+				}
+
+				if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
+					$('li:last', an[i]).addClass('disabled');
+				} else {
+					$('li:last', an[i]).removeClass('disabled');
+				}
+			}
+		}
+	}
+} );
+
+
+/*
+ * TableTools Bootstrap compatibility
+ * Required TableTools 2.1+
+ */
+if ( $.fn.DataTable.TableTools ) {
+	// Set the classes that TableTools uses to something suitable for Bootstrap
+	$.extend( true, $.fn.DataTable.TableTools.classes, {
+		"container": "DTTT btn-group",
+		"buttons": {
+			"normal": "btn btn-default",
+			"disabled": "disabled"
+		},
+		"collection": {
+			"container": "DTTT_dropdown dropdown-menu",
+			"buttons": {
+				"normal": "",
+				"disabled": "disabled"
+			}
+		},
+		"print": {
+			"info": "DTTT_print_info modal"
+		},
+		"select": {
+			"row": "active"
+		}
+	} );
+
+	// Have the collection use a bootstrap compatible dropdown
+	$.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {
+		"collection": {
+			"container": "ul",
+			"button": "li",
+			"liner": "a"
+		}
+	} );
+}
+
diff --git a/public/admin/js/DataTables/examples/resources/bootstrap/3/index.html b/public/admin/js/DataTables/examples/resources/bootstrap/3/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..b4c7b182f9a2927b18df81e2d59ef8bd38f3e548
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/bootstrap/3/index.html
@@ -0,0 +1,442 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		
+		<title>DataTables Bootstrap 2 example</title>
+
+		<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc2/css/bootstrap.min.css">
+		<link rel="stylesheet" type="text/css" href="dataTables.bootstrap.css">
+
+		<script type="text/javascript" language="javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js"></script>
+		<script type="text/javascript" language="javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.min.js"></script>
+		<script type="text/javascript" language="javascript" src="dataTables.bootstrap.js"></script>
+		<script type="text/javascript" charset="utf-8">
+			$(document).ready(function() {
+				$('#example').dataTable();
+			} );
+		</script>
+	</head>
+	<body>
+		<div class="container">
+			
+<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered" id="example">
+	<thead>
+		<tr>
+			<th>Rendering engine</th>
+			<th>Browser</th>
+			<th>Platform(s)</th>
+			<th>Engine version</th>
+			<th>CSS grade</th>
+		</tr>
+	</thead>
+	<tbody>
+		<tr class="odd gradeX">
+			<td>Trident</td>
+			<td>Internet
+				 Explorer 4.0</td>
+			<td>Win 95+</td>
+			<td class="center"> 4</td>
+			<td class="center">X</td>
+		</tr>
+		<tr class="even gradeC">
+			<td>Trident</td>
+			<td>Internet
+				 Explorer 5.0</td>
+			<td>Win 95+</td>
+			<td class="center">5</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="odd gradeA">
+			<td>Trident</td>
+			<td>Internet
+				 Explorer 5.5</td>
+			<td>Win 95+</td>
+			<td class="center">5.5</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="even gradeA">
+			<td>Trident</td>
+			<td>Internet
+				 Explorer 6</td>
+			<td>Win 98+</td>
+			<td class="center">6</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="odd gradeA">
+			<td>Trident</td>
+			<td>Internet Explorer 7</td>
+			<td>Win XP SP2+</td>
+			<td class="center">7</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="even gradeA">
+			<td>Trident</td>
+			<td>AOL browser (AOL desktop)</td>
+			<td>Win XP</td>
+			<td class="center">6</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Firefox 1.0</td>
+			<td>Win 98+ / OSX.2+</td>
+			<td class="center">1.7</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Firefox 1.5</td>
+			<td>Win 98+ / OSX.2+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Firefox 2.0</td>
+			<td>Win 98+ / OSX.2+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Firefox 3.0</td>
+			<td>Win 2k+ / OSX.3+</td>
+			<td class="center">1.9</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Camino 1.0</td>
+			<td>OSX.2+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Camino 1.5</td>
+			<td>OSX.3+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Netscape 7.2</td>
+			<td>Win 95+ / Mac OS 8.6-9.2</td>
+			<td class="center">1.7</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Netscape Browser 8</td>
+			<td>Win 98SE+</td>
+			<td class="center">1.7</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Netscape Navigator 9</td>
+			<td>Win 98+ / OSX.2+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.0</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.1</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.1</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.2</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.2</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.3</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.3</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.4</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.4</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.5</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.5</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.6</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.6</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.7</td>
+			<td>Win 98+ / OSX.1+</td>
+			<td class="center">1.7</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.8</td>
+			<td>Win 98+ / OSX.1+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Seamonkey 1.1</td>
+			<td>Win 98+ / OSX.2+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Epiphany 2.20</td>
+			<td>Gnome</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>Safari 1.2</td>
+			<td>OSX.3</td>
+			<td class="center">125.5</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>Safari 1.3</td>
+			<td>OSX.3</td>
+			<td class="center">312.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>Safari 2.0</td>
+			<td>OSX.4+</td>
+			<td class="center">419.3</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>Safari 3.0</td>
+			<td>OSX.4+</td>
+			<td class="center">522.1</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>OmniWeb 5.5</td>
+			<td>OSX.4+</td>
+			<td class="center">420</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>iPod Touch / iPhone</td>
+			<td>iPod</td>
+			<td class="center">420.1</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>S60</td>
+			<td>S60</td>
+			<td class="center">413</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 7.0</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 7.5</td>
+			<td>Win 95+ / OSX.2+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 8.0</td>
+			<td>Win 95+ / OSX.2+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 8.5</td>
+			<td>Win 95+ / OSX.2+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 9.0</td>
+			<td>Win 95+ / OSX.3+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 9.2</td>
+			<td>Win 88+ / OSX.3+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 9.5</td>
+			<td>Win 88+ / OSX.3+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera for Wii</td>
+			<td>Wii</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Nokia N800</td>
+			<td>N800</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Nintendo DS browser</td>
+			<td>Nintendo DS</td>
+			<td class="center">8.5</td>
+			<td class="center">C/A<sup>1</sup></td>
+		</tr>
+		<tr class="gradeC">
+			<td>KHTML</td>
+			<td>Konqureror 3.1</td>
+			<td>KDE 3.1</td>
+			<td class="center">3.1</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeA">
+			<td>KHTML</td>
+			<td>Konqureror 3.3</td>
+			<td>KDE 3.3</td>
+			<td class="center">3.3</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>KHTML</td>
+			<td>Konqureror 3.5</td>
+			<td>KDE 3.5</td>
+			<td class="center">3.5</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeX">
+			<td>Tasman</td>
+			<td>Internet Explorer 4.5</td>
+			<td>Mac OS 8-9</td>
+			<td class="center">-</td>
+			<td class="center">X</td>
+		</tr>
+		<tr class="gradeC">
+			<td>Tasman</td>
+			<td>Internet Explorer 5.1</td>
+			<td>Mac OS 7.6-9</td>
+			<td class="center">1</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeC">
+			<td>Tasman</td>
+			<td>Internet Explorer 5.2</td>
+			<td>Mac OS 8-X</td>
+			<td class="center">1</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Misc</td>
+			<td>NetFront 3.1</td>
+			<td>Embedded devices</td>
+			<td class="center">-</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Misc</td>
+			<td>NetFront 3.4</td>
+			<td>Embedded devices</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeX">
+			<td>Misc</td>
+			<td>Dillo 0.8</td>
+			<td>Embedded devices</td>
+			<td class="center">-</td>
+			<td class="center">X</td>
+		</tr>
+		<tr class="gradeX">
+			<td>Misc</td>
+			<td>Links</td>
+			<td>Text only</td>
+			<td class="center">-</td>
+			<td class="center">X</td>
+		</tr>
+		<tr class="gradeX">
+			<td>Misc</td>
+			<td>Lynx</td>
+			<td>Text only</td>
+			<td class="center">-</td>
+			<td class="center">X</td>
+		</tr>
+		<tr class="gradeC">
+			<td>Misc</td>
+			<td>IE Mobile</td>
+			<td>Windows Mobile 6</td>
+			<td class="center">-</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeC">
+			<td>Misc</td>
+			<td>PSP browser</td>
+			<td>PSP</td>
+			<td class="center">-</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeU">
+			<td>Other browsers</td>
+			<td>All others</td>
+			<td>-</td>
+			<td class="center">-</td>
+			<td class="center">U</td>
+		</tr>
+	</tbody>
+</table>
+			
+		</div>
+	</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_asc.png b/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_asc.png
new file mode 100644
index 0000000000000000000000000000000000000000..a88d7975fe9017e4e5f2289a94bd1ed66a5f59dc
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_asc.png differ
diff --git a/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_asc_disabled.png b/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_asc_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e144cf0b1f786a9248a2998311e8109998d8a2d
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_asc_disabled.png differ
diff --git a/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_both.png b/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_both.png
new file mode 100644
index 0000000000000000000000000000000000000000..18670406bc01ab2721781822dd6478917745ff54
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_both.png differ
diff --git a/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_desc.png b/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_desc.png
new file mode 100644
index 0000000000000000000000000000000000000000..def071ed5afd264a036f6d9e75856366fd6ad153
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_desc.png differ
diff --git a/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_desc_disabled.png b/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_desc_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..7824973cc60fc1841b16f2cb39323cefcdc3f942
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/bootstrap/images/sort_desc_disabled.png differ
diff --git a/public/admin/js/DataTables/examples/resources/de_DE.txt b/public/admin/js/DataTables/examples/resources/de_DE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..74db039cc9c60deafff8207d9bede1953ae37a20
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/de_DE.txt
@@ -0,0 +1,17 @@
+{
+	"processing": "Bitte warten...",
+	"lengthMenu": "_MENU_ Einträge anzeigen",
+	"zeroRecords": "Keine Einträge vorhanden.",
+	"info": "_START_ bis _END_ von _TOTAL_ Einträgen",
+	"infoEmpty": "0 bis 0 von 0 Einträgen",
+	"infoFiltered": "(gefiltert von _MAX_  Einträgen)",
+	"infoPostFix": "",
+	"search": "Suchen",
+	"url": "",
+	"paginate": {
+		"first":    "Erster",
+		"previous": "Zurück",
+		"next":     "Nächster",
+		"last":     "Letzter"
+	}
+}
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/resources/demo.css b/public/admin/js/DataTables/examples/resources/demo.css
new file mode 100644
index 0000000000000000000000000000000000000000..d8ffc97322ecf4ee06ab96e0eb45a2bcd411c44f
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/demo.css
@@ -0,0 +1,343 @@
+
+@font-face {
+	/* RaleWay Thin from - https://www.theleagueofmoveabletype.com, Font Squirrel for Web Font creation with "Adjust Glyph Spacing" -50 */
+    font-family: 'ralewaythin';
+    src: url('font/raleway_thin-webfont.eot');
+    src: url('font/raleway_thin-webfont.eot?#iefix') format('embedded-opentype'),
+         url('font/raleway_thin-webfont.woff') format('woff'),
+         url('font/raleway_thin-webfont.ttf') format('truetype');
+    font-weight: normal;
+    font-style: normal;
+}
+
+
+body {
+	font: 90%/1.45em "Helvetica Neue", HelveticaNeue, Verdana, Arial, Helvetica, sans-serif;
+	margin: 0;
+	padding: 0;
+	color: #333;
+	background-color: #fff;
+}
+
+
+div.container {
+	max-width: 980px;
+	margin: 0 auto;
+}
+
+h1 {
+	font-family: 'HelveticaNeue-UltraLight', 'Helvetica Neue UltraLight', 'ralewaythin', 'Helvetica Neue', Arial, Helvetica, sans-serif;
+    font-weight: 100;
+    letter-spacing: 1px;
+	font-size: 3em;
+	line-height: 1em;
+}
+
+h1 span {
+	font-size: 0.5em;
+	line-height: 1em;
+}
+
+a {
+	cursor: pointer;
+	color: #3174c7;
+	text-decoration: none;
+}
+
+a:hover {
+	text-decoration: underline;
+}
+
+div.toc ul {
+	color: #4E6CA3;
+	list-style-type: none;
+	padding-left: 0;
+}
+
+div.toc li {
+	padding: 0.2em 1em;
+	border-left: 4px solid transparent;
+	border-bottom: 1px solid #e6e6e6;
+}
+
+div.toc li.active {
+	border-left: 4px solid #458ae0;
+}
+
+
+div.toc li:first-child {
+	border-top: 1px solid #efefef;
+}
+
+div.toc li:last-child {
+	border-bottom: 1px solid #efefef;
+}
+
+
+div.epilogue {
+	text-align: center;
+}
+
+p.copyright {
+	font-size: 0.8em;
+	padding-bottom: 2em;
+	margin-bottom: 0;
+}
+
+.clear {
+	clear: both;
+	height: 0;
+}
+
+
+div.info {
+	margin-bottom: 2em;
+
+	-webkit-column-count: 2;
+	   -moz-column-count: 2;
+	    -ms-column-count: 2;
+	     -o-column-count: 2;
+	column-count: 2;
+
+
+	-webkit-column-rule: 1px solid #F3F3F3;
+	   -moz-column-rule: 1px solid #F3F3F3;
+	    -ms-column-rule: 1px solid #F3F3F3;
+	     -o-column-rule: 1px solid #F3F3F3;
+	column-rule: 1px solid #F3F3F3;
+}
+
+div.info > * {
+	-webkit-column-break-inside: avoid;
+	break-inside: avoid;
+}
+
+div.info li {
+	margin-top: 0.75em;
+}
+
+div.info p:first-child {
+	margin-top: 0;
+}
+
+div.footer {
+	position: relative;
+	margin-top: 3em;
+	border-top: 1px solid #999;
+	background-color: #eee;
+}
+
+div.footer > div.liner {
+	max-width: 960px;
+	margin: 0 auto;
+}
+
+div.footer > div.gradient {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 6px;
+
+	background: -moz-linear-gradient(top, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0) 100%); /* FF3.6+ */
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0.2)), color-stop(100%,rgba(0,0,0,0))); /* Chrome,Safari4+ */
+	background: -webkit-linear-gradient(top, rgba(0,0,0,0.2) 0%,rgba(0,0,0,0) 100%); /* Chrome10+,Safari5.1+ */
+	background: -o-linear-gradient(top, rgba(0,0,0,0.2) 0%,rgba(0,0,0,0) 100%); /* Opera 11.10+ */
+	background: -ms-linear-gradient(top, rgba(0,0,0,0.2) 0%,rgba(0,0,0,0) 100%); /* IE10+ */
+	background: linear-gradient(to bottom, rgba(0,0,0,0.2) 0%,rgba(0,0,0,0) 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a6000000', endColorstr='#00000000',GradientType=0 ); /* IE6-9 */
+}
+
+div.toc {
+	-webkit-column-count: 2;
+	   -moz-column-count: 2;
+	    -ms-column-count: 2;
+	     -o-column-count: 2;
+	column-count: 2;
+}
+
+div.toc-group {
+	display: inline-block;
+	width: 100%;
+}
+
+div.box {
+	overflow: auto;
+	height: 8em;
+	padding: 1em;
+	color: #444;
+	background-color: #fcfcfc;
+	border: 1px solid #e0e0e0;
+	margin-bottom: 2em;
+}
+
+
+code {
+	font-family: "Source Code Pro", Consolas, Menlo, Monaco, "Courier New", monospace;
+	padding: 1px 4px;
+	font-size: 0.8em;
+
+	color: #444;
+	background-color: #fcfcfc;
+
+	border: 1px solid #e0e0e0;
+	-webkit-border-radius: 3px;
+	   -moz-border-radius: 3px;
+	        border-radius: 3px;
+}
+
+code > span {
+	border-left: 1px solid rgba( 0, 0, 0, 0.2 );
+	margin-left: 4px;
+	padding-left: 4px;
+	opacity: 0.5;
+}
+
+code.option {
+	color: #D14; /* red */
+	background-color: #fcf6f8;
+	border: 1px solid #f7d6df;
+}
+
+code.path {
+	color: #095c05; /* dark green */
+	border: 1px solid #D6E9C6;
+}
+
+code.tag {
+	color: #cad119; /* yellow */
+	background-color: #f7f8e6;
+	border: 1px solid #D6E9C6;
+}
+
+code.api {
+	color: #0c199c; /* dark blue */
+	background-color: #f4f5fc;
+	border: 1px solid #c6cbe9;
+}
+
+code.type {
+	color: #d119cf; /* purple */
+	background-color: #faebfa;
+	border: 1px solid #f3aef2;
+}
+
+code.event {
+	color: #2a839e; /* deep aqua */
+	background-color: #f5fafb;
+	border: 1px solid #a8ddec;
+}
+
+code.string {
+	color: #e8941e; /* orange */
+	background-color: #fcf8f1;
+	border: 1px solid #f7e4c9;
+}
+
+code.field {
+	color: #ad1ee8; /* purple */
+	background-color: #f9f1fc;
+	border: 1px solid #ebc9f7;
+}
+
+code.multiline {
+	display: inline-block;
+	width: 95%;
+}
+
+
+ul.tabs {
+	position: relative;
+	top: 1px;
+	height: 40px;
+	margin: 20px 20px 0 0;
+}
+
+
+ul.tabs li {
+	display: block;
+	float: left;
+	padding: 0 15px;
+	height: 40px;
+	font-size: 1.2em;
+	margin: 0 5px;
+	cursor: pointer;
+	line-height: 40px;
+	color: #121e32;
+	border: 1px solid white;
+	border-bottom: none;
+	margin-top: -1px;
+}
+
+ul.tabs li.active {
+	border: 1px solid #ccc;
+	border-bottom: 1px solid white;
+	margin-top: 0;
+	border-top-left-radius: 5px;
+	border-top-right-radius: 5px;
+}
+
+ul.tabs li:hover {
+	background-color: #fafafa;
+}
+
+ul.tabs li.active:hover {
+	background-color: white;
+}
+
+div.tabs {
+	clear: both;
+}
+
+div.tabs>div {
+	padding: 0 15px;
+	border: 1px solid #ccc;
+	margin-top: 1px;
+	display: none;
+	border-radius: 5px;
+	box-shadow: 2px 2px 2px #bbb;
+}
+
+div.tabs>div h1 {
+	border-bottom: none;
+	margin-top: 1em;
+}
+
+div.column_half {
+	float: left;
+	width: 49%;
+	padding-right: 1%;
+}
+
+
+@media only screen and (max-width : 979px) {
+	div.container,
+	div.footer {
+		padding: 0 1em;
+	}
+}
+
+@media
+	screen and (max-width : 767px),
+	screen and (max-width : 768px) and (orientation: portrait) {
+	div.info {
+		-webkit-column-count: 1;
+		   -moz-column-count: 1;
+		    -ms-column-count: 1;
+		     -o-column-count: 1;
+		column-count: 1;
+	}
+
+	div.toc {
+		-webkit-column-count: 1;
+		   -moz-column-count: 1;
+		    -ms-column-count: 1;
+		     -o-column-count: 1;
+		column-count: 1;
+	}
+
+	h1 span {
+		display: block;
+	}
+}
+
diff --git a/public/admin/js/DataTables/examples/resources/demo.js b/public/admin/js/DataTables/examples/resources/demo.js
new file mode 100644
index 0000000000000000000000000000000000000000..4339032e92ff39416e5f921cb5df48a831bd3ec2
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/demo.js
@@ -0,0 +1,116 @@
+
+/*global SyntaxHighlighter*/
+SyntaxHighlighter.config.tagName = 'code';
+
+$(document).ready( function () {
+	if ( ! $.fn.dataTable ) {
+		return;
+	}
+	var dt110 = $.fn.dataTable.Api ? true : false;
+
+	// Work around for WebKit bug 55740
+	var info = $('div.info');
+
+	if ( info.height() < 115 ) {
+		info.css( 'min-height', '8em' );
+	}
+
+	var escapeHtml = function ( str ) {
+		return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+	};
+
+	// css
+	var cssContainer = $('div.tabs div.css');
+	if ( $.trim( cssContainer.find('code').text() ) === '' ) {
+		cssContainer.find('code, p:eq(0), div').css('display', 'none');
+	}
+
+	// init html
+	var table = $('<p/>').append( $('table').clone() ).html();
+	$('div.tabs div.table').append(
+		'<code class="multiline brush: html;">\t\t\t'+
+			escapeHtml( table )+
+		'</code>'
+	);
+	//SyntaxHighlighter.highlight({}, $('#display-init-html')[0]);
+
+	// Allow the demo code to run if DT 1.9 is used
+	if ( dt110 ) {
+		// json
+		var ajaxTab = $('ul.tabs li').eq(3).css('display', 'none');
+
+		$(document).on( 'init.dt', function ( e, settings ) {
+			var api = new $.fn.dataTable.Api( settings );
+
+			var show = function ( str ) {
+				ajaxTab.css( 'display', 'block' );
+				$('div.tabs div.ajax code').remove();
+
+				// Old IE :-|
+				try {
+					str = JSON.stringify( str, null, 2 );
+				} catch ( e ) {}
+
+				$('div.tabs div.ajax').append(
+					'<code class="multiline brush: js;">'+str+'</code>'
+				);
+				SyntaxHighlighter.highlight( {}, $('div.tabs div.ajax code')[0] );
+			};
+
+			// First draw
+			var json = api.ajax.json();
+			if ( json ) {
+				show( json );
+			}
+
+			// Subsequent draws
+			api.on( 'xhr.dt', function ( e, settings, json ) {
+				show( json );
+			} );
+		} );
+
+		// php
+		var phpTab = $('ul.tabs li').eq(4).css('display', 'none');
+
+		$(document).on( 'init.dt.demoSSP', function ( e, settings ) {
+			if ( settings.oFeatures.bServerSide ) {
+				if ( $.isFunction( settings.ajax ) ) {
+					return;
+				}
+				$.ajax( {
+					url: '../resources/examples.php',
+					data: {
+						src: settings.sAjaxSource || settings.ajax.url || settings.ajax
+					},
+					dataType: 'text',
+					type: 'post',
+					success: function ( txt ) {
+						phpTab.css( 'display', 'block' );
+						$('div.tabs div.php').append(
+							'<code class="multiline brush: php;">'+txt+'</code>'
+						);
+						SyntaxHighlighter.highlight( {}, $('div.tabs div.php code')[0] );
+					}
+				} );
+			}
+		} );
+	}
+	else {
+		$('ul.tabs li').eq(3).css('display', 'none');
+		$('ul.tabs li').eq(4).css('display', 'none');
+	}
+
+	// Tabs
+	$('ul.tabs').on( 'click', 'li', function () {
+		$('ul.tabs li.active').removeClass('active');
+		$(this).addClass('active');
+
+		$('div.tabs>div')
+			.css('display', 'none')
+			.eq( $(this).index() ).css('display', 'block');
+	} );
+	$('ul.tabs li.active').click();
+} );
+
+
+
diff --git a/public/admin/js/DataTables/examples/resources/details_close.png b/public/admin/js/DataTables/examples/resources/details_close.png
new file mode 100644
index 0000000000000000000000000000000000000000..fcc23c63e22f9883bef72c9e3adae3d5ddfb35cc
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/details_close.png differ
diff --git a/public/admin/js/DataTables/examples/resources/details_open.png b/public/admin/js/DataTables/examples/resources/details_open.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f034d0f2d5c7902dce190355b12defdc07d6c9a
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/details_open.png differ
diff --git a/public/admin/js/DataTables/examples/resources/examples.php b/public/admin/js/DataTables/examples/resources/examples.php
new file mode 100644
index 0000000000000000000000000000000000000000..303d3bdb282c8838b859e0f4e1d2df68600f5c3b
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/examples.php
@@ -0,0 +1,10 @@
+<?php
+
+if ( isset( $_POST['src'] ) && preg_match( '/scripts\/[a-zA-Z_\-_]+\.php/', $_POST['src'] ) !== 0 ) {
+	echo htmlspecialchars( file_get_contents( '../server_side/'.$_POST['src'] ) );
+}
+else {
+	echo '';
+}
+
+
diff --git a/public/admin/js/DataTables/examples/resources/font/raleway_thin-webfont.eot b/public/admin/js/DataTables/examples/resources/font/raleway_thin-webfont.eot
new file mode 100755
index 0000000000000000000000000000000000000000..103c8e0d049e4962e5fdf8b93a5471cf1725f2ba
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/font/raleway_thin-webfont.eot differ
diff --git a/public/admin/js/DataTables/examples/resources/font/raleway_thin-webfont.ttf b/public/admin/js/DataTables/examples/resources/font/raleway_thin-webfont.ttf
new file mode 100755
index 0000000000000000000000000000000000000000..6f04048a6b66a669adf7371ea2f58a30e2e990ba
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/font/raleway_thin-webfont.ttf differ
diff --git a/public/admin/js/DataTables/examples/resources/font/raleway_thin-webfont.woff b/public/admin/js/DataTables/examples/resources/font/raleway_thin-webfont.woff
new file mode 100755
index 0000000000000000000000000000000000000000..25049690c9b62c1519555eec9431e704f978ed3e
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/font/raleway_thin-webfont.woff differ
diff --git a/public/admin/js/DataTables/examples/resources/foundation/dataTables.foundation.css b/public/admin/js/DataTables/examples/resources/foundation/dataTables.foundation.css
new file mode 100644
index 0000000000000000000000000000000000000000..d1268a1833fc38397597654996a88eca3cf7c14d
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/foundation/dataTables.foundation.css
@@ -0,0 +1,213 @@
+div.dataTables_wrapper {
+	margin-bottom: 1.25em;
+}
+
+div.dataTables_length label,
+div.dataTables_filter label,
+div.dataTables_info {
+	color: #999;
+	font-weight: normal;
+}
+
+div.dataTables_length {
+	padding-top: 6px;
+}
+div.dataTables_length label {
+	float: left;
+	text-align: left;
+}
+
+div.dataTables_length select {
+	width: 75px;
+}
+
+div.dataTables_filter label {
+	float: right;
+}
+div.dataTables_filter input {
+	display: inline-block !important;
+	width: auto !important;
+}
+
+div.dataTables_info {
+	padding-top: 2px;
+	font-size: 0.875em;
+}
+
+div.dataTables_paginate {
+	float: right;
+	margin: 0;
+}
+
+table.dataTable {
+	clear: both;
+	margin-bottom: 0.5em !important;
+	max-width: none !important;
+	width: 100%;
+}
+
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+	cursor: pointer;
+	*cursor: hand;
+}
+
+table.dataTable thead .sorting { background: url('images/sort_both.png') no-repeat center right; }
+table.dataTable thead .sorting_asc { background: url('images/sort_asc.png') no-repeat center right; }
+table.dataTable thead .sorting_desc { background: url('images/sort_desc.png') no-repeat center right; }
+
+table.dataTable thead .sorting_asc_disabled { background: url('images/sort_asc_disabled.png') no-repeat center right; }
+table.dataTable thead .sorting_desc_disabled { background: url('images/sort_desc_disabled.png') no-repeat center right; }
+
+table.dataTable th:active {
+	outline: none;
+}
+
+/* Scrolling */
+div.dataTables_scrollHead table {
+	margin-bottom: 0 !important;
+}
+
+div.dataTables_scrollBody table {
+	border-top: none;
+	margin-bottom: 0 !important;
+}
+
+div.dataTables_scrollBody tbody tr:first-child th,
+div.dataTables_scrollBody tbody tr:first-child td {
+	border-top: none;
+}
+
+div.dataTables_scrollFoot table {
+	border-top: none;
+}
+
+
+
+
+/*
+ * TableTools styles
+ */
+.table tbody tr.active td,
+.table tbody tr.active th {
+	background-color: #08C;
+	color: white;
+}
+
+.table tbody tr.active:hover td,
+.table tbody tr.active:hover th {
+	background-color: #0075b0 !important;
+}
+
+.table-striped tbody tr.active:nth-child(odd) td,
+.table-striped tbody tr.active:nth-child(odd) th {
+	background-color: #017ebc;
+}
+
+table.DTTT_selectable tbody tr {
+	cursor: pointer;
+	*cursor: hand;
+}
+
+div.DTTT {
+	float: left;
+	margin-bottom: 0;
+}
+
+div.DTTT .button:hover {
+	text-decoration: none !important;
+}
+
+ul.DTTT_dropdown.dropdown-menu li {
+	position: relative;
+}
+
+ul.DTTT_dropdown.dropdown-menu li:hover a {
+	background-color: #0088cc;
+	color: white !important;
+}
+
+/* TableTools information display */
+.DTTT_print_info {
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	width: 400px;
+	height: 150px;
+	margin-left: -200px;
+	margin-top: -75px;
+	text-align: center;
+	color: #333;
+	padding: 10px 30px;
+
+	background: #ffffff; /* Old browsers */
+	background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
+	background:    -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
+	background:     -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
+	background:      -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
+	background:         linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
+	
+	opacity: 0.95;
+
+	border: 1px solid black;
+	border: 1px solid rgba(0, 0, 0, 0.5);
+	
+	-webkit-border-radius: 6px;
+	   -moz-border-radius: 6px;
+	    -ms-border-radius: 6px;
+	     -o-border-radius: 6px;
+	        border-radius: 6px;
+	
+	-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+	   -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+	    -ms-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+	     -o-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+	        box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+}
+
+div.DTTT_print_info h6 {
+	font-weight: normal;
+	font-size: 28px;
+	line-height: 28px;
+	margin: 1em;
+}
+
+div.DTTT_print_info p {
+	font-size: 14px;
+	line-height: 20px;
+}
+
+
+
+/*
+ * FixedColumns styles
+ */
+div.DTFC_LeftHeadWrapper table,
+div.DTFC_LeftFootWrapper table,
+table.DTFC_Cloned tr.even {
+	background-color: white;
+}
+
+div.DTFC_LeftHeadWrapper table {
+	margin-bottom: 0 !important;
+}
+
+div.DTFC_LeftBodyWrapper table {
+	border-top: none;
+	margin-bottom: 0 !important;
+}
+
+div.DTFC_LeftBodyWrapper tbody tr:first-child th,
+div.DTFC_LeftBodyWrapper tbody tr:first-child td {
+	border-top: none;
+}
+
+div.DTFC_LeftFootWrapper table {
+	border-top: none;
+}
+
+
diff --git a/public/admin/js/DataTables/examples/resources/foundation/dataTables.foundation.js b/public/admin/js/DataTables/examples/resources/foundation/dataTables.foundation.js
new file mode 100644
index 0000000000000000000000000000000000000000..9e00ddeab965838e23ea409e5f91ed9a81964aba
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/foundation/dataTables.foundation.js
@@ -0,0 +1,186 @@
+/* Set the defaults for DataTables initialisation */
+$.extend( true, $.fn.dataTable.defaults, {
+	"sDom":
+		"<'row'<'large-6 columns'l><'large-6 columns'f>r>"+
+		"t"+
+		"<'row'<'large-6 columns'i><'large-6 columns'p>>",
+	"sPaginationType": "bootstrap",
+	"oLanguage": {
+		"sLengthMenu": "_MENU_ records per page"
+	}
+} );
+
+
+/* API method to get paging information */
+$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )
+{
+	return {
+		"iStart":         oSettings._iDisplayStart,
+		"iEnd":           oSettings.fnDisplayEnd(),
+		"iLength":        oSettings._iDisplayLength,
+		"iTotal":         oSettings.fnRecordsTotal(),
+		"iFilteredTotal": oSettings.fnRecordsDisplay(),
+		"iPage":          oSettings._iDisplayLength === -1 ?
+			0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
+		"iTotalPages":    oSettings._iDisplayLength === -1 ?
+			0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
+	};
+};
+
+
+/* Bootstrap style pagination control */
+$.extend( $.fn.dataTableExt.oPagination, {
+	"bootstrap": {
+		"fnInit": function( oSettings, nPaging, fnDraw ) {
+			var oLang = oSettings.oLanguage.oPaginate;
+			var fnClickHandler = function ( e ) {
+				e.preventDefault();
+				if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
+					fnDraw( oSettings );
+				}
+			};
+
+			$(nPaging).append(
+				'<ul class="pagination">'+
+					'<li class="prev arrow unavailable"><a href="">&laquo;</a></li>'+
+					'<li class="next arrow unavailable"><a href="">&raquo;</a></li>'+
+				'</ul>'
+			);
+			var els = $('a', nPaging);
+			$(els[0]).bind( 'click.DT', { action: "previous" }, fnClickHandler );
+			$(els[1]).bind( 'click.DT', { action: "next" }, fnClickHandler );
+		},
+
+		"fnUpdate": function ( oSettings, fnDraw ) {
+			var iListLength = 5;
+			var oPaging = oSettings.oInstance.fnPagingInfo();
+			var an = oSettings.aanFeatures.p;
+			var pages = [];
+			var i, ien, klass, host;
+
+			// This could use some improving - however, see
+			// https://github.com/DataTables/DataTables/issues/163 - this will
+			// be changing in the near future, so not much point in doing too
+			// much just now
+			if ( oPaging.iTotalPages <= 6 ) {
+				for ( i=0 ; i<oPaging.iTotalPages ; i++ ) {
+					pages.push( i );
+				}
+			}
+			else {
+				// Current page
+				pages.push( oPaging.iPage );
+
+				// After current page
+				var pagesAfter = oPaging.iPage + 2 >= oPaging.iTotalPages ?
+					oPaging.iTotalPages :
+					oPaging.iPage + 2;
+				for ( i=oPaging.iPage+1 ; i<pagesAfter ; i++ ) {
+					pages.push( i );
+				}
+
+				// After gap
+				if ( pagesAfter < oPaging.iTotalPages-2 ) {
+					pages.push( null );
+				}
+
+				// End
+				if ( $.inArray( oPaging.iTotalPages-2, pages ) === -1 && oPaging.iPage < oPaging.iTotalPages-2 ) {
+					pages.push( oPaging.iTotalPages-2 );
+				}
+				if ( $.inArray( oPaging.iTotalPages-1, pages ) === -1 ) {
+					pages.push( oPaging.iTotalPages-1 );
+				}
+
+				// Pages before
+				var pagesBefore = oPaging.iPage - 2 > 0 ?
+					oPaging.iPage - 2 :
+					0;
+				for ( i=oPaging.iPage-1 ; i>pagesBefore ; i-- ) {
+					pages.unshift( i );
+				}
+
+				// Before gap
+				if ( pagesBefore > 1 ) {
+					pages.unshift( null );
+				}
+
+				// Start
+				if ( $.inArray( 1, pages ) === -1 && oPaging.iTotalPages > 1 ) {
+					pages.unshift( 1 );
+				}
+				if ( $.inArray( 0, pages ) === -1 ) {
+					pages.unshift( 0 );
+				}
+			}
+
+			for ( i=0, ien=an.length ; i<ien ; i++ ) {
+				// Remove the middle elements
+				host = an[i];
+				$('li:gt(0)', host).filter(':not(:last)').remove();
+
+				// Add the new list items and their event handlers
+				$.each( pages, function( i, page ) {
+					klass = page === null ? 'unavailable' :
+						page === oPaging.iPage ? 'current' : '';
+					$('<li class="'+klass+'"><a href="">'+(page===null? '&hellip;' : page+1)+'</a></li>')
+						.insertBefore( $('li:last', host) )
+						.bind('click', function (e) {
+							e.preventDefault();
+							oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
+							fnDraw( oSettings );
+						} );
+				} );
+
+				// Add / remove disabled classes from the static elements
+				if ( oPaging.iPage === 0 ) {
+					$('li:first', host).addClass('unavailable');
+				} else {
+					$('li:first', host).removeClass('unavailable');
+				}
+
+				if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
+					$('li:last', host).addClass('unavailable');
+				} else {
+					$('li:last', host).removeClass('unavailable');
+				}
+			}
+		}
+	}
+} );
+
+
+/*
+ * TableTools Foundation compatibility
+ * Required TableTools 2.1+
+ */
+if ( $.fn.DataTable.TableTools ) {
+	// Set the classes that TableTools uses to something suitable for Foundation
+	$.extend( true, $.fn.DataTable.TableTools.classes, {
+		"container": "DTTT button-group",
+		"buttons": {
+			"normal": "button",
+			"disabled": "disabled"
+		},
+		"collection": {
+			"container": "DTTT_dropdown dropdown-menu",
+			"buttons": {
+				"normal": "",
+				"disabled": "disabled"
+			}
+		},
+		"select": {
+			"row": "active"
+		}
+	} );
+
+	// Have the collection use a bootstrap compatible dropdown
+	$.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {
+		"collection": {
+			"container": "ul",
+			"button": "li",
+			"liner": "a"
+		}
+	} );
+}
+
diff --git a/public/admin/js/DataTables/examples/resources/foundation/images/sort_asc.png b/public/admin/js/DataTables/examples/resources/foundation/images/sort_asc.png
new file mode 100644
index 0000000000000000000000000000000000000000..a88d7975fe9017e4e5f2289a94bd1ed66a5f59dc
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/foundation/images/sort_asc.png differ
diff --git a/public/admin/js/DataTables/examples/resources/foundation/images/sort_asc_disabled.png b/public/admin/js/DataTables/examples/resources/foundation/images/sort_asc_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ed137c58d2458c0a6bb86a2d51086d43c74cc44
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/foundation/images/sort_asc_disabled.png differ
diff --git a/public/admin/js/DataTables/examples/resources/foundation/images/sort_both.png b/public/admin/js/DataTables/examples/resources/foundation/images/sort_both.png
new file mode 100644
index 0000000000000000000000000000000000000000..18670406bc01ab2721781822dd6478917745ff54
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/foundation/images/sort_both.png differ
diff --git a/public/admin/js/DataTables/examples/resources/foundation/images/sort_desc.png b/public/admin/js/DataTables/examples/resources/foundation/images/sort_desc.png
new file mode 100644
index 0000000000000000000000000000000000000000..def071ed5afd264a036f6d9e75856366fd6ad153
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/foundation/images/sort_desc.png differ
diff --git a/public/admin/js/DataTables/examples/resources/foundation/images/sort_desc_disabled.png b/public/admin/js/DataTables/examples/resources/foundation/images/sort_desc_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..7824973cc60fc1841b16f2cb39323cefcdc3f942
Binary files /dev/null and b/public/admin/js/DataTables/examples/resources/foundation/images/sort_desc_disabled.png differ
diff --git a/public/admin/js/DataTables/examples/resources/jqueryui/dataTables.jqueryui.css b/public/admin/js/DataTables/examples/resources/jqueryui/dataTables.jqueryui.css
new file mode 100644
index 0000000000000000000000000000000000000000..f4a28a9e0b3361051b4f54478e105710859a3a65
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/jqueryui/dataTables.jqueryui.css
@@ -0,0 +1,316 @@
+/*
+ * Table styles
+ */
+table.dataTable {
+  width: 100%;
+  margin: 0 auto;
+  clear: both;
+  border-collapse: separate;
+  border-spacing: 0;
+  /*
+   * Header and footer styles
+   */
+  /*
+   * Body styles
+   */
+}
+table.dataTable thead th,
+table.dataTable thead td,
+table.dataTable tfoot th,
+table.dataTable tfoot td {
+  padding: 4px 10px;
+}
+table.dataTable thead th,
+table.dataTable tfoot th {
+  font-weight: bold;
+}
+table.dataTable thead th:active,
+table.dataTable thead td:active {
+  outline: none;
+}
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting {
+  cursor: pointer;
+  *cursor: hand;
+}
+table.dataTable thead th div.DataTables_sort_wrapper {
+  position: relative;
+  padding-right: 10px;
+}
+table.dataTable thead th div.DataTables_sort_wrapper span {
+  position: absolute;
+  top: 50%;
+  margin-top: -8px;
+  right: -5px;
+}
+table.dataTable thead th.ui-state-default {
+  border-right-width: 0;
+}
+table.dataTable thead th.ui-state-default:last-child {
+  border-right-width: 1px;
+}
+table.dataTable tbody tr {
+  background-color: white;
+}
+table.dataTable tbody tr.selected {
+  background-color: #b0bed9;
+}
+table.dataTable tbody th,
+table.dataTable tbody td {
+  padding: 8px 10px;
+}
+table.dataTable th.center,
+table.dataTable td.center,
+table.dataTable td.dataTables_empty {
+  text-align: center;
+}
+table.dataTable th.right,
+table.dataTable td.right {
+  text-align: right;
+}
+table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
+  border-top: 1px solid #dddddd;
+}
+table.dataTable.row-border tbody tr:first-child th,
+table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
+table.dataTable.display tbody tr:first-child td {
+  border-top: none;
+}
+table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
+  border-top: 1px solid #dddddd;
+  border-right: 1px solid #dddddd;
+}
+table.dataTable.cell-border tbody tr th:first-child,
+table.dataTable.cell-border tbody tr td:first-child {
+  border-left: 1px solid #dddddd;
+}
+table.dataTable.cell-border tbody tr:first-child th,
+table.dataTable.cell-border tbody tr:first-child td {
+  border-top: none;
+}
+table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
+  background-color: #f9f9f9;
+}
+table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
+  background-color: #abb9d3;
+}
+table.dataTable.hover tbody tr:hover,
+table.dataTable.hover tbody tr.odd:hover,
+table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover,
+table.dataTable.display tbody tr.odd:hover,
+table.dataTable.display tbody tr.even:hover {
+  background-color: whitesmoke;
+}
+table.dataTable.hover tbody tr:hover.selected,
+table.dataTable.hover tbody tr.odd:hover.selected,
+table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected,
+table.dataTable.display tbody tr.odd:hover.selected,
+table.dataTable.display tbody tr.even:hover.selected {
+  background-color: #a9b7d1;
+}
+table.dataTable.order-column tbody tr > .sorting_1,
+table.dataTable.order-column tbody tr > .sorting_2,
+table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
+table.dataTable.display tbody tr > .sorting_2,
+table.dataTable.display tbody tr > .sorting_3 {
+  background-color: #f9f9f9;
+}
+table.dataTable.order-column tbody tr.selected > .sorting_1,
+table.dataTable.order-column tbody tr.selected > .sorting_2,
+table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
+table.dataTable.display tbody tr.selected > .sorting_2,
+table.dataTable.display tbody tr.selected > .sorting_3 {
+  background-color: #acbad4;
+}
+table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
+  background-color: #f1f1f1;
+}
+table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
+  background-color: #f3f3f3;
+}
+table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
+  background-color: whitesmoke;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
+  background-color: #a6b3cd;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
+  background-color: #a7b5ce;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
+  background-color: #a9b6d0;
+}
+table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
+  background-color: #f9f9f9;
+}
+table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
+  background-color: #fbfbfb;
+}
+table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
+  background-color: #fdfdfd;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
+  background-color: #acbad4;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
+  background-color: #adbbd6;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
+  background-color: #afbdd8;
+}
+table.dataTable.display tbody tr:hover > .sorting_1,
+table.dataTable.display tbody tr.odd:hover > .sorting_1,
+table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 {
+  background-color: #eaeaea;
+}
+table.dataTable.display tbody tr:hover > .sorting_2,
+table.dataTable.display tbody tr.odd:hover > .sorting_2,
+table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 {
+  background-color: #ebebeb;
+}
+table.dataTable.display tbody tr:hover > .sorting_3,
+table.dataTable.display tbody tr.odd:hover > .sorting_3,
+table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 {
+  background-color: #eeeeee;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_1,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_1,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 {
+  background-color: #a1aec7;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_2,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_2,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 {
+  background-color: #a2afc8;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_3,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_3,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 {
+  background-color: #a4b2cb;
+}
+
+table.dataTable,
+table.dataTable th,
+table.dataTable td {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+
+/*
+ * Control feature layout
+ */
+.dataTables_wrapper {
+  position: relative;
+  clear: both;
+  *zoom: 1;
+  zoom: 1;
+}
+.dataTables_wrapper .dataTables_length {
+  float: left;
+}
+.dataTables_wrapper .dataTables_filter {
+  float: right;
+  text-align: right;
+}
+.dataTables_wrapper .dataTables_filter input {
+  margin-left: 0.5em;
+}
+.dataTables_wrapper .dataTables_info {
+  clear: both;
+  float: left;
+  padding-top: 0.55em;
+}
+.dataTables_wrapper .dataTables_paginate {
+  float: right;
+  text-align: right;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button {
+  box-sizing: border-box;
+  display: inline-block;
+  min-width: 1.5em;
+  padding: 0.5em;
+  margin-left: 2px;
+  text-align: center;
+  text-decoration: none !important;
+  cursor: pointer;
+  *cursor: hand;
+  color: #333333 !important;
+  border: 1px solid transparent;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:active {
+  outline: none;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:first-child {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:last-child {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.dataTables_wrapper .dataTables_processing {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 100%;
+  height: 40px;
+  margin-left: -50%;
+  margin-top: -25px;
+  padding-top: 20px;
+  text-align: center;
+  font-size: 1.2em;
+  background-color: white;
+  background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* W3C */
+}
+.dataTables_wrapper .dataTables_length,
+.dataTables_wrapper .dataTables_filter,
+.dataTables_wrapper .dataTables_info,
+.dataTables_wrapper .dataTables_processing,
+.dataTables_wrapper .dataTables_paginate {
+  color: #333333;
+}
+.dataTables_wrapper .dataTables_scroll {
+  clear: both;
+}
+.dataTables_wrapper .dataTables_scrollBody {
+  *margin-top: -1px;
+  -webkit-overflow-scrolling: touch;
+}
+.dataTables_wrapper .ui-widget-header {
+  font-weight: normal;
+}
+.dataTables_wrapper .ui-toolbar {
+  padding: 8px;
+}
+.dataTables_wrapper:after {
+  visibility: hidden;
+  display: block;
+  content: "";
+  clear: both;
+  height: 0;
+}
diff --git a/public/admin/js/DataTables/examples/resources/jqueryui/dataTables.jqueryui.js b/public/admin/js/DataTables/examples/resources/jqueryui/dataTables.jqueryui.js
new file mode 100644
index 0000000000000000000000000000000000000000..3575e8228a1905e061cf4ded0b8aaef8e8a2d9cd
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/jqueryui/dataTables.jqueryui.js
@@ -0,0 +1,102 @@
+
+(function(){
+
+var DataTable = $.fn.dataTable;
+var sort_prefix = 'css_right ui-icon ui-icon-';
+var toolbar_prefix = 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-';
+
+/* Set the defaults for DataTables initialisation */
+$.extend( true, DataTable.defaults, {
+	dom:
+		'<"'+toolbar_prefix+'tl ui-corner-tr"lfr>'+
+		't'+
+		'<"'+toolbar_prefix+'bl ui-corner-br"ip>',
+	renderer: 'jqueryui'
+} );
+
+
+$.extend( DataTable.ext.classes, {
+	/* Full numbers paging buttons */
+	"sPageButton":         "fg-button ui-button ui-state-default",
+	"sPageButtonActive":   "ui-state-disabled",
+	"sPageButtonDisabled": "ui-state-disabled",
+
+	/* Features */
+	"sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+
+		"ui-buttonset-multi paging_", /* Note that the type is postfixed */
+
+	/* Sorting */
+	"sSortAsc":            "ui-state-default sorting_asc",
+	"sSortDesc":           "ui-state-default sorting_desc",
+	"sSortable":           "ui-state-default sorting",
+	"sSortableAsc":        "ui-state-default sorting_asc_disabled",
+	"sSortableDesc":       "ui-state-default sorting_desc_disabled",
+	"sSortableNone":       "ui-state-default sorting_disabled",
+	"sSortIcon":           "DataTables_sort_icon",
+
+	/* Scrolling */
+	"sScrollHead": "dataTables_scrollHead "+"ui-state-default",
+	"sScrollFoot": "dataTables_scrollFoot "+"ui-state-default",
+
+	/* Misc */
+	"sHeaderTH":  "ui-state-default",
+	"sFooterTH":  "ui-state-default",
+} );
+
+
+DataTable.ext.renderer.header.jqueryui = function ( settings, cell, column, idx, classes ) {
+	$('<div/>')
+		.addClass( 'DataTables_sort_wrapper' )
+		.append( cell.contents() )
+		.append( $('<span/>')
+			.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )
+		)
+		.appendTo( cell );
+
+	// Attach a sort listener to update on sort
+	$(settings.nTable).on( 'order.dt', function ( e, settings, sorting, columns ) {
+		cell
+			.removeClass( classes.sSortAsc +" "+classes.sSortDesc )
+			.addClass( columns[ idx ] == 'asc' ?
+				classes.sSortAsc : columns[ idx ] == 'desc' ?
+					classes.sSortDesc :
+					column.sSortingClass
+			);
+
+		cell
+			.find( 'span' )
+			.removeClass(
+				sort_prefix+'triangle-1-n' +" "+
+				sort_prefix+'triangle-1-s' +" "+
+				sort_prefix+'carat-2-n-s' +" "+
+				sort_prefix+'carat-1-n' +" "+
+				sort_prefix+'carat-1-s'
+			)
+			.addClass( columns[ idx ] == 'asc' ?
+				sort_prefix+'triangle-1-n' : columns[ idx ] == 'desc' ?
+					sort_prefix+'triangle-1-s' :
+					column.sSortingClassJUI
+			);
+	} );
+}
+
+
+/*
+ * TableTools jQuery UI compatibility
+ * Required TableTools 2.1+
+ */
+if ( DataTable.TableTools ) {
+	$.extend( true, DataTable.TableTools.classes, {
+		"container": "DTTT_container ui-buttonset ui-buttonset-multi",
+		"buttons": {
+			"normal": "DTTT_button ui-button ui-state-default"
+		},
+		"collection": {
+			"container": "DTTT_collection ui-buttonset ui-buttonset-multi"
+		}
+	} );
+}
+
+
+}());
+
diff --git a/public/admin/js/DataTables/examples/resources/jqueryui/dataTables.jqueryui.scss b/public/admin/js/DataTables/examples/resources/jqueryui/dataTables.jqueryui.scss
new file mode 100644
index 0000000000000000000000000000000000000000..910dc6a8906e3dd78f509e818bd5ad403335c644
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/jqueryui/dataTables.jqueryui.scss
@@ -0,0 +1,408 @@
+
+
+ //
+ // Colour customisation
+ //
+
+// Border between the header (and footer) and the table body
+$table-header-border: 1px solid #111;
+
+// Border of rows / cells
+$table-body-border: 1px solid #ddd;
+
+// Row background colour (hover, striping etc are all based on this colour and
+// calculated automatically)
+$table-row-background: #ffffff;
+
+// Row colour, when selected (tr.selected)
+$table-row-selected: #B0BED9;
+
+// Text colour of the interaction control elements (info, filter, paging etc)
+$table-control-color: #333;
+
+// Highlight colour of the paging button for the current page
+$table-paging-button-active: #dcdcdc;
+
+// Hover colour of paging buttons on mouse over
+$table-paging-button-hover: #111;
+
+
+
+//
+// Functions / mixins
+//
+@function tint( $color, $percent ) {
+  @return mix(white, $color, $percent);
+}
+
+@function shade( $color, $percent ) {
+  @return mix(black, $color, $percent);
+}
+
+@mixin gradient( $from, $to ) {
+  background-color: $from;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$from), color-stop(100%,$to)); /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top,     $from 0%, $to 100%); /* Chrome10+,Safari5.1+ */
+  background:    -moz-linear-gradient(top,     $from 0%, $to 100%); /* FF3.6+ */
+  background:     -ms-linear-gradient(top,     $from 0%, $to 100%); /* IE10+ */
+  background:      -o-linear-gradient(top,     $from 0%, $to 100%); /* Opera 11.10+ */
+  background:         linear-gradient(to bottom, $from 0%, $to 100%); /* W3C */
+}
+
+
+/*
+ * Table styles
+ */
+table.dataTable {
+  width: 100%;
+  margin: 0 auto;
+  clear: both;
+  border-collapse: separate;
+  border-spacing: 0;
+
+  /*
+   * Header and footer styles
+   */
+  thead,
+  tfoot {
+    th,
+    td {
+      padding: 4px 10px;
+    }
+
+    th {
+      font-weight: bold;
+    }
+  }
+
+  thead th,
+  thead td {
+    &:active {
+      outline: none;
+    }
+  }
+
+  // Sorting
+  thead {
+    .sorting_asc,
+    .sorting_desc,
+    .sorting {
+      cursor: pointer;
+      *cursor: hand;
+    }
+
+    th div.DataTables_sort_wrapper {
+      position: relative;
+      padding-right: 10px;
+
+      span {
+        position: absolute;
+        top: 50%;
+        margin-top: -8px;
+        right: -5px;
+      }
+    }
+
+    th.ui-state-default {
+      border-right-width: 0;
+
+      &:last-child {
+        border-right-width: 1px;
+      }
+    }
+  }
+
+
+  /*
+   * Body styles
+   */
+  tbody {
+    tr {
+      background-color: $table-row-background;
+
+      &.selected {
+        background-color: $table-row-selected;
+      }
+    }
+
+    th,
+    td {
+      padding: 8px 10px;
+    }
+  }
+
+  th.center,
+  td.center,
+  td.dataTables_empty {
+    text-align: center;
+  }
+
+  th.right,
+  td.right {
+    text-align: right;
+  }
+
+
+  // Stripe classes - add "row-border" class to the table to activate
+  &.row-border tbody,
+  &.display tbody {
+    th, td {
+      border-top: $table-body-border;
+    }
+
+    tr:first-child th,
+    tr:first-child td {
+      border-top: none;
+    }
+  }
+
+
+  // Stripe classes - add "cell-border" class to the table to activate
+  &.cell-border tbody {
+    th, td {
+      border-top: $table-body-border;
+      border-right: $table-body-border;
+    }
+
+    tr th:first-child,
+    tr td:first-child {
+      border-left: $table-body-border;
+    }
+
+    tr:first-child th,
+    tr:first-child td {
+      border-top: none;
+    }
+  }
+
+
+  // Stripe classes - add "stripe" class to the table to activate
+  &.stripe tbody,
+  &.display tbody {
+    tr.odd {
+      background-color: shade($table-row-background, 2.35%); // shade by f9
+
+      &.selected {
+        background-color: shade($table-row-selected, 2.35%);
+      }
+    }
+  }
+
+
+  // Hover classes - add "hover" class to the table to activate
+  &.hover tbody,
+  &.display tbody {
+    tr:hover,
+    tr.odd:hover,
+    tr.even:hover {
+      background-color: shade($table-row-background, 3.6%); // shade by f5
+
+      &.selected {
+        background-color: shade($table-row-selected, 3.6%);
+      }
+    }
+  }
+
+
+  // Sort column highlighting - add "hover" class to the table to activate
+  &.order-column,
+  &.display {
+    tbody {
+      tr>.sorting_1,
+      tr>.sorting_2,
+      tr>.sorting_3 {
+        background-color: shade($table-row-background, 2%); // shade by fa
+      }
+
+      tr.selected>.sorting_1,
+      tr.selected>.sorting_2,
+      tr.selected>.sorting_3 {
+        background-color: shade($table-row-selected, 2%);
+      }
+    }
+  }
+
+  &.display tbody,
+  &.order-column.stripe tbody {
+    tr.odd {
+      >.sorting_1 { background-color: shade($table-row-background, 5.4%); } // shade by f1
+      >.sorting_2 { background-color: shade($table-row-background, 4.7%); } // shade by f3
+      >.sorting_3 { background-color: shade($table-row-background, 3.9%); } // shade by f5
+
+      &.selected {
+        >.sorting_1 { background-color: shade($table-row-selected, 5.4%); }
+        >.sorting_2 { background-color: shade($table-row-selected, 4.7%); }
+        >.sorting_3 { background-color: shade($table-row-selected, 3.9%); }
+      }
+    }
+
+    tr.even {
+      >.sorting_1 { background-color: shade($table-row-background, 2%); } // shade by fa
+      >.sorting_2 { background-color: shade($table-row-background, 1.2%); } // shade by fc
+      >.sorting_3 { background-color: shade($table-row-background, 0.4%); } // shade by fe
+      
+      &.selected {
+        >.sorting_1 { background-color: shade($table-row-selected, 2%); }
+        >.sorting_2 { background-color: shade($table-row-selected, 1.2%); }
+        >.sorting_3 { background-color: shade($table-row-selected, 0.4%); }
+      }
+    }
+  }
+
+  &.display tbody,
+  &.order-column.hover tbody {
+    tr:hover,
+    tr.odd:hover,
+    tr.even:hover {
+      >.sorting_1 { background-color: shade($table-row-background, 8.2%); } // shade by ea
+      >.sorting_2 { background-color: shade($table-row-background, 7.5%); } // shade by ec
+      >.sorting_3 { background-color: shade($table-row-background, 6.3%); } // shade by ef
+
+      &.selected {
+        >.sorting_1 { background-color: shade($table-row-selected, 8.2%); }
+        >.sorting_2 { background-color: shade($table-row-selected, 7.5%); }
+        >.sorting_3 { background-color: shade($table-row-selected, 6.3%); }
+      }
+    }
+  }
+}
+
+// Its not uncommon to use * {border-box} now, but it messes up the column width
+// calculations, so use content-box for the table and cells
+table.dataTable,
+table.dataTable th,
+table.dataTable td {
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+}
+
+
+
+/*
+ * Control feature layout
+ */
+.dataTables_wrapper {
+  position: relative;
+  clear: both;
+  *zoom: 1;
+
+  // Page length options
+  .dataTables_length {
+    float: left;
+  }
+
+  // Filtering input
+  .dataTables_filter {
+    float: right;
+    text-align: right;
+
+    input {
+      margin-left: 0.5em;
+    }
+  }
+
+  // Table info
+  .dataTables_info {
+    clear: both;
+    float: left;
+    padding-top: 0.55em;
+  }
+
+  // Paging
+  .dataTables_paginate {
+    float: right;
+    text-align: right;
+
+    .fg-button {
+      box-sizing: border-box;
+      display: inline-block;
+      min-width: 1.5em;
+      padding: 0.5em;
+      margin-left: 2px;
+      text-align: center;
+      text-decoration: none !important;
+      cursor: pointer;
+      *cursor: hand;
+
+      color: $table-control-color !important;
+      border: 1px solid transparent;
+
+      &:active {
+        outline: none;
+      }
+    }
+
+    .fg-button:first-child {
+      border-top-left-radius: 3px;
+      border-bottom-left-radius: 3px;
+    }
+
+    .fg-button:last-child {
+      border-top-right-radius: 3px;
+      border-bottom-right-radius: 3px;
+    }
+  }
+
+  // Processing
+  .dataTables_processing {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: 100%;
+    height: 40px;
+    margin-left: -50%;
+    margin-top: -25px;
+    padding-top: 20px;
+
+    text-align: center;
+    font-size: 1.2em;
+
+    background-color: white;
+    background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba($table-row-background, 0)), color-stop(25%,rgba($table-row-background, 0.9)), color-stop(75%,rgba($table-row-background, 0.9)), color-stop(100%,rgba(255,255,255,0))); /* Chrome,Safari4+ */
+    background: -webkit-linear-gradient(left,     rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* Chrome10+,Safari5.1+ */
+    background:    -moz-linear-gradient(left,     rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* FF3.6+ */
+    background:     -ms-linear-gradient(left,     rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* IE10+ */
+    background:      -o-linear-gradient(left,     rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* Opera 11.10+ */
+    background:         linear-gradient(to right, rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* W3C */
+  }
+
+  .dataTables_length,
+  .dataTables_filter,
+  .dataTables_info,
+  .dataTables_processing,
+  .dataTables_paginate {
+    color: $table-control-color;
+  }
+
+  // Scrolling
+  .dataTables_scroll {
+    clear: both;
+  }
+
+  .dataTables_scrollBody {
+    *margin-top: -1px;
+    -webkit-overflow-scrolling: touch;
+  }
+
+
+  .ui-widget-header {
+    font-weight: normal;
+  }
+
+  .ui-toolbar {
+    padding: 8px;
+  }
+
+  // Self clear the wrapper
+  &:after {
+    visibility: hidden;
+    display: block;
+    content: "";
+    clear: both;
+    height: 0;
+  }
+  zoom: 1; // Poor old IE
+}
+
+
diff --git a/public/admin/js/DataTables/examples/resources/jqueryui/index.html b/public/admin/js/DataTables/examples/resources/jqueryui/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..303dbc151b22e4e93c2c5e0a10c4b808b09e1c6d
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/jqueryui/index.html
@@ -0,0 +1,443 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+		
+		<title>DataTables jQuery UI example</title>
+
+		<link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
+		<link rel="stylesheet" type="text/css" href="dataTables.jqueryui.css">
+
+		<script type="text/javascript" language="javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script>
+		<!--<script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10-dev/js/jquery.dataTables.js"></script>-->
+		<script type="text/javascript" language="javascript" src="/dataTables/DataTablesSrc/built/js/jquery.dataTables.js"></script>
+		<script type="text/javascript" language="javascript" src="dataTables.jqueryui.js"></script>
+		<script type="text/javascript" charset="utf-8">
+			$(document).ready(function() {
+				$('#example').dataTable();
+			} );
+		</script>
+	</head>
+	<body>
+		<div class="container">
+			
+<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
+	<thead>
+		<tr>
+			<th>Rendering engine</th>
+			<th>Browser</th>
+			<th>Platform(s)</th>
+			<th>Engine version</th>
+			<th>CSS grade</th>
+		</tr>
+	</thead>
+	<tbody>
+		<tr class="odd gradeX">
+			<td>Trident</td>
+			<td>Internet
+				 Explorer 4.0</td>
+			<td>Win 95+</td>
+			<td class="center"> 4</td>
+			<td class="center">X</td>
+		</tr>
+		<tr class="even gradeC">
+			<td>Trident</td>
+			<td>Internet
+				 Explorer 5.0</td>
+			<td>Win 95+</td>
+			<td class="center">5</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="odd gradeA">
+			<td>Trident</td>
+			<td>Internet
+				 Explorer 5.5</td>
+			<td>Win 95+</td>
+			<td class="center">5.5</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="even gradeA">
+			<td>Trident</td>
+			<td>Internet
+				 Explorer 6</td>
+			<td>Win 98+</td>
+			<td class="center">6</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="odd gradeA">
+			<td>Trident</td>
+			<td>Internet Explorer 7</td>
+			<td>Win XP SP2+</td>
+			<td class="center">7</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="even gradeA">
+			<td>Trident</td>
+			<td>AOL browser (AOL desktop)</td>
+			<td>Win XP</td>
+			<td class="center">6</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Firefox 1.0</td>
+			<td>Win 98+ / OSX.2+</td>
+			<td class="center">1.7</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Firefox 1.5</td>
+			<td>Win 98+ / OSX.2+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Firefox 2.0</td>
+			<td>Win 98+ / OSX.2+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Firefox 3.0</td>
+			<td>Win 2k+ / OSX.3+</td>
+			<td class="center">1.9</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Camino 1.0</td>
+			<td>OSX.2+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Camino 1.5</td>
+			<td>OSX.3+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Netscape 7.2</td>
+			<td>Win 95+ / Mac OS 8.6-9.2</td>
+			<td class="center">1.7</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Netscape Browser 8</td>
+			<td>Win 98SE+</td>
+			<td class="center">1.7</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Netscape Navigator 9</td>
+			<td>Win 98+ / OSX.2+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.0</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.1</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.1</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.2</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.2</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.3</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.3</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.4</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.4</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.5</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.5</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.6</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">1.6</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.7</td>
+			<td>Win 98+ / OSX.1+</td>
+			<td class="center">1.7</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Mozilla 1.8</td>
+			<td>Win 98+ / OSX.1+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Seamonkey 1.1</td>
+			<td>Win 98+ / OSX.2+</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Gecko</td>
+			<td>Epiphany 2.20</td>
+			<td>Gnome</td>
+			<td class="center">1.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>Safari 1.2</td>
+			<td>OSX.3</td>
+			<td class="center">125.5</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>Safari 1.3</td>
+			<td>OSX.3</td>
+			<td class="center">312.8</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>Safari 2.0</td>
+			<td>OSX.4+</td>
+			<td class="center">419.3</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>Safari 3.0</td>
+			<td>OSX.4+</td>
+			<td class="center">522.1</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>OmniWeb 5.5</td>
+			<td>OSX.4+</td>
+			<td class="center">420</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>iPod Touch / iPhone</td>
+			<td>iPod</td>
+			<td class="center">420.1</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Webkit</td>
+			<td>S60</td>
+			<td>S60</td>
+			<td class="center">413</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 7.0</td>
+			<td>Win 95+ / OSX.1+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 7.5</td>
+			<td>Win 95+ / OSX.2+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 8.0</td>
+			<td>Win 95+ / OSX.2+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 8.5</td>
+			<td>Win 95+ / OSX.2+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 9.0</td>
+			<td>Win 95+ / OSX.3+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 9.2</td>
+			<td>Win 88+ / OSX.3+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera 9.5</td>
+			<td>Win 88+ / OSX.3+</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Opera for Wii</td>
+			<td>Wii</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Nokia N800</td>
+			<td>N800</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Presto</td>
+			<td>Nintendo DS browser</td>
+			<td>Nintendo DS</td>
+			<td class="center">8.5</td>
+			<td class="center">C/A<sup>1</sup></td>
+		</tr>
+		<tr class="gradeC">
+			<td>KHTML</td>
+			<td>Konqureror 3.1</td>
+			<td>KDE 3.1</td>
+			<td class="center">3.1</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeA">
+			<td>KHTML</td>
+			<td>Konqureror 3.3</td>
+			<td>KDE 3.3</td>
+			<td class="center">3.3</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeA">
+			<td>KHTML</td>
+			<td>Konqureror 3.5</td>
+			<td>KDE 3.5</td>
+			<td class="center">3.5</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeX">
+			<td>Tasman</td>
+			<td>Internet Explorer 4.5</td>
+			<td>Mac OS 8-9</td>
+			<td class="center">-</td>
+			<td class="center">X</td>
+		</tr>
+		<tr class="gradeC">
+			<td>Tasman</td>
+			<td>Internet Explorer 5.1</td>
+			<td>Mac OS 7.6-9</td>
+			<td class="center">1</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeC">
+			<td>Tasman</td>
+			<td>Internet Explorer 5.2</td>
+			<td>Mac OS 8-X</td>
+			<td class="center">1</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Misc</td>
+			<td>NetFront 3.1</td>
+			<td>Embedded devices</td>
+			<td class="center">-</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeA">
+			<td>Misc</td>
+			<td>NetFront 3.4</td>
+			<td>Embedded devices</td>
+			<td class="center">-</td>
+			<td class="center">A</td>
+		</tr>
+		<tr class="gradeX">
+			<td>Misc</td>
+			<td>Dillo 0.8</td>
+			<td>Embedded devices</td>
+			<td class="center">-</td>
+			<td class="center">X</td>
+		</tr>
+		<tr class="gradeX">
+			<td>Misc</td>
+			<td>Links</td>
+			<td>Text only</td>
+			<td class="center">-</td>
+			<td class="center">X</td>
+		</tr>
+		<tr class="gradeX">
+			<td>Misc</td>
+			<td>Lynx</td>
+			<td>Text only</td>
+			<td class="center">-</td>
+			<td class="center">X</td>
+		</tr>
+		<tr class="gradeC">
+			<td>Misc</td>
+			<td>IE Mobile</td>
+			<td>Windows Mobile 6</td>
+			<td class="center">-</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeC">
+			<td>Misc</td>
+			<td>PSP browser</td>
+			<td>PSP</td>
+			<td class="center">-</td>
+			<td class="center">C</td>
+		</tr>
+		<tr class="gradeU">
+			<td>Other browsers</td>
+			<td>All others</td>
+			<td>-</td>
+			<td class="center">-</td>
+			<td class="center">U</td>
+		</tr>
+	</tbody>
+</table>
+			
+		</div>
+	</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/resources/syntax/Syntax Highlighter license b/public/admin/js/DataTables/examples/resources/syntax/Syntax Highlighter license
new file mode 100644
index 0000000000000000000000000000000000000000..e7c70ba14a4a2ba8771dcf6dcd9fb460d6a0352c
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/syntax/Syntax Highlighter license	
@@ -0,0 +1,20 @@
+Copyright (c) 2003, 2004 Jim Weirich
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/public/admin/js/DataTables/examples/resources/syntax/shCore.css b/public/admin/js/DataTables/examples/resources/syntax/shCore.css
new file mode 100644
index 0000000000000000000000000000000000000000..9d10ed05cbdeab18de523964de1010d7566a1cf3
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/syntax/shCore.css
@@ -0,0 +1,389 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ * 
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+  -moz-border-radius: 0 0 0 0 !important;
+  -webkit-border-radius: 0 0 0 0 !important;
+  background: none !important;
+  border: 0 !important;
+  bottom: auto !important;
+  float: none !important;
+  height: auto !important;
+  left: auto !important;
+  line-height: 1.1em !important;
+  margin: 0 !important;
+  outline: 0 !important;
+  overflow: visible !important;
+  padding: 0 !important;
+  position: static !important;
+  right: auto !important;
+  text-align: left !important;
+  top: auto !important;
+  vertical-align: baseline !important;
+  width: auto !important;
+  box-sizing: content-box !important;
+  font-family: "Source Code Pro","Consolas","Monaco","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;
+  font-weight: normal !important;
+  font-style: normal !important;
+  font-size: 1em !important;
+  min-height: inherit !important;
+  min-height: auto !important;
+}
+
+.syntaxhighlighter {
+  width: 100% !important;
+  margin: 1em 0 1em 0 !important;
+  position: relative !important;
+  overflow: auto !important;
+  font-size: 1em !important;
+}
+.syntaxhighlighter.source {
+  overflow: hidden !important;
+}
+.syntaxhighlighter .bold {
+  font-weight: bold !important;
+}
+.syntaxhighlighter .italic {
+  font-style: italic !important;
+}
+.syntaxhighlighter .line {
+  white-space: pre !important;
+}
+.syntaxhighlighter table {
+  width: 100% !important;
+}
+.syntaxhighlighter table caption {
+  text-align: left !important;
+  padding: .5em 0 0.5em 1em !important;
+}
+.syntaxhighlighter table td.code {
+  width: 100% !important;
+}
+.syntaxhighlighter table td.code .container {
+  position: relative !important;
+}
+.syntaxhighlighter table td.code .container textarea {
+  box-sizing: border-box !important;
+  position: absolute !important;
+  left: 0 !important;
+  top: 0 !important;
+  width: 100% !important;
+  height: 100% !important;
+  border: none !important;
+  background: white !important;
+  padding-left: 1em !important;
+  overflow: hidden !important;
+  white-space: pre !important;
+}
+.syntaxhighlighter table td.gutter .line {
+  text-align: right !important;
+  padding: 2px 0.5em 2px 1em !important;
+}
+.syntaxhighlighter table td.code .line {
+  padding: 2px 1em !important;
+}
+.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+  padding-left: 0em !important;
+}
+.syntaxhighlighter.show {
+  display: block !important;
+}
+.syntaxhighlighter.collapsed table {
+  display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+  padding: 0.1em 0.8em 0em 0.8em !important;
+  font-size: 1em !important;
+  position: static !important;
+  width: auto !important;
+  height: auto !important;
+}
+.syntaxhighlighter.collapsed .toolbar span {
+  display: inline !important;
+  margin-right: 1em !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a {
+  padding: 0 !important;
+  display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource {
+  display: inline !important;
+}
+.syntaxhighlighter .toolbar {
+  position: absolute !important;
+  right: 1px !important;
+  top: 1px !important;
+  font-size: 10px !important;
+  z-index: 7 !important;
+}
+.syntaxhighlighter .toolbar span.title {
+  display: inline !important;
+}
+.syntaxhighlighter .toolbar a {
+  display: block !important;
+  text-align: center !important;
+  text-decoration: none !important;
+  padding-top: 1px !important;
+}
+.syntaxhighlighter .toolbar a.expandSource {
+  display: none !important;
+}
+.syntaxhighlighter.ie {
+  font-size: .9em !important;
+  padding: 1px 0 1px 0 !important;
+}
+.syntaxhighlighter.ie .toolbar {
+  line-height: 8px !important;
+}
+.syntaxhighlighter.ie .toolbar a {
+  padding-top: 0px !important;
+}
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content {
+  background: none !important;
+}
+.syntaxhighlighter.printing .line .number {
+  color: #bbbbbb !important;
+}
+.syntaxhighlighter.printing .line .content {
+  color: black !important;
+}
+.syntaxhighlighter.printing .toolbar {
+  display: none !important;
+}
+.syntaxhighlighter.printing a {
+  text-decoration: none !important;
+}
+.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+  color: black !important;
+}
+.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+  color: #008200 !important;
+}
+.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+  color: blue !important;
+}
+.syntaxhighlighter.printing .keyword {
+  color: #006699 !important;
+  font-weight: bold !important;
+}
+.syntaxhighlighter.printing .preprocessor {
+  color: gray !important;
+}
+.syntaxhighlighter.printing .variable {
+  color: #aa7700 !important;
+}
+.syntaxhighlighter.printing .value {
+  color: #009900 !important;
+}
+.syntaxhighlighter.printing .functions {
+  color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .constants {
+  color: #0066cc !important;
+}
+.syntaxhighlighter.printing .script {
+  font-weight: bold !important;
+}
+.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+  color: gray !important;
+}
+.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+  color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+  color: red !important;
+}
+.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+  color: black !important;
+}
+
+
+
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ * 
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter {
+  background-color: white !important;
+  font-size: 13px !important;
+  overflow: visible !important;
+}
+.syntaxhighlighter .line.alt1 {
+  background-color: white !important;
+}
+.syntaxhighlighter .line.alt2 {
+  background-color: #F8F8F8 !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+  background-color: #e0e0e0 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+  color: black !important;
+}
+.syntaxhighlighter table caption {
+  color: black !important;
+}
+.syntaxhighlighter .gutter {
+}
+.syntaxhighlighter .gutter div {
+  color: #5C5C5C !important;
+}
+.syntaxhighlighter .gutter .line.alt1, .syntaxhighlighter  .gutter .line.alt2 {
+  background-color: white !important;
+}
+.odd .syntaxhighlighter .gutter .line.alt1, .odd .syntaxhighlighter  .gutter .line.alt2 {
+  background-color: #F2F2F2 !important;
+}
+.syntaxhighlighter .gutter .line {
+  border-right: 3px solid #4E6CA3 !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+  background-color: #4E6CA3 !important;
+  color: white !important;
+}
+.syntaxhighlighter.printing .line .content {
+  border: none !important;
+}
+.syntaxhighlighter.collapsed {
+  overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+  color: blue !important;
+  background: white !important;
+  border: 1px solid #4E6CA3 !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+  color: blue !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+  color: red !important;
+}
+.syntaxhighlighter .toolbar {
+  color: white !important;
+  border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+  font: 100%/1.45em "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important;
+  color: white !important;
+  background: #4E6CA3 !important;
+  float: right !important;
+  padding: 2px 5px !important;
+  clear: both;
+}
+.syntaxhighlighter .toolbar a:hover {
+  color: #b7c5df !important;
+  background: #39568b !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+  color: black !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+  color: #008200 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+  color: blue !important;
+}
+.syntaxhighlighter .keyword {
+  color: #006699 !important;
+}
+.syntaxhighlighter .preprocessor {
+  color: gray !important;
+}
+.syntaxhighlighter .variable {
+  color: #aa7700 !important;
+}
+.syntaxhighlighter .value {
+  color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+  color: #ff1493 !important;
+}
+.syntaxhighlighter .constants {
+  color: #0066cc !important;
+}
+.syntaxhighlighter .script {
+  font-weight: bold !important;
+  color: #006699 !important;
+  background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+  color: gray !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+  color: #ff1493 !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+  color: red !important;
+}
+
+.syntaxhighlighter .keyword {
+  font-weight: bold !important;
+}
+
+.datatables_ref:hover {
+	text-decoration: underline;
+	cursor: pointer;
+	*cursor: hand;
+}
+
+.syntaxhighlighter .dtapi {
+	color: #069;
+}
+
+.syntaxhighlighter .dtapi:hover {
+	text-decoration: underline;
+	cursor: pointer;
+	*cursor: hand;
+}
+
+.syntaxhighlighter table {
+  table-layout: fixed !important;
+}
+
+.syntaxhighlighter table td.gutter {
+  width: 46px !important; /* enough for three digits */
+}
+
+.syntaxhighlighter table td.code {
+  width: auto !important;
+  overflow: auto !important;
+}
+
diff --git a/public/admin/js/DataTables/examples/resources/syntax/shCore.js b/public/admin/js/DataTables/examples/resources/syntax/shCore.js
new file mode 100644
index 0000000000000000000000000000000000000000..bd586f7cdfdff08bea91db98c765b6b8fc38b9b2
--- /dev/null
+++ b/public/admin/js/DataTables/examples/resources/syntax/shCore.js
@@ -0,0 +1,2064 @@
+/*!
+ * XRegExp 2.0.0 <xregexp.com> MIT License
+ */
+var XRegExp;XRegExp=XRegExp||function(n){"use strict";function v(n,i,r){var u;for(u in t.prototype)t.prototype.hasOwnProperty(u)&&(n[u]=t.prototype[u]);return n.xregexp={captureNames:i,isNative:!!r},n}function g(n){return(n.global?"g":"")+(n.ignoreCase?"i":"")+(n.multiline?"m":"")+(n.extended?"x":"")+(n.sticky?"y":"")}function o(n,r,u){if(!t.isRegExp(n))throw new TypeError("type RegExp expected");var f=i.replace.call(g(n)+(r||""),h,"");return u&&(f=i.replace.call(f,new RegExp("["+u+"]+","g"),"")),n=n.xregexp&&!n.xregexp.isNative?v(t(n.source,f),n.xregexp.captureNames?n.xregexp.captureNames.slice(0):null):v(new RegExp(n.source,f),null,!0)}function a(n,t){var i=n.length;if(Array.prototype.lastIndexOf)return n.lastIndexOf(t);while(i--)if(n[i]===t)return i;return-1}function s(n,t){return Object.prototype.toString.call(n).toLowerCase()==="[object "+t+"]"}function d(n){return n=n||{},n==="all"||n.all?n={natives:!0,extensibility:!0}:s(n,"string")&&(n=t.forEach(n,/[^\s,]+/,function(n){this[n]=!0},{})),n}function ut(n,t,i,u){var o=p.length,s=null,e,f;y=!0;try{while(o--)if(f=p[o],(f.scope==="all"||f.scope===i)&&(!f.trigger||f.trigger.call(u))&&(f.pattern.lastIndex=t,e=r.exec.call(f.pattern,n),e&&e.index===t)){s={output:f.handler.call(u,e,i),match:e};break}}catch(h){throw h;}finally{y=!1}return s}function b(n){t.addToken=c[n?"on":"off"],f.extensibility=n}function tt(n){RegExp.prototype.exec=(n?r:i).exec,RegExp.prototype.test=(n?r:i).test,String.prototype.match=(n?r:i).match,String.prototype.replace=(n?r:i).replace,String.prototype.split=(n?r:i).split,f.natives=n}var t,c,u,f={natives:!1,extensibility:!1},i={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},r={},k={},p=[],e="default",rt="class",it={"default":/^(?:\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??)/,"class":/^(?:\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S]))/},et=/\$(?:{([\w$]+)}|(\d\d?|[\s\S]))/g,h=/([\s\S])(?=[\s\S]*\1)/g,nt=/^(?:[?*+]|{\d+(?:,\d*)?})\??/,ft=i.exec.call(/()??/,"")[1]===n,l=RegExp.prototype.sticky!==n,y=!1,w="gim"+(l?"y":"");return t=function(r,u){if(t.isRegExp(r)){if(u!==n)throw new TypeError("can't supply flags when constructing one RegExp from another");return o(r)}if(y)throw new Error("can't call the XRegExp constructor within token definition functions");var l=[],a=e,b={hasNamedCapture:!1,captureNames:[],hasFlag:function(n){return u.indexOf(n)>-1}},f=0,c,s,p;if(r=r===n?"":String(r),u=u===n?"":String(u),i.match.call(u,h))throw new SyntaxError("invalid duplicate regular expression flag");for(r=i.replace.call(r,/^\(\?([\w$]+)\)/,function(n,t){if(i.test.call(/[gy]/,t))throw new SyntaxError("can't use flag g or y in mode modifier");return u=i.replace.call(u+t,h,""),""}),t.forEach(u,/[\s\S]/,function(n){if(w.indexOf(n[0])<0)throw new SyntaxError("invalid regular expression flag "+n[0]);});f<r.length;)c=ut(r,f,a,b),c?(l.push(c.output),f+=c.match[0].length||1):(s=i.exec.call(it[a],r.slice(f)),s?(l.push(s[0]),f+=s[0].length):(p=r.charAt(f),p==="["?a=rt:p==="]"&&(a=e),l.push(p),++f));return v(new RegExp(l.join(""),i.replace.call(u,/[^gimy]+/g,"")),b.hasNamedCapture?b.captureNames:null)},c={on:function(n,t,r){r=r||{},n&&p.push({pattern:o(n,"g"+(l?"y":"")),handler:t,scope:r.scope||e,trigger:r.trigger||null}),r.customFlags&&(w=i.replace.call(w+r.customFlags,h,""))},off:function(){throw new Error("extensibility must be installed before using addToken");}},t.addToken=c.off,t.cache=function(n,i){var r=n+"/"+(i||"");return k[r]||(k[r]=t(n,i))},t.escape=function(n){return i.replace.call(n,/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},t.exec=function(n,t,i,u){var e=o(t,"g"+(u&&l?"y":""),u===!1?"y":""),f;return e.lastIndex=i=i||0,f=r.exec.call(e,n),u&&f&&f.index!==i&&(f=null),t.global&&(t.lastIndex=f?e.lastIndex:0),f},t.forEach=function(n,i,r,u){for(var e=0,o=-1,f;f=t.exec(n,i,e);)r.call(u,f,++o,n,i),e=f.index+(f[0].length||1);return u},t.globalize=function(n){return o(n,"g")},t.install=function(n){n=d(n),!f.natives&&n.natives&&tt(!0),!f.extensibility&&n.extensibility&&b(!0)},t.isInstalled=function(n){return!!f[n]},t.isRegExp=function(n){return s(n,"regexp")},t.matchChain=function(n,i){return function r(n,u){for(var o=i[u].regex?i[u]:{regex:i[u]},f=[],s=function(n){f.push(o.backref?n[o.backref]||"":n[0])},e=0;e<n.length;++e)t.forEach(n[e],o.regex,s);return u===i.length-1||!f.length?f:r(f,u+1)}([n],0)},t.replace=function(i,u,f,e){var c=t.isRegExp(u),s=u,h;return c?(e===n&&u.global&&(e="all"),s=o(u,e==="all"?"g":"",e==="all"?"":"g")):e==="all"&&(s=new RegExp(t.escape(String(u)),"g")),h=r.replace.call(String(i),s,f),c&&u.global&&(u.lastIndex=0),h},t.split=function(n,t,i){return r.split.call(n,t,i)},t.test=function(n,i,r,u){return!!t.exec(n,i,r,u)},t.uninstall=function(n){n=d(n),f.natives&&n.natives&&tt(!1),f.extensibility&&n.extensibility&&b(!1)},t.union=function(n,i){var l=/(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*]/g,o=0,f,h,c=function(n,t,i){var r=h[o-f];if(t){if(++o,r)return"(?<"+r+">"}else if(i)return"\\"+(+i+f);return n},e=[],r,u;if(!(s(n,"array")&&n.length))throw new TypeError("patterns must be a nonempty array");for(u=0;u<n.length;++u)r=n[u],t.isRegExp(r)?(f=o,h=r.xregexp&&r.xregexp.captureNames||[],e.push(t(r.source).source.replace(l,c))):e.push(t.escape(r));return t(e.join("|"),i)},t.version="2.0.0",r.exec=function(t){var r,f,e,o,u;if(this.global||(o=this.lastIndex),r=i.exec.apply(this,arguments),r){if(!ft&&r.length>1&&a(r,"")>-1&&(e=new RegExp(this.source,i.replace.call(g(this),"g","")),i.replace.call(String(t).slice(r.index),e,function(){for(var t=1;t<arguments.length-2;++t)arguments[t]===n&&(r[t]=n)})),this.xregexp&&this.xregexp.captureNames)for(u=1;u<r.length;++u)f=this.xregexp.captureNames[u-1],f&&(r[f]=r[u]);this.global&&!r[0].length&&this.lastIndex>r.index&&(this.lastIndex=r.index)}return this.global||(this.lastIndex=o),r},r.test=function(n){return!!r.exec.call(this,n)},r.match=function(n){if(t.isRegExp(n)){if(n.global){var u=i.match.apply(this,arguments);return n.lastIndex=0,u}}else n=new RegExp(n);return r.exec.call(n,this)},r.replace=function(n,r){var e=t.isRegExp(n),u,f,h,o;return e?(n.xregexp&&(u=n.xregexp.captureNames),n.global||(o=n.lastIndex)):n+="",s(r,"function")?f=i.replace.call(String(this),n,function(){var t=arguments,i;if(u)for(t[0]=new String(t[0]),i=0;i<u.length;++i)u[i]&&(t[0][u[i]]=t[i+1]);return e&&n.global&&(n.lastIndex=t[t.length-2]+t[0].length),r.apply(null,t)}):(h=String(this),f=i.replace.call(h,n,function(){var n=arguments;return i.replace.call(String(r),et,function(t,i,r){var f;if(i){if(f=+i,f<=n.length-3)return n[f]||"";if(f=u?a(u,i):-1,f<0)throw new SyntaxError("backreference to undefined group "+t);return n[f+1]||""}if(r==="$")return"$";if(r==="&"||+r==0)return n[0];if(r==="`")return n[n.length-1].slice(0,n[n.length-2]);if(r==="'")return n[n.length-1].slice(n[n.length-2]+n[0].length);if(r=+r,!isNaN(r)){if(r>n.length-3)throw new SyntaxError("backreference to undefined group "+t);return n[r]||""}throw new SyntaxError("invalid token "+t);})})),e&&(n.lastIndex=n.global?0:o),f},r.split=function(r,u){if(!t.isRegExp(r))return i.split.apply(this,arguments);var e=String(this),h=r.lastIndex,f=[],o=0,s;return u=(u===n?-1:u)>>>0,t.forEach(e,r,function(n){n.index+n[0].length>o&&(f.push(e.slice(o,n.index)),n.length>1&&n.index<e.length&&Array.prototype.push.apply(f,n.slice(1)),s=n[0].length,o=n.index+s)}),o===e.length?(!i.test.call(r,"")||s)&&f.push(""):f.push(e.slice(o)),r.lastIndex=h,f.length>u?f.slice(0,u):f},u=c.on,u(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4})|x(?![\dA-Fa-f]{2}))/,function(n,t){if(n[1]==="B"&&t===e)return n[0];throw new SyntaxError("invalid escape "+n[0]);},{scope:"all"}),u(/\[(\^?)]/,function(n){return n[1]?"[\\s\\S]":"\\b\\B"}),u(/(?:\(\?#[^)]*\))+/,function(n){return i.test.call(nt,n.input.slice(n.index+n[0].length))?"":"(?:)"}),u(/\\k<([\w$]+)>/,function(n){var t=isNaN(n[1])?a(this.captureNames,n[1])+1:+n[1],i=n.index+n[0].length;if(!t||t>this.captureNames.length)throw new SyntaxError("backreference to undefined group "+n[0]);return"\\"+t+(i===n.input.length||isNaN(n.input.charAt(i))?"":"(?:)")}),u(/(?:\s+|#.*)+/,function(n){return i.test.call(nt,n.input.slice(n.index+n[0].length))?"":"(?:)"},{trigger:function(){return this.hasFlag("x")},customFlags:"x"}),u(/\./,function(){return"[\\s\\S]"},{trigger:function(){return this.hasFlag("s")},customFlags:"s"}),u(/\(\?P?<([\w$]+)>/,function(n){if(!isNaN(n[1]))throw new SyntaxError("can't use integer as capture name "+n[0]);return this.captureNames.push(n[1]),this.hasNamedCapture=!0,"("}),u(/\\(\d+)/,function(n,t){if(!(t===e&&/^[1-9]/.test(n[1])&&+n[1]<=this.captureNames.length)&&n[1]!=="0")throw new SyntaxError("can't use octal escape or backreference to undefined group "+n[0]);return n[0]},{scope:"all"}),u(/\((?!\?)/,function(){return this.hasFlag("n")?"(?:":(this.captureNames.push(null),"(")},{customFlags:"n"}),typeof exports!="undefined"&&(exports.XRegExp=t),t}()
+
+
+/*!
+ * SyntaxHighlighter by Alex Gorbatchev
+ * https://github.com/alexgorbatchev/SyntaxHighlighter - MIT license
+ */
+
+//
+// Begin anonymous function. This is used to contain local scope variables without polutting global scope.
+//
+if (typeof(SyntaxHighlighter) == 'undefined') var SyntaxHighlighter = function() {
+
+// CommonJS
+if (typeof(require) != 'undefined' && typeof(XRegExp) == 'undefined')
+{
+    XRegExp = require('xregexp').XRegExp;
+}
+
+// Shortcut object which will be assigned to the SyntaxHighlighter variable.
+// This is a shorthand for local reference in order to avoid long namespace
+// references to SyntaxHighlighter.whatever...
+var sh = {
+    defaults : {
+        /** Additional CSS class names to be added to highlighter elements. */
+        'class-name' : '',
+
+        /** First line number. */
+        'first-line' : 1,
+
+        /**
+         * Pads line numbers. Possible values are:
+         *
+         *   false - don't pad line numbers.
+         *   true  - automaticaly pad numbers with minimum required number of leading zeroes.
+         *   [int] - length up to which pad line numbers.
+         */
+        'pad-line-numbers' : false,
+
+        /** Lines to highlight. */
+        'highlight' : null,
+
+        /** Title to be displayed above the code block. */
+        'title' : null,
+
+        /** Enables or disables smart tabs. */
+        'smart-tabs' : true,
+
+        /** Gets or sets tab size. */
+        'tab-size' : 4,
+
+        /** Enables or disables gutter. */
+        'gutter' : true,
+
+        /** Enables or disables toolbar. */
+        'toolbar' : true,
+
+        /** Enables quick code copy and paste from double click. */
+        'quick-code' : true,
+
+        /** Forces code view to be collapsed. */
+        'collapse' : false,
+
+        /** Enables or disables automatic links. */
+        'auto-links' : true,
+
+        /** Gets or sets light mode. Equavalent to turning off gutter and toolbar. */
+        'light' : false,
+
+        'unindent' : true,
+
+        'html-script' : false
+    },
+
+    config : {
+        space : '&nbsp;',
+
+        /** Enables use of <SCRIPT type="syntaxhighlighter" /> tags. */
+        useScriptTags : true,
+
+        /** Blogger mode flag. */
+        bloggerMode : false,
+
+        stripBrs : false,
+
+        /** Name of the tag that SyntaxHighlighter will automatically look for. */
+        tagName : 'pre',
+
+        strings : {
+            expandSource : 'expand source',
+            help : '?',
+            alert: 'SyntaxHighlighter\n\n',
+            noBrush : 'Can\'t find brush for: ',
+            brushNotHtmlScript : 'Brush wasn\'t configured for html-script option: ',
+
+            // this is populated by the build script
+            aboutDialog : '<%- about %>'
+        }
+    },
+
+    /** Internal 'global' variables. */
+    vars : {
+        discoveredBrushes : null,
+        highlighters : {}
+    },
+
+    /** This object is populated by user included external brush files. */
+    brushes : {},
+
+    /** Common regular expressions. */
+    regexLib : {
+        multiLineCComments          : XRegExp('/\\*.*?\\*/', 'gs'),
+        singleLineCComments         : /\/\/.*$/gm,
+        singleLinePerlComments      : /#.*$/gm,
+        doubleQuotedString          : /"([^\\"\n]|\\.)*"/g,
+        singleQuotedString          : /'([^\\'\n]|\\.)*'/g,
+        multiLineDoubleQuotedString : XRegExp('"([^\\\\"]|\\\\.)*"', 'gs'),
+        multiLineSingleQuotedString : XRegExp("'([^\\\\']|\\\\.)*'", 'gs'),
+        xmlComments                 : XRegExp('(&lt;|<)!--.*?--(&gt;|>)', 'gs'),
+        url                         : /\w+:\/\/[\w-.\/?%&=:@;#]*/g,
+        phpScriptTags               : { left: /(&lt;|<)\?(?:=|php)?/g, right: /\?(&gt;|>)/g, 'eof' : true },
+        aspScriptTags               : { left: /(&lt;|<)%=?/g, right: /%(&gt;|>)/g },
+        scriptScriptTags            : { left: /(&lt;|<)\s*script.*?(&gt;|>)/gi, right: /(&lt;|<)\/\s*script\s*(&gt;|>)/gi }
+    },
+
+    toolbar: {
+        /**
+         * Generates HTML markup for the toolbar.
+         * @param {Highlighter} highlighter Highlighter instance.
+         * @return {String} Returns HTML markup.
+         */
+        getHtml: function(highlighter)
+        {
+            var html = '<div class="toolbar">',
+                items = sh.toolbar.items,
+                list = items.list
+                ;
+
+            function defaultGetHtml(highlighter, name)
+            {
+                return sh.toolbar.getButtonHtml(highlighter, name, sh.config.strings[name]);
+            }
+
+            for (var i = 0, l = list.length; i < l; i++)
+            {
+                html += (items[list[i]].getHtml || defaultGetHtml)(highlighter, list[i]);
+            }
+
+            html += '</div>';
+
+            return html;
+        },
+
+        /**
+         * Generates HTML markup for a regular button in the toolbar.
+         * @param {Highlighter} highlighter Highlighter instance.
+         * @param {String} commandName      Command name that would be executed.
+         * @param {String} label            Label text to display.
+         * @return {String}                 Returns HTML markup.
+         */
+        getButtonHtml: function(highlighter, commandName, label)
+        {
+            return '<span><a href="#" class="toolbar_item'
+                + ' command_' + commandName
+                + ' ' + commandName
+                + '">' + label + '</a></span>'
+                ;
+        },
+
+        /**
+         * Event handler for a toolbar anchor.
+         */
+        handler: function(e)
+        {
+            var target = e.target,
+                className = target.className || ''
+                ;
+
+            function getValue(name)
+            {
+                var r = new RegExp(name + '_(\\w+)'),
+                    match = r.exec(className)
+                    ;
+
+                return match ? match[1] : null;
+            }
+
+            var highlighter = getHighlighterById(findParentElement(target, '.syntaxhighlighter').id),
+                commandName = getValue('command')
+                ;
+
+            // execute the toolbar command
+            if (highlighter && commandName)
+                sh.toolbar.items[commandName].execute(highlighter);
+
+            // disable default A click behaviour
+            e.preventDefault();
+        },
+
+        /** Collection of toolbar items. */
+        items : {
+            // Ordered lis of items in the toolbar. Can't expect `for (var n in items)` to be consistent.
+            list: ['expandSource', 'help'],
+
+            expandSource: {
+                getHtml: function(highlighter)
+                {
+                    if (highlighter.getParam('collapse') != true)
+                        return '';
+
+                    var title = highlighter.getParam('title');
+                    return sh.toolbar.getButtonHtml(highlighter, 'expandSource', title ? title : sh.config.strings.expandSource);
+                },
+
+                execute: function(highlighter)
+                {
+                    var div = getHighlighterDivById(highlighter.id);
+                    removeClass(div, 'collapsed');
+                }
+            },
+
+            /** Command to display the about dialog window. */
+            help: {
+                execute: function(highlighter)
+                {
+                    var wnd = popup('', '_blank', 500, 250, 'scrollbars=0'),
+                        doc = wnd.document
+                        ;
+
+                    doc.write(sh.config.strings.aboutDialog);
+                    doc.close();
+                    wnd.focus();
+                }
+            }
+        }
+    },
+
+    /**
+     * Finds all elements on the page which should be processes by SyntaxHighlighter.
+     *
+     * @param {Object} globalParams     Optional parameters which override element's
+     *                                  parameters. Only used if element is specified.
+     *
+     * @param {Object} element  Optional element to highlight. If none is
+     *                          provided, all elements in the current document
+     *                          are returned which qualify.
+     *
+     * @return {Array}  Returns list of <code>{ target: DOMElement, params: Object }</code> objects.
+     */
+    findElements: function(globalParams, element)
+    {
+        var elements = element ? [element] : toArray(document.getElementsByTagName(sh.config.tagName)),
+            conf = sh.config,
+            result = []
+            ;
+
+        // support for <SCRIPT TYPE="syntaxhighlighter" /> feature
+        if (conf.useScriptTags)
+            elements = elements.concat(getSyntaxHighlighterScriptTags());
+
+        if (elements.length === 0)
+            return result;
+
+        for (var i = 0, l = elements.length; i < l; i++)
+        {
+            var item = {
+                target: elements[i],
+                // local params take precedence over globals
+                params: merge(globalParams, parseParams(elements[i].className))
+            };
+
+            if (item.params['brush'] == null)
+                continue;
+
+            result.push(item);
+        }
+
+        return result;
+    },
+
+    /**
+     * Shorthand to highlight all elements on the page that are marked as
+     * SyntaxHighlighter source code.
+     *
+     * @param {Object} globalParams     Optional parameters which override element's
+     *                                  parameters. Only used if element is specified.
+     *
+     * @param {Object} element  Optional element to highlight. If none is
+     *                          provided, all elements in the current document
+     *                          are highlighted.
+     */
+    highlight: function(globalParams, element)
+    {
+        var elements = this.findElements(globalParams, element),
+            propertyName = 'innerHTML',
+            highlighter = null,
+            conf = sh.config
+            ;
+
+        if (elements.length === 0)
+            return;
+
+        for (var i = 0, l = elements.length; i < l; i++)
+        {
+            var element = elements[i],
+                target = element.target,
+                params = element.params,
+                brushName = params.brush,
+                code
+                ;
+
+            if (brushName == null)
+                continue;
+
+            // Instantiate a brush
+            if (params['html-script'] == 'true' || sh.defaults['html-script'] == true)
+            {
+                highlighter = new sh.HtmlScript(brushName);
+                brushName = 'htmlscript';
+            }
+            else
+            {
+                var brush = findBrush(brushName);
+
+                if (brush)
+                    highlighter = new brush();
+                else
+                    continue;
+            }
+
+            code = target[propertyName];
+
+            // remove CDATA from <SCRIPT/> tags if it's present
+            if (conf.useScriptTags)
+                code = stripCData(code);
+
+            // Inject title if the attribute is present
+            if ((target.title || '') != '')
+                params.title = target.title;
+
+            params['brush'] = brushName;
+            highlighter.init(params);
+            element = highlighter.getDiv(code);
+
+            // carry over ID
+            if ((target.id || '') != '')
+                element.id = target.id;
+
+            target.parentNode.replaceChild(element, target);
+        }
+    },
+
+    /**
+     * Main entry point for the SyntaxHighlighter.
+     * @param {Object} params Optional params to apply to all highlighted elements.
+     */
+    all: function(params)
+    {
+        attachEvent(
+            window,
+            'load',
+            function() { sh.highlight(params); }
+        );
+    }
+}; // end of sh
+
+/**
+ * Checks if target DOM elements has specified CSS class.
+ * @param {DOMElement} target Target DOM element to check.
+ * @param {String} className Name of the CSS class to check for.
+ * @return {Boolean} Returns true if class name is present, false otherwise.
+ */
+function hasClass(target, className)
+{
+    return target.className.indexOf(className) != -1;
+};
+
+/**
+ * Adds CSS class name to the target DOM element.
+ * @param {DOMElement} target Target DOM element.
+ * @param {String} className New CSS class to add.
+ */
+function addClass(target, className)
+{
+    if (!hasClass(target, className))
+        target.className += ' ' + className;
+};
+
+/**
+ * Removes CSS class name from the target DOM element.
+ * @param {DOMElement} target Target DOM element.
+ * @param {String} className CSS class to remove.
+ */
+function removeClass(target, className)
+{
+    target.className = target.className.replace(className, '');
+};
+
+/**
+ * Converts the source to array object. Mostly used for function arguments and
+ * lists returned by getElementsByTagName() which aren't Array objects.
+ * @param {List} source Source list.
+ * @return {Array} Returns array.
+ */
+function toArray(source)
+{
+    var result = [];
+
+    for (var i = 0, l = source.length; i < l; i++)
+        result.push(source[i]);
+
+    return result;
+};
+
+/**
+ * Splits block of text into lines.
+ * @param {String} block Block of text.
+ * @return {Array} Returns array of lines.
+ */
+function splitLines(block)
+{
+    return block.split(/\r?\n/);
+}
+
+/**
+ * Generates HTML ID for the highlighter.
+ * @param {String} highlighterId Highlighter ID.
+ * @return {String} Returns HTML ID.
+ */
+function getHighlighterId(id)
+{
+    var prefix = 'highlighter_';
+    return id.indexOf(prefix) == 0 ? id : prefix + id;
+};
+
+/**
+ * Finds Highlighter instance by ID.
+ * @param {String} highlighterId Highlighter ID.
+ * @return {Highlighter} Returns instance of the highlighter.
+ */
+function getHighlighterById(id)
+{
+    return sh.vars.highlighters[getHighlighterId(id)];
+};
+
+/**
+ * Finds highlighter's DIV container.
+ * @param {String} highlighterId Highlighter ID.
+ * @return {Element} Returns highlighter's DIV element.
+ */
+function getHighlighterDivById(id)
+{
+    return document.getElementById(getHighlighterId(id));
+};
+
+/**
+ * Stores highlighter so that getHighlighterById() can do its thing. Each
+ * highlighter must call this method to preserve itself.
+ * @param {Highilghter} highlighter Highlighter instance.
+ */
+function storeHighlighter(highlighter)
+{
+    sh.vars.highlighters[getHighlighterId(highlighter.id)] = highlighter;
+};
+
+/**
+ * Looks for a child or parent node which has specified classname.
+ * Equivalent to jQuery's $(container).find(".className")
+ * @param {Element} target Target element.
+ * @param {String} search Class name or node name to look for.
+ * @param {Boolean} reverse If set to true, will go up the node tree instead of down.
+ * @return {Element} Returns found child or parent element on null.
+ */
+function findElement(target, search, reverse /* optional */)
+{
+    if (target == null)
+        return null;
+
+    var nodes           = reverse != true ? target.childNodes : [ target.parentNode ],
+        propertyToFind  = { '#' : 'id', '.' : 'className' }[search.substr(0, 1)] || 'nodeName',
+        expectedValue,
+        found
+        ;
+
+    expectedValue = propertyToFind != 'nodeName'
+        ? search.substr(1)
+        : search.toUpperCase()
+        ;
+
+    // main return of the found node
+    if ((target[propertyToFind] || '').indexOf(expectedValue) != -1)
+        return target;
+
+    for (var i = 0, l = nodes.length; nodes && i < l && found == null; i++)
+        found = findElement(nodes[i], search, reverse);
+
+    return found;
+};
+
+/**
+ * Looks for a parent node which has specified classname.
+ * This is an alias to <code>findElement(container, className, true)</code>.
+ * @param {Element} target Target element.
+ * @param {String} className Class name to look for.
+ * @return {Element} Returns found parent element on null.
+ */
+function findParentElement(target, className)
+{
+    return findElement(target, className, true);
+};
+
+/**
+ * Finds an index of element in the array.
+ * @ignore
+ * @param {Object} searchElement
+ * @param {Number} fromIndex
+ * @return {Number} Returns index of element if found; -1 otherwise.
+ */
+function indexOf(array, searchElement, fromIndex)
+{
+    fromIndex = Math.max(fromIndex || 0, 0);
+
+    for (var i = fromIndex, l = array.length; i < l; i++)
+        if(array[i] == searchElement)
+            return i;
+
+    return -1;
+};
+
+/**
+ * Generates a unique element ID.
+ */
+function guid(prefix)
+{
+    return (prefix || '') + Math.round(Math.random() * 1000000).toString();
+};
+
+/**
+ * Merges two objects. Values from obj2 override values in obj1.
+ * Function is NOT recursive and works only for one dimensional objects.
+ * @param {Object} obj1 First object.
+ * @param {Object} obj2 Second object.
+ * @return {Object} Returns combination of both objects.
+ */
+function merge(obj1, obj2)
+{
+    var result = {}, name;
+
+    for (name in obj1)
+        result[name] = obj1[name];
+
+    for (name in obj2)
+        result[name] = obj2[name];
+
+    return result;
+};
+
+/**
+ * Attempts to convert string to boolean.
+ * @param {String} value Input string.
+ * @return {Boolean} Returns true if input was "true", false if input was "false" and value otherwise.
+ */
+function toBoolean(value)
+{
+    var result = { "true" : true, "false" : false }[value];
+    return result == null ? value : result;
+};
+
+/**
+ * Opens up a centered popup window.
+ * @param {String} url      URL to open in the window.
+ * @param {String} name     Popup name.
+ * @param {int} width       Popup width.
+ * @param {int} height      Popup height.
+ * @param {String} options  window.open() options.
+ * @return {Window}         Returns window instance.
+ */
+function popup(url, name, width, height, options)
+{
+    var x = (screen.width - width) / 2,
+        y = (screen.height - height) / 2
+        ;
+
+    options +=  ', left=' + x +
+                ', top=' + y +
+                ', width=' + width +
+                ', height=' + height
+        ;
+    options = options.replace(/^,/, '');
+
+    var win = window.open(url, name, options);
+    win.focus();
+    return win;
+};
+
+/**
+ * Adds event handler to the target object.
+ * @param {Object} obj      Target object.
+ * @param {String} type     Name of the event.
+ * @param {Function} func   Handling function.
+ */
+function attachEvent(obj, type, func, scope)
+{
+    function handler(e)
+    {
+        e = e || window.event;
+
+        if (!e.target)
+        {
+            e.target = e.srcElement;
+            e.preventDefault = function()
+            {
+                this.returnValue = false;
+            };
+        }
+
+        func.call(scope || window, e);
+    };
+
+    if (obj.attachEvent)
+    {
+        obj.attachEvent('on' + type, handler);
+    }
+    else
+    {
+        obj.addEventListener(type, handler, false);
+    }
+};
+
+/**
+ * Displays an alert.
+ * @param {String} str String to display.
+ */
+function alert(str)
+{
+    window.alert(sh.config.strings.alert + str);
+};
+
+/**
+ * Finds a brush by its alias.
+ *
+ * @param {String} alias        Brush alias.
+ * @param {Boolean} showAlert   Suppresses the alert if false.
+ * @return {Brush}              Returns bursh constructor if found, null otherwise.
+ */
+function findBrush(alias, showAlert)
+{
+    var brushes = sh.vars.discoveredBrushes,
+        result = null
+        ;
+
+    if (brushes == null)
+    {
+        brushes = {};
+
+        // Find all brushes
+        for (var brush in sh.brushes)
+        {
+            var info = sh.brushes[brush],
+                aliases = info.aliases
+                ;
+
+            if (aliases == null)
+                continue;
+
+            // keep the brush name
+            info.brushName = brush.toLowerCase();
+
+            for (var i = 0, l = aliases.length; i < l; i++)
+                brushes[aliases[i]] = brush;
+        }
+
+        sh.vars.discoveredBrushes = brushes;
+    }
+
+    result = sh.brushes[brushes[alias]];
+
+    if (result == null && showAlert)
+        alert(sh.config.strings.noBrush + alias);
+
+    return result;
+};
+
+/**
+ * Executes a callback on each line and replaces each line with result from the callback.
+ * @param {Object} str          Input string.
+ * @param {Object} callback     Callback function taking one string argument and returning a string.
+ */
+function eachLine(str, callback)
+{
+    var lines = splitLines(str);
+
+    for (var i = 0, l = lines.length; i < l; i++)
+        lines[i] = callback(lines[i], i);
+
+    // include \r to enable copy-paste on windows (ie8) without getting everything on one line
+    return lines.join('\r\n');
+};
+
+/**
+ * This is a special trim which only removes first and last empty lines
+ * and doesn't affect valid leading space on the first line.
+ *
+ * @param {String} str   Input string
+ * @return {String}      Returns string without empty first and last lines.
+ */
+function trimFirstAndLastLines(str)
+{
+    return str.replace(/^[ ]*[\n]+|[\n]*[ ]*$/g, '');
+};
+
+/**
+ * Parses key/value pairs into hash object.
+ *
+ * Understands the following formats:
+ * - name: word;
+ * - name: [word, word];
+ * - name: "string";
+ * - name: 'string';
+ *
+ * For example:
+ *   name1: value; name2: [value, value]; name3: 'value'
+ *
+ * @param {String} str    Input string.
+ * @return {Object}       Returns deserialized object.
+ */
+function parseParams(str)
+{
+    var match,
+        result = {},
+        arrayRegex = XRegExp("^\\[(?<values>(.*?))\\]$"),
+        pos = 0,
+        regex = XRegExp(
+            "(?<name>[\\w-]+)" +
+            "\\s*:\\s*" +
+            "(?<value>" +
+                "[\\w%#-]+|" +      // word
+                "\\[.*?\\]|" +      // [] array
+                '".*?"|' +          // "" string
+                "'.*?'" +           // '' string
+            ")\\s*;?",
+            "g"
+        )
+        ;
+
+    while ((match = XRegExp.exec(str, regex, pos)) != null)
+    {
+        var value = match.value
+            .replace(/^['"]|['"]$/g, '') // strip quotes from end of strings
+            ;
+
+        // try to parse array value
+        if (value != null && arrayRegex.test(value))
+        {
+            var m = XRegExp.exec(value, arrayRegex);
+            value = m.values.length > 0 ? m.values.split(/\s*,\s*/) : [];
+        }
+
+        result[match.name] = value;
+        pos = match.index + match[0].length;
+    }
+
+    // AJJ - markdown style language option
+    var a = str.match(/language-(.*)/);
+    if ( a ) {
+        result['brush'] = a[1];
+    }
+    else if ( str && str.indexOf('multiline') !== -1 ) {
+        // Markdown code block without a language identifier
+        result['brush'] = 'text';
+    }
+
+    return result;
+};
+
+/**
+ * Wraps each line of the string into <code/> tag with given style applied to it.
+ *
+ * @param {String} str   Input string.
+ * @param {String} css   Style name to apply to the string.
+ * @return {String}      Returns input string with each line surrounded by <span/> tag.
+ */
+function wrapLinesWithCode(str, css)
+{
+    if (str == null || str.length == 0 || str == '\n')
+        return str;
+
+    str = str.replace(/</g, '&lt;');
+
+    // Replace two or more sequential spaces with &nbsp; leaving last space untouched.
+    str = str.replace(/ {2,}/g, function(m)
+    {
+        var spaces = '';
+
+        for (var i = 0, l = m.length; i < l - 1; i++)
+            spaces += sh.config.space;
+
+        return spaces + ' ';
+    });
+
+    // Split each line and apply <span class="...">...</span> to them so that
+    // leading spaces aren't included.
+    if (css != null)
+        str = eachLine(str, function(line)
+        {
+            if (line.length == 0)
+                return '';
+
+            var spaces = '';
+
+            line = line.replace(/^(&nbsp;| )+/, function(s)
+            {
+                spaces = s;
+                return '';
+            });
+
+            if (line.length == 0)
+                return spaces;
+
+            return spaces + '<code class="' + css + '">' + line + '</code>';
+        });
+
+    return str;
+};
+
+/**
+ * Pads number with zeros until it's length is the same as given length.
+ *
+ * @param {Number} number   Number to pad.
+ * @param {Number} length   Max string length with.
+ * @return {String}         Returns a string padded with proper amount of '0'.
+ */
+function padNumber(number, length)
+{
+    var result = number.toString();
+
+    while (result.length < length)
+        result = '0' + result;
+
+    return result;
+};
+
+/**
+ * Replaces tabs with spaces.
+ *
+ * @param {String} code     Source code.
+ * @param {Number} tabSize  Size of the tab.
+ * @return {String}         Returns code with all tabs replaces by spaces.
+ */
+function processTabs(code, tabSize)
+{
+    var tab = '';
+
+    for (var i = 0; i < tabSize; i++)
+        tab += ' ';
+
+    return code.replace(/\t/g, tab);
+};
+
+/**
+ * Replaces tabs with smart spaces.
+ *
+ * @param {String} code    Code to fix the tabs in.
+ * @param {Number} tabSize Number of spaces in a column.
+ * @return {String}        Returns code with all tabs replaces with roper amount of spaces.
+ */
+function processSmartTabs(code, tabSize)
+{
+    var lines = splitLines(code),
+        tab = '\t',
+        spaces = ''
+        ;
+
+    // Create a string with 1000 spaces to copy spaces from...
+    // It's assumed that there would be no indentation longer than that.
+    for (var i = 0; i < 50; i++)
+        spaces += '                    '; // 20 spaces * 50
+
+    // This function inserts specified amount of spaces in the string
+    // where a tab is while removing that given tab.
+    function insertSpaces(line, pos, count)
+    {
+        return line.substr(0, pos)
+            + spaces.substr(0, count)
+            + line.substr(pos + 1, line.length) // pos + 1 will get rid of the tab
+            ;
+    };
+
+    // Go through all the lines and do the 'smart tabs' magic.
+    code = eachLine(code, function(line)
+    {
+        if (line.indexOf(tab) == -1)
+            return line;
+
+        var pos = 0;
+
+        while ((pos = line.indexOf(tab)) != -1)
+        {
+            // This is pretty much all there is to the 'smart tabs' logic.
+            // Based on the position within the line and size of a tab,
+            // calculate the amount of spaces we need to insert.
+            var spaces = tabSize - pos % tabSize;
+            line = insertSpaces(line, pos, spaces);
+        }
+
+        return line;
+    });
+
+    return code;
+};
+
+/**
+ * Performs various string fixes based on configuration.
+ */
+function fixInputString(str)
+{
+    var br = /<br\s*\/?>|&lt;br\s*\/?&gt;/gi;
+
+    if (sh.config.bloggerMode == true)
+        str = str.replace(br, '\n');
+
+    if (sh.config.stripBrs == true)
+        str = str.replace(br, '');
+
+    return str;
+};
+
+/**
+ * Removes all white space at the begining and end of a string.
+ *
+ * @param {String} str   String to trim.
+ * @return {String}      Returns string without leading and following white space characters.
+ */
+function trim(str)
+{
+    return str.replace(/^\s+|\s+$/g, '');
+};
+
+/**
+ * Unindents a block of text by the lowest common indent amount.
+ * @param {String} str   Text to unindent.
+ * @return {String}      Returns unindented text block.
+ */
+function unindent(str)
+{
+    var lines = splitLines(fixInputString(str)),
+        indents = new Array(),
+        regex = /^\s*/,
+        min = 1000
+        ;
+
+    // go through every line and check for common number of indents
+    for (var i = 0, l = lines.length; i < l && min > 0; i++)
+    {
+        var line = lines[i];
+
+        if (trim(line).length == 0)
+            continue;
+
+        var matches = regex.exec(line);
+
+        // In the event that just one line doesn't have leading white space
+        // we can't unindent anything, so bail completely.
+        if (matches == null)
+            return str;
+
+        min = Math.min(matches[0].length, min);
+    }
+
+    // trim minimum common number of white space from the begining of every line
+    if (min > 0)
+        for (var i = 0, l = lines.length; i < l; i++)
+            lines[i] = lines[i].substr(min);
+
+    return lines.join('\n');
+};
+
+/**
+ * Callback method for Array.sort() which sorts matches by
+ * index position and then by length.
+ *
+ * @param {Match} m1    Left object.
+ * @param {Match} m2    Right object.
+ * @return {Number}     Returns -1, 0 or -1 as a comparison result.
+ */
+function matchesSortCallback(m1, m2)
+{
+    // sort matches by index first
+    if(m1.index < m2.index)
+        return -1;
+    else if(m1.index > m2.index)
+        return 1;
+    else
+    {
+        // if index is the same, sort by length
+        if(m1.length < m2.length)
+            return -1;
+        else if(m1.length > m2.length)
+            return 1;
+    }
+
+    return 0;
+};
+
+/**
+ * Executes given regular expression on provided code and returns all
+ * matches that are found.
+ *
+ * @param {String} code    Code to execute regular expression on.
+ * @param {Object} regex   Regular expression item info from <code>regexList</code> collection.
+ * @return {Array}         Returns a list of Match objects.
+ */
+function getMatches(code, regexInfo)
+{
+    function defaultAdd(match, regexInfo)
+    {
+        return match[0];
+    };
+
+    var index = 0,
+        match = null,
+        matches = [],
+        func = regexInfo.func ? regexInfo.func : defaultAdd
+        pos = 0
+        ;
+
+    while((match = XRegExp.exec(code, regexInfo.regex, pos)) != null)
+    {
+        var resultMatch = func(match, regexInfo);
+
+        if (typeof(resultMatch) == 'string')
+            resultMatch = [new sh.Match(resultMatch, match.index, regexInfo.css)];
+
+        matches = matches.concat(resultMatch);
+        pos = match.index + match[0].length;
+    }
+
+    return matches;
+};
+
+/**
+ * Turns all URLs in the code into <a/> tags.
+ * @param {String} code Input code.
+ * @return {String} Returns code with </a> tags.
+ */
+function processUrls(code)
+{
+    var gt = /(.*)((&gt;|&lt;).*)/;
+
+    return code.replace(sh.regexLib.url, function(m)
+    {
+        var suffix = '',
+            match = null
+            ;
+
+        // We include &lt; and &gt; in the URL for the common cases like <http://google.com>
+        // The problem is that they get transformed into &lt;http://google.com&gt;
+        // Where as &gt; easily looks like part of the URL string.
+
+        if (match = gt.exec(m))
+        {
+            m = match[1];
+            suffix = match[2];
+        }
+
+        return '<a href="' + m + '">' + m + '</a>' + suffix;
+    });
+};
+
+/**
+ * Finds all <SCRIPT TYPE="syntaxhighlighter" /> elementss.
+ * @return {Array} Returns array of all found SyntaxHighlighter tags.
+ */
+function getSyntaxHighlighterScriptTags()
+{
+    var tags = document.getElementsByTagName('script'),
+        result = []
+        ;
+
+    for (var i = 0, l = tags.length; i < l; i++)
+        if (tags[i].type == 'syntaxhighlighter')
+            result.push(tags[i]);
+
+    return result;
+};
+
+/**
+ * Strips <![CDATA[]]> from <SCRIPT /> content because it should be used
+ * there in most cases for XHTML compliance.
+ * @param {String} original Input code.
+ * @return {String} Returns code without leading <![CDATA[]]> tags.
+ */
+function stripCData(original)
+{
+    var left = '<![CDATA[',
+        right = ']]>',
+        // for some reason IE inserts some leading blanks here
+        copy = trim(original),
+        changed = false,
+        leftLength = left.length,
+        rightLength = right.length
+        ;
+
+    if (copy.indexOf(left) == 0)
+    {
+        copy = copy.substring(leftLength);
+        changed = true;
+    }
+
+    var copyLength = copy.length;
+
+    if (copy.indexOf(right) == copyLength - rightLength)
+    {
+        copy = copy.substring(0, copyLength - rightLength);
+        changed = true;
+    }
+
+    return changed ? copy : original;
+};
+
+
+/**
+ * Quick code mouse double click handler.
+ */
+function quickCodeHandler(e)
+{
+    var target = e.target,
+        highlighterDiv = findParentElement(target, '.syntaxhighlighter'),
+        container = findParentElement(target, '.container'),
+        textarea = document.createElement('textarea'),
+        highlighter
+        ;
+
+    if (!container || !highlighterDiv || findElement(container, 'textarea'))
+        return;
+
+    highlighter = getHighlighterById(highlighterDiv.id);
+
+    // add source class name
+    addClass(highlighterDiv, 'source');
+
+    // Have to go over each line and grab it's text, can't just do it on the
+    // container because Firefox loses all \n where as Webkit doesn't.
+    var lines = container.childNodes,
+        code = []
+        ;
+
+    for (var i = 0, l = lines.length; i < l; i++)
+        code.push(lines[i].innerText || lines[i].textContent);
+
+    // using \r instead of \r or \r\n makes this work equally well on IE, FF and Webkit
+    code = code.join('\r');
+
+    // For Webkit browsers, replace nbsp with a breaking space
+    code = code.replace(/\u00a0/g, " ");
+
+    // inject <textarea/> tag
+    textarea.appendChild(document.createTextNode(code));
+    container.appendChild(textarea);
+
+    // preselect all text
+    textarea.focus();
+    textarea.select();
+
+    // set up handler for lost focus
+    attachEvent(textarea, 'blur', function(e)
+    {
+        textarea.parentNode.removeChild(textarea);
+        removeClass(highlighterDiv, 'source');
+    });
+};
+
+/**
+ * Match object.
+ */
+sh.Match = function(value, index, css)
+{
+    this.value = value;
+    this.index = index;
+    this.length = value.length;
+    this.css = css;
+    this.brushName = null;
+};
+
+sh.Match.prototype.toString = function()
+{
+    return this.value;
+};
+
+/**
+ * Simulates HTML code with a scripting language embedded.
+ *
+ * @param {String} scriptBrushName Brush name of the scripting language.
+ */
+sh.HtmlScript = function(scriptBrushName)
+{
+    var brushClass = findBrush(scriptBrushName),
+        scriptBrush,
+        xmlBrush = new sh.brushes.Xml(),
+        bracketsRegex = null,
+        ref = this,
+        methodsToExpose = 'getDiv getHtml init'.split(' ')
+        ;
+
+    if (brushClass == null)
+        return;
+
+    scriptBrush = new brushClass();
+
+    for(var i = 0, l = methodsToExpose.length; i < l; i++)
+        // make a closure so we don't lose the name after i changes
+        (function() {
+            var name = methodsToExpose[i];
+
+            ref[name] = function()
+            {
+                return xmlBrush[name].apply(xmlBrush, arguments);
+            };
+        })();
+
+    if (scriptBrush.htmlScript == null)
+    {
+        alert(sh.config.strings.brushNotHtmlScript + scriptBrushName);
+        return;
+    }
+
+    xmlBrush.regexList.push(
+        { regex: scriptBrush.htmlScript.code, func: process }
+    );
+
+    function offsetMatches(matches, offset)
+    {
+        for (var j = 0, l = matches.length; j < l; j++)
+            matches[j].index += offset;
+    }
+
+    function process(match, info)
+    {
+        var code = match.code,
+            matches = [],
+            regexList = scriptBrush.regexList,
+            offset = match.index + match.left.length,
+            htmlScript = scriptBrush.htmlScript,
+            result
+            ;
+
+        // add all matches from the code
+        for (var i = 0, l = regexList.length; i < l; i++)
+        {
+            result = getMatches(code, regexList[i]);
+            offsetMatches(result, offset);
+            matches = matches.concat(result);
+        }
+
+        // add left script bracket
+        if (htmlScript.left != null && match.left != null)
+        {
+            result = getMatches(match.left, htmlScript.left);
+            offsetMatches(result, match.index);
+            matches = matches.concat(result);
+        }
+
+        // add right script bracket
+        if (htmlScript.right != null && match.right != null)
+        {
+            result = getMatches(match.right, htmlScript.right);
+            offsetMatches(result, match.index + match[0].lastIndexOf(match.right));
+            matches = matches.concat(result);
+        }
+
+        for (var j = 0, l = matches.length; j < l; j++)
+            matches[j].brushName = brushClass.brushName;
+
+        return matches;
+    }
+};
+
+/**
+ * Main Highlither class.
+ * @constructor
+ */
+sh.Highlighter = function()
+{
+    // not putting any code in here because of the prototype inheritance
+};
+
+sh.Highlighter.prototype = {
+    /**
+     * Returns value of the parameter passed to the highlighter.
+     * @param {String} name             Name of the parameter.
+     * @param {Object} defaultValue     Default value.
+     * @return {Object}                 Returns found value or default value otherwise.
+     */
+    getParam: function(name, defaultValue)
+    {
+        var result = this.params[name];
+        return toBoolean(result == null ? defaultValue : result);
+    },
+
+    /**
+     * Shortcut to document.createElement().
+     * @param {String} name     Name of the element to create (DIV, A, etc).
+     * @return {HTMLElement}    Returns new HTML element.
+     */
+    create: function(name)
+    {
+        return document.createElement(name);
+    },
+
+    /**
+     * Applies all regular expression to the code and stores all found
+     * matches in the `this.matches` array.
+     * @param {Array} regexList     List of regular expressions.
+     * @param {String} code         Source code.
+     * @return {Array}              Returns list of matches.
+     */
+    findMatches: function(regexList, code)
+    {
+        var result = [];
+
+        if (regexList != null)
+            for (var i = 0, l = regexList.length; i < l; i++)
+                // BUG: length returns len+1 for array if methods added to prototype chain (oising@gmail.com)
+                if (typeof (regexList[i]) == "object")
+                    result = result.concat(getMatches(code, regexList[i]));
+
+        // sort and remove nested the matches
+        return this.removeNestedMatches(result.sort(matchesSortCallback));
+    },
+
+    /**
+     * Checks to see if any of the matches are inside of other matches.
+     * This process would get rid of highligted strings inside comments,
+     * keywords inside strings and so on.
+     */
+    removeNestedMatches: function(matches)
+    {
+        // Optimized by Jose Prado (http://joseprado.com)
+        for (var i = 0, l = matches.length; i < l; i++)
+        {
+            if (matches[i] === null)
+                continue;
+
+            var itemI = matches[i],
+                itemIEndPos = itemI.index + itemI.length
+                ;
+
+            for (var j = i + 1, l = matches.length; j < l && matches[i] !== null; j++)
+            {
+                var itemJ = matches[j];
+
+                if (itemJ === null)
+                    continue;
+                else if (itemJ.index > itemIEndPos)
+                    break;
+                else if (itemJ.index == itemI.index && itemJ.length > itemI.length)
+                    matches[i] = null;
+                else if (itemJ.index >= itemI.index && itemJ.index < itemIEndPos)
+                    matches[j] = null;
+            }
+        }
+
+        return matches;
+    },
+
+    /**
+     * Creates an array containing integer line numbers starting from the 'first-line' param.
+     * @return {Array} Returns array of integers.
+     */
+    figureOutLineNumbers: function(code)
+    {
+        var lines = [],
+            firstLine = parseInt(this.getParam('first-line'))
+            ;
+
+        eachLine(code, function(line, index)
+        {
+            lines.push(index + firstLine);
+        });
+
+        return lines;
+    },
+
+    /**
+     * Determines if specified line number is in the highlighted list.
+     */
+    isLineHighlighted: function(lineNumber)
+    {
+        var list = this.getParam('highlight', []);
+
+        if (typeof(list) != 'object' && list.push == null)
+            list = [ list ];
+
+        return indexOf(list, lineNumber.toString()) != -1;
+    },
+
+    /**
+     * Generates HTML markup for a single line of code while determining alternating line style.
+     * @param {Integer} lineNumber  Line number.
+     * @param {String} code Line    HTML markup.
+     * @return {String}             Returns HTML markup.
+     */
+    getLineHtml: function(lineIndex, lineNumber, code)
+    {
+        var classes = [
+            'line',
+            'number' + lineNumber,
+            'index' + lineIndex,
+            'alt' + (lineNumber % 2 == 0 ? 1 : 2).toString()
+        ];
+
+        if (this.isLineHighlighted(lineNumber))
+            classes.push('highlighted');
+
+        if (lineNumber == 0)
+            classes.push('break');
+
+        return '<div class="' + classes.join(' ') + '">' + code + '</div>';
+    },
+
+    /**
+     * Generates HTML markup for line number column.
+     * @param {String} code         Complete code HTML markup.
+     * @param {Array} lineNumbers   Calculated line numbers.
+     * @return {String}             Returns HTML markup.
+     */
+    getLineNumbersHtml: function(code, lineNumbers)
+    {
+        var html = '',
+            count = splitLines(code).length,
+            firstLine = parseInt(this.getParam('first-line')),
+            pad = this.getParam('pad-line-numbers')
+            ;
+
+        if (pad == true)
+            pad = (firstLine + count - 1).toString().length;
+        else if (isNaN(pad) == true)
+            pad = 0;
+
+        for (var i = 0; i < count; i++)
+        {
+            var lineNumber = lineNumbers ? lineNumbers[i] : firstLine + i,
+                code = lineNumber == 0 ? sh.config.space : padNumber(lineNumber, pad)
+                ;
+
+            html += this.getLineHtml(i, lineNumber, code);
+        }
+
+        return html;
+    },
+
+    /**
+     * Splits block of text into individual DIV lines.
+     * @param {String} code         Code to highlight.
+     * @param {Array} lineNumbers   Calculated line numbers.
+     * @return {String}             Returns highlighted code in HTML form.
+     */
+    getCodeLinesHtml: function(html, lineNumbers)
+    {
+        html = trim(html);
+
+        var lines = splitLines(html),
+            padLength = this.getParam('pad-line-numbers'),
+            firstLine = parseInt(this.getParam('first-line')),
+            html = '',
+            brushName = this.getParam('brush')
+            ;
+
+        for (var i = 0, l = lines.length; i < l; i++)
+        {
+            var line = lines[i],
+                indent = /^(&nbsp;|\s)+/.exec(line),
+                spaces = null,
+                lineNumber = lineNumbers ? lineNumbers[i] : firstLine + i;
+                ;
+
+            if (indent != null)
+            {
+                spaces = indent[0].toString();
+                line = line.substr(spaces.length);
+                spaces = spaces.replace(' ', sh.config.space);
+            }
+
+            line = trim(line);
+
+            if (line.length == 0)
+                line = sh.config.space;
+
+            html += this.getLineHtml(
+                i,
+                lineNumber,
+                (spaces != null ? '<code class="' + brushName + ' spaces">' + spaces + '</code>' : '') + line
+            );
+        }
+
+        return html;
+    },
+
+    /**
+     * Returns HTML for the table title or empty string if title is null.
+     */
+    getTitleHtml: function(title)
+    {
+        return title ? '<caption>' + title + '</caption>' : '';
+    },
+
+    /**
+     * Finds all matches in the source code.
+     * @param {String} code     Source code to process matches in.
+     * @param {Array} matches   Discovered regex matches.
+     * @return {String} Returns formatted HTML with processed mathes.
+     */
+    getMatchesHtml: function(code, matches)
+    {
+        var pos = 0,
+            result = '',
+            brushName = this.getParam('brush', '')
+            ;
+
+        function getBrushNameCss(match)
+        {
+            var result = match ? (match.brushName || brushName) : brushName;
+            return result ? result + ' ' : '';
+        };
+
+        // Finally, go through the final list of matches and pull the all
+        // together adding everything in between that isn't a match.
+        for (var i = 0, l = matches.length; i < l; i++)
+        {
+            var match = matches[i],
+                matchBrushName
+                ;
+
+            if (match === null || match.length === 0)
+                continue;
+
+            matchBrushName = getBrushNameCss(match);
+
+            result += wrapLinesWithCode(code.substr(pos, match.index - pos), matchBrushName + 'plain')
+                    + wrapLinesWithCode(match.value, matchBrushName + match.css)
+                    ;
+
+            pos = match.index + match.length + (match.offset || 0);
+        }
+
+        // don't forget to add whatever's remaining in the string
+        result += wrapLinesWithCode(code.substr(pos), getBrushNameCss() + 'plain');
+
+        return result;
+    },
+
+    /**
+     * Generates HTML markup for the whole syntax highlighter.
+     * @param {String} code Source code.
+     * @return {String} Returns HTML markup.
+     */
+    getHtml: function(code)
+    {
+        var html = '',
+            classes = [ 'syntaxhighlighter' ],
+            tabSize,
+            matches,
+            lineNumbers
+            ;
+
+        // process light mode
+        if (this.getParam('light') == true)
+            this.params.toolbar = this.params.gutter = false;
+
+        className = 'syntaxhighlighter';
+
+        if (this.getParam('collapse') == true)
+            classes.push('collapsed');
+
+        if ((gutter = this.getParam('gutter')) == false)
+            classes.push('nogutter');
+
+        // add custom user style name
+        classes.push(this.getParam('class-name'));
+
+        // add brush alias to the class name for custom CSS
+        classes.push(this.getParam('brush'));
+
+        code = trimFirstAndLastLines(code)
+            .replace(/\r/g, ' ') // IE lets these buggers through
+            ;
+
+        tabSize = this.getParam('tab-size');
+
+        // replace tabs with spaces
+        code = this.getParam('smart-tabs') == true
+            ? processSmartTabs(code, tabSize)
+            : processTabs(code, tabSize)
+            ;
+
+        // unindent code by the common indentation
+        if (this.getParam('unindent'))
+            code = unindent(code);
+
+        if (gutter)
+            lineNumbers = this.figureOutLineNumbers(code);
+
+        // find matches in the code using brushes regex list
+        matches = this.findMatches(this.regexList, code);
+        // processes found matches into the html
+        html = this.getMatchesHtml(code, matches);
+        // finally, split all lines so that they wrap well
+        html = this.getCodeLinesHtml(html, lineNumbers);
+
+        // finally, process the links
+        if (this.getParam('auto-links'))
+            html = processUrls(html);
+
+        if (typeof(navigator) != 'undefined' && navigator.userAgent && navigator.userAgent.match(/MSIE/))
+            classes.push('ie');
+
+        html =
+            '<div id="' + getHighlighterId(this.id) + '" class="' + classes.join(' ') + '">'
+                + (this.getParam('toolbar') ? sh.toolbar.getHtml(this) : '')
+                + '<table border="0" cellpadding="0" cellspacing="0">'
+                    + this.getTitleHtml(this.getParam('title'))
+                    + '<tbody>'
+                        + '<tr>'
+                            + (gutter ? '<td class="gutter">' + this.getLineNumbersHtml(code) + '</td>' : '')
+                            + '<td class="code">'
+                                + '<div class="container">'
+                                    + html
+                                + '</div>'
+                            + '</td>'
+                        + '</tr>'
+                    + '</tbody>'
+                + '</table>'
+            + '</div>'
+            ;
+
+        return html;
+    },
+
+    /**
+     * Highlights the code and returns complete HTML.
+     * @param {String} code     Code to highlight.
+     * @return {Element}        Returns container DIV element with all markup.
+     */
+    getDiv: function(code)
+    {
+        if (code === null)
+            code = '';
+
+        this.code = code;
+
+        var div = this.create('div');
+
+        // create main HTML
+        div.innerHTML = this.getHtml(code);
+
+        // set up click handlers
+        if (this.getParam('toolbar'))
+            attachEvent(findElement(div, '.toolbar'), 'click', sh.toolbar.handler);
+
+        if (this.getParam('quick-code'))
+            attachEvent(findElement(div, '.code'), 'dblclick', quickCodeHandler);
+
+        return div;
+    },
+
+    /**
+     * Initializes the highlighter/brush.
+     *
+     * Constructor isn't used for initialization so that nothing executes during necessary
+     * `new SyntaxHighlighter.Highlighter()` call when setting up brush inheritence.
+     *
+     * @param {Hash} params Highlighter parameters.
+     */
+    init: function(params)
+    {
+        this.id = guid();
+
+        // register this instance in the highlighters list
+        storeHighlighter(this);
+
+        // local params take precedence over defaults
+        this.params = merge(sh.defaults, params || {})
+
+        // process light mode
+        if (this.getParam('light') == true)
+            this.params.toolbar = this.params.gutter = false;
+    },
+
+    /**
+     * Converts space separated list of keywords into a regular expression string.
+     * @param {String} str    Space separated keywords.
+     * @return {String}       Returns regular expression string.
+     */
+    getKeywords: function(str)
+    {
+        str = str
+            .replace(/^\s+|\s+$/g, '')
+            .replace(/\s+/g, '|')
+            ;
+
+        return '\\b(?:' + str + ')\\b';
+    },
+
+    /**
+     * Makes a brush compatible with the `html-script` functionality.
+     * @param {Object} regexGroup Object containing `left` and `right` regular expressions.
+     */
+    forHtmlScript: function(regexGroup)
+    {
+        var regex = { 'end' : regexGroup.right.source };
+
+        if(regexGroup.eof)
+            regex.end = "(?:(?:" + regex.end + ")|$)";
+
+        this.htmlScript = {
+            left : { regex: regexGroup.left, css: 'script' },
+            right : { regex: regexGroup.right, css: 'script' },
+            code : XRegExp(
+                "(?<left>" + regexGroup.left.source + ")" +
+                "(?<code>.*?)" +
+                "(?<right>" + regex.end + ")",
+                "sgi"
+                )
+        };
+    }
+}; // end of Highlighter
+
+return sh;
+}(); // end of anonymous function
+
+// CommonJS
+typeof(exports) != 'undefined' ? exports.SyntaxHighlighter = SyntaxHighlighter : null;
+
+
+
+// JS brush
+;(function()
+{
+    // CommonJS
+    SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null);
+
+    function Brush()
+    {
+        var keywords =  'break case catch class continue ' +
+                'default delete do else enum export extends false  ' +
+                'for function if implements import in instanceof ' +
+                'interface let new null package private protected ' +
+                'static return super switch ' +
+                'this throw true try typeof var while with yield';
+
+        var r = SyntaxHighlighter.regexLib;
+        
+        this.regexList = [
+            { regex: r.multiLineDoubleQuotedString,                 css: 'string' },            // double quoted strings
+            { regex: r.multiLineSingleQuotedString,                 css: 'string' },            // single quoted strings
+            { regex: r.singleLineCComments,                         css: 'comments' },          // one line comments
+            { regex: r.multiLineCComments,                          css: 'comments' },          // multiline comments
+            { regex: /\s*#.*/gm,                                    css: 'preprocessor' },      // preprocessor tags like #region and #endregion
+            { regex: new RegExp(this.getKeywords(keywords), 'gm'),  css: 'keyword' }            // keywords
+            ];
+    
+        this.forHtmlScript(r.scriptScriptTags);
+    };
+
+    Brush.prototype = new SyntaxHighlighter.Highlighter();
+    Brush.aliases   = ['js', 'jscript', 'javascript', 'json'];
+
+    SyntaxHighlighter.brushes.JScript = Brush;
+
+    // CommonJS
+    typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
+
+
+
+// XML / HTML brush
+;(function()
+{
+    // CommonJS
+    SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null);
+
+    function Brush()
+    {
+        function process(match, regexInfo)
+        {
+            var constructor = SyntaxHighlighter.Match,
+                code = match[0],
+                tag = XRegExp.exec(code, XRegExp('(&lt;|<)[\\s\\/\\?!]*(?<name>[:\\w-\\.]+)', 'xg')),
+                result = []
+                ;
+
+            if (match.attributes != null)
+            {
+                var attributes,
+                    pos = 0,
+                    regex = XRegExp('(?<name> [\\w:.-]+)' +
+                                    '\\s*=\\s*' +
+                                    '(?<value> ".*?"|\'.*?\'|\\w+)',
+                                    'xg');
+
+                while ((attributes = XRegExp.exec(code, regex, pos)) != null)
+                {
+                    result.push(new constructor(attributes.name, match.index + attributes.index, 'color1'));
+                    result.push(new constructor(attributes.value, match.index + attributes.index + attributes[0].indexOf(attributes.value), 'string'));
+                    pos = attributes.index + attributes[0].length;
+                }
+            }
+
+            if (tag != null)
+                result.push(
+                    new constructor(tag.name, match.index + tag[0].indexOf(tag.name), 'keyword')
+                );
+
+            return result;
+        }
+
+        this.regexList = [
+            { regex: XRegExp('(\\&lt;|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\\&gt;|>)', 'gm'),           css: 'color2' },    // <![ ... [ ... ]]>
+            { regex: SyntaxHighlighter.regexLib.xmlComments,                                                css: 'comments' },  // <!-- ... -->
+            { regex: XRegExp('(&lt;|<)[\\s\\/\\?!]*(\\w+)(?<attributes>.*?)[\\s\\/\\?]*(&gt;|>)', 'sg'), func: process }
+        ];
+    };
+
+    Brush.prototype = new SyntaxHighlighter.Highlighter();
+    Brush.aliases   = ['xml', 'xhtml', 'xslt', 'html', 'plist'];
+
+    SyntaxHighlighter.brushes.Xml = Brush;
+
+    // CommonJS
+    typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
+
+
+
+// CSS brush
+;(function()
+{
+    // CommonJS
+    SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null);
+
+    function Brush()
+    {
+        function getKeywordsCSS(str)
+        {
+            return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b';
+        };
+    
+        function getValuesCSS(str)
+        {
+            return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b';
+        };
+
+        var keywords =  'ascent azimuth background-attachment background-color background-image background-position ' +
+                        'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' +
+                        'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' +
+                        'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' +
+                        'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' +
+                        'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' +
+                        'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' +
+                        'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' +
+                        'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' +
+                        'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' +
+                        'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' +
+                        'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' +
+                        'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' +
+                        'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';
+
+        var values =    'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+
+                        'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+
+                        'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double '+
+                        'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+
+                        'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+
+                        'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+
+                        'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+
+                        'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+
+                        'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+
+                        'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+
+                        'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+
+                        'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+
+                        'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+
+                        'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';
+
+        var fonts =     '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif';
+    
+        this.regexList = [
+            { regex: SyntaxHighlighter.regexLib.multiLineCComments,     css: 'comments' },  // multiline comments
+            { regex: SyntaxHighlighter.regexLib.doubleQuotedString,     css: 'string' },    // double quoted strings
+            { regex: SyntaxHighlighter.regexLib.singleQuotedString,     css: 'string' },    // single quoted strings
+            { regex: /\#[a-fA-F0-9]{3,6}/g,                             css: 'value' },     // html colors
+            { regex: /(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)/g,               css: 'value' },     // sizes
+            { regex: /!important/g,                                     css: 'color3' },    // !important
+            { regex: new RegExp(getKeywordsCSS(keywords), 'gm'),        css: 'keyword' },   // keywords
+            { regex: new RegExp(getValuesCSS(values), 'g'),             css: 'value' },     // values
+            { regex: new RegExp(this.getKeywords(fonts), 'g'),          css: 'color1' }     // fonts
+            ];
+
+        this.forHtmlScript({ 
+            left: /(&lt;|<)\s*style.*?(&gt;|>)/gi, 
+            right: /(&lt;|<)\/\s*style\s*(&gt;|>)/gi 
+            });
+    };
+
+    Brush.prototype = new SyntaxHighlighter.Highlighter();
+    Brush.aliases   = ['css'];
+
+    SyntaxHighlighter.brushes.CSS = Brush;
+
+    // CommonJS
+    typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
+
+
+
+// PHP brush
+;(function()
+{
+    // CommonJS
+    SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null);
+
+    function Brush()
+    {
+        var funcs   =   'abs acos acosh addcslashes addslashes ' +
+                        'array_change_key_case array_chunk array_combine array_count_values array_diff '+
+                        'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+
+                        'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+
+                        'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+
+                        'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+
+                        'array_push array_rand array_reduce array_reverse array_search array_shift '+
+                        'array_slice array_splice array_sum array_udiff array_udiff_assoc '+
+                        'array_udiff_uassoc array_uintersect array_uintersect_assoc '+
+                        'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+
+                        'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+
+                        'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+
+                        'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+
+                        'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+
+                        'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+
+                        'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+
+                        'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+
+                        'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+
+                        'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+
+                        'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+
+                        'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+
+                        'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+
+                        'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+
+                        'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+
+                        'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+
+                        'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+
+                        'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+
+                        'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+
+                        'parse_ini_file parse_str parse_url passthru pathinfo print readlink realpath rewind rewinddir rmdir '+
+                        'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+
+                        'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+
+                        'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+
+                        'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+
+                        'strtoupper strtr strval substr substr_compare';
+
+        var keywords =  'abstract and array as break case catch cfunction class clone const continue declare default die do ' +
+                        'else elseif enddeclare endfor endforeach endif endswitch endwhile extends final finally for foreach ' +
+                        'function global goto if implements include include_once interface instanceof insteadof namespace new ' +
+                        'old_function or private protected public return require require_once static switch ' +
+                        'trait throw try use var while xor yield ';
+        
+        var constants   = '__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__';
+
+        this.regexList = [
+            { regex: SyntaxHighlighter.regexLib.singleLineCComments,    css: 'comments' },          // one line comments
+            { regex: SyntaxHighlighter.regexLib.multiLineCComments,     css: 'comments' },          // multiline comments
+            { regex: SyntaxHighlighter.regexLib.doubleQuotedString,     css: 'string' },            // double quoted strings
+            { regex: SyntaxHighlighter.regexLib.singleQuotedString,     css: 'string' },            // single quoted strings
+            { regex: /\$\w+/g,                                          css: 'variable' },          // variables
+            { regex: new RegExp(this.getKeywords(funcs), 'gmi'),        css: 'functions' },         // common functions
+            { regex: new RegExp(this.getKeywords(constants), 'gmi'),    css: 'constants' },         // constants
+            { regex: new RegExp(this.getKeywords(keywords), 'gm'),      css: 'keyword' }            // keyword
+            ];
+
+        this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
+    };
+
+    Brush.prototype = new SyntaxHighlighter.Highlighter();
+    Brush.aliases   = ['php'];
+
+    SyntaxHighlighter.brushes.Php = Brush;
+
+    // CommonJS
+    typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
+
+
+;(function()
+{
+    // CommonJS
+    SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null);
+
+    function Brush()
+    {
+        var funcs   =   'abs avg case cast coalesce convert count current_timestamp ' +
+                        'current_user day isnull left lower month nullif replace right ' +
+                        'session_user space substring sum system_user upper user year';
+
+        var keywords =  'absolute action add after alter as asc at authorization begin bigint ' +
+                        'binary bit by cascade char character check checkpoint close collate ' +
+                        'column commit committed connect connection constraint contains continue ' +
+                        'create cube current current_date current_time cursor database date ' +
+                        'deallocate dec decimal declare default delete desc distinct double drop ' +
+                        'dynamic else end end-exec escape except exec execute false fetch first ' +
+                        'float for force foreign forward free from full function global goto grant ' +
+                        'group grouping having hour ignore index inner insensitive insert instead ' +
+                        'int integer intersect into is isolation key last level load local max min ' +
+                        'minute modify move name national nchar next no numeric of off on only ' +
+                        'open option order out output partial password precision prepare primary ' +
+                        'prior privileges procedure public read real references relative repeatable ' +
+                        'restrict return returns revoke rollback rollup rows rule schema scroll ' +
+                        'second section select sequence serializable set size smallint static ' +
+                        'statistics table temp temporary then time timestamp to top transaction ' +
+                        'translation trigger true truncate uncommitted union unique update values ' +
+                        'varchar varying view when where with work';
+
+        var operators = 'all and any between cross in join like not null or outer some';
+
+        this.regexList = [
+            { regex: /--(.*)$/gm,                                               css: 'comments' },   // one line comments
+            { regex: /\/\*([^\*][\s\S]*?)?\*\//gm,                              css: 'comments' },   // multi line comments
+            { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString,    css: 'string' },     // double quoted strings
+            { regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString,    css: 'string' },     // single quoted strings
+            { regex: new RegExp(this.getKeywords(funcs), 'gmi'),                css: 'color2' },     // functions
+            { regex: new RegExp(this.getKeywords(operators), 'gmi'),            css: 'color1' },     // operators and such
+            { regex: new RegExp(this.getKeywords(keywords), 'gmi'),             css: 'keyword' }     // keyword
+            ];
+    };
+
+    Brush.prototype = new SyntaxHighlighter.Highlighter();
+    Brush.aliases   = ['sql'];
+
+    SyntaxHighlighter.brushes.Sql = Brush;
+
+    // CommonJS
+    typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
+
+
+
+;(function()
+{
+    // CommonJS
+    SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null);
+
+    function Brush()
+    {
+    };
+
+    Brush.prototype = new SyntaxHighlighter.Highlighter();
+    Brush.aliases   = ['text', 'plain'];
+
+    SyntaxHighlighter.brushes.Plain = Brush;
+
+    // CommonJS
+    typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
+
+
+SyntaxHighlighter.all();
diff --git a/public/admin/js/DataTables/examples/server_side/custom_vars.html b/public/admin/js/DataTables/examples/server_side/custom_vars.html
new file mode 100644
index 0000000000000000000000000000000000000000..7b570225541830b931e3c28b3b4042a200ebb934
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/custom_vars.html
@@ -0,0 +1,323 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Custom HTTP variables</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"processing": true,
+		"serverSide": true,
+		"ajax": {
+			"url": "scripts/server_processing.php",
+			"data": function ( d ) {
+				d.myKey = "myValue";
+				// d.custom = $('#myInput').val();
+				// etc
+			}
+		}
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Custom HTTP variables</span></h1>
+
+			<div class="info">
+				<p>It can often be useful to send extra information to the server when utilising DataTables'
+				server-side processing option. This is done by using the <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> option's <code>data</code> parameter
+				which can be used in one of two different ways:</p>
+
+				<ul class="markdown">
+					<li><code>object</code> - An object data to send to the server. This is useful for adding static
+					data to the request.</li>
+					<li><code>function</code> - A function which will manipulate the data object to send to the server,
+					adding values as required. Using the <code>data</code> parameter as a function allows the
+					additional data to evaluated and added to the request at the time the request is made.</li>
+				</ul>
+
+				<p>The example below shows server-side processing being used with an extra parameter being sent to the
+				server by using the <code>ajax.data</code> option as a function.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;processing&quot;: true,
+		&quot;serverSide&quot;: true,
+		&quot;ajax&quot;: {
+			&quot;url&quot;: &quot;scripts/server_processing.php&quot;,
+			&quot;data&quot;: function ( d ) {
+				d.myKey = &quot;myValue&quot;;
+				// d.custom = $('#myInput').val();
+				// etc
+			}
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Server-side</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Server-side processing</a></li>
+							<li class="active"><a href="./custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="./post.html">POST data</a></li>
+							<li><a href="./ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="./object_data.html">Object data source</a></li>
+							<li><a href="./row_details.html">Row details</a></li>
+							<li><a href="./select_rows.html">Row selection</a></li>
+							<li><a href="./jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="./defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="./pipeline.html">Pipelining data to reduce Ajax calls for paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/defer_loading.html b/public/admin/js/DataTables/examples/server_side/defer_loading.html
new file mode 100644
index 0000000000000000000000000000000000000000..f54a1f299b9070248e216ceda1c55369c30a1da0
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/defer_loading.html
@@ -0,0 +1,394 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Deferred loading of data</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"processing": true,
+		"serverSide": true,
+		"ajax": "scripts/server_processing.php",
+		"deferLoading": 57
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Deferred loading of data</span></h1>
+
+			<div class="info">
+				<p>When using DataTables with server-side processing, the default behaviour is to have DataTables
+				automatically make an Ajax call and load the data, removing anything which might have already been in
+				the table. However, this behaviour might not always be desirable when the first page of the table has
+				already been preloaded in the HTML (which you might do to ensure accessibility or for performance
+				reasons).</p>
+
+				<p>This automatic Ajax call to get the first page of data can be overridden by using the <a href=
+				"//datatables.net/reference/option/deferLoading"><code class="option" title=
+				"DataTables initialisation option">deferLoading<span>DT</span></code></a> initialisation property. It
+				serves two purposes, firstly to indicate that deferred loading is required, but also to tell DataTables
+				how many records there are in the full table, in this case 57 (this allows the information element and
+				pagination to be displayed correctly).</p>
+
+				<p>In the example below, the HTML page already has the first 10 rows of data available it in, so we use
+				<a href="//datatables.net/reference/option/deferLoading"><code class="option" title=
+				"DataTables initialisation option">deferLoading<span>DT</span></code></a> to tell DataTables that this
+				data is available and that it should wait for under interaction (ordering, paging etc) before making an
+				Ajax call.</p>
+			</div>"
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tr class="odd">
+					<td class="sorting_1">Airi Satou</td>
+					<td>Accountant</td>
+					<td>Tokyo</td>
+					<td>33</td>
+					<td>2008/11/28</td>
+					<td>$162,700</td>
+				</tr>
+				<tr class="even">
+					<td class="sorting_1">Angelica Ramos</td>
+					<td>Chief Executive Officer (CEO)</td>
+					<td>London</td>
+					<td>47</td>
+					<td>2009/10/09</td>
+					<td>$1,200,000</td>
+				</tr>
+				<tr class="odd">
+					<td class="sorting_1">Ashton Cox</td>
+					<td>Junior Technical Author</td>
+					<td>San Francisco</td>
+					<td>66</td>
+					<td>2009/01/12</td>
+					<td>$86,000</td>
+				</tr>
+				<tr class="even">
+					<td class="sorting_1">Bradley Greer</td>
+					<td>Software Engineer</td>
+					<td>London</td>
+					<td>41</td>
+					<td>2012/10/13</td>
+					<td>$132,000</td>
+				</tr>
+				<tr class="odd">
+					<td class="sorting_1">Brenden Wagner</td>
+					<td>Software Engineer</td>
+					<td>San Francisco</td>
+					<td>28</td>
+					<td>2011/06/07</td>
+					<td>$206,850</td>
+				</tr>
+				<tr class="even">
+					<td class="sorting_1">Brielle Williamson</td>
+					<td>Integration Specialist</td>
+					<td>New York</td>
+					<td>61</td>
+					<td>2012/12/02</td>
+					<td>$372,000</td>
+				</tr>
+				<tr class="odd">
+					<td class="sorting_1">Bruno Nash</td>
+					<td>Software Engineer</td>
+					<td>London</td>
+					<td>38</td>
+					<td>2011/05/03</td>
+					<td>$163,500</td>
+				</tr>
+				<tr class="even">
+					<td class="sorting_1">Caesar Vance</td>
+					<td>Pre-Sales Support</td>
+					<td>New York</td>
+					<td>21</td>
+					<td>2011/12/12</td>
+					<td>$106,450</td>
+				</tr>
+				<tr class="odd">
+					<td class="sorting_1">Cara Stevens</td>
+					<td>Sales Assistant</td>
+					<td>New York</td>
+					<td>46</td>
+					<td>2011/12/06</td>
+					<td>$145,600</td>
+				</tr>
+				<tr class="even">
+					<td class="sorting_1">Cedric Kelly</td>
+					<td>Senior Javascript Developer</td>
+					<td>Edinburgh</td>
+					<td>22</td>
+					<td>2012/03/29</td>
+					<td>$433,060</td>
+				</tr>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;processing&quot;: true,
+		&quot;serverSide&quot;: true,
+		&quot;ajax&quot;: &quot;scripts/server_processing.php&quot;,
+		&quot;deferLoading&quot;: 57
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Server-side</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Server-side processing</a></li>
+							<li><a href="./custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="./post.html">POST data</a></li>
+							<li><a href="./ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="./object_data.html">Object data source</a></li>
+							<li><a href="./row_details.html">Row details</a></li>
+							<li><a href="./select_rows.html">Row selection</a></li>
+							<li><a href="./jsonp.html">JSONP data source for remote domains</a></li>
+							<li class="active"><a href="./defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="./pipeline.html">Pipelining data to reduce Ajax calls for paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/ids.html b/public/admin/js/DataTables/examples/server_side/ids.html
new file mode 100644
index 0000000000000000000000000000000000000000..70355e20ef6be09a1394f90e8f09b6323c4ab906
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/ids.html
@@ -0,0 +1,327 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Automatic addition of row ID attributes</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"processing": true,
+		"serverSide": true,
+		"ajax": "scripts/ids-objects.php",
+		"columns": [
+			{ "data": "first_name" },
+			{ "data": "last_name" },
+			{ "data": "position" },
+			{ "data": "office" },
+			{ "data": "start_date" },
+			{ "data": "salary" }
+		]
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Automatic addition of row ID attributes</span></h1>
+
+			<div class="info">
+				<p>Often when using server-side processing you will find that it can be useful to have a specific ID on
+				each row (the primary key value from the database for example). By assigning the ID you want to apply
+				to each row using the property <code>DT_RowId</code> of the data source object for each row, DataTables
+				will automatically add it for you.</p>
+
+				<p>In addition to <code>DT_RowId</code> there are two other properties which perform similar actions:
+				<code>DT_RowClass</code> and <code>DT_RowData</code>:</p>
+
+				<ul class="markdown">
+					<li>{string} <code>DT_RowId</code> - Add an ID to the <em>TR</em> element</li>
+					<li>{string} <code>DT_RowClass</code> - Add a class name to the <em>TR</em> element</li>
+					<li>{object} <code>DT_RowData</code> - Add HTML5 <em>data-</em> attributes to the <em>TR</em>
+					element. This is an object of key / value pairs which are assigned as data attributes to the
+					<em>TR</em> element.</li>
+				</ul>
+
+				<p>This example below shows <code>DT_RowId</code> being used to add information to the table. In
+				addition objects are used as the data source for the rows.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;processing&quot;: true,
+		&quot;serverSide&quot;: true,
+		&quot;ajax&quot;: &quot;scripts/ids-objects.php&quot;,
+		&quot;columns&quot;: [
+			{ &quot;data&quot;: &quot;first_name&quot; },
+			{ &quot;data&quot;: &quot;last_name&quot; },
+			{ &quot;data&quot;: &quot;position&quot; },
+			{ &quot;data&quot;: &quot;office&quot; },
+			{ &quot;data&quot;: &quot;start_date&quot; },
+			{ &quot;data&quot;: &quot;salary&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Server-side</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Server-side processing</a></li>
+							<li><a href="./custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="./post.html">POST data</a></li>
+							<li class="active"><a href="./ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="./object_data.html">Object data source</a></li>
+							<li><a href="./row_details.html">Row details</a></li>
+							<li><a href="./select_rows.html">Row selection</a></li>
+							<li><a href="./jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="./defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="./pipeline.html">Pipelining data to reduce Ajax calls for paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/index.html b/public/admin/js/DataTables/examples/server_side/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..2c5059c04590df670d132d0040260579f3fb6b6e
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/index.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+
+	<title>DataTables examples - Server-side processing</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Server-side processing</span></h1>
+
+			<div class="info">
+				<p>There are many ways to get your data into DataTables, and if you are working with seriously large
+				databases, you might want to consider using the server-side options that DataTables provides. With
+				server-side processing enabled, all paging, searching, ordering etc actions that DataTables performs
+				are handed off to a server where an SQL engine (or similar) can perform these actions on the large data
+				set (after all, that's what the database engine is designed for!). As such, each draw of the table will
+				result in a new Ajax request being made to get the required data.</p>
+
+				<p>Server-side processing is enabled by setting the <a href=
+				"//datatables.net/reference/option/serverSide"><code class="option" title=
+				"DataTables initialisation option">serverSide<span>DT</span></code></a> option to <code>true</code> and
+				providing an Ajax data source through the <a href="//datatables.net/reference/option/ajax"><code class=
+				"option" title="DataTables initialisation option">ajax<span>DT</span></code></a> option.</p>
+
+				<p>The examples in this section shows server-side processing in use and how it can be customised to
+				suit your needs.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="./simple.html">Server-side processing</a></li>
+							<li><a href="./custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="./post.html">POST data</a></li>
+							<li><a href="./ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="./object_data.html">Object data source</a></li>
+							<li><a href="./row_details.html">Row details</a></li>
+							<li><a href="./select_rows.html">Row selection</a></li>
+							<li><a href="./jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="./defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="./pipeline.html">Pipelining data to reduce Ajax calls for paging</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/jsonp.html b/public/admin/js/DataTables/examples/server_side/jsonp.html
new file mode 100644
index 0000000000000000000000000000000000000000..1bcf518d80292de106d4f50bccadea2246d1c68c
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/jsonp.html
@@ -0,0 +1,317 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - JSONP data source for remote domains</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"processing": true,
+		"serverSide": true,
+		"ajax": {
+			"url": "scripts/jsonp.php",
+			"dataType": "jsonp"
+		}
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>JSONP data source for remote domains</span></h1>
+
+			<div class="info">
+				<p><a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/">JSONP</a> is one of
+				several methods to allow the use of JSON data from any server (browsers have XSS protection rules which
+				will block standard Ajax requests to remote source for security reasons). Using JSONP allows DataTables
+				to load server-side sourced data from any domain and is quite simply done with the
+				<code>dataType</code> option of the <a href="//datatables.net/reference/option/ajax"><code class=
+				"option" title="DataTables initialisation option">ajax<span>DT</span></code></a> initialisation
+				option.</p>
+
+				<p>When given as an object, the <a href="//datatables.net/reference/option/ajax"><code class="option"
+				title="DataTables initialisation option">ajax<span>DT</span></code></a> option maps directly onto the
+				<a href="http://api.jquery.com/jQuery.ajax/">jQuery ajax</a> options (i.e. any option that can be used
+				in jQuery's Ajax function can also be used in DataTable's <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> option).</p>
+
+				<p>The example below shows <a href="//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> being used with the
+				<code>dataType</code> option set to retrieve JSONP data for server-side processing in DataTables.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;processing&quot;: true,
+		&quot;serverSide&quot;: true,
+		&quot;ajax&quot;: {
+			&quot;url&quot;: &quot;scripts/jsonp.php&quot;,
+			&quot;dataType&quot;: &quot;jsonp&quot;
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Server-side</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Server-side processing</a></li>
+							<li><a href="./custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="./post.html">POST data</a></li>
+							<li><a href="./ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="./object_data.html">Object data source</a></li>
+							<li><a href="./row_details.html">Row details</a></li>
+							<li><a href="./select_rows.html">Row selection</a></li>
+							<li class="active"><a href="./jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="./defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="./pipeline.html">Pipelining data to reduce Ajax calls for paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/object_data.html b/public/admin/js/DataTables/examples/server_side/object_data.html
new file mode 100644
index 0000000000000000000000000000000000000000..7c6d72ffa3e272a781a674c2f6d06da66d5cf420
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/object_data.html
@@ -0,0 +1,320 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Object data source</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"processing": true,
+		"serverSide": true,
+		"ajax": "scripts/objects.php",
+		"columns": [
+			{ "data": "first_name" },
+			{ "data": "last_name" },
+			{ "data": "position" },
+			{ "data": "office" },
+			{ "data": "start_date" },
+			{ "data": "salary" }
+		]
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Object data source</span></h1>
+
+			<div class="info">
+				<p>The default data format that DataTables expects for server-side processing is a 2D array of data
+				(rows by columns). However, this is often not flexible enough for either the server-side environment,
+				or you might want to convey more information in the data source than is necessary to show in the table
+				(row IDs from the database for example). For these situations DataTables supports the reading of data
+				for objects as well as arrays.</p>
+
+				<p>In this example the server responds with an array of objects, where DataTables will look up and use
+				each property that is specified by the <a href=
+				"//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> property given for each
+				column.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;processing&quot;: true,
+		&quot;serverSide&quot;: true,
+		&quot;ajax&quot;: &quot;scripts/objects.php&quot;,
+		&quot;columns&quot;: [
+			{ &quot;data&quot;: &quot;first_name&quot; },
+			{ &quot;data&quot;: &quot;last_name&quot; },
+			{ &quot;data&quot;: &quot;position&quot; },
+			{ &quot;data&quot;: &quot;office&quot; },
+			{ &quot;data&quot;: &quot;start_date&quot; },
+			{ &quot;data&quot;: &quot;salary&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Server-side</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Server-side processing</a></li>
+							<li><a href="./custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="./post.html">POST data</a></li>
+							<li><a href="./ids.html">Automatic addition of row ID attributes</a></li>
+							<li class="active"><a href="./object_data.html">Object data source</a></li>
+							<li><a href="./row_details.html">Row details</a></li>
+							<li><a href="./select_rows.html">Row selection</a></li>
+							<li><a href="./jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="./defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="./pipeline.html">Pipelining data to reduce Ajax calls for paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/pipeline.html b/public/admin/js/DataTables/examples/server_side/pipeline.html
new file mode 100644
index 0000000000000000000000000000000000000000..786a81a9ef96a18f0a2e2a73cf96953f5cbd229e
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/pipeline.html
@@ -0,0 +1,554 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Pipelining data to reduce Ajax calls for paging</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+//
+// Pipelining function for DataTables. To be used to the `ajax` option of DataTables
+//
+$.fn.dataTable.pipeline = function ( opts ) {
+	// Configuration options
+	var conf = $.extend( {
+		pages: 5,     // number of pages to cache
+		url: '',      // script url
+		data: null,   // function or object with parameters to send to the server
+		              // matching how `ajax.data` works in DataTables
+		method: 'GET' // Ajax HTTP method
+	}, opts );
+
+	// Private variables for storing the cache
+	var cacheLower = -1;
+	var cacheUpper = null;
+	var cacheLastRequest = null;
+	var cacheLastJson = null;
+
+	return function ( request, drawCallback, settings ) {
+		var ajax          = false;
+		var requestStart  = request.start;
+		var drawStart     = request.start;
+		var requestLength = request.length;
+		var requestEnd    = requestStart + requestLength;
+		
+		if ( settings.clearCache ) {
+			// API requested that the cache be cleared
+			ajax = true;
+			settings.clearCache = false;
+		}
+		else if ( cacheLower < 0 || requestStart < cacheLower || requestEnd > cacheUpper ) {
+			// outside cached data - need to make a request
+			ajax = true;
+		}
+		else if ( JSON.stringify( request.order )   !== JSON.stringify( cacheLastRequest.order ) ||
+		          JSON.stringify( request.columns ) !== JSON.stringify( cacheLastRequest.columns ) ||
+		          JSON.stringify( request.search )  !== JSON.stringify( cacheLastRequest.search )
+		) {
+			// properties changed (ordering, columns, searching)
+			ajax = true;
+		}
+		
+		// Store the request for checking next time around
+		cacheLastRequest = $.extend( true, {}, request );
+
+		if ( ajax ) {
+			// Need data from the server
+			if ( requestStart < cacheLower ) {
+				requestStart = requestStart - (requestLength*(conf.pages-1));
+
+				if ( requestStart < 0 ) {
+					requestStart = 0;
+				}
+			}
+			
+			cacheLower = requestStart;
+			cacheUpper = requestStart + (requestLength * conf.pages);
+
+			request.start = requestStart;
+			request.length = requestLength*conf.pages;
+
+			// Provide the same `data` options as DataTables.
+			if ( $.isFunction ( conf.data ) ) {
+				// As a function it is executed with the data object as an arg
+				// for manipulation. If an object is returned, it is used as the
+				// data object to submit
+				var d = conf.data( request );
+				if ( d ) {
+					$.extend( request, d );
+				}
+			}
+			else if ( $.isPlainObject( conf.data ) ) {
+				// As an object, the data given extends the default
+				$.extend( request, conf.data );
+			}
+
+			settings.jqXHR = $.ajax( {
+				"type":     conf.method,
+				"url":      conf.url,
+				"data":     request,
+				"dataType": "json",
+				"cache":    false,
+				"success":  function ( json ) {
+					cacheLastJson = $.extend(true, {}, json);
+
+					if ( cacheLower != drawStart ) {
+						json.data.splice( 0, drawStart-cacheLower );
+					}
+					json.data.splice( requestLength, json.data.length );
+					
+					drawCallback( json );
+				}
+			} );
+		}
+		else {
+			json = $.extend( true, {}, cacheLastJson );
+			json.draw = request.draw; // Update the echo for each response
+			json.data.splice( 0, requestStart-cacheLower );
+			json.data.splice( requestLength, json.data.length );
+
+			drawCallback(json);
+		}
+	}
+};
+
+// Register an API method that will empty the pipelined data, forcing an Ajax
+// fetch on the next draw (i.e. `table.clearPipeline().draw()`)
+$.fn.dataTable.Api.register( 'clearPipeline()', function () {
+	return this.iterator( 'table', function ( settings ) {
+		settings.clearCache = true;
+	} );
+} );
+
+
+//
+// DataTables initialisation
+//
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"processing": true,
+		"serverSide": true,
+		"ajax": $.fn.dataTable.pipeline( {
+			url: 'scripts/server_processing.php',
+			pages: 5 // number of pages to cache
+		} )
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Pipelining data to reduce Ajax calls for paging</span></h1>
+
+			<div class="info">
+				<p>Sever-side processing can be quite hard on your server, since it makes an Ajax call to the server
+				for every draw request that is made. On sites with a large number of page views, you could potentially
+				end up DDoSing your own server with your own applications!</p>
+
+				<p>This example shows one technique to reduce the number of Ajax calls that are made to the server by
+				caching more data than is needed for each draw. This is done by intercepting the Ajax call and routing
+				it through a data cache control; using the data from the cache if available, and making the Ajax
+				request if not. This intercept of the Ajax request is performed by giving the <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> option as a function. This function
+				then performs the logic of deciding if another Ajax call is needed, or if data from the cache can be
+				used.</p>
+
+				<p>Keep in mind that this caching is for paging only; the pipeline must be cleared for other
+				interactions such as ordering and searching since the full data set, when using server-side processing,
+				is only available at the server.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">//
+// Pipelining function for DataTables. To be used to the `ajax` option of DataTables
+//
+$.fn.dataTable.pipeline = function ( opts ) {
+	// Configuration options
+	var conf = $.extend( {
+		pages: 5,     // number of pages to cache
+		url: '',      // script url
+		data: null,   // function or object with parameters to send to the server
+		              // matching how `ajax.data` works in DataTables
+		method: 'GET' // Ajax HTTP method
+	}, opts );
+
+	// Private variables for storing the cache
+	var cacheLower = -1;
+	var cacheUpper = null;
+	var cacheLastRequest = null;
+	var cacheLastJson = null;
+
+	return function ( request, drawCallback, settings ) {
+		var ajax          = false;
+		var requestStart  = request.start;
+		var drawStart     = request.start;
+		var requestLength = request.length;
+		var requestEnd    = requestStart + requestLength;
+		
+		if ( settings.clearCache ) {
+			// API requested that the cache be cleared
+			ajax = true;
+			settings.clearCache = false;
+		}
+		else if ( cacheLower &lt; 0 || requestStart &lt; cacheLower || requestEnd &gt; cacheUpper ) {
+			// outside cached data - need to make a request
+			ajax = true;
+		}
+		else if ( JSON.stringify( request.order )   !== JSON.stringify( cacheLastRequest.order ) ||
+		          JSON.stringify( request.columns ) !== JSON.stringify( cacheLastRequest.columns ) ||
+		          JSON.stringify( request.search )  !== JSON.stringify( cacheLastRequest.search )
+		) {
+			// properties changed (ordering, columns, searching)
+			ajax = true;
+		}
+		
+		// Store the request for checking next time around
+		cacheLastRequest = $.extend( true, {}, request );
+
+		if ( ajax ) {
+			// Need data from the server
+			if ( requestStart &lt; cacheLower ) {
+				requestStart = requestStart - (requestLength*(conf.pages-1));
+
+				if ( requestStart &lt; 0 ) {
+					requestStart = 0;
+				}
+			}
+			
+			cacheLower = requestStart;
+			cacheUpper = requestStart + (requestLength * conf.pages);
+
+			request.start = requestStart;
+			request.length = requestLength*conf.pages;
+
+			// Provide the same `data` options as DataTables.
+			if ( $.isFunction ( conf.data ) ) {
+				// As a function it is executed with the data object as an arg
+				// for manipulation. If an object is returned, it is used as the
+				// data object to submit
+				var d = conf.data( request );
+				if ( d ) {
+					$.extend( request, d );
+				}
+			}
+			else if ( $.isPlainObject( conf.data ) ) {
+				// As an object, the data given extends the default
+				$.extend( request, conf.data );
+			}
+
+			settings.jqXHR = $.ajax( {
+				&quot;type&quot;:     conf.method,
+				&quot;url&quot;:      conf.url,
+				&quot;data&quot;:     request,
+				&quot;dataType&quot;: &quot;json&quot;,
+				&quot;cache&quot;:    false,
+				&quot;success&quot;:  function ( json ) {
+					cacheLastJson = $.extend(true, {}, json);
+
+					if ( cacheLower != drawStart ) {
+						json.data.splice( 0, drawStart-cacheLower );
+					}
+					json.data.splice( requestLength, json.data.length );
+					
+					drawCallback( json );
+				}
+			} );
+		}
+		else {
+			json = $.extend( true, {}, cacheLastJson );
+			json.draw = request.draw; // Update the echo for each response
+			json.data.splice( 0, requestStart-cacheLower );
+			json.data.splice( requestLength, json.data.length );
+
+			drawCallback(json);
+		}
+	}
+};
+
+// Register an API method that will empty the pipelined data, forcing an Ajax
+// fetch on the next draw (i.e. `table.clearPipeline().draw()`)
+$.fn.dataTable.Api.register( 'clearPipeline()', function () {
+	return this.iterator( 'table', function ( settings ) {
+		settings.clearCache = true;
+	} );
+} );
+
+
+//
+// DataTables initialisation
+//
+$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;processing&quot;: true,
+		&quot;serverSide&quot;: true,
+		&quot;ajax&quot;: $.fn.dataTable.pipeline( {
+			url: 'scripts/server_processing.php',
+			pages: 5 // number of pages to cache
+		} )
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Server-side</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Server-side processing</a></li>
+							<li><a href="./custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="./post.html">POST data</a></li>
+							<li><a href="./ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="./object_data.html">Object data source</a></li>
+							<li><a href="./row_details.html">Row details</a></li>
+							<li><a href="./select_rows.html">Row selection</a></li>
+							<li><a href="./jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="./defer_loading.html">Deferred loading of data</a></li>
+							<li class="active"><a href="./pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/post.html b/public/admin/js/DataTables/examples/server_side/post.html
new file mode 100644
index 0000000000000000000000000000000000000000..118e194886bdc5bc13ac229c532e2cd648c11e92
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/post.html
@@ -0,0 +1,332 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - POST data</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"processing": true,
+		"serverSide": true,
+		"ajax": {
+			"url": "scripts/post.php",
+			"type": "POST"
+		},
+		"columns": [
+			{ "data": "first_name" },
+			{ "data": "last_name" },
+			{ "data": "position" },
+			{ "data": "office" },
+			{ "data": "start_date" },
+			{ "data": "salary" }
+		]
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>POST data</span></h1>
+
+			<div class="info">
+				<p>By default, the Ajax request that DataTables makes to obtain server-side processing data is an HTTP
+				GET request. However, there are times when you might wish to use POST. This is very easily done by
+				using the <code>type</code> option of the <a href="//datatables.net/reference/option/ajax"><code class=
+				"option" title="DataTables initialisation option">ajax<span>DT</span></code></a> initialisation
+				option.</p>
+
+				<p>When given as an object, the <a href="//datatables.net/reference/option/ajax"><code class="option"
+				title="DataTables initialisation option">ajax<span>DT</span></code></a> option maps directly onto the
+				<a href="http://api.jquery.com/jQuery.ajax/">jQuery ajax</a> options (i.e. any option that can be used
+				in jQuery's Ajax function can also be used in DataTable's <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> option).</p>
+
+				<p>The example below shows <a href="//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> being used with the <code>type</code>
+				option set to <code class="string" title="String">POST</code> to make a POST request.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;processing&quot;: true,
+		&quot;serverSide&quot;: true,
+		&quot;ajax&quot;: {
+			&quot;url&quot;: &quot;scripts/post.php&quot;,
+			&quot;type&quot;: &quot;POST&quot;
+		},
+		&quot;columns&quot;: [
+			{ &quot;data&quot;: &quot;first_name&quot; },
+			{ &quot;data&quot;: &quot;last_name&quot; },
+			{ &quot;data&quot;: &quot;position&quot; },
+			{ &quot;data&quot;: &quot;office&quot; },
+			{ &quot;data&quot;: &quot;start_date&quot; },
+			{ &quot;data&quot;: &quot;salary&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Server-side</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Server-side processing</a></li>
+							<li><a href="./custom_vars.html">Custom HTTP variables</a></li>
+							<li class="active"><a href="./post.html">POST data</a></li>
+							<li><a href="./ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="./object_data.html">Object data source</a></li>
+							<li><a href="./row_details.html">Row details</a></li>
+							<li><a href="./select_rows.html">Row selection</a></li>
+							<li><a href="./jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="./defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="./pipeline.html">Pipelining data to reduce Ajax calls for paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/row_details.html b/public/admin/js/DataTables/examples/server_side/row_details.html
new file mode 100644
index 0000000000000000000000000000000000000000..3e7d8561d520aa9279ab6129b9dcf11931fa3e73
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/row_details.html
@@ -0,0 +1,437 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Row details</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+td.details-control {
+	background: url('../resources/details_open.png') no-repeat center center;
+	cursor: pointer;
+}
+tr.details td.details-control {
+	background: url('../resources/details_close.png') no-repeat center center;
+}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+function format ( d ) {
+	return 'Full name: '+d.first_name+' '+d.last_name+'<br>'+
+	    'Salary: '+d.salary+'<br>'+
+		'The child row can contain any data you wish, including links, images, inner tables etc.';
+}
+
+$(document).ready(function() {
+	var dt = $('#example').DataTable( {
+		"processing": true,
+		"serverSide": true,
+		"ajax": "scripts/ids-objects.php",
+		"columns": [ 
+			{
+				"class":          "details-control",
+				"orderable":      false,
+				"data":           null,
+				"defaultContent": ""
+			},
+			{ "data": "first_name" },
+			{ "data": "last_name" },
+			{ "data": "position" },
+			{ "data": "office" }
+		],
+		"order": [[1, 'asc']]
+	} );
+
+	// Array to track the ids of the details displayed rows
+	var detailRows = [];
+
+	$('#example tbody').on( 'click', 'tr td:first-child', function () {
+		var tr = $(this).closest('tr');
+		var row = dt.row( tr );
+		var idx = $.inArray( tr.attr('id'), detailRows );
+
+		if ( row.child.isShown() ) {
+			tr.removeClass( 'details' );
+			row.child.hide();
+
+			// Remove from the 'open' array
+			detailRows.splice( idx, 1 );
+		}
+		else {
+			tr.addClass( 'details' );
+			row.child( format( row.data() ) ).show();
+
+			// Add to the 'open' array
+			if ( idx === -1 ) {
+				detailRows.push( tr.attr('id') );
+			}
+		}
+	} );
+
+	// On each draw, loop over the `detailRows` array and show any child rows
+	dt.on( 'draw', function () {
+		$.each( detailRows, function ( i, id ) {
+			$('#'+id+' td:first-child').trigger( 'click' );
+		} );
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Row details</span></h1>
+
+			<div class="info">
+				<p>This example shows the use of DataTables' ability to show and hide child rows which are attached to
+				a parent row in the host table. This is often used to show additional information about a row,
+				particularly when you wish to convey more information about a row than there is space for in the host
+				table.</p>
+
+				<p>The example below shows server-side processing being used with the first column having an event
+				listener attached to it which will toggle the child row's display. This is set up using <a href=
+				"//datatables.net/reference/option/columns.data"><code class="option" title=
+				"DataTables initialisation option">columns.data<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/option/columns.defaultContent"><code class="option" title=
+				"DataTables initialisation option">columns.defaultContent<span>DT</span></code></a>, in combination
+				with CSS to show an empty cell with a background image which can be clicked upon.</p>
+
+				<p>The event handler makes use of the <a href="//datatables.net/reference/api/row().child"><code class=
+				"api" title="DataTables API method">row().child<span>DT</span></code></a> methods to firstly check if a
+				row is already displayed, and if so hide it, if not show it. The content of the child row is, in this
+				example, defined by the <code>formatDetails()</code> function, but you would replace that with whatever
+				you wanted to show the content required, possibly including, for example, an Ajax call to the server to
+				obtain the extra information to show. Note that the format details function has access to the full data
+				source object for the row, including information that is not actually shown in the table (the salary
+				parameter for example).</p>
+
+				<p>Furthermore, this example shows a small difference from the <a href=
+				"../api/row_details.html">client-side row details example</a> in that to have rows automatically reopen
+				when the table is redrawn, we need to track a unique identifier for each row - in this case the row
+				<code>id</code>. This is required because in server-side processing mode rows are automatically
+				destroyed and recreated on each draw.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th></th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th></th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">function format ( d ) {
+	return 'Full name: '+d.first_name+' '+d.last_name+'&lt;br&gt;'+
+	    'Salary: '+d.salary+'&lt;br&gt;'+
+		'The child row can contain any data you wish, including links, images, inner tables etc.';
+}
+
+$(document).ready(function() {
+	var dt = $('#example').DataTable( {
+		&quot;processing&quot;: true,
+		&quot;serverSide&quot;: true,
+		&quot;ajax&quot;: &quot;scripts/ids-objects.php&quot;,
+		&quot;columns&quot;: [ 
+			{
+				&quot;class&quot;:          &quot;details-control&quot;,
+				&quot;orderable&quot;:      false,
+				&quot;data&quot;:           null,
+				&quot;defaultContent&quot;: &quot;&quot;
+			},
+			{ &quot;data&quot;: &quot;first_name&quot; },
+			{ &quot;data&quot;: &quot;last_name&quot; },
+			{ &quot;data&quot;: &quot;position&quot; },
+			{ &quot;data&quot;: &quot;office&quot; }
+		],
+		&quot;order&quot;: [[1, 'asc']]
+	} );
+
+	// Array to track the ids of the details displayed rows
+	var detailRows = [];
+
+	$('#example tbody').on( 'click', 'tr td:first-child', function () {
+		var tr = $(this).closest('tr');
+		var row = dt.row( tr );
+		var idx = $.inArray( tr.attr('id'), detailRows );
+
+		if ( row.child.isShown() ) {
+			tr.removeClass( 'details' );
+			row.child.hide();
+
+			// Remove from the 'open' array
+			detailRows.splice( idx, 1 );
+		}
+		else {
+			tr.addClass( 'details' );
+			row.child( format( row.data() ) ).show();
+
+			// Add to the 'open' array
+			if ( idx === -1 ) {
+				detailRows.push( tr.attr('id') );
+			}
+		}
+	} );
+
+	// On each draw, loop over the `detailRows` array and show any child rows
+	dt.on( 'draw', function () {
+		$.each( detailRows, function ( i, id ) {
+			$('#'+id+' td:first-child').trigger( 'click' );
+		} );
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">td.details-control {
+	background: url('../resources/details_open.png') no-repeat center center;
+	cursor: pointer;
+}
+tr.details td.details-control {
+	background: url('../resources/details_close.png') no-repeat center center;
+}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Server-side</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Server-side processing</a></li>
+							<li><a href="./custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="./post.html">POST data</a></li>
+							<li><a href="./ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="./object_data.html">Object data source</a></li>
+							<li class="active"><a href="./row_details.html">Row details</a></li>
+							<li><a href="./select_rows.html">Row selection</a></li>
+							<li><a href="./jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="./defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="./pipeline.html">Pipelining data to reduce Ajax calls for paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/scripts/ids-arrays.php b/public/admin/js/DataTables/examples/server_side/scripts/ids-arrays.php
new file mode 100644
index 0000000000000000000000000000000000000000..f8e69c8ffa6f362a7bb3a29a3878c4dda2036e81
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/scripts/ids-arrays.php
@@ -0,0 +1,81 @@
+<?php
+
+/*
+ * DataTables example server-side processing script.
+ *
+ * Please note that this script is intentionally extremely simply to show how
+ * server-side processing can be implemented, and probably shouldn't be used as
+ * the basis for a large complex system. It is suitable for simple use cases as
+ * for learning.
+ *
+ * See http://datatables.net/usage/server-side for full details on the server-
+ * side processing requirements of DataTables.
+ *
+ * @license MIT - http://datatables.net/license_mit
+ */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Easy set variables
+ */
+
+// DB table to use
+$table = 'datatables_demo';
+
+// Table's primary key
+$primaryKey = 'id';
+
+// Array of database columns which should be read and sent back to DataTables.
+// The `db` parameter represents the column name in the database, while the `dt`
+// parameter represents the DataTables column identifier. In this case simple
+// indexes + the primary key column for the id
+$columns = array(
+	array(
+		'db' => 'id',
+		'dt' => 'DT_RowId',
+		'formatter' => function( $d, $row ) {
+			// Technically a DOM id cannot start with an integer, so we prefix
+			// a string. This can also be useful if you have multiple tables
+			// to ensure that the id is unique with a different prefix
+			return 'row_'.$d;
+		}
+	),
+	array( 'db' => 'first_name', 'dt' => 0 ),
+	array( 'db' => 'last_name',  'dt' => 1 ),
+	array( 'db' => 'position',   'dt' => 2 ),
+	array( 'db' => 'office',     'dt' => 3 ),
+	array(
+		'db'        => 'start_date',
+		'dt'        => 4,
+		'formatter' => function( $d, $row ) {
+			return date( 'jS M y', strtotime($d));
+		}
+	),
+	array(
+		'db'        => 'salary',
+		'dt'        => 5,
+		'formatter' => function( $d, $row ) {
+			return '$'.number_format($d);
+		}
+	)
+);
+
+// SQL server connection information
+$sql_details = array(
+	'user' => '',
+	'pass' => '',
+	'db'   => '',
+	'host' => ''
+);
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * If you just want to use the basic configuration for DataTables with PHP
+ * server-side, there is no need to edit below this line.
+ */
+
+require( 'ssp.class.php' );
+
+echo json_encode(
+	SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
+);
+
diff --git a/public/admin/js/DataTables/examples/server_side/scripts/ids-objects.php b/public/admin/js/DataTables/examples/server_side/scripts/ids-objects.php
new file mode 100644
index 0000000000000000000000000000000000000000..c3d339f1be8fbc401fab7c75711d0087c3d45a1b
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/scripts/ids-objects.php
@@ -0,0 +1,80 @@
+<?php
+
+/*
+ * DataTables example server-side processing script.
+ *
+ * Please note that this script is intentionally extremely simply to show how
+ * server-side processing can be implemented, and probably shouldn't be used as
+ * the basis for a large complex system. It is suitable for simple use cases as
+ * for learning.
+ *
+ * See http://datatables.net/usage/server-side for full details on the server-
+ * side processing requirements of DataTables.
+ *
+ * @license MIT - http://datatables.net/license_mit
+ */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Easy set variables
+ */
+
+// DB table to use
+$table = 'datatables_demo';
+
+// Table's primary key
+$primaryKey = 'id';
+
+// Array of database columns which should be read and sent back to DataTables.
+// The `db` parameter represents the column name in the database, while the `dt`
+// parameter represents the DataTables column identifier - in this case object
+// parameter names
+$columns = array(
+	array(
+		'db' => 'id',
+		'dt' => 'DT_RowId',
+		'formatter' => function( $d, $row ) {
+			// Technically a DOM id cannot start with an integer, so we prefix
+			// a string. This can also be useful if you have multiple tables
+			// to ensure that the id is unique with a different prefix
+			return 'row_'.$d;
+		}
+	),
+	array( 'db' => 'first_name', 'dt' => 'first_name' ),
+	array( 'db' => 'last_name',  'dt' => 'last_name' ),
+	array( 'db' => 'position',   'dt' => 'position' ),
+	array( 'db' => 'office',     'dt' => 'office' ),
+	array(
+		'db'        => 'start_date',
+		'dt'        => 'start_date',
+		'formatter' => function( $d, $row ) {
+			return date( 'jS M y', strtotime($d));
+		}
+	),
+	array(
+		'db'        => 'salary',
+		'dt'        => 'salary',
+		'formatter' => function( $d, $row ) {
+			return '$'.number_format($d);
+		}
+	)
+);
+
+$sql_details = array(
+	'user' => '',
+	'pass' => '',
+	'db'   => '',
+	'host' => ''
+);
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * If you just want to use the basic configuration for DataTables with PHP
+ * server-side, there is no need to edit below this line.
+ */
+
+require( 'ssp.class.php' );
+
+echo json_encode(
+	SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
+);
+
diff --git a/public/admin/js/DataTables/examples/server_side/scripts/jsonp.php b/public/admin/js/DataTables/examples/server_side/scripts/jsonp.php
new file mode 100644
index 0000000000000000000000000000000000000000..ee6c36c41c978c8aa827bfccf41cb28eb6026187
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/scripts/jsonp.php
@@ -0,0 +1,69 @@
+<?php
+
+/*
+ * DataTables example server-side processing script.
+ *
+ * Please note that this script is intentionally extremely simply to show how
+ * server-side processing can be implemented, and probably shouldn't be used as
+ * the basis for a large complex system. It is suitable for simple use cases as
+ * for learning.
+ *
+ * See http://datatables.net/usage/server-side for full details on the server-
+ * side processing requirements of DataTables.
+ *
+ * @license MIT - http://datatables.net/license_mit
+ */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Easy set variables
+ */
+
+// DB table to use
+$table = 'datatables_demo';
+
+// Table's primary key
+$primaryKey = 'id';
+
+// Array of database columns which should be read and sent back to DataTables.
+// The `db` parameter represents the column name in the database, while the `dt`
+// parameter represents the DataTables column identifier. In this case simple
+// indexes
+$columns = array(
+	array( 'db' => 'first_name', 'dt' => 0 ),
+	array( 'db' => 'last_name',  'dt' => 1 ),
+	array( 'db' => 'position',   'dt' => 2 ),
+	array( 'db' => 'office',     'dt' => 3 ),
+	array(
+		'db'        => 'start_date',
+		'dt'        => 4,
+		'formatter' => function( $d, $row ) {
+			return date( 'jS M y', strtotime($d));
+		}
+	),
+	array(
+		'db'        => 'salary',
+		'dt'        => 5,
+		'formatter' => function( $d, $row ) {
+			return '$'.number_format($d);
+		}
+	)
+);
+
+$sql_details = array(
+	'user' => '',
+	'pass' => '',
+	'db'   => '',
+	'host' => ''
+);
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * If you just want to use the basic configuration for DataTables with PHP
+ * server-side, there is no need to edit below this line.
+ */
+require( 'ssp.class.php' );
+
+echo $_GET['callback'].'('.json_encode(
+	SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
+).');';
+
diff --git a/public/admin/js/DataTables/examples/server_side/scripts/mysql.sql b/public/admin/js/DataTables/examples/server_side/scripts/mysql.sql
new file mode 100644
index 0000000000000000000000000000000000000000..b0fa6267a5ddece040467bef31cb77574d17ac13
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/scripts/mysql.sql
@@ -0,0 +1,80 @@
+--
+-- DataTables Ajax and server-side processing database (MySQL)
+--
+
+DROP TABLE IF EXISTS `datatables_demo`;
+
+CREATE TABLE `datatables_demo` (
+	`id`         int(10) NOT NULL auto_increment,
+	`first_name` varchar(250) NOT NULL default '',
+	`last_name`  varchar(250) NOT NULL default '',
+	`position`   varchar(250) NOT NULL default '',
+	`email`      varchar(250) NOT NULL default '',
+	`office`     varchar(250) NOT NULL default '',
+	`start_date` timestamp DEFAULT CURRENT_TIMESTAMP,
+	`age`        int(8),
+	`salary`     int(8),
+	`extn`       int(8),
+	PRIMARY KEY  (`id`)
+);
+
+INSERT INTO `datatables_demo`
+		( id, first_name, last_name, age, position, salary, start_date, extn, email, office ) 
+	VALUES
+		( 1, 'Tiger', 'Nixon', 61, 'System Architect', 320800, '2011/04/25', 5421, 't.nixon@datatables.net', 'Edinburgh' ),
+		( 2, 'Garrett', 'Winters', 63, 'Accountant', 170750, '2011/07/25', 8422, 'g.winters@datatables.net', 'Tokyo' ),
+		( 3, 'Ashton', 'Cox', 66, 'Junior Technical Author', 86000, '2009/01/12', 1562, 'a.cox@datatables.net', 'San Francisco' ),
+		( 4, 'Cedric', 'Kelly', 22, 'Senior Javascript Developer', 433060, '2012/03/29', 6224, 'c.kelly@datatables.net', 'Edinburgh' ),
+		( 5, 'Airi', 'Satou', 33, 'Accountant', 162700, '2008/11/28', 5407, 'a.satou@datatables.net', 'Tokyo' ),
+		( 6, 'Brielle', 'Williamson', 61, 'Integration Specialist', 372000, '2012/12/02', 4804, 'b.williamson@datatables.net', 'New York' ),
+		( 7, 'Herrod', 'Chandler', 59, 'Sales Assistant', 137500, '2012/08/06', 9608, 'h.chandler@datatables.net', 'San Francisco' ),
+		( 8, 'Rhona', 'Davidson', 55, 'Integration Specialist', 327900, '2010/10/14', 6200, 'r.davidson@datatables.net', 'Tokyo' ),
+		( 9, 'Colleen', 'Hurst', 39, 'Javascript Developer', 205500, '2009/09/15', 2360, 'c.hurst@datatables.net', 'San Francisco' ),
+		( 10, 'Sonya', 'Frost', 23, 'Software Engineer', 103600, '2008/12/13', 1667, 's.frost@datatables.net', 'Edinburgh' ),
+		( 11, 'Jena', 'Gaines', 30, 'Office Manager', 90560, '2008/12/19', 3814, 'j.gaines@datatables.net', 'London' ),
+		( 12, 'Quinn', 'Flynn', 22, 'Support Lead', 342000, '2013/03/03', 9497, 'q.flynn@datatables.net', 'Edinburgh' ),
+		( 13, 'Charde', 'Marshall', 36, 'Regional Director', 470600, '2008/10/16', 6741, 'c.marshall@datatables.net', 'San Francisco' ),
+		( 14, 'Haley', 'Kennedy', 43, 'Senior Marketing Designer', 313500, '2012/12/18', 3597, 'h.kennedy@datatables.net', 'London' ),
+		( 15, 'Tatyana', 'Fitzpatrick', 19, 'Regional Director', 385750, '2010/03/17', 1965, 't.fitzpatrick@datatables.net', 'London' ),
+		( 16, 'Michael', 'Silva', 66, 'Marketing Designer', 198500, '2012/11/27', 1581, 'm.silva@datatables.net', 'London' ),
+		( 17, 'Paul', 'Byrd', 64, 'Chief Financial Officer (CFO)', 725000, '2010/06/09', 3059, 'p.byrd@datatables.net', 'New York' ),
+		( 18, 'Gloria', 'Little', 59, 'Systems Administrator', 237500, '2009/04/10', 1721, 'g.little@datatables.net', 'New York' ),
+		( 19, 'Bradley', 'Greer', 41, 'Software Engineer', 132000, '2012/10/13', 2558, 'b.greer@datatables.net', 'London' ),
+		( 20, 'Dai', 'Rios', 35, 'Personnel Lead', 217500, '2012/09/26', 2290, 'd.rios@datatables.net', 'Edinburgh' ),
+		( 21, 'Jenette', 'Caldwell', 30, 'Development Lead', 345000, '2011/09/03', 1937, 'j.caldwell@datatables.net', 'New York' ),
+		( 22, 'Yuri', 'Berry', 40, 'Chief Marketing Officer (CMO)', 675000, '2009/06/25', 6154, 'y.berry@datatables.net', 'New York' ),
+		( 23, 'Caesar', 'Vance', 21, 'Pre-Sales Support', 106450, '2011/12/12', 8330, 'c.vance@datatables.net', 'New York' ),
+		( 24, 'Doris', 'Wilder', 23, 'Sales Assistant', 85600, '2010/09/20', 3023, 'd.wilder@datatables.net', 'Sidney' ),
+		( 25, 'Angelica', 'Ramos', 47, 'Chief Executive Officer (CEO)', 1200000, '2009/10/09', 5797, 'a.ramos@datatables.net', 'London' ),
+		( 26, 'Gavin', 'Joyce', 42, 'Developer', 92575, '2010/12/22', 8822, 'g.joyce@datatables.net', 'Edinburgh' ),
+		( 27, 'Jennifer', 'Chang', 28, 'Regional Director', 357650, '2010/11/14', 9239, 'j.chang@datatables.net', 'Singapore' ),
+		( 28, 'Brenden', 'Wagner', 28, 'Software Engineer', 206850, '2011/06/07', 1314, 'b.wagner@datatables.net', 'San Francisco' ),
+		( 29, 'Fiona', 'Green', 48, 'Chief Operating Officer (COO)', 850000, '2010/03/11', 2947, 'f.green@datatables.net', 'San Francisco' ),
+		( 30, 'Shou', 'Itou', 20, 'Regional Marketing', 163000, '2011/08/14', 8899, 's.itou@datatables.net', 'Tokyo' ),
+		( 31, 'Michelle', 'House', 37, 'Integration Specialist', 95400, '2011/06/02', 2769, 'm.house@datatables.net', 'Sidney' ),
+		( 32, 'Suki', 'Burks', 53, 'Developer', 114500, '2009/10/22', 6832, 's.burks@datatables.net', 'London' ),
+		( 33, 'Prescott', 'Bartlett', 27, 'Technical Author', 145000, '2011/05/07', 3606, 'p.bartlett@datatables.net', 'London' ),
+		( 34, 'Gavin', 'Cortez', 22, 'Team Leader', 235500, '2008/10/26', 2860, 'g.cortez@datatables.net', 'San Francisco' ),
+		( 35, 'Martena', 'Mccray', 46, 'Post-Sales support', 324050, '2011/03/09', 8240, 'm.mccray@datatables.net', 'Edinburgh' ),
+		( 36, 'Unity', 'Butler', 47, 'Marketing Designer', 85675, '2009/12/09', 5384, 'u.butler@datatables.net', 'San Francisco' ),
+		( 37, 'Howard', 'Hatfield', 51, 'Office Manager', 164500, '2008/12/16', 7031, 'h.hatfield@datatables.net', 'San Francisco' ),
+		( 38, 'Hope', 'Fuentes', 41, 'Secretary', 109850, '2010/02/12', 6318, 'h.fuentes@datatables.net', 'San Francisco' ),
+		( 39, 'Vivian', 'Harrell', 62, 'Financial Controller', 452500, '2009/02/14', 9422, 'v.harrell@datatables.net', 'San Francisco' ),
+		( 40, 'Timothy', 'Mooney', 37, 'Office Manager', 136200, '2008/12/11', 7580, 't.mooney@datatables.net', 'London' ),
+		( 41, 'Jackson', 'Bradshaw', 65, 'Director', 645750, '2008/09/26', 1042, 'j.bradshaw@datatables.net', 'New York' ),
+		( 42, 'Olivia', 'Liang', 64, 'Support Engineer', 234500, '2011/02/03', 2120, 'o.liang@datatables.net', 'Singapore' ),
+		( 43, 'Bruno', 'Nash', 38, 'Software Engineer', 163500, '2011/05/03', 6222, 'b.nash@datatables.net', 'London' ),
+		( 44, 'Sakura', 'Yamamoto', 37, 'Support Engineer', 139575, '2009/08/19', 9383, 's.yamamoto@datatables.net', 'Tokyo' ),
+		( 45, 'Thor', 'Walton', 61, 'Developer', 98540, '2013/08/11', 8327, 't.walton@datatables.net', 'New York' ),
+		( 46, 'Finn', 'Camacho', 47, 'Support Engineer', 87500, '2009/07/07', 2927, 'f.camacho@datatables.net', 'San Francisco' ),
+		( 47, 'Serge', 'Baldwin', 64, 'Data Coordinator', 138575, '2012/04/09', 8352, 's.baldwin@datatables.net', 'Singapore' ),
+		( 48, 'Zenaida', 'Frank', 63, 'Software Engineer', 125250, '2010/01/04', 7439, 'z.frank@datatables.net', 'New York' ),
+		( 49, 'Zorita', 'Serrano', 56, 'Software Engineer', 115000, '2012/06/01', 4389, 'z.serrano@datatables.net', 'San Francisco' ),
+		( 50, 'Jennifer', 'Acosta', 43, 'Junior Javascript Developer', 75650, '2013/02/01', 3431, 'j.acosta@datatables.net', 'Edinburgh' ),
+		( 51, 'Cara', 'Stevens', 46, 'Sales Assistant', 145600, '2011/12/06', 3990, 'c.stevens@datatables.net', 'New York' ),
+		( 52, 'Hermione', 'Butler', 47, 'Regional Director', 356250, '2011/03/21', 1016, 'h.butler@datatables.net', 'London' ),
+		( 53, 'Lael', 'Greer', 21, 'Systems Administrator', 103500, '2009/02/27', 6733, 'l.greer@datatables.net', 'London' ),
+		( 54, 'Jonas', 'Alexander', 30, 'Developer', 86500, '2010/07/14', 8196, 'j.alexander@datatables.net', 'San Francisco' ),
+		( 55, 'Shad', 'Decker', 51, 'Regional Director', 183000, '2008/11/13', 6373, 's.decker@datatables.net', 'Edinburgh' ),
+		( 56, 'Michael', 'Bruce', 29, 'Javascript Developer', 183000, '2011/06/27', 5384, 'm.bruce@datatables.net', 'Singapore' ),
+		( 57, 'Donna', 'Snider', 27, 'Customer Support', 112000, '2011/01/25', 4226, 'd.snider@datatables.net', 'New York' );
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/scripts/objects.php b/public/admin/js/DataTables/examples/server_side/scripts/objects.php
new file mode 100644
index 0000000000000000000000000000000000000000..a10c8668338558a054c91a8f974ad0e5fc71d3fa
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/scripts/objects.php
@@ -0,0 +1,57 @@
+<?php
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Easy set variables
+ */
+
+// DB table to use
+$table = 'datatables_demo';
+
+// Table's primary key
+$primaryKey = 'id';
+
+// Array of database columns which should be read and sent back to DataTables.
+// The `db` parameter represents the column name in the database, while the `dt`
+// parameter represents the DataTables column identifier. In this case object
+// parameter names
+$columns = array(
+	array( 'db' => 'first_name', 'dt' => 'first_name' ),
+	array( 'db' => 'last_name',  'dt' => 'last_name' ),
+	array( 'db' => 'position',   'dt' => 'position' ),
+	array( 'db' => 'office',     'dt' => 'office' ),
+	array(
+		'db'        => 'start_date',
+		'dt'        => 'start_date',
+		'formatter' => function( $d, $row ) {
+			return date( 'jS M y', strtotime($d));
+		}
+	),
+	array(
+		'db'        => 'salary',
+		'dt'        => 'salary',
+		'formatter' => function( $d, $row ) {
+			return '$'.number_format($d);
+		}
+	)
+);
+
+// SQL server connection information
+$sql_details = array(
+	'user' => '',
+	'pass' => '',
+	'db'   => '',
+	'host' => ''
+);
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * If you just want to use the basic configuration for DataTables with PHP
+ * server-side, there is no need to edit below this line.
+ */
+
+require( 'ssp.class.php' );
+
+echo json_encode(
+	SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
+);
+
diff --git a/public/admin/js/DataTables/examples/server_side/scripts/post.php b/public/admin/js/DataTables/examples/server_side/scripts/post.php
new file mode 100644
index 0000000000000000000000000000000000000000..41901d7d4d8af42d1a6617154e09e1ab03e49056
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/scripts/post.php
@@ -0,0 +1,71 @@
+<?php
+
+/*
+ * DataTables example server-side processing script.
+ *
+ * Please note that this script is intentionally extremely simply to show how
+ * server-side processing can be implemented, and probably shouldn't be used as
+ * the basis for a large complex system. It is suitable for simple use cases as
+ * for learning.
+ *
+ * See http://datatables.net/usage/server-side for full details on the server-
+ * side processing requirements of DataTables.
+ *
+ * @license MIT - http://datatables.net/license_mit
+ */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Easy set variables
+ */
+
+// DB table to use
+$table = 'datatables_demo';
+
+// Table's primary key
+$primaryKey = 'id';
+
+// Array of database columns which should be read and sent back to DataTables.
+// The `db` parameter represents the column name in the database, while the `dt`
+// parameter represents the DataTables column identifier. In this case object
+// parameter names
+$columns = array(
+	array( 'db' => 'first_name', 'dt' => 'first_name' ),
+	array( 'db' => 'last_name',  'dt' => 'last_name' ),
+	array( 'db' => 'position',   'dt' => 'position' ),
+	array( 'db' => 'office',     'dt' => 'office' ),
+	array(
+		'db'        => 'start_date',
+		'dt'        => 'start_date',
+		'formatter' => function( $d, $row ) {
+			return date( 'jS M y', strtotime($d));
+		}
+	),
+	array(
+		'db'        => 'salary',
+		'dt'        => 'salary',
+		'formatter' => function( $d, $row ) {
+			return '$'.number_format($d);
+		}
+	)
+);
+
+// SQL server connection information
+$sql_details = array(
+	'user' => '',
+	'pass' => '',
+	'db'   => '',
+	'host' => ''
+);
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * If you just want to use the basic configuration for DataTables with PHP
+ * server-side, there is no need to edit below this line.
+ */
+
+require( 'ssp.class.php' );
+
+echo json_encode(
+	SSP::simple( $_POST, $sql_details, $table, $primaryKey, $columns )
+);
+
diff --git a/public/admin/js/DataTables/examples/server_side/scripts/postgres.sql b/public/admin/js/DataTables/examples/server_side/scripts/postgres.sql
new file mode 100644
index 0000000000000000000000000000000000000000..e5039ea94036a107d56446d77ad7033ab52e4c31
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/scripts/postgres.sql
@@ -0,0 +1,79 @@
+--
+-- DataTables Ajax and server-side processing database (Postgres)
+--
+DROP TABLE IF EXISTS datatables_demo;
+
+CREATE TABLE datatables_demo (
+	id         serial,
+	first_name text NOT NULL default '',
+	last_name  text NOT NULL default '',
+	position   text NOT NULL default '',
+	email      text NOT NULL default '',
+	office     text NOT NULL default '',
+	start_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
+	age        integer,
+	salary     integer,
+	extn       integer,
+	PRIMARY KEY (id)
+);
+
+INSERT INTO datatables_demo
+		( id, first_name, last_name, age, position, salary, start_date, extn, email, office ) 
+	VALUES
+		( 1, 'Tiger', 'Nixon', 61, 'System Architect', 320800, '2011/04/25', 5421, 't.nixon@datatables.net', 'Edinburgh' ),
+		( 2, 'Garrett', 'Winters', 63, 'Accountant', 170750, '2011/07/25', 8422, 'g.winters@datatables.net', 'Tokyo' ),
+		( 3, 'Ashton', 'Cox', 66, 'Junior Technical Author', 86000, '2009/01/12', 1562, 'a.cox@datatables.net', 'San Francisco' ),
+		( 4, 'Cedric', 'Kelly', 22, 'Senior Javascript Developer', 433060, '2012/03/29', 6224, 'c.kelly@datatables.net', 'Edinburgh' ),
+		( 5, 'Airi', 'Satou', 33, 'Accountant', 162700, '2008/11/28', 5407, 'a.satou@datatables.net', 'Tokyo' ),
+		( 6, 'Brielle', 'Williamson', 61, 'Integration Specialist', 372000, '2012/12/02', 4804, 'b.williamson@datatables.net', 'New York' ),
+		( 7, 'Herrod', 'Chandler', 59, 'Sales Assistant', 137500, '2012/08/06', 9608, 'h.chandler@datatables.net', 'San Francisco' ),
+		( 8, 'Rhona', 'Davidson', 55, 'Integration Specialist', 327900, '2010/10/14', 6200, 'r.davidson@datatables.net', 'Tokyo' ),
+		( 9, 'Colleen', 'Hurst', 39, 'Javascript Developer', 205500, '2009/09/15', 2360, 'c.hurst@datatables.net', 'San Francisco' ),
+		( 10, 'Sonya', 'Frost', 23, 'Software Engineer', 103600, '2008/12/13', 1667, 's.frost@datatables.net', 'Edinburgh' ),
+		( 11, 'Jena', 'Gaines', 30, 'Office Manager', 90560, '2008/12/19', 3814, 'j.gaines@datatables.net', 'London' ),
+		( 12, 'Quinn', 'Flynn', 22, 'Support Lead', 342000, '2013/03/03', 9497, 'q.flynn@datatables.net', 'Edinburgh' ),
+		( 13, 'Charde', 'Marshall', 36, 'Regional Director', 470600, '2008/10/16', 6741, 'c.marshall@datatables.net', 'San Francisco' ),
+		( 14, 'Haley', 'Kennedy', 43, 'Senior Marketing Designer', 313500, '2012/12/18', 3597, 'h.kennedy@datatables.net', 'London' ),
+		( 15, 'Tatyana', 'Fitzpatrick', 19, 'Regional Director', 385750, '2010/03/17', 1965, 't.fitzpatrick@datatables.net', 'London' ),
+		( 16, 'Michael', 'Silva', 66, 'Marketing Designer', 198500, '2012/11/27', 1581, 'm.silva@datatables.net', 'London' ),
+		( 17, 'Paul', 'Byrd', 64, 'Chief Financial Officer (CFO)', 725000, '2010/06/09', 3059, 'p.byrd@datatables.net', 'New York' ),
+		( 18, 'Gloria', 'Little', 59, 'Systems Administrator', 237500, '2009/04/10', 1721, 'g.little@datatables.net', 'New York' ),
+		( 19, 'Bradley', 'Greer', 41, 'Software Engineer', 132000, '2012/10/13', 2558, 'b.greer@datatables.net', 'London' ),
+		( 20, 'Dai', 'Rios', 35, 'Personnel Lead', 217500, '2012/09/26', 2290, 'd.rios@datatables.net', 'Edinburgh' ),
+		( 21, 'Jenette', 'Caldwell', 30, 'Development Lead', 345000, '2011/09/03', 1937, 'j.caldwell@datatables.net', 'New York' ),
+		( 22, 'Yuri', 'Berry', 40, 'Chief Marketing Officer (CMO)', 675000, '2009/06/25', 6154, 'y.berry@datatables.net', 'New York' ),
+		( 23, 'Caesar', 'Vance', 21, 'Pre-Sales Support', 106450, '2011/12/12', 8330, 'c.vance@datatables.net', 'New York' ),
+		( 24, 'Doris', 'Wilder', 23, 'Sales Assistant', 85600, '2010/09/20', 3023, 'd.wilder@datatables.net', 'Sidney' ),
+		( 25, 'Angelica', 'Ramos', 47, 'Chief Executive Officer (CEO)', 1200000, '2009/10/09', 5797, 'a.ramos@datatables.net', 'London' ),
+		( 26, 'Gavin', 'Joyce', 42, 'Developer', 92575, '2010/12/22', 8822, 'g.joyce@datatables.net', 'Edinburgh' ),
+		( 27, 'Jennifer', 'Chang', 28, 'Regional Director', 357650, '2010/11/14', 9239, 'j.chang@datatables.net', 'Singapore' ),
+		( 28, 'Brenden', 'Wagner', 28, 'Software Engineer', 206850, '2011/06/07', 1314, 'b.wagner@datatables.net', 'San Francisco' ),
+		( 29, 'Fiona', 'Green', 48, 'Chief Operating Officer (COO)', 850000, '2010/03/11', 2947, 'f.green@datatables.net', 'San Francisco' ),
+		( 30, 'Shou', 'Itou', 20, 'Regional Marketing', 163000, '2011/08/14', 8899, 's.itou@datatables.net', 'Tokyo' ),
+		( 31, 'Michelle', 'House', 37, 'Integration Specialist', 95400, '2011/06/02', 2769, 'm.house@datatables.net', 'Sidney' ),
+		( 32, 'Suki', 'Burks', 53, 'Developer', 114500, '2009/10/22', 6832, 's.burks@datatables.net', 'London' ),
+		( 33, 'Prescott', 'Bartlett', 27, 'Technical Author', 145000, '2011/05/07', 3606, 'p.bartlett@datatables.net', 'London' ),
+		( 34, 'Gavin', 'Cortez', 22, 'Team Leader', 235500, '2008/10/26', 2860, 'g.cortez@datatables.net', 'San Francisco' ),
+		( 35, 'Martena', 'Mccray', 46, 'Post-Sales support', 324050, '2011/03/09', 8240, 'm.mccray@datatables.net', 'Edinburgh' ),
+		( 36, 'Unity', 'Butler', 47, 'Marketing Designer', 85675, '2009/12/09', 5384, 'u.butler@datatables.net', 'San Francisco' ),
+		( 37, 'Howard', 'Hatfield', 51, 'Office Manager', 164500, '2008/12/16', 7031, 'h.hatfield@datatables.net', 'San Francisco' ),
+		( 38, 'Hope', 'Fuentes', 41, 'Secretary', 109850, '2010/02/12', 6318, 'h.fuentes@datatables.net', 'San Francisco' ),
+		( 39, 'Vivian', 'Harrell', 62, 'Financial Controller', 452500, '2009/02/14', 9422, 'v.harrell@datatables.net', 'San Francisco' ),
+		( 40, 'Timothy', 'Mooney', 37, 'Office Manager', 136200, '2008/12/11', 7580, 't.mooney@datatables.net', 'London' ),
+		( 41, 'Jackson', 'Bradshaw', 65, 'Director', 645750, '2008/09/26', 1042, 'j.bradshaw@datatables.net', 'New York' ),
+		( 42, 'Olivia', 'Liang', 64, 'Support Engineer', 234500, '2011/02/03', 2120, 'o.liang@datatables.net', 'Singapore' ),
+		( 43, 'Bruno', 'Nash', 38, 'Software Engineer', 163500, '2011/05/03', 6222, 'b.nash@datatables.net', 'London' ),
+		( 44, 'Sakura', 'Yamamoto', 37, 'Support Engineer', 139575, '2009/08/19', 9383, 's.yamamoto@datatables.net', 'Tokyo' ),
+		( 45, 'Thor', 'Walton', 61, 'Developer', 98540, '2013/08/11', 8327, 't.walton@datatables.net', 'New York' ),
+		( 46, 'Finn', 'Camacho', 47, 'Support Engineer', 87500, '2009/07/07', 2927, 'f.camacho@datatables.net', 'San Francisco' ),
+		( 47, 'Serge', 'Baldwin', 64, 'Data Coordinator', 138575, '2012/04/09', 8352, 's.baldwin@datatables.net', 'Singapore' ),
+		( 48, 'Zenaida', 'Frank', 63, 'Software Engineer', 125250, '2010/01/04', 7439, 'z.frank@datatables.net', 'New York' ),
+		( 49, 'Zorita', 'Serrano', 56, 'Software Engineer', 115000, '2012/06/01', 4389, 'z.serrano@datatables.net', 'San Francisco' ),
+		( 50, 'Jennifer', 'Acosta', 43, 'Junior Javascript Developer', 75650, '2013/02/01', 3431, 'j.acosta@datatables.net', 'Edinburgh' ),
+		( 51, 'Cara', 'Stevens', 46, 'Sales Assistant', 145600, '2011/12/06', 3990, 'c.stevens@datatables.net', 'New York' ),
+		( 52, 'Hermione', 'Butler', 47, 'Regional Director', 356250, '2011/03/21', 1016, 'h.butler@datatables.net', 'London' ),
+		( 53, 'Lael', 'Greer', 21, 'Systems Administrator', 103500, '2009/02/27', 6733, 'l.greer@datatables.net', 'London' ),
+		( 54, 'Jonas', 'Alexander', 30, 'Developer', 86500, '2010/07/14', 8196, 'j.alexander@datatables.net', 'San Francisco' ),
+		( 55, 'Shad', 'Decker', 51, 'Regional Director', 183000, '2008/11/13', 6373, 's.decker@datatables.net', 'Edinburgh' ),
+		( 56, 'Michael', 'Bruce', 29, 'Javascript Developer', 183000, '2011/06/27', 5384, 'm.bruce@datatables.net', 'Singapore' ),
+		( 57, 'Donna', 'Snider', 27, 'Customer Support', 112000, '2011/01/25', 4226, 'd.snider@datatables.net', 'New York' );
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/scripts/server_processing.php b/public/admin/js/DataTables/examples/server_side/scripts/server_processing.php
new file mode 100644
index 0000000000000000000000000000000000000000..7717d6efb9a8b3f1d2624ba7fd4bde0c9e0e5cfa
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/scripts/server_processing.php
@@ -0,0 +1,72 @@
+<?php
+
+/*
+ * DataTables example server-side processing script.
+ *
+ * Please note that this script is intentionally extremely simply to show how
+ * server-side processing can be implemented, and probably shouldn't be used as
+ * the basis for a large complex system. It is suitable for simple use cases as
+ * for learning.
+ *
+ * See http://datatables.net/usage/server-side for full details on the server-
+ * side processing requirements of DataTables.
+ *
+ * @license MIT - http://datatables.net/license_mit
+ */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Easy set variables
+ */
+
+// DB table to use
+$table = 'datatables_demo';
+
+// Table's primary key
+$primaryKey = 'id';
+
+// Array of database columns which should be read and sent back to DataTables.
+// The `db` parameter represents the column name in the database, while the `dt`
+// parameter represents the DataTables column identifier. In this case simple
+// indexes
+$columns = array(
+	array( 'db' => 'first_name', 'dt' => 0 ),
+	array( 'db' => 'last_name',  'dt' => 1 ),
+	array( 'db' => 'position',   'dt' => 2 ),
+	array( 'db' => 'office',     'dt' => 3 ),
+	array(
+		'db'        => 'start_date',
+		'dt'        => 4,
+		'formatter' => function( $d, $row ) {
+			return date( 'jS M y', strtotime($d));
+		}
+	),
+	array(
+		'db'        => 'salary',
+		'dt'        => 5,
+		'formatter' => function( $d, $row ) {
+			return '$'.number_format($d);
+		}
+	)
+);
+
+// SQL server connection information
+$sql_details = array(
+	'user' => '',
+	'pass' => '',
+	'db'   => '',
+	'host' => ''
+);
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * If you just want to use the basic configuration for DataTables with PHP
+ * server-side, there is no need to edit below this line.
+ */
+
+require( 'ssp.class.php' );
+
+echo json_encode(
+	SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
+);
+
+
diff --git a/public/admin/js/DataTables/examples/server_side/scripts/sqlite.sql b/public/admin/js/DataTables/examples/server_side/scripts/sqlite.sql
new file mode 100644
index 0000000000000000000000000000000000000000..d5620e7d18f96eda5b0a1bdeaa8d0f7612df5716
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/scripts/sqlite.sql
@@ -0,0 +1,78 @@
+--
+-- DataTables Ajax and server-side processing database (SQLite)
+--
+DROP TABLE IF EXISTS datatables_demo;
+
+CREATE TABLE datatables_demo (
+	id         integer primary key,
+	first_name text NOT NULL default '',
+	last_name  text NOT NULL default '',
+	position   text NOT NULL default '',
+	email      text NOT NULL default '',
+	office     text NOT NULL default '',
+	start_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
+	age        integer,
+	salary     integer,
+	extn       integer
+);
+
+INSERT INTO datatables_demo
+		( id, first_name, last_name, age, position, salary, start_date, extn, email, office ) 
+	VALUES
+		( 1, 'Tiger', 'Nixon', 61, 'System Architect', 320800, '2011/04/25', 5421, 't.nixon@datatables.net', 'Edinburgh' ),
+		( 2, 'Garrett', 'Winters', 63, 'Accountant', 170750, '2011/07/25', 8422, 'g.winters@datatables.net', 'Tokyo' ),
+		( 3, 'Ashton', 'Cox', 66, 'Junior Technical Author', 86000, '2009/01/12', 1562, 'a.cox@datatables.net', 'San Francisco' ),
+		( 4, 'Cedric', 'Kelly', 22, 'Senior Javascript Developer', 433060, '2012/03/29', 6224, 'c.kelly@datatables.net', 'Edinburgh' ),
+		( 5, 'Airi', 'Satou', 33, 'Accountant', 162700, '2008/11/28', 5407, 'a.satou@datatables.net', 'Tokyo' ),
+		( 6, 'Brielle', 'Williamson', 61, 'Integration Specialist', 372000, '2012/12/02', 4804, 'b.williamson@datatables.net', 'New York' ),
+		( 7, 'Herrod', 'Chandler', 59, 'Sales Assistant', 137500, '2012/08/06', 9608, 'h.chandler@datatables.net', 'San Francisco' ),
+		( 8, 'Rhona', 'Davidson', 55, 'Integration Specialist', 327900, '2010/10/14', 6200, 'r.davidson@datatables.net', 'Tokyo' ),
+		( 9, 'Colleen', 'Hurst', 39, 'Javascript Developer', 205500, '2009/09/15', 2360, 'c.hurst@datatables.net', 'San Francisco' ),
+		( 10, 'Sonya', 'Frost', 23, 'Software Engineer', 103600, '2008/12/13', 1667, 's.frost@datatables.net', 'Edinburgh' ),
+		( 11, 'Jena', 'Gaines', 30, 'Office Manager', 90560, '2008/12/19', 3814, 'j.gaines@datatables.net', 'London' ),
+		( 12, 'Quinn', 'Flynn', 22, 'Support Lead', 342000, '2013/03/03', 9497, 'q.flynn@datatables.net', 'Edinburgh' ),
+		( 13, 'Charde', 'Marshall', 36, 'Regional Director', 470600, '2008/10/16', 6741, 'c.marshall@datatables.net', 'San Francisco' ),
+		( 14, 'Haley', 'Kennedy', 43, 'Senior Marketing Designer', 313500, '2012/12/18', 3597, 'h.kennedy@datatables.net', 'London' ),
+		( 15, 'Tatyana', 'Fitzpatrick', 19, 'Regional Director', 385750, '2010/03/17', 1965, 't.fitzpatrick@datatables.net', 'London' ),
+		( 16, 'Michael', 'Silva', 66, 'Marketing Designer', 198500, '2012/11/27', 1581, 'm.silva@datatables.net', 'London' ),
+		( 17, 'Paul', 'Byrd', 64, 'Chief Financial Officer (CFO)', 725000, '2010/06/09', 3059, 'p.byrd@datatables.net', 'New York' ),
+		( 18, 'Gloria', 'Little', 59, 'Systems Administrator', 237500, '2009/04/10', 1721, 'g.little@datatables.net', 'New York' ),
+		( 19, 'Bradley', 'Greer', 41, 'Software Engineer', 132000, '2012/10/13', 2558, 'b.greer@datatables.net', 'London' ),
+		( 20, 'Dai', 'Rios', 35, 'Personnel Lead', 217500, '2012/09/26', 2290, 'd.rios@datatables.net', 'Edinburgh' ),
+		( 21, 'Jenette', 'Caldwell', 30, 'Development Lead', 345000, '2011/09/03', 1937, 'j.caldwell@datatables.net', 'New York' ),
+		( 22, 'Yuri', 'Berry', 40, 'Chief Marketing Officer (CMO)', 675000, '2009/06/25', 6154, 'y.berry@datatables.net', 'New York' ),
+		( 23, 'Caesar', 'Vance', 21, 'Pre-Sales Support', 106450, '2011/12/12', 8330, 'c.vance@datatables.net', 'New York' ),
+		( 24, 'Doris', 'Wilder', 23, 'Sales Assistant', 85600, '2010/09/20', 3023, 'd.wilder@datatables.net', 'Sidney' ),
+		( 25, 'Angelica', 'Ramos', 47, 'Chief Executive Officer (CEO)', 1200000, '2009/10/09', 5797, 'a.ramos@datatables.net', 'London' ),
+		( 26, 'Gavin', 'Joyce', 42, 'Developer', 92575, '2010/12/22', 8822, 'g.joyce@datatables.net', 'Edinburgh' ),
+		( 27, 'Jennifer', 'Chang', 28, 'Regional Director', 357650, '2010/11/14', 9239, 'j.chang@datatables.net', 'Singapore' ),
+		( 28, 'Brenden', 'Wagner', 28, 'Software Engineer', 206850, '2011/06/07', 1314, 'b.wagner@datatables.net', 'San Francisco' ),
+		( 29, 'Fiona', 'Green', 48, 'Chief Operating Officer (COO)', 850000, '2010/03/11', 2947, 'f.green@datatables.net', 'San Francisco' ),
+		( 30, 'Shou', 'Itou', 20, 'Regional Marketing', 163000, '2011/08/14', 8899, 's.itou@datatables.net', 'Tokyo' ),
+		( 31, 'Michelle', 'House', 37, 'Integration Specialist', 95400, '2011/06/02', 2769, 'm.house@datatables.net', 'Sidney' ),
+		( 32, 'Suki', 'Burks', 53, 'Developer', 114500, '2009/10/22', 6832, 's.burks@datatables.net', 'London' ),
+		( 33, 'Prescott', 'Bartlett', 27, 'Technical Author', 145000, '2011/05/07', 3606, 'p.bartlett@datatables.net', 'London' ),
+		( 34, 'Gavin', 'Cortez', 22, 'Team Leader', 235500, '2008/10/26', 2860, 'g.cortez@datatables.net', 'San Francisco' ),
+		( 35, 'Martena', 'Mccray', 46, 'Post-Sales support', 324050, '2011/03/09', 8240, 'm.mccray@datatables.net', 'Edinburgh' ),
+		( 36, 'Unity', 'Butler', 47, 'Marketing Designer', 85675, '2009/12/09', 5384, 'u.butler@datatables.net', 'San Francisco' ),
+		( 37, 'Howard', 'Hatfield', 51, 'Office Manager', 164500, '2008/12/16', 7031, 'h.hatfield@datatables.net', 'San Francisco' ),
+		( 38, 'Hope', 'Fuentes', 41, 'Secretary', 109850, '2010/02/12', 6318, 'h.fuentes@datatables.net', 'San Francisco' ),
+		( 39, 'Vivian', 'Harrell', 62, 'Financial Controller', 452500, '2009/02/14', 9422, 'v.harrell@datatables.net', 'San Francisco' ),
+		( 40, 'Timothy', 'Mooney', 37, 'Office Manager', 136200, '2008/12/11', 7580, 't.mooney@datatables.net', 'London' ),
+		( 41, 'Jackson', 'Bradshaw', 65, 'Director', 645750, '2008/09/26', 1042, 'j.bradshaw@datatables.net', 'New York' ),
+		( 42, 'Olivia', 'Liang', 64, 'Support Engineer', 234500, '2011/02/03', 2120, 'o.liang@datatables.net', 'Singapore' ),
+		( 43, 'Bruno', 'Nash', 38, 'Software Engineer', 163500, '2011/05/03', 6222, 'b.nash@datatables.net', 'London' ),
+		( 44, 'Sakura', 'Yamamoto', 37, 'Support Engineer', 139575, '2009/08/19', 9383, 's.yamamoto@datatables.net', 'Tokyo' ),
+		( 45, 'Thor', 'Walton', 61, 'Developer', 98540, '2013/08/11', 8327, 't.walton@datatables.net', 'New York' ),
+		( 46, 'Finn', 'Camacho', 47, 'Support Engineer', 87500, '2009/07/07', 2927, 'f.camacho@datatables.net', 'San Francisco' ),
+		( 47, 'Serge', 'Baldwin', 64, 'Data Coordinator', 138575, '2012/04/09', 8352, 's.baldwin@datatables.net', 'Singapore' ),
+		( 48, 'Zenaida', 'Frank', 63, 'Software Engineer', 125250, '2010/01/04', 7439, 'z.frank@datatables.net', 'New York' ),
+		( 49, 'Zorita', 'Serrano', 56, 'Software Engineer', 115000, '2012/06/01', 4389, 'z.serrano@datatables.net', 'San Francisco' ),
+		( 50, 'Jennifer', 'Acosta', 43, 'Junior Javascript Developer', 75650, '2013/02/01', 3431, 'j.acosta@datatables.net', 'Edinburgh' ),
+		( 51, 'Cara', 'Stevens', 46, 'Sales Assistant', 145600, '2011/12/06', 3990, 'c.stevens@datatables.net', 'New York' ),
+		( 52, 'Hermione', 'Butler', 47, 'Regional Director', 356250, '2011/03/21', 1016, 'h.butler@datatables.net', 'London' ),
+		( 53, 'Lael', 'Greer', 21, 'Systems Administrator', 103500, '2009/02/27', 6733, 'l.greer@datatables.net', 'London' ),
+		( 54, 'Jonas', 'Alexander', 30, 'Developer', 86500, '2010/07/14', 8196, 'j.alexander@datatables.net', 'San Francisco' ),
+		( 55, 'Shad', 'Decker', 51, 'Regional Director', 183000, '2008/11/13', 6373, 's.decker@datatables.net', 'Edinburgh' ),
+		( 56, 'Michael', 'Bruce', 29, 'Javascript Developer', 183000, '2011/06/27', 5384, 'm.bruce@datatables.net', 'Singapore' ),
+		( 57, 'Donna', 'Snider', 27, 'Customer Support', 112000, '2011/01/25', 4226, 'd.snider@datatables.net', 'New York' );
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/scripts/sqlserver.sql b/public/admin/js/DataTables/examples/server_side/scripts/sqlserver.sql
new file mode 100644
index 0000000000000000000000000000000000000000..0abd4f343855be49b1fda71d6d90c36ca9fa75c6
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/scripts/sqlserver.sql
@@ -0,0 +1,80 @@
+--
+-- DataTables Ajax and server-side processing database (SQL Server)
+--
+IF OBJECT_ID('dbo.datatables_demo', 'U') IS NOT NULL
+  DROP TABLE dbo.datatables_demo;
+
+CREATE TABLE datatables_demo (
+	id         int NOT NULL identity,
+	first_name varchar(250) NOT NULL default '',
+	last_name  varchar(250) NOT NULL default '',
+	position   varchar(250) NOT NULL default '',
+	email      varchar(250) NOT NULL default '',
+	office     varchar(250) NOT NULL default '',
+	start_date datetime DEFAULT GETDATE(),
+	age        int,
+	salary     int,
+	extn       int,
+	PRIMARY KEY (id)
+);
+
+INSERT INTO datatables_demo
+		( id, first_name, last_name, age, position, salary, start_date, extn, email, office ) 
+	VALUES
+		( 1, 'Tiger', 'Nixon', 61, 'System Architect', 320800, '2011/04/25', 5421, 't.nixon@datatables.net', 'Edinburgh' ),
+		( 2, 'Garrett', 'Winters', 63, 'Accountant', 170750, '2011/07/25', 8422, 'g.winters@datatables.net', 'Tokyo' ),
+		( 3, 'Ashton', 'Cox', 66, 'Junior Technical Author', 86000, '2009/01/12', 1562, 'a.cox@datatables.net', 'San Francisco' ),
+		( 4, 'Cedric', 'Kelly', 22, 'Senior Javascript Developer', 433060, '2012/03/29', 6224, 'c.kelly@datatables.net', 'Edinburgh' ),
+		( 5, 'Airi', 'Satou', 33, 'Accountant', 162700, '2008/11/28', 5407, 'a.satou@datatables.net', 'Tokyo' ),
+		( 6, 'Brielle', 'Williamson', 61, 'Integration Specialist', 372000, '2012/12/02', 4804, 'b.williamson@datatables.net', 'New York' ),
+		( 7, 'Herrod', 'Chandler', 59, 'Sales Assistant', 137500, '2012/08/06', 9608, 'h.chandler@datatables.net', 'San Francisco' ),
+		( 8, 'Rhona', 'Davidson', 55, 'Integration Specialist', 327900, '2010/10/14', 6200, 'r.davidson@datatables.net', 'Tokyo' ),
+		( 9, 'Colleen', 'Hurst', 39, 'Javascript Developer', 205500, '2009/09/15', 2360, 'c.hurst@datatables.net', 'San Francisco' ),
+		( 10, 'Sonya', 'Frost', 23, 'Software Engineer', 103600, '2008/12/13', 1667, 's.frost@datatables.net', 'Edinburgh' ),
+		( 11, 'Jena', 'Gaines', 30, 'Office Manager', 90560, '2008/12/19', 3814, 'j.gaines@datatables.net', 'London' ),
+		( 12, 'Quinn', 'Flynn', 22, 'Support Lead', 342000, '2013/03/03', 9497, 'q.flynn@datatables.net', 'Edinburgh' ),
+		( 13, 'Charde', 'Marshall', 36, 'Regional Director', 470600, '2008/10/16', 6741, 'c.marshall@datatables.net', 'San Francisco' ),
+		( 14, 'Haley', 'Kennedy', 43, 'Senior Marketing Designer', 313500, '2012/12/18', 3597, 'h.kennedy@datatables.net', 'London' ),
+		( 15, 'Tatyana', 'Fitzpatrick', 19, 'Regional Director', 385750, '2010/03/17', 1965, 't.fitzpatrick@datatables.net', 'London' ),
+		( 16, 'Michael', 'Silva', 66, 'Marketing Designer', 198500, '2012/11/27', 1581, 'm.silva@datatables.net', 'London' ),
+		( 17, 'Paul', 'Byrd', 64, 'Chief Financial Officer (CFO)', 725000, '2010/06/09', 3059, 'p.byrd@datatables.net', 'New York' ),
+		( 18, 'Gloria', 'Little', 59, 'Systems Administrator', 237500, '2009/04/10', 1721, 'g.little@datatables.net', 'New York' ),
+		( 19, 'Bradley', 'Greer', 41, 'Software Engineer', 132000, '2012/10/13', 2558, 'b.greer@datatables.net', 'London' ),
+		( 20, 'Dai', 'Rios', 35, 'Personnel Lead', 217500, '2012/09/26', 2290, 'd.rios@datatables.net', 'Edinburgh' ),
+		( 21, 'Jenette', 'Caldwell', 30, 'Development Lead', 345000, '2011/09/03', 1937, 'j.caldwell@datatables.net', 'New York' ),
+		( 22, 'Yuri', 'Berry', 40, 'Chief Marketing Officer (CMO)', 675000, '2009/06/25', 6154, 'y.berry@datatables.net', 'New York' ),
+		( 23, 'Caesar', 'Vance', 21, 'Pre-Sales Support', 106450, '2011/12/12', 8330, 'c.vance@datatables.net', 'New York' ),
+		( 24, 'Doris', 'Wilder', 23, 'Sales Assistant', 85600, '2010/09/20', 3023, 'd.wilder@datatables.net', 'Sidney' ),
+		( 25, 'Angelica', 'Ramos', 47, 'Chief Executive Officer (CEO)', 1200000, '2009/10/09', 5797, 'a.ramos@datatables.net', 'London' ),
+		( 26, 'Gavin', 'Joyce', 42, 'Developer', 92575, '2010/12/22', 8822, 'g.joyce@datatables.net', 'Edinburgh' ),
+		( 27, 'Jennifer', 'Chang', 28, 'Regional Director', 357650, '2010/11/14', 9239, 'j.chang@datatables.net', 'Singapore' ),
+		( 28, 'Brenden', 'Wagner', 28, 'Software Engineer', 206850, '2011/06/07', 1314, 'b.wagner@datatables.net', 'San Francisco' ),
+		( 29, 'Fiona', 'Green', 48, 'Chief Operating Officer (COO)', 850000, '2010/03/11', 2947, 'f.green@datatables.net', 'San Francisco' ),
+		( 30, 'Shou', 'Itou', 20, 'Regional Marketing', 163000, '2011/08/14', 8899, 's.itou@datatables.net', 'Tokyo' ),
+		( 31, 'Michelle', 'House', 37, 'Integration Specialist', 95400, '2011/06/02', 2769, 'm.house@datatables.net', 'Sidney' ),
+		( 32, 'Suki', 'Burks', 53, 'Developer', 114500, '2009/10/22', 6832, 's.burks@datatables.net', 'London' ),
+		( 33, 'Prescott', 'Bartlett', 27, 'Technical Author', 145000, '2011/05/07', 3606, 'p.bartlett@datatables.net', 'London' ),
+		( 34, 'Gavin', 'Cortez', 22, 'Team Leader', 235500, '2008/10/26', 2860, 'g.cortez@datatables.net', 'San Francisco' ),
+		( 35, 'Martena', 'Mccray', 46, 'Post-Sales support', 324050, '2011/03/09', 8240, 'm.mccray@datatables.net', 'Edinburgh' ),
+		( 36, 'Unity', 'Butler', 47, 'Marketing Designer', 85675, '2009/12/09', 5384, 'u.butler@datatables.net', 'San Francisco' ),
+		( 37, 'Howard', 'Hatfield', 51, 'Office Manager', 164500, '2008/12/16', 7031, 'h.hatfield@datatables.net', 'San Francisco' ),
+		( 38, 'Hope', 'Fuentes', 41, 'Secretary', 109850, '2010/02/12', 6318, 'h.fuentes@datatables.net', 'San Francisco' ),
+		( 39, 'Vivian', 'Harrell', 62, 'Financial Controller', 452500, '2009/02/14', 9422, 'v.harrell@datatables.net', 'San Francisco' ),
+		( 40, 'Timothy', 'Mooney', 37, 'Office Manager', 136200, '2008/12/11', 7580, 't.mooney@datatables.net', 'London' ),
+		( 41, 'Jackson', 'Bradshaw', 65, 'Director', 645750, '2008/09/26', 1042, 'j.bradshaw@datatables.net', 'New York' ),
+		( 42, 'Olivia', 'Liang', 64, 'Support Engineer', 234500, '2011/02/03', 2120, 'o.liang@datatables.net', 'Singapore' ),
+		( 43, 'Bruno', 'Nash', 38, 'Software Engineer', 163500, '2011/05/03', 6222, 'b.nash@datatables.net', 'London' ),
+		( 44, 'Sakura', 'Yamamoto', 37, 'Support Engineer', 139575, '2009/08/19', 9383, 's.yamamoto@datatables.net', 'Tokyo' ),
+		( 45, 'Thor', 'Walton', 61, 'Developer', 98540, '2013/08/11', 8327, 't.walton@datatables.net', 'New York' ),
+		( 46, 'Finn', 'Camacho', 47, 'Support Engineer', 87500, '2009/07/07', 2927, 'f.camacho@datatables.net', 'San Francisco' ),
+		( 47, 'Serge', 'Baldwin', 64, 'Data Coordinator', 138575, '2012/04/09', 8352, 's.baldwin@datatables.net', 'Singapore' ),
+		( 48, 'Zenaida', 'Frank', 63, 'Software Engineer', 125250, '2010/01/04', 7439, 'z.frank@datatables.net', 'New York' ),
+		( 49, 'Zorita', 'Serrano', 56, 'Software Engineer', 115000, '2012/06/01', 4389, 'z.serrano@datatables.net', 'San Francisco' ),
+		( 50, 'Jennifer', 'Acosta', 43, 'Junior Javascript Developer', 75650, '2013/02/01', 3431, 'j.acosta@datatables.net', 'Edinburgh' ),
+		( 51, 'Cara', 'Stevens', 46, 'Sales Assistant', 145600, '2011/12/06', 3990, 'c.stevens@datatables.net', 'New York' ),
+		( 52, 'Hermione', 'Butler', 47, 'Regional Director', 356250, '2011/03/21', 1016, 'h.butler@datatables.net', 'London' ),
+		( 53, 'Lael', 'Greer', 21, 'Systems Administrator', 103500, '2009/02/27', 6733, 'l.greer@datatables.net', 'London' ),
+		( 54, 'Jonas', 'Alexander', 30, 'Developer', 86500, '2010/07/14', 8196, 'j.alexander@datatables.net', 'San Francisco' ),
+		( 55, 'Shad', 'Decker', 51, 'Regional Director', 183000, '2008/11/13', 6373, 's.decker@datatables.net', 'Edinburgh' ),
+		( 56, 'Michael', 'Bruce', 29, 'Javascript Developer', 183000, '2011/06/27', 5384, 'm.bruce@datatables.net', 'Singapore' ),
+		( 57, 'Donna', 'Snider', 27, 'Customer Support', 112000, '2011/01/25', 4226, 'd.snider@datatables.net', 'New York' );
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/scripts/ssp.class.php b/public/admin/js/DataTables/examples/server_side/scripts/ssp.class.php
new file mode 100644
index 0000000000000000000000000000000000000000..3b37189bdded86c6b6467dca0fb5df982c1fab41
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/scripts/ssp.class.php
@@ -0,0 +1,390 @@
+<?php
+
+/*
+ * Helper functions for building a DataTables server-side processing SQL query
+ *
+ * The static functions in this class are just helper functions to help build
+ * the SQL used in the DataTables demo server-side processing scripts. These
+ * functions obviously do not represent all that can be done with server-side
+ * processing, they are intentionally simple to show how it works. More complex
+ * server-side processing operations will likely require a custom script.
+ *
+ * See http://datatables.net/usage/server-side for full details on the server-
+ * side processing requirements of DataTables.
+ *
+ * @license MIT - http://datatables.net/license_mit
+ */
+
+
+// REMOVE THIS BLOCK - used for DataTables test environment only!
+$file = $_SERVER['DOCUMENT_ROOT'].'/datatables/mysql.php';
+if ( is_file( $file ) ) {
+	include( $file );
+}
+
+
+class SSP {
+	/**
+	 * Create the data output array for the DataTables rows
+	 *
+	 *  @param  array $columns Column information array
+	 *  @param  array $data    Data from the SQL get
+	 *  @return array          Formatted data in a row based format
+	 */
+	static function data_output ( $columns, $data )
+	{
+		$out = array();
+
+		for ( $i=0, $ien=count($data) ; $i<$ien ; $i++ ) {
+			$row = array();
+
+			for ( $j=0, $jen=count($columns) ; $j<$jen ; $j++ ) {
+				$column = $columns[$j];
+
+				// Is there a formatter?
+				if ( isset( $column['formatter'] ) ) {
+					$row[ $column['dt'] ] = $column['formatter']( $data[$i][ $column['db'] ], $data[$i] );
+				}
+				else {
+					$row[ $column['dt'] ] = $data[$i][ $columns[$j]['db'] ];
+				}
+			}
+
+			$out[] = $row;
+		}
+
+		return $out;
+	}
+
+
+	/**
+	 * Paging
+	 *
+	 * Construct the LIMIT clause for server-side processing SQL query
+	 *
+	 *  @param  array $request Data sent to server by DataTables
+	 *  @param  array $columns Column information array
+	 *  @return string SQL limit clause
+	 */
+	static function limit ( $request, $columns )
+	{
+		$limit = '';
+
+		if ( isset($request['start']) && $request['length'] != -1 ) {
+			$limit = "LIMIT ".intval($request['start']).", ".intval($request['length']);
+		}
+
+		return $limit;
+	}
+
+
+	/**
+	 * Ordering
+	 *
+	 * Construct the ORDER BY clause for server-side processing SQL query
+	 *
+	 *  @param  array $request Data sent to server by DataTables
+	 *  @param  array $columns Column information array
+	 *  @return string SQL order by clause
+	 */
+	static function order ( $request, $columns )
+	{
+		$order = '';
+
+		if ( isset($request['order']) && count($request['order']) ) {
+			$orderBy = array();
+			$dtColumns = self::pluck( $columns, 'dt' );
+
+			for ( $i=0, $ien=count($request['order']) ; $i<$ien ; $i++ ) {
+				// Convert the column index into the column data property
+				$columnIdx = intval($request['order'][$i]['column']);
+				$requestColumn = $request['columns'][$columnIdx];
+
+				$columnIdx = array_search( $requestColumn['data'], $dtColumns );
+				$column = $columns[ $columnIdx ];
+
+				if ( $requestColumn['orderable'] == 'true' ) {
+					$dir = $request['order'][$i]['dir'] === 'asc' ?
+						'ASC' :
+						'DESC';
+
+					$orderBy[] = '`'.$column['db'].'` '.$dir;
+				}
+			}
+
+			$order = 'ORDER BY '.implode(', ', $orderBy);
+		}
+
+		return $order;
+	}
+
+
+	/**
+	 * Searching / Filtering
+	 *
+	 * Construct the WHERE clause for server-side processing SQL query.
+	 *
+	 * NOTE this does not match the built-in DataTables filtering which does it
+	 * word by word on any field. It's possible to do here performance on large
+	 * databases would be very poor
+	 *
+	 *  @param  array $request Data sent to server by DataTables
+	 *  @param  array $columns Column information array
+	 *  @param  array $bindings Array of values for PDO bindings, used in the
+	 *    sql_exec() function
+	 *  @return string SQL where clause
+	 */
+	static function filter ( $request, $columns, &$bindings )
+	{
+		$globalSearch = array();
+		$columnSearch = array();
+		$dtColumns = self::pluck( $columns, 'dt' );
+
+		if ( isset($request['search']) && $request['search']['value'] != '' ) {
+			$str = $request['search']['value'];
+
+			for ( $i=0, $ien=count($request['columns']) ; $i<$ien ; $i++ ) {
+				$requestColumn = $request['columns'][$i];
+				$columnIdx = array_search( $requestColumn['data'], $dtColumns );
+				$column = $columns[ $columnIdx ];
+
+				if ( $requestColumn['searchable'] == 'true' ) {
+					$binding = self::bind( $bindings, '%'.$str.'%', PDO::PARAM_STR );
+					$globalSearch[] = "`".$column['db']."` LIKE ".$binding;
+				}
+			}
+		}
+
+		// Individual column filtering
+		for ( $i=0, $ien=count($request['columns']) ; $i<$ien ; $i++ ) {
+			$requestColumn = $request['columns'][$i];
+			$columnIdx = array_search( $requestColumn['data'], $dtColumns );
+			$column = $columns[ $columnIdx ];
+
+			$str = $requestColumn['search']['value'];
+
+			if ( $requestColumn['searchable'] == 'true' &&
+			 $str != '' ) {
+				$binding = self::bind( $bindings, '%'.$str.'%', PDO::PARAM_STR );
+				$columnSearch[] = "`".$column['db']."` LIKE ".$binding;
+			}
+		}
+
+		// Combine the filters into a single string
+		$where = '';
+
+		if ( count( $globalSearch ) ) {
+			$where = '('.implode(' OR ', $globalSearch).')';
+		}
+
+		if ( count( $columnSearch ) ) {
+			$where = $where === '' ?
+				implode(' AND ', $columnSearch) :
+				$where .' AND '. implode(' AND ', $columnSearch);
+		}
+
+		if ( $where !== '' ) {
+			$where = 'WHERE '.$where;
+		}
+
+		return $where;
+	}
+
+
+	/**
+	 * Perform the SQL queries needed for an server-side processing requested,
+	 * utilising the helper functions of this class, limit(), order() and
+	 * filter() among others. The returned array is ready to be encoded as JSON
+	 * in response to an SSP request, or can be modified if needed before
+	 * sending back to the client.
+	 *
+	 *  @param  array $request Data sent to server by DataTables
+	 *  @param  array $sql_details SQL connection details - see sql_connect()
+	 *  @param  string $table SQL table to query
+	 *  @param  string $primaryKey Primary key of the table
+	 *  @param  array $columns Column information array
+	 *  @return array          Server-side processing response array
+	 */
+	static function simple ( $request, $sql_details, $table, $primaryKey, $columns )
+	{
+		$bindings = array();
+		$db = self::sql_connect( $sql_details );
+
+		// Build the SQL query string from the request
+		$limit = self::limit( $request, $columns );
+		$order = self::order( $request, $columns );
+		$where = self::filter( $request, $columns, $bindings );
+
+		// Main query to actually get the data
+		$data = self::sql_exec( $db, $bindings,
+			"SELECT SQL_CALC_FOUND_ROWS `".implode("`, `", self::pluck($columns, 'db'))."`
+			 FROM `$table`
+			 $where
+			 $order
+			 $limit"
+		);
+
+		// Data set length after filtering
+		$resFilterLength = self::sql_exec( $db,
+			"SELECT FOUND_ROWS()"
+		);
+		$recordsFiltered = $resFilterLength[0][0];
+
+		// Total data set length
+		$resTotalLength = self::sql_exec( $db,
+			"SELECT COUNT(`{$primaryKey}`)
+			 FROM   `$table`"
+		);
+		$recordsTotal = $resTotalLength[0][0];
+
+
+		/*
+		 * Output
+		 */
+		return array(
+			"draw"            => intval( $request['draw'] ),
+			"recordsTotal"    => intval( $recordsTotal ),
+			"recordsFiltered" => intval( $recordsFiltered ),
+			"data"            => self::data_output( $columns, $data )
+		);
+	}
+
+
+	/**
+	 * Connect to the database
+	 *
+	 * @param  array $sql_details SQL server connection details array, with the
+	 *   properties:
+	 *     * host - host name
+	 *     * db   - database name
+	 *     * user - user name
+	 *     * pass - user password
+	 * @return resource Database connection handle
+	 */
+	static function sql_connect ( $sql_details )
+	{
+		try {
+			$db = @new PDO(
+				"mysql:host={$sql_details['host']};dbname={$sql_details['db']}",
+				$sql_details['user'],
+				$sql_details['pass'],
+				array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION )
+			);
+		}
+		catch (PDOException $e) {
+			self::fatal(
+				"An error occurred while connecting to the database. ".
+				"The error reported by the server was: ".$e->getMessage()
+			);
+		}
+
+		return $db;
+	}
+
+
+	/**
+	 * Execute an SQL query on the database
+	 *
+	 * @param  resource $db  Database handler
+	 * @param  array    $bindings Array of PDO binding values from bind() to be
+	 *   used for safely escaping strings. Note that this can be given as the
+	 *   SQL query string if no bindings are required.
+	 * @param  string   $sql SQL query to execute.
+	 * @return array         Result from the query (all rows)
+	 */
+	static function sql_exec ( $db, $bindings, $sql=null )
+	{
+		// Argument shifting
+		if ( $sql === null ) {
+			$sql = $bindings;
+		}
+
+		$stmt = $db->prepare( $sql );
+		//echo $sql;
+
+		// Bind parameters
+		if ( is_array( $bindings ) ) {
+			for ( $i=0, $ien=count($bindings) ; $i<$ien ; $i++ ) {
+				$binding = $bindings[$i];
+				$stmt->bindValue( $binding['key'], $binding['val'], $binding['type'] );
+			}
+		}
+
+		// Execute
+		try {
+			$stmt->execute();
+		}
+		catch (PDOException $e) {
+			self::fatal( "An SQL error occurred: ".$e->getMessage() );
+		}
+
+		// Return all
+		return $stmt->fetchAll();
+	}
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Internal methods
+	 */
+
+	/**
+	 * Throw a fatal error.
+	 *
+	 * This writes out an error message in a JSON string which DataTables will
+	 * see and show to the user in the browser.
+	 *
+	 * @param  string $msg Message to send to the client
+	 */
+	static function fatal ( $msg )
+	{
+		echo json_encode( array( 
+			"error" => $msg
+		) );
+
+		exit(0);
+	}
+
+	/**
+	 * Create a PDO binding key which can be used for escaping variables safely
+	 * when executing a query with sql_exec()
+	 *
+	 * @param  array &$a    Array of bindings
+	 * @param  *      $val  Value to bind
+	 * @param  int    $type PDO field type
+	 * @return string       Bound key to be used in the SQL where this parameter
+	 *   would be used.
+	 */
+	static function bind ( &$a, $val, $type )
+	{
+		$key = ':binding_'.count( $a );
+
+		$a[] = array(
+			'key' => $key,
+			'val' => $val,
+			'type' => $type
+		);
+
+		return $key;
+	}
+
+
+	/**
+	 * Pull a particular property from each assoc. array in a numeric array, 
+	 * returning and array of the property values from each item.
+	 *
+	 *  @param  array  $a    Array to get data from
+	 *  @param  string $prop Property to read
+	 *  @return array        Array of property values
+	 */
+	static function pluck ( $a, $prop )
+	{
+		$out = array();
+
+		for ( $i=0, $len=count($a) ; $i<$len ; $i++ ) {
+			$out[] = $a[$i][$prop];
+		}
+
+		return $out;
+	}
+}
+
diff --git a/public/admin/js/DataTables/examples/server_side/select_rows.html b/public/admin/js/DataTables/examples/server_side/select_rows.html
new file mode 100644
index 0000000000000000000000000000000000000000..c1483da815efaf5c2e6535953bf1bd59e5d92617
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/select_rows.html
@@ -0,0 +1,344 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Row selection</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var selected = [];
+
+	$("#example").dataTable({
+		"processing": true,
+		"serverSide": true,
+		"ajax": "scripts/ids-arrays.php",
+		"rowCallback": function( row, data, displayIndex ) {
+			if ( $.inArray(data.DT_RowId, selected) !== -1 ) {
+				$(row).addClass('selected');
+			}
+		}
+	});
+
+	$('#example tbody').on('click', 'tr', function () {
+		var id = this.id;
+		var index = $.inArray(id, selected);
+
+		if ( index === -1 ) {
+			selected.push( id );
+		} else {
+			selected.splice( index, 1 );
+		}
+
+		$(this).toggleClass('selected');
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Row selection</span></h1>
+
+			<div class="info">
+				<p>When you want to have user selectable rows in DataTables, it is relatively trivial when using DOM
+				based data - but when using server-side processing, DataTables doesn't retain DOM row elements over
+				pages / filtering etc. As such, you will need to keep a track of which rows a user as selected and mark
+				them as selected on each draw.</p>
+
+				<p>This is shown in this demo, which uses a unique ID assigned to the TR element (this is done
+				automatically through the use of the <code>DT_RowId</code> special property returned as part of the
+				object given by the server for each row) to track which rows are selected and reselect them is
+				appropriate on a draw.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var selected = [];
+
+	$(&quot;#example&quot;).dataTable({
+		&quot;processing&quot;: true,
+		&quot;serverSide&quot;: true,
+		&quot;ajax&quot;: &quot;scripts/ids-arrays.php&quot;,
+		&quot;rowCallback&quot;: function( row, data, displayIndex ) {
+			if ( $.inArray(data.DT_RowId, selected) !== -1 ) {
+				$(row).addClass('selected');
+			}
+		}
+	});
+
+	$('#example tbody').on('click', 'tr', function () {
+		var id = this.id;
+		var index = $.inArray(id, selected);
+
+		if ( index === -1 ) {
+			selected.push( id );
+		} else {
+			selected.splice( index, 1 );
+		}
+
+		$(this).toggleClass('selected');
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Server-side</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Server-side processing</a></li>
+							<li><a href="./custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="./post.html">POST data</a></li>
+							<li><a href="./ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="./object_data.html">Object data source</a></li>
+							<li><a href="./row_details.html">Row details</a></li>
+							<li class="active"><a href="./select_rows.html">Row selection</a></li>
+							<li><a href="./jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="./defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="./pipeline.html">Pipelining data to reduce Ajax calls for paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/server_side/simple.html b/public/admin/js/DataTables/examples/server_side/simple.html
new file mode 100644
index 0000000000000000000000000000000000000000..1fa176ad2034cb4b7284af3ef574afdcf9f5bbeb
--- /dev/null
+++ b/public/admin/js/DataTables/examples/server_side/simple.html
@@ -0,0 +1,308 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Server-side processing</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		"processing": true,
+		"serverSide": true,
+		"ajax": "scripts/server_processing.php"
+	} );
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Server-side processing</span></h1>
+
+			<div class="info">
+				<p>There are many ways to get your data into DataTables, and if you are working with seriously large
+				databases, you might want to consider using the server-side options that DataTables provides. With
+				server-side processing enabled, all paging, searching, ordering etc actions that DataTables performs
+				are handed off to a server where an SQL engine (or similar) can perform these actions on the large data
+				set (after all, that's what the database engine is designed for!). As such, each draw of the table will
+				result in a new Ajax request being made to get the required data.</p>
+
+				<p>Server-side processing is enabled by setting the <a href=
+				"//datatables.net/reference/option/serverSide"><code class="option" title=
+				"DataTables initialisation option">serverSide<span>DT</span></code></a> option to <code>true</code> and
+				providing an Ajax data source through the <a href="//datatables.net/reference/option/ajax"><code class=
+				"option" title="DataTables initialisation option">ajax<span>DT</span></code></a> option.</p>
+
+				<p>This example shows a very simple table, matching the other client-side processing examples, but in
+				this instance using server-side processing.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		&quot;processing&quot;: true,
+		&quot;serverSide&quot;: true,
+		&quot;ajax&quot;: &quot;scripts/server_processing.php&quot;
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/display.html">Base style</a></li>
+							<li><a href="../styling/no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="../styling/cell-border.html">Base style - cell borders</a></li>
+							<li><a href="../styling/compact.html">Base style - compact</a></li>
+							<li><a href="../styling/hover.html">Base style - hover</a></li>
+							<li><a href="../styling/order-column.html">Base style - order-column</a></li>
+							<li><a href="../styling/row-border.html">Base style - row borders</a></li>
+							<li><a href="../styling/stripe.html">Base style - stripe</a></li>
+							<li><a href="../styling/bootstrap.html">Bootstrap</a></li>
+							<li><a href="../styling/foundation.html">Foundation</a></li>
+							<li><a href="../styling/jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Server-side</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./simple.html">Server-side processing</a></li>
+							<li><a href="./custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="./post.html">POST data</a></li>
+							<li><a href="./ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="./object_data.html">Object data source</a></li>
+							<li><a href="./row_details.html">Row details</a></li>
+							<li><a href="./select_rows.html">Row selection</a></li>
+							<li><a href="./jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="./defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="./pipeline.html">Pipelining data to reduce Ajax calls for paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/bootstrap.html b/public/admin/js/DataTables/examples/styling/bootstrap.html
new file mode 100644
index 0000000000000000000000000000000000000000..352b050ac5f3ea03f9a84f5269701e57aed40fe3
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/bootstrap.html
@@ -0,0 +1,764 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Bootstrap</title>
+	<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
+	<link rel="stylesheet" type="text/css" href=
+	"../../extensions/Plugins/integration/bootstrap/3/dataTables.bootstrap.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	body { font-size: 140%; }
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src=
+	"../../extensions/Plugins/integration/bootstrap/3/dataTables.bootstrap.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Bootstrap</span></h1>
+
+			<div class="info">
+				<p>DataTables can integrate seamlessly with <a href="http://getbootstrap.com/">Bootstrap</a> using
+				Bootstrap's <a href="http://getbootstrap.com/css/#tables">table styling options</a> to present a
+				consistent interface with your Bootstrap driven site / app.</p>
+
+				<p>DataTables' Bootstrap integration also provides a renderer for the pagination control in DataTables
+				to ensure that the pagination of the table is also styled consistently by Bootstrap.</p>
+
+				<p>This integration is done simply by including the DataTables Bootstrap files (CSS and JS) which will
+				set the defaults needed for DataTables to be initialised as normal, as shown in this examples.</p>
+			</div>
+
+			<table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+						<li><a href=
+						"../../extensions/Plugins/integration/bootstrap/3/dataTables.bootstrap.js">../../extensions/Plugins/integration/bootstrap/3/dataTables.bootstrap.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">body { font-size: 140%; }</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css</a></li>
+						<li><a href=
+						"../../extensions/Plugins/integration/bootstrap/3/dataTables.bootstrap.css">../../extensions/Plugins/integration/bootstrap/3/dataTables.bootstrap.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li><a href="./display.html">Base style</a></li>
+							<li><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./compact.html">Base style - compact</a></li>
+							<li><a href="./hover.html">Base style - hover</a></li>
+							<li><a href="./order-column.html">Base style - order-column</a></li>
+							<li><a href="./row-border.html">Base style - row borders</a></li>
+							<li><a href="./stripe.html">Base style - stripe</a></li>
+							<li class="active"><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./foundation.html">Foundation</a></li>
+							<li><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/cell-border.html b/public/admin/js/DataTables/examples/styling/cell-border.html
new file mode 100644
index 0000000000000000000000000000000000000000..4a6f54aa003483a67bc869fe9c064f3f9c68e2b8
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/cell-border.html
@@ -0,0 +1,747 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Base style - cell borders</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Base style - cell borders</span></h1>
+
+			<div class="info">
+				<p>This example shows DataTables with just the <code>cell-border</code> class specified, giving a
+				strong delineation between individual cells.</p>
+			</div>
+
+			<table id="example" class="cell-border" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li><a href="./display.html">Base style</a></li>
+							<li><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li class="active"><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./compact.html">Base style - compact</a></li>
+							<li><a href="./hover.html">Base style - hover</a></li>
+							<li><a href="./order-column.html">Base style - order-column</a></li>
+							<li><a href="./row-border.html">Base style - row borders</a></li>
+							<li><a href="./stripe.html">Base style - stripe</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./foundation.html">Foundation</a></li>
+							<li><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/compact.html b/public/admin/js/DataTables/examples/styling/compact.html
new file mode 100644
index 0000000000000000000000000000000000000000..be48360ba67e753075b299bc578a8707d21fff7d
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/compact.html
@@ -0,0 +1,747 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Base style - compact</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Base style - compact</span></h1>
+
+			<div class="info">
+				<p>The <code>compact</code> class is used to reduce the amount of white-space the default styling for
+				the DataTable uses, increasing the information density on screen, as shown below.</p>
+			</div>
+
+			<table id="example" class="display compact" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li><a href="./display.html">Base style</a></li>
+							<li><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li class="active"><a href="./compact.html">Base style - compact</a></li>
+							<li><a href="./hover.html">Base style - hover</a></li>
+							<li><a href="./order-column.html">Base style - order-column</a></li>
+							<li><a href="./row-border.html">Base style - row borders</a></li>
+							<li><a href="./stripe.html">Base style - stripe</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./foundation.html">Foundation</a></li>
+							<li><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/display.html b/public/admin/js/DataTables/examples/styling/display.html
new file mode 100644
index 0000000000000000000000000000000000000000..531ac86deb6704360a34fab0c6af17d5683300d1
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/display.html
@@ -0,0 +1,764 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Base style</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Base style</span></h1>
+
+			<div class="info">
+				<p>The DataTables default style file has a number of features which can be enabled based on the class
+				name of the table. These features are:</p>
+
+				<ul class="markdown">
+					<li><code>cell-border</code> - Cells with a border</li>
+					<li><code>compact</code> - Increase the data density by reducing the cell padding</li>
+					<li><code>hover</code> - Highlight a row when hovered over</li>
+					<li><code>order-column</code> - Highlight the cells in the column currently being ordering
+					upon</li>
+					<li><code>row-border</code> - Rows with a border</li>
+					<li><code>stripe</code> - Zebra striped rows</li>
+				</ul>
+
+				<p>These classes can be combined (simply assign multiple classes to the table) to build up the styling
+				that you want for your table. For more information on the options in the DataTables stylesheet, please
+				<a href="//datatables.net/manual/styling/classes">refer to the DataTables styling manual</a></p>
+
+				<p>The <code>display</code> class is a short-cut for specifying the <code>stripe hover order-column
+				row-border</code> as the class name for a table. This is shown in the example below.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./display.html">Base style</a></li>
+							<li><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./compact.html">Base style - compact</a></li>
+							<li><a href="./hover.html">Base style - hover</a></li>
+							<li><a href="./order-column.html">Base style - order-column</a></li>
+							<li><a href="./row-border.html">Base style - row borders</a></li>
+							<li><a href="./stripe.html">Base style - stripe</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./foundation.html">Foundation</a></li>
+							<li><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/foundation.html b/public/admin/js/DataTables/examples/styling/foundation.html
new file mode 100644
index 0000000000000000000000000000000000000000..502fb015e285a8bdedabe22873ede2f88c726420
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/foundation.html
@@ -0,0 +1,763 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Foundation</title>
+	<link rel="stylesheet" type="text/css" href=
+	"//cdnjs.cloudflare.com/ajax/libs/foundation/4.3.1/css/foundation.min.css">
+	<link rel="stylesheet" type="text/css" href=
+	"../../extensions/Plugins/integration/foundation/dataTables.foundation.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src=
+	"../../extensions/Plugins/integration/foundation/dataTables.foundation.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Foundation</span></h1>
+
+			<div class="info">
+				<p>DataTables can integrate seamlessly with <a href="http://foundation.zurb.com/">Foundation</a> using
+				Foundations's <a href="http://foundation.zurb.com/docs/components/tables.html">table styling
+				options</a> to present a consistent interface with your Foundation driven site / app.</p>
+
+				<p>DataTables' Foundation integration also provides a renderer for the pagination control in DataTables
+				to ensure that the pagination of the table is also styled consistently by Foundation.</p>
+
+				<p>This integration is done simply by including the DataTables Foundation files (CSS and JS) which will
+				set the defaults needed for DataTables to be initialised as normal, as shown in this examples.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+						<li><a href=
+						"../../extensions/Plugins/integration/foundation/dataTables.foundation.js">../../extensions/Plugins/integration/foundation/dataTables.foundation.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//cdnjs.cloudflare.com/ajax/libs/foundation/4.3.1/css/foundation.min.css">//cdnjs.cloudflare.com/ajax/libs/foundation/4.3.1/css/foundation.min.css</a></li>
+						<li><a href=
+						"../../extensions/Plugins/integration/foundation/dataTables.foundation.css">../../extensions/Plugins/integration/foundation/dataTables.foundation.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li><a href="./display.html">Base style</a></li>
+							<li><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./compact.html">Base style - compact</a></li>
+							<li><a href="./hover.html">Base style - hover</a></li>
+							<li><a href="./order-column.html">Base style - order-column</a></li>
+							<li><a href="./row-border.html">Base style - row borders</a></li>
+							<li><a href="./stripe.html">Base style - stripe</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li class="active"><a href="./foundation.html">Foundation</a></li>
+							<li><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/hover.html b/public/admin/js/DataTables/examples/styling/hover.html
new file mode 100644
index 0000000000000000000000000000000000000000..fd1b2119dafa5bdc296dfede8f56c37620422aa2
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/hover.html
@@ -0,0 +1,747 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Base style - hover</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Base style - hover</span></h1>
+
+			<div class="info">
+				<p>This example shows DataTables with just the <code>hover</code> class specified. This class will
+				instruct DataTables' styling to highlight a row when the mouse is hovered over it.</p>
+			</div>
+
+			<table id="example" class="hover" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li><a href="./display.html">Base style</a></li>
+							<li><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./compact.html">Base style - compact</a></li>
+							<li class="active"><a href="./hover.html">Base style - hover</a></li>
+							<li><a href="./order-column.html">Base style - order-column</a></li>
+							<li><a href="./row-border.html">Base style - row borders</a></li>
+							<li><a href="./stripe.html">Base style - stripe</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./foundation.html">Foundation</a></li>
+							<li><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/index.html b/public/admin/js/DataTables/examples/styling/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..fa64fa847a95f9823f2fcc7f94983606093e3acb
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/index.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+
+	<title>DataTables examples - Styling</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Styling</span></h1>
+
+			<div class="info">
+				<p>When using DataTables, you want your tables to fit in with your site / app to make the end user
+				experience as seamless as possible. For this reason, DataTables provides an easy to customise core
+				stylesheet, which has a number of features that you can enable or disable as you required. Additionally
+				there are a number of integration packages which can be used to fit DataTables into a site which uses
+				some of the popular CSS libraries such as Twitter Bootstrap and Foundation. Or of course you can craft
+				your own CSS to fit it into your site perfectly!</p>
+
+				<p>This section includes examples of how DataTables can be styled using these methods.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="./display.html">Base style</a></li>
+							<li><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./compact.html">Base style - compact</a></li>
+							<li><a href="./hover.html">Base style - hover</a></li>
+							<li><a href="./order-column.html">Base style - order-column</a></li>
+							<li><a href="./row-border.html">Base style - row borders</a></li>
+							<li><a href="./stripe.html">Base style - stripe</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./foundation.html">Foundation</a></li>
+							<li><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/jqueryUI.html b/public/admin/js/DataTables/examples/styling/jqueryUI.html
new file mode 100644
index 0000000000000000000000000000000000000000..3e32309fffa5b2e5688c94970bab643d58d42228
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/jqueryUI.html
@@ -0,0 +1,768 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - jQuery UI ThemeRoller</title>
+	<link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
+	<link rel="stylesheet" type="text/css" href=
+	"../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src=
+	"../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>jQuery UI ThemeRoller</span></h1>
+
+			<div class="info">
+				<p>DataTables has the ability to integrate seamlessly with almost any styling library, and integration
+				files are provided for several of the popular styling libraries, including <a href=
+				"//jqueryui.com">jQuery UI</a>.</p>
+
+				<p>To have your table styles integrate with jQuery UI's ThemeRoller styles, simply include the
+				DataTables CSS and JS integration files for jQuery UI, as shown in this example. Note also that because
+				jQuery doesn't provide table styles like some other CSS frameworks, the CSS integration file does add
+				this styling information.</p>
+
+				<p>Please note that DataTables 1.10- actually has built-in support for jQuery UI styling integration
+				through the <a href="//datatables.net/reference/option/jQueryUI"><code class="option" title=
+				"DataTables initialisation option">jQueryUI<span>DT</span></code></a> option. However, this option is
+				deprecated in DataTables 1.10 and will be removed DataTables 1.11, matching how styling integration is
+				provided for other libraries - a more modular, maintainable and extensible method. The method presented
+				on this page is the method that will be use in future.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+						<li><a href=
+						"../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.js">../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css</a></li>
+						<li><a href=
+						"../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.css">../../extensions/Plugins/integration/jqueryui/dataTables.jqueryui.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li><a href="./display.html">Base style</a></li>
+							<li><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./compact.html">Base style - compact</a></li>
+							<li><a href="./hover.html">Base style - hover</a></li>
+							<li><a href="./order-column.html">Base style - order-column</a></li>
+							<li><a href="./row-border.html">Base style - row borders</a></li>
+							<li><a href="./stripe.html">Base style - stripe</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./foundation.html">Foundation</a></li>
+							<li class="active"><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/no-classes.html b/public/admin/js/DataTables/examples/styling/no-classes.html
new file mode 100644
index 0000000000000000000000000000000000000000..854d5a6087c4cf11749fffd4657cabed9fcebe55
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/no-classes.html
@@ -0,0 +1,747 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Base style - no styling classes</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Base style - no styling classes</span></h1>
+
+			<div class="info">
+				<p>This example shows the base DataTables style file being used, with none of the additional feature
+				style classes being used.</p>
+			</div>
+
+			<table id="example" class="" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li><a href="./display.html">Base style</a></li>
+							<li class="active"><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./compact.html">Base style - compact</a></li>
+							<li><a href="./hover.html">Base style - hover</a></li>
+							<li><a href="./order-column.html">Base style - order-column</a></li>
+							<li><a href="./row-border.html">Base style - row borders</a></li>
+							<li><a href="./stripe.html">Base style - stripe</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./foundation.html">Foundation</a></li>
+							<li><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/order-column.html b/public/admin/js/DataTables/examples/styling/order-column.html
new file mode 100644
index 0000000000000000000000000000000000000000..288be80dc2c298ffa1a7abee3a0756a23b5e95c0
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/order-column.html
@@ -0,0 +1,748 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Base style - order-column</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Base style - order-column</span></h1>
+
+			<div class="info">
+				<p>This example shows DataTables with just the <code>order-column</code> class specified. Typically you
+				would want to use the <code>stripe</code> feature class in addition to <code>order-column</code>
+				(possibly <code>hover</code> as well), but this example shows just the ordered column highlighting.</p>
+			</div>
+
+			<table id="example" class="order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li><a href="./display.html">Base style</a></li>
+							<li><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./compact.html">Base style - compact</a></li>
+							<li><a href="./hover.html">Base style - hover</a></li>
+							<li class="active"><a href="./order-column.html">Base style - order-column</a></li>
+							<li><a href="./row-border.html">Base style - row borders</a></li>
+							<li><a href="./stripe.html">Base style - stripe</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./foundation.html">Foundation</a></li>
+							<li><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/row-border.html b/public/admin/js/DataTables/examples/styling/row-border.html
new file mode 100644
index 0000000000000000000000000000000000000000..97ae309adb65c36fb1496ded678ea015aef9e3e0
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/row-border.html
@@ -0,0 +1,747 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Base style - row borders</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Base style - row borders</span></h1>
+
+			<div class="info">
+				<p>This example shows DataTables with just the <code>row-border</code> class specified, which can
+				create a pleasing, minimalist, interface for your tables.</p>
+			</div>
+
+			<table id="example" class="row-border" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li><a href="./display.html">Base style</a></li>
+							<li><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./compact.html">Base style - compact</a></li>
+							<li><a href="./hover.html">Base style - hover</a></li>
+							<li><a href="./order-column.html">Base style - order-column</a></li>
+							<li class="active"><a href="./row-border.html">Base style - row borders</a></li>
+							<li><a href="./stripe.html">Base style - stripe</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./foundation.html">Foundation</a></li>
+							<li><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/examples/styling/stripe.html b/public/admin/js/DataTables/examples/styling/stripe.html
new file mode 100644
index 0000000000000000000000000000000000000000..cf1311b47bb43da132e9ce39295f2943db7feef0
--- /dev/null
+++ b/public/admin/js/DataTables/examples/styling/stripe.html
@@ -0,0 +1,746 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>DataTables example - Base style - stripe</title>
+	<link rel="stylesheet" type="text/css" href="../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+$(document).ready(function() {
+	$('#example').dataTable();
+} );
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>DataTables example <span>Base style - stripe</span></h1>
+
+			<div class="info">
+				<p>This example shows DataTables with just the <code>stripe</code> class specified.</p>
+			</div>
+
+			<table id="example" class="stripe" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../media/js/jquery.js">../../media/js/jquery.js</a></li>
+						<li><a href="../../media/js/jquery.dataTables.js">../../media/js/jquery.dataTables.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../media/css/jquery.dataTables.css">../../media/css/jquery.dataTables.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../basic_init/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../basic_init/zero_configuration.html">Zero configuration</a></li>
+							<li><a href="../basic_init/filter_only.html">Feature enable / disable</a></li>
+							<li><a href="../basic_init/table_sorting.html">Default ordering (sorting)</a></li>
+							<li><a href="../basic_init/multi_col_sort.html">Multi-column ordering</a></li>
+							<li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
+							<li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
+							<li><a href="../basic_init/complex_header.html">Complex headers (rowspan and
+							colspan)</a></li>
+							<li><a href="../basic_init/dom.html">DOM positioning</a></li>
+							<li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
+							<li><a href="../basic_init/state_save.html">State saving</a></li>
+							<li><a href="../basic_init/alt_pagination.html">Alternative pagination</a></li>
+							<li><a href="../basic_init/scroll_y.html">Scroll - vertical</a></li>
+							<li><a href="../basic_init/scroll_x.html">Scroll - horizontal</a></li>
+							<li><a href="../basic_init/scroll_xy.html">Scroll - horizontal and vertical</a></li>
+							<li><a href="../basic_init/scroll_y_theme.html">Scroll - vertical with jQuery UI
+							ThemeRoller</a></li>
+							<li><a href="../basic_init/comma-decimal.html">Language - Comma decimal place</a></li>
+							<li><a href="../basic_init/language.html">Language options</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../advanced_init/index.html">Advanced initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../advanced_init/events_live.html">DOM / jQuery events</a></li>
+							<li><a href="../advanced_init/dt_events.html">DataTables events</a></li>
+							<li><a href="../advanced_init/column_render.html">Column rendering</a></li>
+							<li><a href="../advanced_init/length_menu.html">Page length options</a></li>
+							<li><a href="../advanced_init/dom_multiple_elements.html">Multiple table control
+							elements</a></li>
+							<li><a href="../advanced_init/complex_header.html">Complex headers (rowspan /
+							colspan)</a></li>
+							<li><a href="../advanced_init/html5-data-attributes.html">HTML5 data-* attributes</a></li>
+							<li><a href="../advanced_init/language_file.html">Language file</a></li>
+							<li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
+							<li><a href="../advanced_init/row_callback.html">Row created callback</a></li>
+							<li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
+							<li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
+							<li><a href="../advanced_init/dom_toolbar.html">Custom toolbar elements</a></li>
+							<li><a href="../advanced_init/sort_direction_control.html">Order direction sequence
+							control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li><a href="./display.html">Base style</a></li>
+							<li><a href="./no-classes.html">Base style - no styling classes</a></li>
+							<li><a href="./cell-border.html">Base style - cell borders</a></li>
+							<li><a href="./compact.html">Base style - compact</a></li>
+							<li><a href="./hover.html">Base style - hover</a></li>
+							<li><a href="./order-column.html">Base style - order-column</a></li>
+							<li><a href="./row-border.html">Base style - row borders</a></li>
+							<li class="active"><a href="./stripe.html">Base style - stripe</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./foundation.html">Foundation</a></li>
+							<li><a href="./jqueryUI.html">jQuery UI ThemeRoller</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../data_sources/index.html">Data sources</a></h3>
+						<ul class="toc">
+							<li><a href="../data_sources/dom.html">HTML (DOM) sourced data</a></li>
+							<li><a href="../data_sources/ajax.html">Ajax sourced data</a></li>
+							<li><a href="../data_sources/js_array.html">Javascript sourced data</a></li>
+							<li><a href="../data_sources/server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../api/index.html">API</a></h3>
+						<ul class="toc">
+							<li><a href="../api/add_row.html">Add rows</a></li>
+							<li><a href="../api/multi_filter.html">Individual column filtering (text inputs)</a></li>
+							<li><a href="../api/multi_filter_select.html">Individual column filtering (select
+							inputs)</a></li>
+							<li><a href="../api/highlight.html">Highlighting rows and columns</a></li>
+							<li><a href="../api/row_details.html">Child rows (show extra / detailed
+							information)</a></li>
+							<li><a href="../api/select_row.html">Row selection (multiple rows)</a></li>
+							<li><a href="../api/select_single_row.html">Row selection and deletion (single
+							row)</a></li>
+							<li><a href="../api/form.html">Form inputs</a></li>
+							<li><a href="../api/counter_columns.html">Index column</a></li>
+							<li><a href="../api/show_hide.html">Show / hide columns dynamically</a></li>
+							<li><a href="../api/api_in_init.html">Using API in callbacks</a></li>
+							<li><a href="../api/tabs_and_scrolling.html">Scrolling and jQuery UI tabs</a></li>
+							<li><a href="../api/regex.html">Filtering API (regular expressions)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../ajax/index.html">Ajax</a></h3>
+						<ul class="toc">
+							<li><a href="../ajax/simple.html">Ajax data source (arrays)</a></li>
+							<li><a href="../ajax/objects.html">Ajax data source (objects)</a></li>
+							<li><a href="../ajax/deep.html">Nested object data (objects)</a></li>
+							<li><a href="../ajax/objects_subarrays.html">Nested object data (arrays)</a></li>
+							<li><a href="../ajax/orthogonal-data.html">Orthogonal data</a></li>
+							<li><a href="../ajax/null_data_source.html">Generated content for a column</a></li>
+							<li><a href="../ajax/custom_data_property.html">Custom data source property</a></li>
+							<li><a href="../ajax/custom_data_flat.html">Flat array data source</a></li>
+							<li><a href="../ajax/defer_render.html">Deferred rendering for speed</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../server_side/index.html">Server-side</a></h3>
+						<ul class="toc">
+							<li><a href="../server_side/simple.html">Server-side processing</a></li>
+							<li><a href="../server_side/custom_vars.html">Custom HTTP variables</a></li>
+							<li><a href="../server_side/post.html">POST data</a></li>
+							<li><a href="../server_side/ids.html">Automatic addition of row ID attributes</a></li>
+							<li><a href="../server_side/object_data.html">Object data source</a></li>
+							<li><a href="../server_side/row_details.html">Row details</a></li>
+							<li><a href="../server_side/select_rows.html">Row selection</a></li>
+							<li><a href="../server_side/jsonp.html">JSONP data source for remote domains</a></li>
+							<li><a href="../server_side/defer_loading.html">Deferred loading of data</a></li>
+							<li><a href="../server_side/pipeline.html">Pipelining data to reduce Ajax calls for
+							paging</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../plug-ins/index.html">Plug-ins</a></h3>
+						<ul class="toc">
+							<li><a href="../plug-ins/api.html">API plug-in methods</a></li>
+							<li><a href="../plug-ins/sorting_auto.html">Ordering plug-ins (with type
+							detection)</a></li>
+							<li><a href="../plug-ins/sorting_manual.html">Ordering plug-ins (no type
+							detection)</a></li>
+							<li><a href="../plug-ins/range_filtering.html">Custom filtering - range search</a></li>
+							<li><a href="../plug-ins/dom_sort.html">Live DOM ordering</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/AutoFill/Readme.txt b/public/admin/js/DataTables/extensions/AutoFill/Readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..017d1d0d5f15c704103d0ae0d90a2399391d2ec3
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/Readme.txt
@@ -0,0 +1,38 @@
+# AutoFill
+
+AutoFill gives an Excel like option to a DataTable to click and drag over multiple cells, filling in information over the selected cells and incrementing numbers as needed. Key features include:
+
+* Click and drag cell content insertion
+* Automatic incrementing of numeric information
+* Enable and disable on any column
+* Detailed callback functions for customisation
+* Support for both DataTables and browser window scrolling
+
+
+# Installation
+
+To use AutoFill, first download DataTables ( http://datatables.net/download ) and place the unzipped AutoFill package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
+
+
+# Basic usage
+
+AutoFill is initialised using the `$.fn.dataTable.AutoFill` constructor. For example:
+
+```js
+$(document).ready( function () {
+    var table = $('#example').dataTable();
+    new $.fn.dataTable.AutoFill( table );
+} );
+```
+
+
+# Documentation / support
+
+* Documentation: http://datatables.net/extensions/autofill/
+* DataTables support forums: http://datatables.net/forums
+
+
+# GitHub
+
+If you fancy getting involved with the development of AutoFill and help make it better, please refer to its GitHub repo: https://github.com/DataTables/AutoFill
+
diff --git a/public/admin/js/DataTables/extensions/AutoFill/css/dataTables.autoFill.css b/public/admin/js/DataTables/extensions/AutoFill/css/dataTables.autoFill.css
new file mode 100644
index 0000000000000000000000000000000000000000..cab59b3a05966a2537fd9f5a05c8377b77b03b9e
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/css/dataTables.autoFill.css
@@ -0,0 +1,24 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * AutoFill styles
+ */
+
+div.AutoFill_filler {
+	display: none;
+	position: absolute;
+	height: 14px;
+	width: 14px;
+	background: url(../images/filler.png) no-repeat center center;
+	z-index: 1002;
+}
+
+div.AutoFill_border {
+	display: none;
+	position: absolute;
+	background-color: #0063dc;
+	z-index: 1001;
+	
+	box-shadow: 0px 0px 5px #76b4ff;
+	-moz-box-shadow: 0px 0px 5px #76b4ff;
+	-webkit-box-shadow: 0px 0px 5px #76b4ff;
+}
+
diff --git a/public/admin/js/DataTables/extensions/AutoFill/css/dataTables.autoFill.min.css b/public/admin/js/DataTables/extensions/AutoFill/css/dataTables.autoFill.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..b485f2163fc7aef931b3d173124a55cbc3136a8a
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/css/dataTables.autoFill.min.css
@@ -0,0 +1 @@
+div.AutoFill_filler{display:none;position:absolute;height:14px;width:14px;background:url(../images/filler.png) no-repeat center center;z-index:1002}div.AutoFill_border{display:none;position:absolute;background-color:#0063dc;z-index:1001;box-shadow:0px 0px 5px #76b4ff;-moz-box-shadow:0px 0px 5px #76b4ff;-webkit-box-shadow:0px 0px 5px #76b4ff}
diff --git a/public/admin/js/DataTables/extensions/AutoFill/examples/columns.html b/public/admin/js/DataTables/extensions/AutoFill/examples/columns.html
new file mode 100644
index 0000000000000000000000000000000000000000..d891b139e0b0301344abb75347cd4c34fc820d2d
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/examples/columns.html
@@ -0,0 +1,644 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>AutoFill example - Column options</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').dataTable();
+
+	new $.fn.dataTable.AutoFill( table, {
+		"columnDefs": [
+			{ enable:    false, targets: [-1, -2] },
+			{ increment: false, targets: 3 }
+		]
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>AutoFill example <span>Column options</span></h1>
+
+			<div class="info">
+				<p>Columns can be enabled (which they are by default) and disabled from providing the end user with
+				AutoFill abilities by using either <code>columns</code> or <code>columnDefs</code> and the
+				<code>enable</code> option. These two arrays work in exactly the same way <a href=
+				"http://datatables.net/ref/columns">as in DataTables</a>.</p>
+
+				<p>This example shows how disabling columns counting from the right hand side of the table can be
+				achieved. In this case, the last three columns.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').dataTable();
+
+	new $.fn.dataTable.AutoFill( table, {
+		&quot;columnDefs&quot;: [
+			{ enable:    false, targets: [-1, -2] },
+			{ increment: false, targets: 3 }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li class="active"><a href="./columns.html">Column options</a></li>
+							<li><a href="./scrolling.html">Scrolling DataTable</a></li>
+							<li><a href="./fill-both.html">Horizontal and vertical fill</a></li>
+							<li><a href="./fill-horizontal.html">Horizontal fill</a></li>
+							<li><a href="./complete-callback.html">Complete callback</a></li>
+							<li><a href="./step-callback.html">Step callback</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/AutoFill/examples/complete-callback.html b/public/admin/js/DataTables/extensions/AutoFill/examples/complete-callback.html
new file mode 100644
index 0000000000000000000000000000000000000000..2076d4f20b8f75c6703bdee11de26705be59af8c
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/examples/complete-callback.html
@@ -0,0 +1,652 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>AutoFill example - Complete callback</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').dataTable();
+
+	new $.fn.dataTable.AutoFill( table, {
+		complete: function ( altered ) {
+			var last = altered[ altered.length-1 ];
+			alert( 
+				altered.length+' cells were altered in this auto-fill. The '+
+				'value of the last cell altered was: '+last.oldValue+' and is '+
+				'now '+last.newValue
+			);
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>AutoFill example <span>Complete callback</span></h1>
+
+			<div class="info">
+				<p>AutoFill provides a number of customisable callback functions so you can tailor it's actions to
+				exactly what you need. This example shows the use of the <code>complete</code> callback function which
+				is executed at the end of an auto-fill drag, providing information about the cells that were
+				altered.</p>
+
+				<p>For a complete description of the <code>complete</code> callback, please refer to the <a href=
+				"//datatables.net/extras/autofill/options">AutoFill documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').dataTable();
+
+	new $.fn.dataTable.AutoFill( table, {
+		complete: function ( altered ) {
+			var last = altered[ altered.length-1 ];
+			alert( 
+				altered.length+' cells were altered in this auto-fill. The '+
+				'value of the last cell altered was: '+last.oldValue+' and is '+
+				'now '+last.newValue
+			);
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./columns.html">Column options</a></li>
+							<li><a href="./scrolling.html">Scrolling DataTable</a></li>
+							<li><a href="./fill-both.html">Horizontal and vertical fill</a></li>
+							<li><a href="./fill-horizontal.html">Horizontal fill</a></li>
+							<li class="active"><a href="./complete-callback.html">Complete callback</a></li>
+							<li><a href="./step-callback.html">Step callback</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/AutoFill/examples/fill-both.html b/public/admin/js/DataTables/extensions/AutoFill/examples/fill-both.html
new file mode 100644
index 0000000000000000000000000000000000000000..f65076e198518d25d212231ee8ca9e8108dcd156
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/examples/fill-both.html
@@ -0,0 +1,641 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>AutoFill example - Horizontal and vertical fill</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.AutoFill( table, {
+		mode: 'both'
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>AutoFill example <span>Horizontal and vertical fill</span></h1>
+
+			<div class="info">
+				<p>By default AutoFill will allow the fill to operate only on a single column at a time (i.e.
+				vertically). However, it has the ability to provide the fill either horizontally, over both axis or
+				limited to just one axis depending on the direction of the drag. This option is provided by the
+				<code>mode</code> sanitisation option.</p>
+
+				<p>In this case it is set to <code>both</code> (i.e. both horizontal and vertical axis) to provide the
+				filler along a row, rather than a column.</p>
+
+				<p>For the full range of options and syntax for <code>mode</code> please refer to the <a href=
+				"//datatables.net/extras/autofill/options">AutoFill documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.AutoFill( table, {
+		mode: 'both'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./columns.html">Column options</a></li>
+							<li><a href="./scrolling.html">Scrolling DataTable</a></li>
+							<li class="active"><a href="./fill-both.html">Horizontal and vertical fill</a></li>
+							<li><a href="./fill-horizontal.html">Horizontal fill</a></li>
+							<li><a href="./complete-callback.html">Complete callback</a></li>
+							<li><a href="./step-callback.html">Step callback</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/AutoFill/examples/fill-horizontal.html b/public/admin/js/DataTables/extensions/AutoFill/examples/fill-horizontal.html
new file mode 100644
index 0000000000000000000000000000000000000000..13cadac9c664ca4f59248ab7f7a45431f8139eff
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/examples/fill-horizontal.html
@@ -0,0 +1,641 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>AutoFill example - Horizontal fill</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.AutoFill( table, {
+		mode: 'x'
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>AutoFill example <span>Horizontal fill</span></h1>
+
+			<div class="info">
+				<p>By default AutoFill will allow the fill to operate only on a single column at a time (i.e.
+				vertically). However, it has the ability to provide the fill either horizontally, over both axis or
+				limited to just one axis depending on the direction of the drag. This option is provided by the
+				<code>mode</code> sanitisation option.</p>
+
+				<p>In this case it is set to <code>x</code> (i.e. horizontal axis) to provide the filler along a row,
+				rather than a column.</p>
+
+				<p>For the full range of options and syntax for <code>mode</code> please refer to the <a href=
+				"//datatables.net/extras/autofill/options">AutoFill documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.AutoFill( table, {
+		mode: 'x'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./columns.html">Column options</a></li>
+							<li><a href="./scrolling.html">Scrolling DataTable</a></li>
+							<li><a href="./fill-both.html">Horizontal and vertical fill</a></li>
+							<li class="active"><a href="./fill-horizontal.html">Horizontal fill</a></li>
+							<li><a href="./complete-callback.html">Complete callback</a></li>
+							<li><a href="./step-callback.html">Step callback</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/AutoFill/examples/index.html b/public/admin/js/DataTables/extensions/AutoFill/examples/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..9cade86c27ad7510329b7c7818a243a871073bc3
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/examples/index.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+
+	<title>AutoFill examples - AutoFill examples</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>AutoFill example <span>AutoFill examples</span></h1>
+
+			<div class="info">
+				<p>AutoFill gives an Excel like option to a DataTable to click and drag over multiple cells, filling in
+				information over the selected cells and incrementing numbers as needed.</p>
+
+				<p>Thanks to <a href="http://www.phoniax.no/">Phoniax AS</a> for their sponsorship of this plug-in for
+				DataTables.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./columns.html">Column options</a></li>
+							<li><a href="./scrolling.html">Scrolling DataTable</a></li>
+							<li><a href="./fill-both.html">Horizontal and vertical fill</a></li>
+							<li><a href="./fill-horizontal.html">Horizontal fill</a></li>
+							<li><a href="./complete-callback.html">Complete callback</a></li>
+							<li><a href="./step-callback.html">Step callback</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/AutoFill/examples/scrolling.html b/public/admin/js/DataTables/extensions/AutoFill/examples/scrolling.html
new file mode 100644
index 0000000000000000000000000000000000000000..66871ec7f05334ba0308802a709297f617968d29
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/examples/scrolling.html
@@ -0,0 +1,638 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>AutoFill example - Scrolling DataTable</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').dataTable( {
+		scrollY: 200,
+		scrollCollapse: false,
+		paginate: false
+	} );
+
+	new $.fn.dataTable.AutoFill( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>AutoFill example <span>Scrolling DataTable</span></h1>
+
+			<div class="info">
+				<p>When dragging an AutoFill handle, the table (if DataTables scrolling is enabled) or the window will
+				be automatically scrolled, as you approach the edge of the scrolling component. The example below shows
+				the effect with DataTables scrolling (and also window if needed).</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').dataTable( {
+		scrollY: 200,
+		scrollCollapse: false,
+		paginate: false
+	} );
+
+	new $.fn.dataTable.AutoFill( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./columns.html">Column options</a></li>
+							<li class="active"><a href="./scrolling.html">Scrolling DataTable</a></li>
+							<li><a href="./fill-both.html">Horizontal and vertical fill</a></li>
+							<li><a href="./fill-horizontal.html">Horizontal fill</a></li>
+							<li><a href="./complete-callback.html">Complete callback</a></li>
+							<li><a href="./step-callback.html">Step callback</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/AutoFill/examples/simple.html b/public/admin/js/DataTables/extensions/AutoFill/examples/simple.html
new file mode 100644
index 0000000000000000000000000000000000000000..ea3db498b455040228fdb63aaa887471c536205f
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/examples/simple.html
@@ -0,0 +1,631 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>AutoFill example - Basic initialisation</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+	new $.fn.dataTable.AutoFill( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>AutoFill example <span>Basic initialisation</span></h1>
+
+			<div class="info">
+				<p>AutoFill gives an Excel like option to a DataTable to click and drag over multiple cells, filling in
+				information over the selected cells and incrementing numbers as needed.</p>
+
+				<p>AutoFill is initialised using the <code>$.fn.dataTable.AutoFill</code> function as shown in the
+				example below. It requires one parameter, the DataTable instance that AutoFill is to operate on, and
+				optionally a second configuration parameter, which is shown in the other AutoFill examples.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+	new $.fn.dataTable.AutoFill( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./columns.html">Column options</a></li>
+							<li><a href="./scrolling.html">Scrolling DataTable</a></li>
+							<li><a href="./fill-both.html">Horizontal and vertical fill</a></li>
+							<li><a href="./fill-horizontal.html">Horizontal fill</a></li>
+							<li><a href="./complete-callback.html">Complete callback</a></li>
+							<li><a href="./step-callback.html">Step callback</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/AutoFill/examples/step-callback.html b/public/admin/js/DataTables/extensions/AutoFill/examples/step-callback.html
new file mode 100644
index 0000000000000000000000000000000000000000..c1255aaa25af107055ea3cde7d024f6de57681f6
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/examples/step-callback.html
@@ -0,0 +1,660 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>AutoFill example - Step callback</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.autoFill.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.autoFill.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').dataTable();
+
+	new $.fn.dataTable.AutoFill( table, {
+		columnDefs: [ {
+			targets: -1,
+			step: function ( cell, read, last, i, x, y ) {
+				var val = parseInt( (last || read).replace(/[$,]/g, ''), 10 );
+				val += (x<0 || y<0 ? -100 : 100); // - if going back up, + if going down
+
+				// Format for the currency column
+				return '$'+val.toString().replace( /\B(?=(\d{3})+(?!\d))/g, ',' );
+			}
+		} ]
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>AutoFill example <span>Step callback</span></h1>
+
+			<div class="info">
+				<p>By default, AutoFill will increment cells that contain numbers by a single digit for each cell that
+				is iterated over (try the <em>Age</em> column below for example). This behaviour can be disabled
+				completely using the <code>increment</code> column option, but it can also be modified to suit your
+				requirements through use of the <code>step</code> column callback function.</p>
+
+				<p>The <code>step</code> callback is executed for each cell in the auto-fill set and gives complete
+				control over how data is incremented. The example below shows the step function being used on the
+				<em>Salary</em> column to increment by 100, rather than 1 for each cell.</p>
+
+				<p>For a complete description of the <code>step</code> callback, please refer to the <a href=
+				"//datatables.net/extras/autofill/options">AutoFill documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').dataTable();
+
+	new $.fn.dataTable.AutoFill( table, {
+		columnDefs: [ {
+			targets: -1,
+			step: function ( cell, read, last, i, x, y ) {
+				var val = parseInt( (last || read).replace(/[$,]/g, ''), 10 );
+				val += (x&lt;0 || y&lt;0 ? -100 : 100); // - if going back up, + if going down
+
+				// Format for the currency column
+				return '$'+val.toString().replace( /\B(?=(\d{3})+(?!\d))/g, ',' );
+			}
+		} ]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.autoFill.js">../js/dataTables.autoFill.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.autoFill.css">../css/dataTables.autoFill.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./columns.html">Column options</a></li>
+							<li><a href="./scrolling.html">Scrolling DataTable</a></li>
+							<li><a href="./fill-both.html">Horizontal and vertical fill</a></li>
+							<li><a href="./fill-horizontal.html">Horizontal fill</a></li>
+							<li><a href="./complete-callback.html">Complete callback</a></li>
+							<li class="active"><a href="./step-callback.html">Step callback</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/AutoFill/images/filler.png b/public/admin/js/DataTables/extensions/AutoFill/images/filler.png
new file mode 100644
index 0000000000000000000000000000000000000000..f2af65d8c38a5b752894dffc224021da92b182c2
Binary files /dev/null and b/public/admin/js/DataTables/extensions/AutoFill/images/filler.png differ
diff --git a/public/admin/js/DataTables/extensions/AutoFill/js/dataTables.autoFill.js b/public/admin/js/DataTables/extensions/AutoFill/js/dataTables.autoFill.js
new file mode 100755
index 0000000000000000000000000000000000000000..6bbfa35b937271faffcbac10f3f57425ab84e780
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/js/dataTables.autoFill.js
@@ -0,0 +1,855 @@
+/*! AutoFill 1.2.1
+ * ©2008-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     AutoFill
+ * @description Add Excel like click and drag auto-fill options to DataTables
+ * @version     1.2.1
+ * @file        dataTables.autoFill.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function( window, document, undefined ) {
+
+var factory = function( $, DataTable ) {
+"use strict";
+
+/** 
+ * AutoFill provides Excel like auto-fill features for a DataTable
+ *
+ * @class AutoFill
+ * @constructor
+ * @param {object} oTD DataTables settings object
+ * @param {object} oConfig Configuration object for AutoFill
+ */
+var AutoFill = function( oDT, oConfig )
+{
+	/* Sanity check that we are a new instance */
+	if ( ! (this instanceof AutoFill) ) {
+		throw( "Warning: AutoFill must be initialised with the keyword 'new'" );
+	}
+
+	if ( ! $.fn.dataTableExt.fnVersionCheck('1.7.0') ) {
+		throw( "Warning: AutoFill requires DataTables 1.7 or greater");
+	}
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public class variables
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	this.c = {};
+
+	/**
+	 * @namespace Settings object which contains customisable information for AutoFill instance
+	 */
+	this.s = {
+		/**
+		 * @namespace Cached information about the little dragging icon (the filler)
+		 */
+		"filler": {
+			"height": 0,
+			"width": 0
+		},
+
+		/**
+		 * @namespace Cached information about the border display
+		 */
+		"border": {
+			"width": 2
+		},
+
+		/**
+		 * @namespace Store for live information for the current drag
+		 */
+		"drag": {
+			"startX": -1,
+			"startY": -1,
+			"startTd": null,
+			"endTd": null,
+			"dragging": false
+		},
+
+		/**
+		 * @namespace Data cache for information that we need for scrolling the screen when we near
+		 *   the edges
+		 */
+		"screen": {
+			"interval": null,
+			"y": 0,
+			"height": 0,
+			"scrollTop": 0
+		},
+
+		/**
+		 * @namespace Data cache for the position of the DataTables scrolling element (when scrolling
+		 *   is enabled)
+		 */
+		"scroller": {
+			"top": 0,
+			"bottom": 0
+		},
+
+		/**
+		 * @namespace Information stored for each column. An array of objects
+		 */
+		"columns": []
+	};
+
+
+	/**
+	 * @namespace Common and useful DOM elements for the class instance
+	 */
+	this.dom = {
+		"table": null,
+		"filler": null,
+		"borderTop": null,
+		"borderRight": null,
+		"borderBottom": null,
+		"borderLeft": null,
+		"currentTarget": null
+	};
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public class methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Retreieve the settings object from an instance
+	 *  @method fnSettings
+	 *  @returns {object} AutoFill settings object
+	 */
+	this.fnSettings = function () {
+		return this.s;
+	};
+
+
+	/* Constructor logic */
+	this._fnInit( oDT, oConfig );
+	return this;
+};
+
+
+
+AutoFill.prototype = {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods (they are of course public in JS, but recommended as private)
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Initialisation
+	 *  @method _fnInit
+	 *  @param {object} dt DataTables settings object
+	 *  @param {object} config Configuration object for AutoFill
+	 *  @returns void
+	 */
+	"_fnInit": function ( dt, config )
+	{
+		var
+			that = this,
+			i, iLen;
+
+		// Use DataTables API to get the settings allowing selectors, instances
+		// etc to be used, or for backwards compatibility get from the old
+		// fnSettings method
+		this.s.dt = DataTable.Api ?
+			new DataTable.Api( dt ).settings()[0] :
+			dt.fnSettings();
+		this.s.init = config || {};
+		this.dom.table = this.s.dt.nTable;
+
+		$.extend( true, this.c, AutoFill.defaults, config );
+
+		/* Add and configure the columns */
+		this._initColumns();
+
+		/* Auto Fill click and drag icon */
+		var filler = $('<div/>', {
+				'class': 'AutoFill_filler'
+			} )
+			.appendTo( 'body' );
+		this.dom.filler = filler[0];
+
+		// Get the height / width of the click element
+		this.s.filler.height = filler.height();
+		this.s.filler.width = filler.width();
+		filler[0].style.display = "none";
+
+		/* Border display - one div for each side. We can't just use a single
+		 * one with a border, as we want the events to effectively pass through
+		 * the transparent bit of the box
+		 */
+		var border;
+		var appender = document.body;
+		if ( that.s.dt.oScroll.sY !== "" ) {
+			that.s.dt.nTable.parentNode.style.position = "relative";
+			appender = that.s.dt.nTable.parentNode;
+		}
+
+		border = $('<div/>', {
+			"class": "AutoFill_border"
+		} );
+		this.dom.borderTop    = border.clone().appendTo( appender )[0];
+		this.dom.borderRight  = border.clone().appendTo( appender )[0];
+		this.dom.borderBottom = border.clone().appendTo( appender )[0];
+		this.dom.borderLeft   = border.clone().appendTo( appender )[0];
+
+		/* Events */
+		filler.on( 'mousedown.DTAF', function (e) {
+			this.onselectstart = function() { return false; };
+			that._fnFillerDragStart.call( that, e );
+			return false;
+		} );
+
+		$('tbody', this.dom.table).on(
+			'mouseover.DTAF mouseout.DTAF',
+			'>tr>td, >tr>th',
+			function (e) {
+				that._fnFillerDisplay.call( that, e );
+			}
+		);
+
+		$(this.dom.table).on( 'destroy.dt.DTAF', function () {
+			filler.off( 'mousedown.DTAF' ).remove();
+			$('tbody', this.dom.table).off( 'mouseover.DTAF mouseout.DTAF' );
+		} );
+	},
+
+
+	_initColumns: function ( )
+	{
+		var that = this;
+		var i, ien;
+		var dt = this.s.dt;
+		var config = this.s.init;
+
+		for ( i=0, ien=dt.aoColumns.length ; i<ien ; i++ ) {
+			this.s.columns[i] = $.extend( true, {}, AutoFill.defaults.column );
+		}
+
+		dt.oApi._fnApplyColumnDefs(
+			dt,
+			config.aoColumnDefs || config.columnDefs,
+			config.aoColumns || config.columns,
+			function (colIdx, def) {
+				that._fnColumnOptions( colIdx, def );
+			}
+		);
+
+		// For columns which don't have read, write, step functions defined,
+		// use the default ones
+		for ( i=0, ien=dt.aoColumns.length ; i<ien ; i++ ) {
+			var column = this.s.columns[i];
+
+			if ( ! column.read ) {
+				column.read = this._fnReadCell;
+			}
+			if ( ! column.write ) {
+				column.read = this._fnWriteCell;
+			}
+			if ( ! column.step ) {
+				column.read = this._fnStep;
+			}
+		}
+	},
+
+
+	"_fnColumnOptions": function ( i, opts )
+	{
+		var column = this.s.columns[ i ];
+		var set = function ( outProp, inProp ) {
+			if ( opts[ inProp[0] ] !== undefined ) {
+				column[ outProp ] = opts[ inProp[0] ];
+			}
+			if ( opts[ inProp[1] ] !== undefined ) {
+				column[ outProp ] = opts[ inProp[1] ];
+			}
+		};
+
+		// Compatibility with the old Hungarian style of notation
+		set( 'enable',    ['bEnable',     'enable'] );
+		set( 'read',      ['fnRead',      'read'] );
+		set( 'write',     ['fnWrite',     'write'] );
+		set( 'step',      ['fnStep',      'step'] );
+		set( 'increment', ['bIncrement',  'increment'] );
+	},
+
+
+	/**
+	 * Find out the coordinates of a given TD cell in a table
+	 *  @method  _fnTargetCoords
+	 *  @param   {Node} nTd
+	 *  @returns {Object} x and y properties, for the position of the cell in the tables DOM
+	 */
+	"_fnTargetCoords": function ( nTd )
+	{
+		var nTr = $(nTd).parents('tr')[0];
+		var position = this.s.dt.oInstance.fnGetPosition( nTd );
+
+		return {
+			"x":      $('td', nTr).index(nTd),
+			"y":      $('tr', nTr.parentNode).index(nTr),
+			"row":    position[0],
+			"column": position[2]
+		};
+	},
+
+
+	/**
+	 * Display the border around one or more cells (from start to end)
+	 *  @method  _fnUpdateBorder
+	 *  @param   {Node} nStart Starting cell
+	 *  @param   {Node} nEnd Ending cell
+	 *  @returns void
+	 */
+	"_fnUpdateBorder": function ( nStart, nEnd )
+	{
+		var
+			border = this.s.border.width,
+			offsetStart = $(nStart).offset(),
+			offsetEnd = $(nEnd).offset(),
+			x1 = offsetStart.left - border,
+			x2 = offsetEnd.left + $(nEnd).outerWidth(),
+			y1 = offsetStart.top - border,
+			y2 = offsetEnd.top + $(nEnd).outerHeight(),
+			width = offsetEnd.left + $(nEnd).outerWidth() - offsetStart.left + (2*border),
+			height = offsetEnd.top + $(nEnd).outerHeight() - offsetStart.top + (2*border),
+			oStyle;
+
+		// Recalculate start and end (when dragging "backwards")  
+		if( offsetStart.left > offsetEnd.left) {
+			x1 = offsetEnd.left - border;
+			x2 = offsetStart.left + $(nStart).outerWidth();
+			width = offsetStart.left + $(nStart).outerWidth() - offsetEnd.left + (2*border);
+		}
+
+		if ( this.s.dt.oScroll.sY !== "" )
+		{
+			/* The border elements are inside the DT scroller - so position relative to that */
+			var
+				offsetScroll = $(this.s.dt.nTable.parentNode).offset(),
+				scrollTop = $(this.s.dt.nTable.parentNode).scrollTop(),
+				scrollLeft = $(this.s.dt.nTable.parentNode).scrollLeft();
+
+			x1 -= offsetScroll.left - scrollLeft;
+			x2 -= offsetScroll.left - scrollLeft;
+			y1 -= offsetScroll.top - scrollTop;
+			y2 -= offsetScroll.top - scrollTop;
+		}
+
+		/* Top */
+		oStyle = this.dom.borderTop.style;
+		oStyle.top = y1+"px";
+		oStyle.left = x1+"px";
+		oStyle.height = this.s.border.width+"px";
+		oStyle.width = width+"px";
+
+		/* Bottom */
+		oStyle = this.dom.borderBottom.style;
+		oStyle.top = y2+"px";
+		oStyle.left = x1+"px";
+		oStyle.height = this.s.border.width+"px";
+		oStyle.width = width+"px";
+
+		/* Left */
+		oStyle = this.dom.borderLeft.style;
+		oStyle.top = y1+"px";
+		oStyle.left = x1+"px";
+		oStyle.height = height+"px";
+		oStyle.width = this.s.border.width+"px";
+
+		/* Right */
+		oStyle = this.dom.borderRight.style;
+		oStyle.top = y1+"px";
+		oStyle.left = x2+"px";
+		oStyle.height = height+"px";
+		oStyle.width = this.s.border.width+"px";
+	},
+
+
+	/**
+	 * Mouse down event handler for starting a drag
+	 *  @method  _fnFillerDragStart
+	 *  @param   {Object} e Event object
+	 *  @returns void
+	 */
+	"_fnFillerDragStart": function (e)
+	{
+		var that = this;
+		var startingTd = this.dom.currentTarget;
+
+		this.s.drag.dragging = true;
+
+		that.dom.borderTop.style.display = "block";
+		that.dom.borderRight.style.display = "block";
+		that.dom.borderBottom.style.display = "block";
+		that.dom.borderLeft.style.display = "block";
+
+		var coords = this._fnTargetCoords( startingTd );
+		this.s.drag.startX = coords.x;
+		this.s.drag.startY = coords.y;
+
+		this.s.drag.startTd = startingTd;
+		this.s.drag.endTd = startingTd;
+
+		this._fnUpdateBorder( startingTd, startingTd );
+
+		$(document).bind('mousemove.AutoFill', function (e) {
+			that._fnFillerDragMove.call( that, e );
+		} );
+
+		$(document).bind('mouseup.AutoFill', function (e) {
+			that._fnFillerFinish.call( that, e );
+		} );
+
+		/* Scrolling information cache */
+		this.s.screen.y = e.pageY;
+		this.s.screen.height = $(window).height();
+		this.s.screen.scrollTop = $(document).scrollTop();
+
+		if ( this.s.dt.oScroll.sY !== "" )
+		{
+			this.s.scroller.top = $(this.s.dt.nTable.parentNode).offset().top;
+			this.s.scroller.bottom = this.s.scroller.top + $(this.s.dt.nTable.parentNode).height();
+		}
+
+		/* Scrolling handler - we set an interval (which is cancelled on mouse up) which will fire
+		 * regularly and see if we need to do any scrolling
+		 */
+		this.s.screen.interval = setInterval( function () {
+			var iScrollTop = $(document).scrollTop();
+			var iScrollDelta = iScrollTop - that.s.screen.scrollTop;
+			that.s.screen.y += iScrollDelta;
+
+			if ( that.s.screen.height - that.s.screen.y + iScrollTop < 50 )
+			{
+				$('html, body').animate( {
+					"scrollTop": iScrollTop + 50
+				}, 240, 'linear' );
+			}
+			else if ( that.s.screen.y - iScrollTop < 50 )
+			{
+				$('html, body').animate( {
+					"scrollTop": iScrollTop - 50
+				}, 240, 'linear' );
+			}
+
+			if ( that.s.dt.oScroll.sY !== "" )
+			{
+				if ( that.s.screen.y > that.s.scroller.bottom - 50 )
+				{
+					$(that.s.dt.nTable.parentNode).animate( {
+						"scrollTop": $(that.s.dt.nTable.parentNode).scrollTop() + 50
+					}, 240, 'linear' );
+				}
+				else if ( that.s.screen.y < that.s.scroller.top + 50 )
+				{
+					$(that.s.dt.nTable.parentNode).animate( {
+						"scrollTop": $(that.s.dt.nTable.parentNode).scrollTop() - 50
+					}, 240, 'linear' );
+				}
+			}
+		}, 250 );
+	},
+
+
+	/**
+	 * Mouse move event handler for during a move. See if we want to update the display based on the
+	 * new cursor position
+	 *  @method  _fnFillerDragMove
+	 *  @param   {Object} e Event object
+	 *  @returns void
+	 */
+	"_fnFillerDragMove": function (e)
+	{
+		if ( e.target && e.target.nodeName.toUpperCase() == "TD" &&
+			 e.target != this.s.drag.endTd )
+		{
+			var coords = this._fnTargetCoords( e.target );
+
+			if ( this.c.mode == "y" && coords.x != this.s.drag.startX )
+			{
+				e.target = $('tbody>tr:eq('+coords.y+')>td:eq('+this.s.drag.startX+')', this.dom.table)[0];
+			}
+			if ( this.c.mode == "x" && coords.y != this.s.drag.startY )
+			{
+				e.target = $('tbody>tr:eq('+this.s.drag.startY+')>td:eq('+coords.x+')', this.dom.table)[0];
+			}
+
+			if ( this.c.mode == "either")
+			{
+				if(coords.x != this.s.drag.startX )
+				{
+					e.target = $('tbody>tr:eq('+this.s.drag.startY+')>td:eq('+coords.x+')', this.dom.table)[0];
+				}
+				else if ( coords.y != this.s.drag.startY ) {
+					e.target = $('tbody>tr:eq('+coords.y+')>td:eq('+this.s.drag.startX+')', this.dom.table)[0];
+				}
+			}
+
+			// update coords
+			if ( this.c.mode !== "both" ) {
+				coords = this._fnTargetCoords( e.target );
+			}
+
+			var drag = this.s.drag;
+			drag.endTd = e.target;
+
+			if ( coords.y >= this.s.drag.startY ) {
+				this._fnUpdateBorder( drag.startTd, drag.endTd );
+			}
+			else {
+				this._fnUpdateBorder( drag.endTd, drag.startTd );
+			}
+			this._fnFillerPosition( e.target );
+		}
+
+		/* Update the screen information so we can perform scrolling */
+		this.s.screen.y = e.pageY;
+		this.s.screen.scrollTop = $(document).scrollTop();
+
+		if ( this.s.dt.oScroll.sY !== "" )
+		{
+			this.s.scroller.scrollTop = $(this.s.dt.nTable.parentNode).scrollTop();
+			this.s.scroller.top = $(this.s.dt.nTable.parentNode).offset().top;
+			this.s.scroller.bottom = this.s.scroller.top + $(this.s.dt.nTable.parentNode).height();
+		}
+	},
+
+
+	/**
+	 * Mouse release handler - end the drag and take action to update the cells with the needed values
+	 *  @method  _fnFillerFinish
+	 *  @param   {Object} e Event object
+	 *  @returns void
+	 */
+	"_fnFillerFinish": function (e)
+	{
+		var that = this, i, iLen, j;
+
+		$(document).unbind('mousemove.AutoFill mouseup.AutoFill');
+
+		this.dom.borderTop.style.display = "none";
+		this.dom.borderRight.style.display = "none";
+		this.dom.borderBottom.style.display = "none";
+		this.dom.borderLeft.style.display = "none";
+
+		this.s.drag.dragging = false;
+
+		clearInterval( this.s.screen.interval );
+
+		var cells = [];
+		var table = this.dom.table;
+		var coordsStart = this._fnTargetCoords( this.s.drag.startTd );
+		var coordsEnd = this._fnTargetCoords( this.s.drag.endTd );
+		var columnIndex = function ( visIdx ) {
+			return that.s.dt.oApi._fnVisibleToColumnIndex( that.s.dt, visIdx );
+		};
+
+		// xxx - urgh - there must be a way of reducing this...
+		if ( coordsStart.y <= coordsEnd.y ) {
+			for ( i=coordsStart.y ; i<=coordsEnd.y ; i++ ) {
+				if ( coordsStart.x <= coordsEnd.x ) {
+					for ( j=coordsStart.x ; j<=coordsEnd.x ; j++ ) {
+						cells.push( {
+							node:   $('tbody>tr:eq('+i+')>td:eq('+j+')', table)[0],
+							x:      j - coordsStart.x,
+							y:      i - coordsStart.y,
+							colIdx: columnIndex( j )
+						} );
+					}
+				}
+				else {
+					for ( j=coordsStart.x ; j>=coordsEnd.x ; j-- ) {
+						cells.push( {
+							node:   $('tbody>tr:eq('+i+')>td:eq('+j+')', table)[0],
+							x:      j - coordsStart.x,
+							y:      i - coordsStart.y,
+							colIdx: columnIndex( j )
+						} );
+					}
+				}
+			}
+		}
+		else {
+			for ( i=coordsStart.y ; i>=coordsEnd.y ; i-- ) {
+				if ( coordsStart.x <= coordsEnd.x ) {
+					for ( j=coordsStart.x ; j<=coordsEnd.x ; j++ ) {
+						cells.push( {
+							node:   $('tbody>tr:eq('+i+')>td:eq('+j+')', table)[0],
+							x:      j - coordsStart.x,
+							y:      i - coordsStart.y,
+							colIdx: columnIndex( j )
+						} );
+					}
+				}
+				else {
+					for ( j=coordsStart.x ; j>=coordsEnd.x ; j-- ) {
+						cells.push( {
+							node:   $('tbody>tr:eq('+i+')>td:eq('+j+')', table)[0],
+							x:      coordsStart.x - j,
+							y:      coordsStart.y - i,
+							colIdx: columnIndex( j )
+						} );
+					}
+				}
+			}
+		}
+
+		// An auto-fill requires 2 or more cells
+		if ( cells.length <= 1 ) {
+			return;
+		}
+
+		var edited = [];
+		var previous;
+
+		for ( i=0, iLen=cells.length ; i<iLen ; i++ ) {
+			var cell      = cells[i];
+			var column    = this.s.columns[ cell.colIdx ];
+			var read      = column.read.call( column, cell.node );
+			var stepValue = column.step.call( column, cell.node, read, previous, i, cell.x, cell.y );
+
+			column.write.call( column, cell.node, stepValue );
+
+			previous = stepValue;
+			edited.push( {
+				cell:     cell,
+				colIdx:   cell.colIdx,
+				newValue: stepValue,
+				oldValue: read
+			} );
+		}
+
+		if ( this.c.complete !== null ) {
+			this.c.complete.call( this, edited );
+		}
+
+		// In 1.10 we can do a static draw
+		if ( DataTable.Api ) {
+			new DataTable.Api( this.s.dt ).draw( false );
+		}
+		else {
+			this.s.dt.oInstance.fnDraw();
+		}
+	},
+
+
+	/**
+	 * Display the drag handle on mouse over cell
+	 *  @method  _fnFillerDisplay
+	 *  @param   {Object} e Event object
+	 *  @returns void
+	 */
+	"_fnFillerDisplay": function (e)
+	{
+		var filler = this.dom.filler;
+
+		/* Don't display automatically when dragging */
+		if ( this.s.drag.dragging)
+		{
+			return;
+		}
+
+		/* Check that we are allowed to AutoFill this column or not */
+		var nTd = (e.target.nodeName.toLowerCase() == 'td') ? e.target : $(e.target).parents('td')[0];
+		var iX = this._fnTargetCoords(nTd).column;
+		if ( !this.s.columns[iX].enable )
+		{
+			filler.style.display = "none";
+			return;
+		}
+
+		if (e.type == 'mouseover')
+		{
+			this.dom.currentTarget = nTd;
+			this._fnFillerPosition( nTd );
+
+			filler.style.display = "block";
+		}
+		else if ( !e.relatedTarget || !e.relatedTarget.className.match(/AutoFill/) )
+		{
+			filler.style.display = "none";
+		}
+	},
+
+
+	/**
+	 * Position the filler icon over a cell
+	 *  @method  _fnFillerPosition
+	 *  @param   {Node} nTd Cell to position filler icon over
+	 *  @returns void
+	 */
+	"_fnFillerPosition": function ( nTd )
+	{
+		var offset = $(nTd).offset();
+		var filler = this.dom.filler;
+		filler.style.top = (offset.top - (this.s.filler.height / 2)-1 + $(nTd).outerHeight())+"px";
+		filler.style.left = (offset.left - (this.s.filler.width / 2)-1 + $(nTd).outerWidth())+"px";
+	}
+};
+
+
+// Alias for access
+DataTable.AutoFill = AutoFill;
+DataTable.AutoFill = AutoFill;
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * AutoFill version
+ *  @constant  version
+ *  @type      String
+ *  @default   See code
+ */
+AutoFill.version = "1.2.1";
+
+
+/**
+ * AutoFill defaults
+ *  @namespace
+ */
+AutoFill.defaults = {
+	/**
+	 * Mode for dragging (restrict to y-axis only, x-axis only, either one or none):
+	 *
+	 *  * `y`      - y-axis only (default)
+	 *  * `x`      - x-axis only
+	 *  * `either` - either one, but not both axis at the same time
+	 *  * `both`   - multiple cells allowed
+	 *
+	 * @type {string}
+	 * @default `y`
+	 */
+	mode: 'y',
+
+	complete: null,
+
+	/**
+	 * Column definition defaults
+	 *  @namespace
+	 */
+	column: {
+		/**
+		 * If AutoFill should be enabled on this column
+		 *
+		 * @type {boolean}
+		 * @default true
+		 */
+		enable: true,
+
+		/**
+		 * Allow automatic increment / decrement on this column if a number
+		 * is found.
+		 *
+		 * @type {boolean}
+		 * @default true
+		 */
+		increment: true,
+
+		/**
+		 * Cell read function
+		 *
+		 * Default function will simply read the value from the HTML of the
+		 * cell.
+		 *
+		 * @type   {function}
+		 * @param  {node} cell `th` / `td` element to read the value from
+		 * @return {string}    Data that has been read
+		 */
+		read: function ( cell ) {
+			return $(cell).html();
+		},
+
+		/**
+		 * Cell write function
+		 *
+		 * Default function will simply write to the HTML and tell the DataTable
+		 * to update.
+		 *
+		 * @type   {function}
+		 * @param  {node} cell `th` / `td` element to write the value to
+		 * @return {string}    Data two write
+		 */
+		write: function ( cell, val ) {
+			var table = $(cell).parents('table');
+			if ( DataTable.Api ) {
+				// 1.10
+				table.DataTable().cell( cell ).data( val );
+			}
+			else {
+				// 1.9
+				var dt = table.dataTable();
+				var pos = dt.fnGetPosition( cell );
+				dt.fnUpdate( val, pos[0], pos[2], false );
+			}
+		},
+
+		/**
+		 * Step function. This provides the ability to customise how the values
+		 * are incremented.
+		 *
+		 * @param  {node} cell `th` / `td` element that is being operated upon
+		 * @param  {string} read Cell value from `read` function
+		 * @param  {string} last Value of the previous cell
+		 * @param  {integer} i Loop counter
+		 * @param  {integer} x Cell x-position in the current auto-fill. The
+		 *   starting cell is coordinate 0 regardless of its physical position
+		 *   in the DataTable.
+		 * @param  {integer} y Cell y-position in the current auto-fill. The
+		 *   starting cell is coordinate 0 regardless of its physical position
+		 *   in the DataTable.
+		 * @return {string} Value to write
+		 */
+		step: function ( cell, read, last, i, x, y ) {
+			// Increment a number if it is found
+			var re = /(\-?\d+)/;
+			var match = this.increment && last ? last.match(re) : null;
+			if ( match ) {
+				return last.replace( re, parseInt(match[1],10) + (x<0 || y<0 ? -1 : 1) );
+			}
+			return last === undefined ?
+				read :
+				last;
+		}
+	}
+};
+
+return AutoFill;
+};
+
+
+// Define as an AMD module if possible
+if ( typeof define === 'function' && define.amd ) {
+	define( ['jquery', 'datatables'], factory );
+}
+else if ( typeof exports === 'object' ) {
+    // Node/CommonJS
+    factory( require('jquery'), require('datatables') );
+}
+else if ( jQuery && !jQuery.fn.dataTable.AutoFill ) {
+	// Otherwise simply initialise as normal, stopping multiple evaluation
+	factory( jQuery, jQuery.fn.dataTable );
+}
+
+
+}(window, document));
+
diff --git a/public/admin/js/DataTables/extensions/AutoFill/js/dataTables.autoFill.min.js b/public/admin/js/DataTables/extensions/AutoFill/js/dataTables.autoFill.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..17f316a1a6cf4d987148abe020a40b133de6c745
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/AutoFill/js/dataTables.autoFill.min.js
@@ -0,0 +1,22 @@
+/*!
+ AutoFill 1.2.1
+ ©2008-2014 SpryMedia Ltd - datatables.net/license
+*/
+(function(o,j,m){var l=function(c,k){var h=function(d,b){if(!(this instanceof h))throw"Warning: AutoFill must be initialised with the keyword 'new'";if(!c.fn.dataTableExt.fnVersionCheck("1.7.0"))throw"Warning: AutoFill requires DataTables 1.7 or greater";this.c={};this.s={filler:{height:0,width:0},border:{width:2},drag:{startX:-1,startY:-1,startTd:null,endTd:null,dragging:!1},screen:{interval:null,y:0,height:0,scrollTop:0},scroller:{top:0,bottom:0},columns:[]};this.dom={table:null,filler:null,borderTop:null,
+borderRight:null,borderBottom:null,borderLeft:null,currentTarget:null};this.fnSettings=function(){return this.s};this._fnInit(d,b);return this};h.prototype={_fnInit:function(d,b){var a=this;this.s.dt=k.Api?(new k.Api(d)).settings()[0]:d.fnSettings();this.s.init=b||{};this.dom.table=this.s.dt.nTable;c.extend(!0,this.c,h.defaults,b);this._initColumns();var e=c("<div/>",{"class":"AutoFill_filler"}).appendTo("body");this.dom.filler=e[0];this.s.filler.height=e.height();this.s.filler.width=e.width();e[0].style.display=
+"none";var g,f=j.body;""!==a.s.dt.oScroll.sY&&(a.s.dt.nTable.parentNode.style.position="relative",f=a.s.dt.nTable.parentNode);g=c("<div/>",{"class":"AutoFill_border"});this.dom.borderTop=g.clone().appendTo(f)[0];this.dom.borderRight=g.clone().appendTo(f)[0];this.dom.borderBottom=g.clone().appendTo(f)[0];this.dom.borderLeft=g.clone().appendTo(f)[0];e.on("mousedown.DTAF",function(b){this.onselectstart=function(){return false};a._fnFillerDragStart.call(a,b);return false});c("tbody",this.dom.table).on("mouseover.DTAF mouseout.DTAF",
+">tr>td, >tr>th",function(b){a._fnFillerDisplay.call(a,b)});c(this.dom.table).on("destroy.dt.DTAF",function(){e.off("mousedown.DTAF").remove();c("tbody",this.dom.table).off("mouseover.DTAF mouseout.DTAF")})},_initColumns:function(){var d=this,b,a,e=this.s.dt,g=this.s.init;b=0;for(a=e.aoColumns.length;b<a;b++)this.s.columns[b]=c.extend(!0,{},h.defaults.column);e.oApi._fnApplyColumnDefs(e,g.aoColumnDefs||g.columnDefs,g.aoColumns||g.columns,function(a,b){d._fnColumnOptions(a,b)});b=0;for(a=e.aoColumns.length;b<
+a;b++)if(e=this.s.columns[b],e.read||(e.read=this._fnReadCell),e.write||(e.read=this._fnWriteCell),!e.step)e.read=this._fnStep},_fnColumnOptions:function(d,b){var a=this.s.columns[d],c=function(c,d){b[d[0]]!==m&&(a[c]=b[d[0]]);b[d[1]]!==m&&(a[c]=b[d[1]])};c("enable",["bEnable","enable"]);c("read",["fnRead","read"]);c("write",["fnWrite","write"]);c("step",["fnStep","step"]);c("increment",["bIncrement","increment"])},_fnTargetCoords:function(d){var b=c(d).parents("tr")[0],a=this.s.dt.oInstance.fnGetPosition(d);
+return{x:c("td",b).index(d),y:c("tr",b.parentNode).index(b),row:a[0],column:a[2]}},_fnUpdateBorder:function(d,b){var a=this.s.border.width,e=c(d).offset(),g=c(b).offset(),f=e.left-a,i=g.left+c(b).outerWidth(),n=e.top-a,h=g.top+c(b).outerHeight(),j=g.left+c(b).outerWidth()-e.left+2*a,k=g.top+c(b).outerHeight()-e.top+2*a;e.left>g.left&&(f=g.left-a,i=e.left+c(d).outerWidth(),j=e.left+c(d).outerWidth()-g.left+2*a);""!==this.s.dt.oScroll.sY&&(a=c(this.s.dt.nTable.parentNode).offset(),e=c(this.s.dt.nTable.parentNode).scrollTop(),
+g=c(this.s.dt.nTable.parentNode).scrollLeft(),f-=a.left-g,i-=a.left-g,n-=a.top-e,h-=a.top-e);a=this.dom.borderTop.style;a.top=n+"px";a.left=f+"px";a.height=this.s.border.width+"px";a.width=j+"px";a=this.dom.borderBottom.style;a.top=h+"px";a.left=f+"px";a.height=this.s.border.width+"px";a.width=j+"px";a=this.dom.borderLeft.style;a.top=n+"px";a.left=f+"px";a.height=k+"px";a.width=this.s.border.width+"px";a=this.dom.borderRight.style;a.top=n+"px";a.left=i+"px";a.height=k+"px";a.width=this.s.border.width+
+"px"},_fnFillerDragStart:function(d){var b=this,a=this.dom.currentTarget;this.s.drag.dragging=!0;b.dom.borderTop.style.display="block";b.dom.borderRight.style.display="block";b.dom.borderBottom.style.display="block";b.dom.borderLeft.style.display="block";var e=this._fnTargetCoords(a);this.s.drag.startX=e.x;this.s.drag.startY=e.y;this.s.drag.startTd=a;this.s.drag.endTd=a;this._fnUpdateBorder(a,a);c(j).bind("mousemove.AutoFill",function(a){b._fnFillerDragMove.call(b,a)});c(j).bind("mouseup.AutoFill",
+function(a){b._fnFillerFinish.call(b,a)});this.s.screen.y=d.pageY;this.s.screen.height=c(o).height();this.s.screen.scrollTop=c(j).scrollTop();""!==this.s.dt.oScroll.sY&&(this.s.scroller.top=c(this.s.dt.nTable.parentNode).offset().top,this.s.scroller.bottom=this.s.scroller.top+c(this.s.dt.nTable.parentNode).height());this.s.screen.interval=setInterval(function(){var a=c(j).scrollTop();b.s.screen.y=b.s.screen.y+(a-b.s.screen.scrollTop);b.s.screen.height-b.s.screen.y+a<50?c("html, body").animate({scrollTop:a+
+50},240,"linear"):b.s.screen.y-a<50&&c("html, body").animate({scrollTop:a-50},240,"linear");b.s.dt.oScroll.sY!==""&&(b.s.screen.y>b.s.scroller.bottom-50?c(b.s.dt.nTable.parentNode).animate({scrollTop:c(b.s.dt.nTable.parentNode).scrollTop()+50},240,"linear"):b.s.screen.y<b.s.scroller.top+50&&c(b.s.dt.nTable.parentNode).animate({scrollTop:c(b.s.dt.nTable.parentNode).scrollTop()-50},240,"linear"))},250)},_fnFillerDragMove:function(d){if(d.target&&"TD"==d.target.nodeName.toUpperCase()&&d.target!=this.s.drag.endTd){var b=
+this._fnTargetCoords(d.target);"y"==this.c.mode&&b.x!=this.s.drag.startX&&(d.target=c("tbody>tr:eq("+b.y+")>td:eq("+this.s.drag.startX+")",this.dom.table)[0]);"x"==this.c.mode&&b.y!=this.s.drag.startY&&(d.target=c("tbody>tr:eq("+this.s.drag.startY+")>td:eq("+b.x+")",this.dom.table)[0]);"either"==this.c.mode&&(b.x!=this.s.drag.startX?d.target=c("tbody>tr:eq("+this.s.drag.startY+")>td:eq("+b.x+")",this.dom.table)[0]:b.y!=this.s.drag.startY&&(d.target=c("tbody>tr:eq("+b.y+")>td:eq("+this.s.drag.startX+
+")",this.dom.table)[0]));"both"!==this.c.mode&&(b=this._fnTargetCoords(d.target));var a=this.s.drag;a.endTd=d.target;b.y>=this.s.drag.startY?this._fnUpdateBorder(a.startTd,a.endTd):this._fnUpdateBorder(a.endTd,a.startTd);this._fnFillerPosition(d.target)}this.s.screen.y=d.pageY;this.s.screen.scrollTop=c(j).scrollTop();""!==this.s.dt.oScroll.sY&&(this.s.scroller.scrollTop=c(this.s.dt.nTable.parentNode).scrollTop(),this.s.scroller.top=c(this.s.dt.nTable.parentNode).offset().top,this.s.scroller.bottom=
+this.s.scroller.top+c(this.s.dt.nTable.parentNode).height())},_fnFillerFinish:function(){var d=this,b,a;c(j).unbind("mousemove.AutoFill mouseup.AutoFill");this.dom.borderTop.style.display="none";this.dom.borderRight.style.display="none";this.dom.borderBottom.style.display="none";this.dom.borderLeft.style.display="none";this.s.drag.dragging=!1;clearInterval(this.s.screen.interval);var e=[],g=this.dom.table,f=this._fnTargetCoords(this.s.drag.startTd),i=this._fnTargetCoords(this.s.drag.endTd),h=function(a){return d.s.dt.oApi._fnVisibleToColumnIndex(d.s.dt,
+a)};if(f.y<=i.y)for(b=f.y;b<=i.y;b++)if(f.x<=i.x)for(a=f.x;a<=i.x;a++)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:a-f.x,y:b-f.y,colIdx:h(a)});else for(a=f.x;a>=i.x;a--)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:a-f.x,y:b-f.y,colIdx:h(a)});else for(b=f.y;b>=i.y;b--)if(f.x<=i.x)for(a=f.x;a<=i.x;a++)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:a-f.x,y:b-f.y,colIdx:h(a)});else for(a=f.x;a>=i.x;a--)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:f.x-a,y:f.y-
+b,colIdx:h(a)});if(!(1>=e.length)){var g=[],m;b=0;for(a=e.length;b<a;b++){var f=e[b],i=this.s.columns[f.colIdx],h=i.read.call(i,f.node),l=i.step.call(i,f.node,h,m,b,f.x,f.y);i.write.call(i,f.node,l);m=l;g.push({cell:f,colIdx:f.colIdx,newValue:l,oldValue:h})}null!==this.c.complete&&this.c.complete.call(this,g);k.Api?(new k.Api(this.s.dt)).draw(!1):this.s.dt.oInstance.fnDraw()}},_fnFillerDisplay:function(d){var b=this.dom.filler;if(!this.s.drag.dragging){var a="td"==d.target.nodeName.toLowerCase()?
+d.target:c(d.target).parents("td")[0],e=this._fnTargetCoords(a).column;if(this.s.columns[e].enable)if("mouseover"==d.type)this.dom.currentTarget=a,this._fnFillerPosition(a),b.style.display="block";else{if(!d.relatedTarget||!d.relatedTarget.className.match(/AutoFill/))b.style.display="none"}else b.style.display="none"}},_fnFillerPosition:function(d){var b=c(d).offset(),a=this.dom.filler;a.style.top=b.top-this.s.filler.height/2-1+c(d).outerHeight()+"px";a.style.left=b.left-this.s.filler.width/2-1+c(d).outerWidth()+
+"px"}};k.AutoFill=h;k.AutoFill=h;h.version="1.2.1";h.defaults={mode:"y",complete:null,column:{enable:!0,increment:!0,read:function(d){return c(d).html()},write:function(d,b){var a=c(d).parents("table");if(k.Api)a.DataTable().cell(d).data(b);else{var a=a.dataTable(),e=a.fnGetPosition(d);a.fnUpdate(b,e[0],e[2],!1)}},step:function(c,b,a,e,g,f){c=/(\-?\d+)/;return(e=this.increment&&a?a.match(c):null)?a.replace(c,parseInt(e[1],10)+(0>g||0>f?-1:1)):a===m?b:a}}};return h};"function"===typeof define&&define.amd?
+define(["jquery","datatables"],l):"object"===typeof exports?l(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.AutoFill&&l(jQuery,jQuery.fn.dataTable)})(window,document);
diff --git a/public/admin/js/DataTables/extensions/ColReorder/Readme.txt b/public/admin/js/DataTables/extensions/ColReorder/Readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..31ab5b0966f6a2b3f76ce68df029bf015cfeb88e
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/Readme.txt
@@ -0,0 +1,39 @@
+# ColReorder
+
+ColReorder adds the ability for the end user to click and drag column headers to reorder a table as they see fit, to DataTables. Key features include:
+
+* Very easy integration with DataTables
+* Tight integration with all other DataTables plug-ins
+* The ability to exclude the first (or more) column from being movable
+* Predefine a column order
+* Save staving integration with DataTables
+
+
+# Installation
+
+To use ColReorder, first download DataTables ( http://datatables.net/download ) and place the unzipped ColReorder package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
+
+
+# Basic usage
+
+ColReorder is initialised using the `R` option that it adds to DataTables' `dom` option. For example:
+
+```js
+$(document).ready( function () {
+    $('#example').dataTable( {
+        "dom": 'Rlfrtip'
+    } );
+} );
+```
+
+
+# Documentation / support
+
+* Documentation: http://datatables.net/extensions/colreorder/
+* DataTables support forums: http://datatables.net/forums
+
+
+# GitHub
+
+If you fancy getting involved with the development of ColReorder and help make it better, please refer to its GitHub repo: https://github.com/DataTables/ColReorder
+
diff --git a/public/admin/js/DataTables/extensions/ColReorder/css/dataTables.colReorder.css b/public/admin/js/DataTables/extensions/ColReorder/css/dataTables.colReorder.css
new file mode 100644
index 0000000000000000000000000000000000000000..bdd6aa0b9ada8a55fe3ae1e34c525acdb7943ab1
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/css/dataTables.colReorder.css
@@ -0,0 +1,14 @@
+/*
+ * Namespace DTCR - "DataTables ColReorder" plug-in
+ */
+
+table.DTCR_clonedTable {
+	background-color: rgba(255, 255, 255, 0.7);
+	z-index: 202;
+}
+
+div.DTCR_pointer {
+	width: 1px;
+	background-color: #0259C4;
+	z-index: 201;
+}
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/css/dataTables.colReorder.min.css b/public/admin/js/DataTables/extensions/ColReorder/css/dataTables.colReorder.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..77b230e0136b3ca0d5683535f0612a2054416cc2
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/css/dataTables.colReorder.min.css
@@ -0,0 +1 @@
+table.DTCR_clonedTable{background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0259C4;z-index:201}
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/alt_insert.html b/public/admin/js/DataTables/extensions/ColReorder/examples/alt_insert.html
new file mode 100644
index 0000000000000000000000000000000000000000..8246fea0d0e46207e594ddca94d8afbe80effcfe
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/alt_insert.html
@@ -0,0 +1,649 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - Alternative insert styling</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+div.DTCR_pointer {
+	margin-top: -15px;
+	margin-left: -9px;
+	width: 18px;
+	background: url('../images/insert.png') no-repeat top left;
+}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'Rlfrtip'
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>Alternative insert styling</span></h1>
+
+			<div class="info">
+				<p>Using CSS it is easy to modify the insert bar to suit your web-site. This example shows how an arrow
+				can be used to show the insert point rather than the straight bar used in the other examples by simply
+				adding an extra CSS rule to include the image.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'Rlfrtip'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">div.DTCR_pointer {
+	margin-top: -15px;
+	margin-left: -9px;
+	width: 18px;
+	background: url('../images/insert.png') no-repeat top left;
+}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li class="active"><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/col_filter.html b/public/admin/js/DataTables/extensions/ColReorder/examples/col_filter.html
new file mode 100644
index 0000000000000000000000000000000000000000..cf21f58fa06b8fa323d8b1d6577bcbb97ec5618a
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/col_filter.html
@@ -0,0 +1,669 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - Individual column filtering</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+    // Setup - add a text input to each footer cell
+    $('#example tfoot th').each( function () {
+        var title = $('#example thead th').eq( $(this).index() ).text();
+        $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
+    } );
+ 
+    // DataTable
+    var table = $('#example').DataTable( {
+		dom: 'Rlfrtip'
+	} );
+     
+    // Apply the filter
+    $("#example tfoot input").on( 'keyup change', function () {
+        table
+            .column( $(this).parent().index()+':visible' )
+            .search( this.value )
+            .draw();
+    } );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>Individual column filtering</span></h1>
+
+			<div class="info">
+				<p>This example of how to use ColReorder shows how it can with with DataTables' ability to do
+				individual column filtering. The basic example is exactly the same as the DataTables column filtering
+				example, but with ColReorder also added to the table (through the <code>R</code> option for <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a>).</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+    // Setup - add a text input to each footer cell
+    $('#example tfoot th').each( function () {
+        var title = $('#example thead th').eq( $(this).index() ).text();
+        $(this).html( '&lt;input type=&quot;text&quot; placeholder=&quot;Search '+title+'&quot; /&gt;' );
+    } );
+ 
+    // DataTable
+    var table = $('#example').DataTable( {
+		dom: 'Rlfrtip'
+	} );
+     
+    // Apply the filter
+    $(&quot;#example tfoot input&quot;).on( 'keyup change', function () {
+        table
+            .column( $(this).parent().index()+':visible' )
+            .search( this.value )
+            .draw();
+    } );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li class="active"><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/colvis.html b/public/admin/js/DataTables/extensions/ColReorder/examples/colvis.html
new file mode 100644
index 0000000000000000000000000000000000000000..158da3873fc6bd5fbd64fcc19a78e271e8828a70
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/colvis.html
@@ -0,0 +1,649 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - ColVis integration</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../ColVis/css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../ColVis/js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+    var table = $('#example').DataTable( {
+        dom: 'RC<"clear">lfrtip',
+        columnDefs: [
+            { visible: false, targets: 1 }
+        ]
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>ColVis integration</span></h1>
+
+			<div class="info">
+				<p>ColReorder interfaces with the <a href="//datatables.net/extensions/colvis">ColVis extension</a> for
+				DataTables by updating the order of the list of columns whenever a reorder is done. This is shown in
+				the example below, where one column has been initially hidden to add extra emphasis to ColVis.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+    var table = $('#example').DataTable( {
+        dom: 'RC&lt;&quot;clear&quot;&gt;lfrtip',
+        columnDefs: [
+            { visible: false, targets: 1 }
+        ]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+						<li><a href=
+						"../../ColVis/js/dataTables.colVis.js">../../ColVis/js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+						<li><a href=
+						"../../ColVis/css/dataTables.colVis.css">../../ColVis/css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li class="active"><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/fixedcolumns.html b/public/admin/js/DataTables/extensions/ColReorder/examples/fixedcolumns.html
new file mode 100644
index 0000000000000000000000000000000000000000..163fdd35c8a10ae85f29231e08f99a6b5cc9065e
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/fixedcolumns.html
@@ -0,0 +1,846 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - FixedColumns integration</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../FixedColumns/css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../FixedColumns/js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	window.table = $('#example').DataTable( {
+		dom: 'Rlfrtip',
+		scrollX: true,
+		scrollCollapse: true,
+		columnDefs: [
+			{ sortable: false, targets: 0 },
+			{ sortable: false, targets: -1 }
+		],
+		sorting: [[ 1, 'asc' ]],
+		colReorder: {
+			fixedColumnsLeft: 1,
+			fixedColumnsRight: 1
+		}
+	} );
+
+	window.fc = new $.fn.dataTable.FixedColumns( table, {
+		leftColumns: 1,
+		rightColumns: 1
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>FixedColumns integration</span></h1>
+
+			<div class="info">
+				<p>While ColReorder works with the built-in scrolling options in DataTables (<a href=
+				"//datatables.net/reference/option/scrollY"><code class="option" title=
+				"DataTables initialisation option">scrollY<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/option/scrollX"><code class="option" title=
+				"DataTables initialisation option">scrollX<span>DT</span></code></a>) and also the <a href=
+				"//datatables.net/extensions/fixedcolumns">FixedColumns extension</a>.</p>
+
+				<p>ColReorder provides the <code>fixedColumnsLeft</code> and <code>fixedColumnsRight</code> options
+				which allows you disallow reordering of the fixed columns (which is required).</p>
+			</div>
+
+			<table id="example" class="display nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	window.table = $('#example').DataTable( {
+		dom: 'Rlfrtip',
+		scrollX: true,
+		scrollCollapse: true,
+		columnDefs: [
+			{ sortable: false, targets: 0 },
+			{ sortable: false, targets: -1 }
+		],
+		sorting: [[ 1, 'asc' ]],
+		colReorder: {
+			fixedColumnsLeft: 1,
+			fixedColumnsRight: 1
+		}
+	} );
+
+	window.fc = new $.fn.dataTable.FixedColumns( table, {
+		leftColumns: 1,
+		rightColumns: 1
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+						<li><a href=
+						"../../FixedColumns/js/dataTables.fixedColumns.js">../../FixedColumns/js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+						<li><a href=
+						"../../FixedColumns/css/dataTables.fixedColumns.css">../../FixedColumns/css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li class="active"><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/fixedheader.html b/public/admin/js/DataTables/extensions/ColReorder/examples/fixedheader.html
new file mode 100644
index 0000000000000000000000000000000000000000..fdd3ded5dcae5a7361460d95a802b979f0d2f89b
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/fixedheader.html
@@ -0,0 +1,649 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - FixedHeader integration</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../FixedHeader/css/dataTables.fixedHeader.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../FixedHeader/js/dataTables.fixedHeader.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	var table = $('#example').dataTable( {
+		dom: 'Rlfrtip'
+	} );
+
+	new $.fn.dataTable.fixedHeader( table );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>FixedHeader integration</span></h1>
+
+			<div class="info">
+				<p>FixedHeader is a particularly useful plug-in for DataTables, allowing a table header to float at the
+				top of a scrolling window. ColReorder works well with FixedHeader, allowing you to reorder columns even
+				using the floating header, as shown in the example below.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').dataTable( {
+		dom: 'Rlfrtip'
+	} );
+
+	new $.fn.dataTable.fixedHeader( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+						<li><a href=
+						"../../FixedHeader/js/dataTables.fixedHeader.js">../../FixedHeader/js/dataTables.fixedHeader.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+						<li><a href=
+						"../../FixedHeader/css/dataTables.fixedHeader.css">../../FixedHeader/css/dataTables.fixedHeader.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li class="active"><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/index.html b/public/admin/js/DataTables/extensions/ColReorder/examples/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..35e2852edfba99208d7030ca1e454fca940e9604
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/index.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+
+	<title>ColReorder examples - ColReorder examples</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>ColReorder examples</span></h1>
+
+			<div class="info">
+				<p>ColReorder adds the ability for the end user to click and drag column headers to reorder a table as
+				they see fit, to DataTables. Key features include:</p>
+
+				<ul class="markdown">
+					<li>Very easy integration with DataTables</li>
+					<li>Tight integration with all other DataTables plug-ins</li>
+					<li>The ability to exclude the first (or more) column from being movable</li>
+					<li>Predefine a column order</li>
+					<li>Save staving integration with DataTables</li>
+				</ul>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/jqueryui.html b/public/admin/js/DataTables/extensions/ColReorder/examples/jqueryui.html
new file mode 100644
index 0000000000000000000000000000000000000000..ab80624c8b07ed354f58487ba99d968a034282e9
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/jqueryui.html
@@ -0,0 +1,652 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - jQuery UI styling</title>
+	<link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
+	<link rel="stylesheet" type="text/css" href="../../Plugins/integration/jqueryui/dataTables.jqueryui.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src=
+	"../../Plugins/integration/jqueryui/dataTables.jqueryui.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	var table = $('#example').dataTable();
+
+	new $.fn.dataTable.ColReorder( table );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>jQuery UI styling</span></h1>
+
+			<div class="info">
+				<p>This example shows how the jQuery UI ThemeRoller option in DataTables can be used with
+				ColReorder.</p>
+
+				<p>The important thing to note here is that it is easier to use <code>new
+				$.fn.dataTable.ColReorder()</code> to add ColReorder to the table rather than <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> as the jQuery UI integration uses a
+				complex expression for <a href="//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').dataTable();
+
+	new $.fn.dataTable.ColReorder( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href=
+						"../../Plugins/integration/jqueryui/dataTables.jqueryui.js">../../Plugins/integration/jqueryui/dataTables.jqueryui.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css</a></li>
+						<li><a href=
+						"../../Plugins/integration/jqueryui/dataTables.jqueryui.css">../../Plugins/integration/jqueryui/dataTables.jqueryui.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li class="active"><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/new_init.html b/public/admin/js/DataTables/extensions/ColReorder/examples/new_init.html
new file mode 100644
index 0000000000000000000000000000000000000000..ff3b89b5e4c655f25f7fa5da462a060aeabd6c99
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/new_init.html
@@ -0,0 +1,639 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - Initialisation using `new`</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.ColReorder( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>Initialisation using `new`</span></h1>
+
+			<div class="info">
+				<p>As well as providing the option to be initialised through the <code>R</code> option of <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a>, ColReorder can also be added to a
+				DataTable using direct initialisation - <code>new $.fn.dataTable.ColReorder();</code> as shown in this
+				example.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.ColReorder( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li class="active"><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/predefined.html b/public/admin/js/DataTables/extensions/ColReorder/examples/predefined.html
new file mode 100644
index 0000000000000000000000000000000000000000..5bc6af9961c5ccb2cb432c9d74c64612279062a8
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/predefined.html
@@ -0,0 +1,648 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - Predefined column ordering</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		dom: 'Rlfrtip',
+		colReorder: {
+			order: [ 4, 3, 2, 1, 0, 5 ]
+		}
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>Predefined column ordering</span></h1>
+
+			<div class="info">
+				<p>ColReorder provides the ability to specify a column ordering which is not that of the HTML (which
+				typically you will want) through the parameter <code>colReorder.order</code>. This is an array of
+				integers with the column ordering you want.</p>
+
+				<p>For full information about the ColReorder options, please refer to the <a href=
+				"//datatables.net/extensions/colreorder/options">ColReorder options documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		dom: 'Rlfrtip',
+		colReorder: {
+			order: [ 4, 3, 2, 1, 0, 5 ]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li class="active"><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/realtime.html b/public/admin/js/DataTables/extensions/ColReorder/examples/realtime.html
new file mode 100644
index 0000000000000000000000000000000000000000..e756d091a2f0e17ae288f400118d80bc9ba834a0
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/realtime.html
@@ -0,0 +1,649 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - Realtime updating</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		dom: 'Rlfrtip',
+		colReorder: {
+			realtime: true
+		}
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>Realtime updating</span></h1>
+
+			<div class="info">
+				<p>While the ColReorder insertion point indicator can be styled, another option to show the end user
+				what the column will look like when the table has been reordered is to actually do the reordering while
+				the mouse is still dragging the column header. This is shown in this example and is controlled by the
+				<code>realtime</code> parameter.</p>
+
+				<p>For full information about the ColReorder options, please refer to the <a href=
+				"//datatables.net/extensions/colreorder/options">ColReorder options documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		dom: 'Rlfrtip',
+		colReorder: {
+			realtime: true
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li class="active"><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/reset.html b/public/admin/js/DataTables/extensions/ColReorder/examples/reset.html
new file mode 100644
index 0000000000000000000000000000000000000000..5f495a0f5277c30ecfcf548c7a6c630c409dcf1b
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/reset.html
@@ -0,0 +1,662 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - Reset ordering API</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		dom: 'Rlfrtip',
+		colReorder: {
+			order: [ 4, 3, 2, 1, 0 ]
+		}
+	} );
+	
+	$('#reset').click( function (e) {
+		e.preventDefault();
+		
+		table.colReorder.reset();
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>Reset ordering API</span></h1>
+
+			<div class="info">
+				<p>One useful control option to present the end user when using ColReorder is the ability to reset the
+				column ordering to that which was found in the HTML. This can be done by calling the <code>reset</code>
+				API function. While ColReorder does not provide a visual element for this itself (in order to provide
+				maximum flexibility) it is easy to hook to an event handler, as shown in this example.</p>
+
+				<p>For full information about the ColReorder API, please refer to the <a href=
+				"//datatables.net/extensions/colreorder/api">ColReorder API documentation</a>.</p>
+			</div><button id="reset">Reset to original HTML order</button><br>
+			<br>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		dom: 'Rlfrtip',
+		colReorder: {
+			order: [ 4, 3, 2, 1, 0 ]
+		}
+	} );
+	
+	$('#reset').click( function (e) {
+		e.preventDefault();
+		
+		table.colReorder.reset();
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li class="active"><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/scrolling.html b/public/admin/js/DataTables/extensions/ColReorder/examples/scrolling.html
new file mode 100644
index 0000000000000000000000000000000000000000..4a888dfbd0264584a2886019ddc04fa2cc7eb023
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/scrolling.html
@@ -0,0 +1,645 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - Scrolling table</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		dom:     'Rlfrtip',
+		scrollY: '200px',
+		paging:  false
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>Scrolling table</span></h1>
+
+			<div class="info">
+				<p>This is a simple example to show ColReorder working with DataTables scrolling (<a href=
+				"//datatables.net/reference/option/scrollY"><code class="option" title=
+				"DataTables initialisation option">scrollY<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/option/scrollX"><code class="option" title=
+				"DataTables initialisation option">scrollX<span>DT</span></code></a>).</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		dom:     'Rlfrtip',
+		scrollY: '200px',
+		paging:  false
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li class="active"><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/server_side.html b/public/admin/js/DataTables/extensions/ColReorder/examples/server_side.html
new file mode 100644
index 0000000000000000000000000000000000000000..c8767907b7ebbcc5efa713b035f819f27a512578
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/server_side.html
@@ -0,0 +1,205 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - Server-side processing</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		dom: 'Rlfrtip',
+		processing: true,
+		serverSide: true,
+		ajax: "../../../examples/server_side/scripts/objects.php",
+		columns: [
+			{ data: "first_name" },
+			{ data: "last_name" },
+			{ data: "position" },
+			{ data: "office" },
+			{ data: "start_date" },
+			{ data: "salary" }
+		]
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>Server-side processing</span></h1>
+
+			<div class="info">
+				<p>Server-side processing can be exceptionally useful in DataTables when dealing with massive data
+				sets, and ColReorder works with this as would be expected.</p>
+
+				<p>It is recommend that you use object based data with server-side processing and ColReorder, as this
+				provides easily understandable mapping between the the columns and the data relation on the server,
+				otherwise you need to work out array indexes on each call!</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		dom: 'Rlfrtip',
+		processing: true,
+		serverSide: true,
+		ajax: &quot;../../../examples/server_side/scripts/objects.php&quot;,
+		columns: [
+			{ data: &quot;first_name&quot; },
+			{ data: &quot;last_name&quot; },
+			{ data: &quot;position&quot; },
+			{ data: &quot;office&quot; },
+			{ data: &quot;start_date&quot; },
+			{ data: &quot;salary&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li class="active"><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/simple.html b/public/admin/js/DataTables/extensions/ColReorder/examples/simple.html
new file mode 100644
index 0000000000000000000000000000000000000000..8366fdc91ab9ac381e2935c6d9f1d0598f23984a
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/simple.html
@@ -0,0 +1,644 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - Basic initialisation</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'Rlfrtip'
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>Basic initialisation</span></h1>
+
+			<div class="info">
+				<p>This example shows the basic use case of the ColReorder plug-in. With ColReorder enabled for a
+				table, the user has the ability to click and drag any table header cell, and drop it where they wish
+				the column to be inserted. The insert point is shown visually, and the column reordering is done as
+				soon as the mouse button is released.</p>
+
+				<p>ColReorder is added to a DataTable through the <code>R</code> character that it adds to DataTables
+				feature plug-ins. This means that you simply add the character <code>R</code> to the <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> parameter for your table to add
+				ColReorder - as shown in the example below.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'Rlfrtip'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/examples/state_save.html b/public/admin/js/DataTables/extensions/ColReorder/examples/state_save.html
new file mode 100644
index 0000000000000000000000000000000000000000..e3ace387e0d4c3e2e916f0d179f75eeb75c4a607
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/examples/state_save.html
@@ -0,0 +1,643 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColReorder example - State saving</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colReorder.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colReorder.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').dataTable( {
+		dom: 'Rlfrtip',
+		stateSave: true
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColReorder example <span>State saving</span></h1>
+
+			<div class="info">
+				<p>A useful interaction pattern to use in DataTables is state saving, so when the end user reloads or
+				revisits a page its previous state is retained. ColReorder works seamlessly with state saving in
+				DataTables (<a href="//datatables.net/reference/option/stateSave"><code class="option" title=
+				"DataTables initialisation option">stateSave<span>DT</span></code></a>), remembering and restoring the
+				column positions, as well as everything else such as sorting and filtering.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').dataTable( {
+		dom: 'Rlfrtip',
+		stateSave: true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colReorder.js">../js/dataTables.colReorder.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colReorder.css">../css/dataTables.colReorder.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">Initialisation using `new`</a></li>
+							<li><a href="./alt_insert.html">Alternative insert styling</a></li>
+							<li><a href="./realtime.html">Realtime updating</a></li>
+							<li class="active"><a href="./state_save.html">State saving</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./predefined.html">Predefined column ordering</a></li>
+							<li><a href="./reset.html">Reset ordering API</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./fixedcolumns.html">FixedColumns integration</a></li>
+							<li><a href="./fixedheader.html">FixedHeader integration</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./server_side.html">Server-side processing</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColReorder/images/insert.png b/public/admin/js/DataTables/extensions/ColReorder/images/insert.png
new file mode 100644
index 0000000000000000000000000000000000000000..15d5522da64f4f036c5a717dbb320799884fa12b
Binary files /dev/null and b/public/admin/js/DataTables/extensions/ColReorder/images/insert.png differ
diff --git a/public/admin/js/DataTables/extensions/ColReorder/js/dataTables.colReorder.js b/public/admin/js/DataTables/extensions/ColReorder/js/dataTables.colReorder.js
new file mode 100755
index 0000000000000000000000000000000000000000..bc5aeee7155c15e9b198149cde04c10525062ae9
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/js/dataTables.colReorder.js
@@ -0,0 +1,1371 @@
+/*! ColReorder 1.1.2
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     ColReorder
+ * @description Provide the ability to reorder columns in a DataTable
+ * @version     1.1.2
+ * @file        dataTables.colReorder.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function(window, document, undefined) {
+
+
+/**
+ * Switch the key value pairing of an index array to be value key (i.e. the old value is now the
+ * key). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ].
+ *  @method  fnInvertKeyValues
+ *  @param   array aIn Array to switch around
+ *  @returns array
+ */
+function fnInvertKeyValues( aIn )
+{
+	var aRet=[];
+	for ( var i=0, iLen=aIn.length ; i<iLen ; i++ )
+	{
+		aRet[ aIn[i] ] = i;
+	}
+	return aRet;
+}
+
+
+/**
+ * Modify an array by switching the position of two elements
+ *  @method  fnArraySwitch
+ *  @param   array aArray Array to consider, will be modified by reference (i.e. no return)
+ *  @param   int iFrom From point
+ *  @param   int iTo Insert point
+ *  @returns void
+ */
+function fnArraySwitch( aArray, iFrom, iTo )
+{
+	var mStore = aArray.splice( iFrom, 1 )[0];
+	aArray.splice( iTo, 0, mStore );
+}
+
+
+/**
+ * Switch the positions of nodes in a parent node (note this is specifically designed for
+ * table rows). Note this function considers all element nodes under the parent!
+ *  @method  fnDomSwitch
+ *  @param   string sTag Tag to consider
+ *  @param   int iFrom Element to move
+ *  @param   int Point to element the element to (before this point), can be null for append
+ *  @returns void
+ */
+function fnDomSwitch( nParent, iFrom, iTo )
+{
+	var anTags = [];
+	for ( var i=0, iLen=nParent.childNodes.length ; i<iLen ; i++ )
+	{
+		if ( nParent.childNodes[i].nodeType == 1 )
+		{
+			anTags.push( nParent.childNodes[i] );
+		}
+	}
+	var nStore = anTags[ iFrom ];
+
+	if ( iTo !== null )
+	{
+		nParent.insertBefore( nStore, anTags[iTo] );
+	}
+	else
+	{
+		nParent.appendChild( nStore );
+	}
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables plug-in API functions
+ *
+ * This are required by ColReorder in order to perform the tasks required, and also keep this
+ * code portable, to be used for other column reordering projects with DataTables, if needed.
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * Plug-in for DataTables which will reorder the internal column structure by taking the column
+ * from one position (iFrom) and insert it into a given point (iTo).
+ *  @method  $.fn.dataTableExt.oApi.fnColReorder
+ *  @param   object oSettings DataTables settings object - automatically added by DataTables!
+ *  @param   int iFrom Take the column to be repositioned from this point
+ *  @param   int iTo and insert it into this point
+ *  @returns void
+ */
+$.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
+{
+	var v110 = $.fn.dataTable.Api ? true : false;
+	var i, iLen, j, jLen, iCols=oSettings.aoColumns.length, nTrs, oCol;
+	var attrMap = function ( obj, prop, mapping ) {
+		if ( ! obj[ prop ] ) {
+			return;
+		}
+
+		var a = obj[ prop ].split('.');
+		var num = a.shift();
+
+		if ( isNaN( num*1 ) ) {
+			return;
+		}
+
+		obj[ prop ] = mapping[ num*1 ]+'.'+a.join('.');
+	};
+
+	/* Sanity check in the input */
+	if ( iFrom == iTo )
+	{
+		/* Pointless reorder */
+		return;
+	}
+
+	if ( iFrom < 0 || iFrom >= iCols )
+	{
+		this.oApi._fnLog( oSettings, 1, "ColReorder 'from' index is out of bounds: "+iFrom );
+		return;
+	}
+
+	if ( iTo < 0 || iTo >= iCols )
+	{
+		this.oApi._fnLog( oSettings, 1, "ColReorder 'to' index is out of bounds: "+iTo );
+		return;
+	}
+
+	/*
+	 * Calculate the new column array index, so we have a mapping between the old and new
+	 */
+	var aiMapping = [];
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		aiMapping[i] = i;
+	}
+	fnArraySwitch( aiMapping, iFrom, iTo );
+	var aiInvertMapping = fnInvertKeyValues( aiMapping );
+
+
+	/*
+	 * Convert all internal indexing to the new column order indexes
+	 */
+	/* Sorting */
+	for ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )
+	{
+		oSettings.aaSorting[i][0] = aiInvertMapping[ oSettings.aaSorting[i][0] ];
+	}
+
+	/* Fixed sorting */
+	if ( oSettings.aaSortingFixed !== null )
+	{
+		for ( i=0, iLen=oSettings.aaSortingFixed.length ; i<iLen ; i++ )
+		{
+			oSettings.aaSortingFixed[i][0] = aiInvertMapping[ oSettings.aaSortingFixed[i][0] ];
+		}
+	}
+
+	/* Data column sorting (the column which the sort for a given column should take place on) */
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		oCol = oSettings.aoColumns[i];
+		for ( j=0, jLen=oCol.aDataSort.length ; j<jLen ; j++ )
+		{
+			oCol.aDataSort[j] = aiInvertMapping[ oCol.aDataSort[j] ];
+		}
+
+		// Update the column indexes
+		if ( v110 ) {
+			oCol.idx = aiInvertMapping[ oCol.idx ];
+		}
+	}
+
+	if ( v110 ) {
+		// Update 1.10 optimised sort class removal variable
+		$.each( oSettings.aLastSort, function (i, val) {
+			oSettings.aLastSort[i].src = aiInvertMapping[ val.src ];
+		} );
+	}
+
+	/* Update the Get and Set functions for each column */
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		oCol = oSettings.aoColumns[i];
+
+		if ( typeof oCol.mData == 'number' ) {
+			oCol.mData = aiInvertMapping[ oCol.mData ];
+
+			// regenerate the get / set functions
+			oSettings.oApi._fnColumnOptions( oSettings, i, {} );
+		}
+		else if ( $.isPlainObject( oCol.mData ) ) {
+			// HTML5 data sourced
+			attrMap( oCol.mData, '_',      aiInvertMapping );
+			attrMap( oCol.mData, 'filter', aiInvertMapping );
+			attrMap( oCol.mData, 'sort',   aiInvertMapping );
+			attrMap( oCol.mData, 'type',   aiInvertMapping );
+
+			// regenerate the get / set functions
+			oSettings.oApi._fnColumnOptions( oSettings, i, {} );
+		}
+	}
+
+
+	/*
+	 * Move the DOM elements
+	 */
+	if ( oSettings.aoColumns[iFrom].bVisible )
+	{
+		/* Calculate the current visible index and the point to insert the node before. The insert
+		 * before needs to take into account that there might not be an element to insert before,
+		 * in which case it will be null, and an appendChild should be used
+		 */
+		var iVisibleIndex = this.oApi._fnColumnIndexToVisible( oSettings, iFrom );
+		var iInsertBeforeIndex = null;
+
+		i = iTo < iFrom ? iTo : iTo + 1;
+		while ( iInsertBeforeIndex === null && i < iCols )
+		{
+			iInsertBeforeIndex = this.oApi._fnColumnIndexToVisible( oSettings, i );
+			i++;
+		}
+
+		/* Header */
+		nTrs = oSettings.nTHead.getElementsByTagName('tr');
+		for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+		{
+			fnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );
+		}
+
+		/* Footer */
+		if ( oSettings.nTFoot !== null )
+		{
+			nTrs = oSettings.nTFoot.getElementsByTagName('tr');
+			for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+			{
+				fnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );
+			}
+		}
+
+		/* Body */
+		for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+		{
+			if ( oSettings.aoData[i].nTr !== null )
+			{
+				fnDomSwitch( oSettings.aoData[i].nTr, iVisibleIndex, iInsertBeforeIndex );
+			}
+		}
+	}
+
+	/*
+	 * Move the internal array elements
+	 */
+	/* Columns */
+	fnArraySwitch( oSettings.aoColumns, iFrom, iTo );
+
+	/* Search columns */
+	fnArraySwitch( oSettings.aoPreSearchCols, iFrom, iTo );
+
+	/* Array array - internal data anodes cache */
+	for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+	{
+		var data = oSettings.aoData[i];
+
+		if ( v110 ) {
+			// DataTables 1.10+
+			if ( data.anCells ) {
+				fnArraySwitch( data.anCells, iFrom, iTo );
+			}
+
+			// For DOM sourced data, the invalidate will reread the cell into
+			// the data array, but for data sources as an array, they need to
+			// be flipped
+			if ( data.src !== 'dom' && $.isArray( data._aData ) ) {
+				fnArraySwitch( data._aData, iFrom, iTo );
+			}
+		}
+		else {
+			// DataTables 1.9-
+			if ( $.isArray( data._aData ) ) {
+				fnArraySwitch( data._aData, iFrom, iTo );
+			}
+			fnArraySwitch( data._anHidden, iFrom, iTo );
+		}
+	}
+
+	/* Reposition the header elements in the header layout array */
+	for ( i=0, iLen=oSettings.aoHeader.length ; i<iLen ; i++ )
+	{
+		fnArraySwitch( oSettings.aoHeader[i], iFrom, iTo );
+	}
+
+	if ( oSettings.aoFooter !== null )
+	{
+		for ( i=0, iLen=oSettings.aoFooter.length ; i<iLen ; i++ )
+		{
+			fnArraySwitch( oSettings.aoFooter[i], iFrom, iTo );
+		}
+	}
+
+	// In 1.10 we need to invalidate row cached data for sorting, filtering etc
+	if ( v110 ) {
+		var api = new $.fn.dataTable.Api( oSettings );
+		api.rows().invalidate();
+	}
+
+	/*
+	 * Update DataTables' event handlers
+	 */
+
+	/* Sort listener */
+	for ( i=0, iLen=iCols ; i<iLen ; i++ )
+	{
+		$(oSettings.aoColumns[i].nTh).off('click.DT');
+		this.oApi._fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );
+	}
+
+
+	/* Fire an event so other plug-ins can update */
+	$(oSettings.oInstance).trigger( 'column-reorder', [ oSettings, {
+		"iFrom": iFrom,
+		"iTo": iTo,
+		"aiInvertMapping": aiInvertMapping
+	} ] );
+};
+
+
+
+var factory = function( $, DataTable ) {
+"use strict";
+
+/**
+ * ColReorder provides column visibility control for DataTables
+ * @class ColReorder
+ * @constructor
+ * @param {object} dt DataTables settings object
+ * @param {object} opts ColReorder options
+ */
+var ColReorder = function( dt, opts )
+{
+	var oDTSettings;
+
+	if ( $.fn.dataTable.Api ) {
+		oDTSettings = new $.fn.dataTable.Api( dt ).settings()[0];
+	}
+	// 1.9 compatibility
+	else if ( dt.fnSettings ) {
+		// DataTables object, convert to the settings object
+		oDTSettings = dt.fnSettings();
+	}
+	else if ( typeof dt === 'string' ) {
+		// jQuery selector
+		if ( $.fn.dataTable.fnIsDataTable( $(dt)[0] ) ) {
+			oDTSettings = $(dt).eq(0).dataTable().fnSettings();
+		}
+	}
+	else if ( dt.nodeName && dt.nodeName.toLowerCase() === 'table' ) {
+		// Table node
+		if ( $.fn.dataTable.fnIsDataTable( dt.nodeName ) ) {
+			oDTSettings = $(dt.nodeName).dataTable().fnSettings();
+		}
+	}
+	else if ( dt instanceof jQuery ) {
+		// jQuery object
+		if ( $.fn.dataTable.fnIsDataTable( dt[0] ) ) {
+			oDTSettings = dt.eq(0).dataTable().fnSettings();
+		}
+	}
+	else {
+		// DataTables settings object
+		oDTSettings = dt;
+	}
+
+	// Convert from camelCase to Hungarian, just as DataTables does
+	var camelToHungarian = $.fn.dataTable.camelToHungarian;
+	if ( camelToHungarian ) {
+		camelToHungarian( ColReorder.defaults, ColReorder.defaults, true );
+		camelToHungarian( ColReorder.defaults, opts || {} );
+	}
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public class variables
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * @namespace Settings object which contains customisable information for ColReorder instance
+	 */
+	this.s = {
+		/**
+		 * DataTables settings object
+		 *  @property dt
+		 *  @type     Object
+		 *  @default  null
+		 */
+		"dt": null,
+
+		/**
+		 * Initialisation object used for this instance
+		 *  @property init
+		 *  @type     object
+		 *  @default  {}
+		 */
+		"init": $.extend( true, {}, ColReorder.defaults, opts ),
+
+		/**
+		 * Number of columns to fix (not allow to be reordered)
+		 *  @property fixed
+		 *  @type     int
+		 *  @default  0
+		 */
+		"fixed": 0,
+
+		/**
+		 * Number of columns to fix counting from right (not allow to be reordered)
+		 *  @property fixedRight
+		 *  @type     int
+		 *  @default  0
+		 */
+		"fixedRight": 0,
+
+		/**
+		 * Callback function for once the reorder has been done
+		 *  @property dropcallback
+		 *  @type     function
+		 *  @default  null
+		 */
+		"dropCallback": null,
+
+		/**
+		 * @namespace Information used for the mouse drag
+		 */
+		"mouse": {
+			"startX": -1,
+			"startY": -1,
+			"offsetX": -1,
+			"offsetY": -1,
+			"target": -1,
+			"targetIndex": -1,
+			"fromIndex": -1
+		},
+
+		/**
+		 * Information which is used for positioning the insert cusor and knowing where to do the
+		 * insert. Array of objects with the properties:
+		 *   x: x-axis position
+		 *   to: insert point
+		 *  @property aoTargets
+		 *  @type     array
+		 *  @default  []
+		 */
+		"aoTargets": []
+	};
+
+
+	/**
+	 * @namespace Common and useful DOM elements for the class instance
+	 */
+	this.dom = {
+		/**
+		 * Dragging element (the one the mouse is moving)
+		 *  @property drag
+		 *  @type     element
+		 *  @default  null
+		 */
+		"drag": null,
+
+		/**
+		 * The insert cursor
+		 *  @property pointer
+		 *  @type     element
+		 *  @default  null
+		 */
+		"pointer": null
+	};
+
+
+	/* Constructor logic */
+	this.s.dt = oDTSettings.oInstance.fnSettings();
+	this.s.dt._colReorder = this;
+	this._fnConstruct();
+
+	/* Add destroy callback */
+	oDTSettings.oApi._fnCallbackReg(oDTSettings, 'aoDestroyCallback', $.proxy(this._fnDestroy, this), 'ColReorder');
+
+	return this;
+};
+
+
+
+ColReorder.prototype = {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Reset the column ordering to the original ordering that was detected on
+	 * start up.
+	 *  @return {this} Returns `this` for chaining.
+	 *
+	 *  @example
+	 *    // DataTables initialisation with ColReorder
+	 *    var table = $('#example').dataTable( {
+	 *        "sDom": 'Rlfrtip'
+	 *    } );
+	 *
+	 *    // Add click event to a button to reset the ordering
+	 *    $('#resetOrdering').click( function (e) {
+	 *        e.preventDefault();
+	 *        $.fn.dataTable.ColReorder( table ).fnReset();
+	 *    } );
+	 */
+	"fnReset": function ()
+	{
+		var a = [];
+		for ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
+		{
+			a.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol );
+		}
+
+		this._fnOrderColumns( a );
+
+		return this;
+	},
+
+	/**
+	 * `Deprecated` - Get the current order of the columns, as an array.
+	 *  @return {array} Array of column identifiers
+	 *  @deprecated `fnOrder` should be used in preference to this method.
+	 *      `fnOrder` acts as a getter/setter.
+	 */
+	"fnGetCurrentOrder": function ()
+	{
+		return this.fnOrder();
+	},
+
+	/**
+	 * Get the current order of the columns, as an array. Note that the values
+	 * given in the array are unique identifiers for each column. Currently
+	 * these are the original ordering of the columns that was detected on
+	 * start up, but this could potentially change in future.
+	 *  @return {array} Array of column identifiers
+	 *
+	 *  @example
+	 *    // Get column ordering for the table
+	 *    var order = $.fn.dataTable.ColReorder( dataTable ).fnOrder();
+	 *//**
+	 * Set the order of the columns, from the positions identified in the
+	 * ordering array given. Note that ColReorder takes a brute force approach
+	 * to reordering, so it is possible multiple reordering events will occur
+	 * before the final order is settled upon.
+	 *  @param {array} [set] Array of column identifiers in the new order. Note
+	 *    that every column must be included, uniquely, in this array.
+	 *  @return {this} Returns `this` for chaining.
+	 *
+	 *  @example
+	 *    // Swap the first and second columns
+	 *    $.fn.dataTable.ColReorder( dataTable ).fnOrder( [1, 0, 2, 3, 4] );
+	 *
+	 *  @example
+	 *    // Move the first column to the end for the table `#example`
+	 *    var curr = $.fn.dataTable.ColReorder( '#example' ).fnOrder();
+	 *    var first = curr.shift();
+	 *    curr.push( first );
+	 *    $.fn.dataTable.ColReorder( '#example' ).fnOrder( curr );
+	 *
+	 *  @example
+	 *    // Reverse the table's order
+	 *    $.fn.dataTable.ColReorder( '#example' ).fnOrder(
+	 *      $.fn.dataTable.ColReorder( '#example' ).fnOrder().reverse()
+	 *    );
+	 */
+	"fnOrder": function ( set )
+	{
+		if ( set === undefined )
+		{
+			var a = [];
+			for ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
+			{
+				a.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol );
+			}
+			return a;
+		}
+
+		this._fnOrderColumns( fnInvertKeyValues( set ) );
+
+		return this;
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods (they are of course public in JS, but recommended as private)
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Constructor logic
+	 *  @method  _fnConstruct
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnConstruct": function ()
+	{
+		var that = this;
+		var iLen = this.s.dt.aoColumns.length;
+		var i;
+
+		/* Columns discounted from reordering - counting left to right */
+		if ( this.s.init.iFixedColumns )
+		{
+			this.s.fixed = this.s.init.iFixedColumns;
+		}
+
+		/* Columns discounted from reordering - counting right to left */
+		this.s.fixedRight = this.s.init.iFixedColumnsRight ?
+			this.s.init.iFixedColumnsRight :
+			0;
+
+		/* Drop callback initialisation option */
+		if ( this.s.init.fnReorderCallback )
+		{
+			this.s.dropCallback = this.s.init.fnReorderCallback;
+		}
+
+		/* Add event handlers for the drag and drop, and also mark the original column order */
+		for ( i = 0; i < iLen; i++ )
+		{
+			if ( i > this.s.fixed-1 && i < iLen - this.s.fixedRight )
+			{
+				this._fnMouseListener( i, this.s.dt.aoColumns[i].nTh );
+			}
+
+			/* Mark the original column order for later reference */
+			this.s.dt.aoColumns[i]._ColReorder_iOrigCol = i;
+		}
+
+		/* State saving */
+		this.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) {
+			that._fnStateSave.call( that, oData );
+		}, "ColReorder_State" );
+
+		/* An initial column order has been specified */
+		var aiOrder = null;
+		if ( this.s.init.aiOrder )
+		{
+			aiOrder = this.s.init.aiOrder.slice();
+		}
+
+		/* State loading, overrides the column order given */
+		if ( this.s.dt.oLoadedState && typeof this.s.dt.oLoadedState.ColReorder != 'undefined' &&
+		  this.s.dt.oLoadedState.ColReorder.length == this.s.dt.aoColumns.length )
+		{
+			aiOrder = this.s.dt.oLoadedState.ColReorder;
+		}
+
+		/* If we have an order to apply - do so */
+		if ( aiOrder )
+		{
+			/* We might be called during or after the DataTables initialisation. If before, then we need
+			 * to wait until the draw is done, if after, then do what we need to do right away
+			 */
+			if ( !that.s.dt._bInitComplete )
+			{
+				var bDone = false;
+				this.s.dt.aoDrawCallback.push( {
+					"fn": function () {
+						if ( !that.s.dt._bInitComplete && !bDone )
+						{
+							bDone = true;
+							var resort = fnInvertKeyValues( aiOrder );
+							that._fnOrderColumns.call( that, resort );
+						}
+					},
+					"sName": "ColReorder_Pre"
+				} );
+			}
+			else
+			{
+				var resort = fnInvertKeyValues( aiOrder );
+				that._fnOrderColumns.call( that, resort );
+			}
+		}
+		else {
+			this._fnSetColumnIndexes();
+		}
+	},
+
+
+	/**
+	 * Set the column order from an array
+	 *  @method  _fnOrderColumns
+	 *  @param   array a An array of integers which dictate the column order that should be applied
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnOrderColumns": function ( a )
+	{
+		if ( a.length != this.s.dt.aoColumns.length )
+		{
+			this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "ColReorder - array reorder does not "+
+				"match known number of columns. Skipping." );
+			return;
+		}
+
+		for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+		{
+			var currIndex = $.inArray( i, a );
+			if ( i != currIndex )
+			{
+				/* Reorder our switching array */
+				fnArraySwitch( a, currIndex, i );
+
+				/* Do the column reorder in the table */
+				this.s.dt.oInstance.fnColReorder( currIndex, i );
+			}
+		}
+
+		/* When scrolling we need to recalculate the column sizes to allow for the shift */
+		if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
+		{
+			this.s.dt.oInstance.fnAdjustColumnSizing();
+		}
+
+		/* Save the state */
+		this.s.dt.oInstance.oApi._fnSaveState( this.s.dt );
+
+		this._fnSetColumnIndexes();
+	},
+
+
+	/**
+	 * Because we change the indexes of columns in the table, relative to their starting point
+	 * we need to reorder the state columns to what they are at the starting point so we can
+	 * then rearrange them again on state load!
+	 *  @method  _fnStateSave
+	 *  @param   object oState DataTables state
+	 *  @returns string JSON encoded cookie string for DataTables
+	 *  @private
+	 */
+	"_fnStateSave": function ( oState )
+	{
+		var i, iLen, aCopy, iOrigColumn;
+		var oSettings = this.s.dt;
+		var columns = oSettings.aoColumns;
+
+		oState.ColReorder = [];
+
+		/* Sorting */
+		if ( oState.aaSorting ) {
+			// 1.10.0-
+			for ( i=0 ; i<oState.aaSorting.length ; i++ ) {
+				oState.aaSorting[i][0] = columns[ oState.aaSorting[i][0] ]._ColReorder_iOrigCol;
+			}
+
+			var aSearchCopy = $.extend( true, [], oState.aoSearchCols );
+
+			for ( i=0, iLen=columns.length ; i<iLen ; i++ )
+			{
+				iOrigColumn = columns[i]._ColReorder_iOrigCol;
+
+				/* Column filter */
+				oState.aoSearchCols[ iOrigColumn ] = aSearchCopy[i];
+
+				/* Visibility */
+				oState.abVisCols[ iOrigColumn ] = columns[i].bVisible;
+
+				/* Column reordering */
+				oState.ColReorder.push( iOrigColumn );
+			}
+		}
+		else if ( oState.order ) {
+			// 1.10.1+
+			for ( i=0 ; i<oState.order.length ; i++ ) {
+				oState.order[i][0] = columns[ oState.order[i][0] ]._ColReorder_iOrigCol;
+			}
+
+			var stateColumnsCopy = $.extend( true, [], oState.columns );
+
+			for ( i=0, iLen=columns.length ; i<iLen ; i++ )
+			{
+				iOrigColumn = columns[i]._ColReorder_iOrigCol;
+
+				/* Columns */
+				oState.columns[ iOrigColumn ] = stateColumnsCopy[i];
+
+				/* Column reordering */
+				oState.ColReorder.push( iOrigColumn );
+			}
+		}
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Mouse drop and drag
+	 */
+
+	/**
+	 * Add a mouse down listener to a particluar TH element
+	 *  @method  _fnMouseListener
+	 *  @param   int i Column index
+	 *  @param   element nTh TH element clicked on
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseListener": function ( i, nTh )
+	{
+		var that = this;
+		$(nTh).on( 'mousedown.ColReorder', function (e) {
+			e.preventDefault();
+			that._fnMouseDown.call( that, e, nTh );
+		} );
+	},
+
+
+	/**
+	 * Mouse down on a TH element in the table header
+	 *  @method  _fnMouseDown
+	 *  @param   event e Mouse event
+	 *  @param   element nTh TH element to be dragged
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseDown": function ( e, nTh )
+	{
+		var that = this;
+
+		/* Store information about the mouse position */
+		var target = $(e.target).closest('th, td');
+		var offset = target.offset();
+		var idx = parseInt( $(nTh).attr('data-column-index'), 10 );
+
+		if ( idx === undefined ) {
+			return;
+		}
+
+		this.s.mouse.startX = e.pageX;
+		this.s.mouse.startY = e.pageY;
+		this.s.mouse.offsetX = e.pageX - offset.left;
+		this.s.mouse.offsetY = e.pageY - offset.top;
+		this.s.mouse.target = this.s.dt.aoColumns[ idx ].nTh;//target[0];
+		this.s.mouse.targetIndex = idx;
+		this.s.mouse.fromIndex = idx;
+
+		this._fnRegions();
+
+		/* Add event handlers to the document */
+		$(document)
+			.on( 'mousemove.ColReorder', function (e) {
+				that._fnMouseMove.call( that, e );
+			} )
+			.on( 'mouseup.ColReorder', function (e) {
+				that._fnMouseUp.call( that, e );
+			} );
+	},
+
+
+	/**
+	 * Deal with a mouse move event while dragging a node
+	 *  @method  _fnMouseMove
+	 *  @param   event e Mouse event
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseMove": function ( e )
+	{
+		var that = this;
+
+		if ( this.dom.drag === null )
+		{
+			/* Only create the drag element if the mouse has moved a specific distance from the start
+			 * point - this allows the user to make small mouse movements when sorting and not have a
+			 * possibly confusing drag element showing up
+			 */
+			if ( Math.pow(
+				Math.pow(e.pageX - this.s.mouse.startX, 2) +
+				Math.pow(e.pageY - this.s.mouse.startY, 2), 0.5 ) < 5 )
+			{
+				return;
+			}
+			this._fnCreateDragNode();
+		}
+
+		/* Position the element - we respect where in the element the click occured */
+		this.dom.drag.css( {
+			left: e.pageX - this.s.mouse.offsetX,
+			top: e.pageY - this.s.mouse.offsetY
+		} );
+
+		/* Based on the current mouse position, calculate where the insert should go */
+		var bSet = false;
+		var lastToIndex = this.s.mouse.toIndex;
+
+		for ( var i=1, iLen=this.s.aoTargets.length ; i<iLen ; i++ )
+		{
+			if ( e.pageX < this.s.aoTargets[i-1].x + ((this.s.aoTargets[i].x-this.s.aoTargets[i-1].x)/2) )
+			{
+				this.dom.pointer.css( 'left', this.s.aoTargets[i-1].x );
+				this.s.mouse.toIndex = this.s.aoTargets[i-1].to;
+				bSet = true;
+				break;
+			}
+		}
+
+		// The insert element wasn't positioned in the array (less than
+		// operator), so we put it at the end
+		if ( !bSet )
+		{
+			this.dom.pointer.css( 'left', this.s.aoTargets[this.s.aoTargets.length-1].x );
+			this.s.mouse.toIndex = this.s.aoTargets[this.s.aoTargets.length-1].to;
+		}
+
+		// Perform reordering if realtime updating is on and the column has moved
+		if ( this.s.init.bRealtime && lastToIndex !== this.s.mouse.toIndex ) {
+			this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );
+			this.s.mouse.fromIndex = this.s.mouse.toIndex;
+			this._fnRegions();
+		}
+	},
+
+
+	/**
+	 * Finish off the mouse drag and insert the column where needed
+	 *  @method  _fnMouseUp
+	 *  @param   event e Mouse event
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnMouseUp": function ( e )
+	{
+		var that = this;
+
+		$(document).off( 'mousemove.ColReorder mouseup.ColReorder' );
+
+		if ( this.dom.drag !== null )
+		{
+			/* Remove the guide elements */
+			this.dom.drag.remove();
+			this.dom.pointer.remove();
+			this.dom.drag = null;
+			this.dom.pointer = null;
+
+			/* Actually do the reorder */
+			this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );
+			this._fnSetColumnIndexes();
+
+			/* When scrolling we need to recalculate the column sizes to allow for the shift */
+			if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
+			{
+				this.s.dt.oInstance.fnAdjustColumnSizing();
+			}
+
+			if ( this.s.dropCallback !== null )
+			{
+				this.s.dropCallback.call( this );
+			}
+
+			/* Save the state */
+			this.s.dt.oInstance.oApi._fnSaveState( this.s.dt );
+		}
+	},
+
+
+	/**
+	 * Calculate a cached array with the points of the column inserts, and the
+	 * 'to' points
+	 *  @method  _fnRegions
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnRegions": function ()
+	{
+		var aoColumns = this.s.dt.aoColumns;
+
+		this.s.aoTargets.splice( 0, this.s.aoTargets.length );
+
+		this.s.aoTargets.push( {
+			"x":  $(this.s.dt.nTable).offset().left,
+			"to": 0
+		} );
+
+		var iToPoint = 0;
+		for ( var i=0, iLen=aoColumns.length ; i<iLen ; i++ )
+		{
+			/* For the column / header in question, we want it's position to remain the same if the
+			 * position is just to it's immediate left or right, so we only incremement the counter for
+			 * other columns
+			 */
+			if ( i != this.s.mouse.fromIndex )
+			{
+				iToPoint++;
+			}
+
+			if ( aoColumns[i].bVisible )
+			{
+				this.s.aoTargets.push( {
+					"x":  $(aoColumns[i].nTh).offset().left + $(aoColumns[i].nTh).outerWidth(),
+					"to": iToPoint
+				} );
+			}
+		}
+
+		/* Disallow columns for being reordered by drag and drop, counting right to left */
+		if ( this.s.fixedRight !== 0 )
+		{
+			this.s.aoTargets.splice( this.s.aoTargets.length - this.s.fixedRight );
+		}
+
+		/* Disallow columns for being reordered by drag and drop, counting left to right */
+		if ( this.s.fixed !== 0 )
+		{
+			this.s.aoTargets.splice( 0, this.s.fixed );
+		}
+	},
+
+
+	/**
+	 * Copy the TH element that is being drags so the user has the idea that they are actually
+	 * moving it around the page.
+	 *  @method  _fnCreateDragNode
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnCreateDragNode": function ()
+	{
+		var scrolling = this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "";
+
+		var origCell = this.s.dt.aoColumns[ this.s.mouse.targetIndex ].nTh;
+		var origTr = origCell.parentNode;
+		var origThead = origTr.parentNode;
+		var origTable = origThead.parentNode;
+		var cloneCell = $(origCell).clone();
+
+		// This is a slightly odd combination of jQuery and DOM, but it is the
+		// fastest and least resource intensive way I could think of cloning
+		// the table with just a single header cell in it.
+		this.dom.drag = $(origTable.cloneNode(false))
+			.addClass( 'DTCR_clonedTable' )
+			.append(
+				origThead.cloneNode(false).appendChild(
+					origTr.cloneNode(false).appendChild(
+						cloneCell[0]
+					)
+				)
+			)
+			.css( {
+				position: 'absolute',
+				top: 0,
+				left: 0,
+				width: $(origCell).outerWidth(),
+				height: $(origCell).outerHeight()
+			} )
+			.appendTo( 'body' );
+
+		this.dom.pointer = $('<div></div>')
+			.addClass( 'DTCR_pointer' )
+			.css( {
+				position: 'absolute',
+				top: scrolling ?
+					$('div.dataTables_scroll', this.s.dt.nTableWrapper).offset().top :
+					$(this.s.dt.nTable).offset().top,
+				height : scrolling ?
+					$('div.dataTables_scroll', this.s.dt.nTableWrapper).height() :
+					$(this.s.dt.nTable).height()
+			} )
+			.appendTo( 'body' );
+	},
+
+	/**
+	 * Clean up ColReorder memory references and event handlers
+	 *  @method  _fnDestroy
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnDestroy": function ()
+	{
+		var i, iLen;
+
+		for ( i=0, iLen=this.s.dt.aoDrawCallback.length ; i<iLen ; i++ )
+		{
+			if ( this.s.dt.aoDrawCallback[i].sName === 'ColReorder_Pre' )
+			{
+				this.s.dt.aoDrawCallback.splice( i, 1 );
+				break;
+			}
+		}
+
+		$(this.s.dt.nTHead).find( '*' ).off( '.ColReorder' );
+
+		$.each( this.s.dt.aoColumns, function (i, column) {
+			$(column.nTh).removeAttr('data-column-index');
+		} );
+
+		this.s.dt._colReorder = null;
+		this.s = null;
+	},
+
+
+	/**
+	 * Add a data attribute to the column headers, so we know the index of
+	 * the row to be reordered. This allows fast detection of the index, and
+	 * for this plug-in to work with FixedHeader which clones the nodes.
+	 *  @private
+	 */
+	"_fnSetColumnIndexes": function ()
+	{
+		$.each( this.s.dt.aoColumns, function (i, column) {
+			$(column.nTh).attr('data-column-index', i);
+		} );
+	}
+};
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Static parameters
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * ColReorder default settings for initialisation
+ *  @namespace
+ *  @static
+ */
+ColReorder.defaults = {
+	/**
+	 * Predefined ordering for the columns that will be applied automatically
+	 * on initialisation. If not specified then the order that the columns are
+	 * found to be in the HTML is the order used.
+	 *  @type array
+	 *  @default null
+	 *  @static
+	 *  @example
+	 *      // Using the `oColReorder` option in the DataTables options object
+	 *      $('#example').dataTable( {
+	 *          "sDom": 'Rlfrtip',
+	 *          "oColReorder": {
+	 *              "aiOrder": [ 4, 3, 2, 1, 0 ]
+	 *          }
+	 *      } );
+	 *
+	 *  @example
+	 *      // Using `new` constructor
+	 *      $('#example').dataTable()
+	 *
+	 *      new $.fn.dataTable.ColReorder( '#example', {
+	 *          "aiOrder": [ 4, 3, 2, 1, 0 ]
+	 *      } );
+	 */
+	aiOrder: null,
+
+	/**
+	 * Redraw the table's column ordering as the end user draws the column
+	 * (`true`) or wait until the mouse is released (`false` - default). Note
+	 * that this will perform a redraw on each reordering, which involves an
+	 * Ajax request each time if you are using server-side processing in
+	 * DataTables.
+	 *  @type boolean
+	 *  @default false
+	 *  @static
+	 *  @example
+	 *      // Using the `oColReorder` option in the DataTables options object
+	 *      $('#example').dataTable( {
+	 *          "sDom": 'Rlfrtip',
+	 *          "oColReorder": {
+	 *              "bRealtime": true
+	 *          }
+	 *      } );
+	 *
+	 *  @example
+	 *      // Using `new` constructor
+	 *      $('#example').dataTable()
+	 *
+	 *      new $.fn.dataTable.ColReorder( '#example', {
+	 *          "bRealtime": true
+	 *      } );
+	 */
+	bRealtime: false,
+
+	/**
+	 * Indicate how many columns should be fixed in position (counting from the
+	 * left). This will typically be 1 if used, but can be as high as you like.
+	 *  @type int
+	 *  @default 0
+	 *  @static
+	 *  @example
+	 *      // Using the `oColReorder` option in the DataTables options object
+	 *      $('#example').dataTable( {
+	 *          "sDom": 'Rlfrtip',
+	 *          "oColReorder": {
+	 *              "iFixedColumns": 1
+	 *          }
+	 *      } );
+	 *
+	 *  @example
+	 *      // Using `new` constructor
+	 *      $('#example').dataTable()
+	 *
+	 *      new $.fn.dataTable.ColReorder( '#example', {
+	 *          "iFixedColumns": 1
+	 *      } );
+	 */
+	iFixedColumns: 0,
+
+	/**
+	 * As `iFixedColumnsRight` but counting from the right.
+	 *  @type int
+	 *  @default 0
+	 *  @static
+	 *  @example
+	 *      // Using the `oColReorder` option in the DataTables options object
+	 *      $('#example').dataTable( {
+	 *          "sDom": 'Rlfrtip',
+	 *          "oColReorder": {
+	 *              "iFixedColumnsRight": 1
+	 *          }
+	 *      } );
+	 *
+	 *  @example
+	 *      // Using `new` constructor
+	 *      $('#example').dataTable()
+	 *
+	 *      new $.fn.dataTable.ColReorder( '#example', {
+	 *          "iFixedColumnsRight": 1
+	 *      } );
+	 */
+	iFixedColumnsRight: 0,
+
+	/**
+	 * Callback function that is fired when columns are reordered
+	 *  @type function():void
+	 *  @default null
+	 *  @static
+	 *  @example
+	 *      // Using the `oColReorder` option in the DataTables options object
+	 *      $('#example').dataTable( {
+	 *          "sDom": 'Rlfrtip',
+	 *          "oColReorder": {
+	 *              "fnReorderCallback": function () {
+	 *                  alert( 'Columns reordered' );
+	 *              }
+	 *          }
+	 *      } );
+	 *
+	 *  @example
+	 *      // Using `new` constructor
+	 *      $('#example').dataTable()
+	 *
+	 *      new $.fn.dataTable.ColReorder( '#example', {
+	 *          "fnReorderCallback": function () {
+	 *              alert( 'Columns reordered' );
+	 *          }
+	 *      } );
+	 */
+	fnReorderCallback: null
+};
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * ColReorder version
+ *  @constant  version
+ *  @type      String
+ *  @default   As code
+ */
+ColReorder.version = "1.1.2";
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables interfaces
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+// Expose
+$.fn.dataTable.ColReorder = ColReorder;
+$.fn.DataTable.ColReorder = ColReorder;
+
+
+// Register a new feature with DataTables
+if ( typeof $.fn.dataTable == "function" &&
+     typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+     $.fn.dataTableExt.fnVersionCheck('1.9.3') )
+{
+	$.fn.dataTableExt.aoFeatures.push( {
+		"fnInit": function( settings ) {
+			var table = settings.oInstance;
+
+			if ( ! settings._colReorder ) {
+				var dtInit = settings.oInit;
+				var opts = dtInit.colReorder || dtInit.oColReorder || {};
+
+				new ColReorder( settings, opts );
+			}
+			else {
+				table.oApi._fnLog( settings, 1, "ColReorder attempted to initialise twice. Ignoring second" );
+			}
+
+			return null; /* No node for DataTables to insert */
+		},
+		"cFeature": "R",
+		"sFeature": "ColReorder"
+	} );
+}
+else {
+	alert( "Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download");
+}
+
+
+// API augmentation
+if ( $.fn.dataTable.Api ) {
+	$.fn.dataTable.Api.register( 'colReorder.reset()', function () {
+		return this.iterator( 'table', function ( ctx ) {
+			ctx._colReorder.fnReset();
+		} );
+	} );
+
+	$.fn.dataTable.Api.register( 'colReorder.order()', function ( set ) {
+		if ( set ) {
+			return this.iterator( 'table', function ( ctx ) {
+				ctx._colReorder.fnOrder( set );
+			} );
+		}
+
+		return this.context.length ?
+			this.context[0]._colReorder.fnOrder() :
+			null;
+	} );
+}
+
+return ColReorder;
+}; // /factory
+
+
+// Define as an AMD module if possible
+if ( typeof define === 'function' && define.amd ) {
+	define( ['jquery', 'datatables'], factory );
+}
+else if ( typeof exports === 'object' ) {
+    // Node/CommonJS
+    factory( require('jquery'), require('datatables') );
+}
+else if ( jQuery && !jQuery.fn.dataTable.ColReorder ) {
+	// Otherwise simply initialise as normal, stopping multiple evaluation
+	factory( jQuery, jQuery.fn.dataTable );
+}
+
+
+})(window, document);
diff --git a/public/admin/js/DataTables/extensions/ColReorder/js/dataTables.colReorder.min.js b/public/admin/js/DataTables/extensions/ColReorder/js/dataTables.colReorder.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..1df19d476105b6b1c63d4d0743640d23b28ef487
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColReorder/js/dataTables.colReorder.min.js
@@ -0,0 +1,26 @@
+/*!
+ ColReorder 1.1.2
+ ©2010-2014 SpryMedia Ltd - datatables.net/license
+*/
+(function(n,q,r){function o(b){for(var f=[],a=0,e=b.length;a<e;a++)f[b[a]]=a;return f}function l(b,f,a){f=b.splice(f,1)[0];b.splice(a,0,f)}function p(b,f,a){for(var e=[],c=0,d=b.childNodes.length;c<d;c++)1==b.childNodes[c].nodeType&&e.push(b.childNodes[c]);f=e[f];null!==a?b.insertBefore(f,e[a]):b.appendChild(f)}$.fn.dataTableExt.oApi.fnColReorder=function(b,f,a){var e=$.fn.dataTable.Api?!0:!1,c,d,j,i,m=b.aoColumns.length,g,h;g=function(a,c,b){if(a[c]){var e=a[c].split("."),d=e.shift();isNaN(1*d)||
+(a[c]=b[1*d]+"."+e.join("."))}};if(f!=a)if(0>f||f>=m)this.oApi._fnLog(b,1,"ColReorder 'from' index is out of bounds: "+f);else if(0>a||a>=m)this.oApi._fnLog(b,1,"ColReorder 'to' index is out of bounds: "+a);else{j=[];c=0;for(d=m;c<d;c++)j[c]=c;l(j,f,a);var k=o(j);c=0;for(d=b.aaSorting.length;c<d;c++)b.aaSorting[c][0]=k[b.aaSorting[c][0]];if(null!==b.aaSortingFixed){c=0;for(d=b.aaSortingFixed.length;c<d;c++)b.aaSortingFixed[c][0]=k[b.aaSortingFixed[c][0]]}c=0;for(d=m;c<d;c++){h=b.aoColumns[c];j=0;
+for(i=h.aDataSort.length;j<i;j++)h.aDataSort[j]=k[h.aDataSort[j]];e&&(h.idx=k[h.idx])}e&&$.each(b.aLastSort,function(a,c){b.aLastSort[a].src=k[c.src]});c=0;for(d=m;c<d;c++)h=b.aoColumns[c],"number"==typeof h.mData?(h.mData=k[h.mData],b.oApi._fnColumnOptions(b,c,{})):$.isPlainObject(h.mData)&&(g(h.mData,"_",k),g(h.mData,"filter",k),g(h.mData,"sort",k),g(h.mData,"type",k),b.oApi._fnColumnOptions(b,c,{}));if(b.aoColumns[f].bVisible){j=this.oApi._fnColumnIndexToVisible(b,f);i=null;for(c=a<f?a:a+1;null===
+i&&c<m;)i=this.oApi._fnColumnIndexToVisible(b,c),c++;g=b.nTHead.getElementsByTagName("tr");c=0;for(d=g.length;c<d;c++)p(g[c],j,i);if(null!==b.nTFoot){g=b.nTFoot.getElementsByTagName("tr");c=0;for(d=g.length;c<d;c++)p(g[c],j,i)}c=0;for(d=b.aoData.length;c<d;c++)null!==b.aoData[c].nTr&&p(b.aoData[c].nTr,j,i)}l(b.aoColumns,f,a);l(b.aoPreSearchCols,f,a);c=0;for(d=b.aoData.length;c<d;c++)g=b.aoData[c],e?(g.anCells&&l(g.anCells,f,a),"dom"!==g.src&&$.isArray(g._aData)&&l(g._aData,f,a)):($.isArray(g._aData)&&
+l(g._aData,f,a),l(g._anHidden,f,a));c=0;for(d=b.aoHeader.length;c<d;c++)l(b.aoHeader[c],f,a);if(null!==b.aoFooter){c=0;for(d=b.aoFooter.length;c<d;c++)l(b.aoFooter[c],f,a)}e&&(new $.fn.dataTable.Api(b)).rows().invalidate();c=0;for(d=m;c<d;c++)$(b.aoColumns[c].nTh).off("click.DT"),this.oApi._fnSortAttachListener(b,b.aoColumns[c].nTh,c);$(b.oInstance).trigger("column-reorder",[b,{iFrom:f,iTo:a,aiInvertMapping:k}])}};n=function(b){var f=function(a,e){var c;b.fn.dataTable.Api?c=(new b.fn.dataTable.Api(a)).settings()[0]:
+a.fnSettings?c=a.fnSettings():"string"===typeof a?b.fn.dataTable.fnIsDataTable(b(a)[0])&&(c=b(a).eq(0).dataTable().fnSettings()):a.nodeName&&"table"===a.nodeName.toLowerCase()?b.fn.dataTable.fnIsDataTable(a.nodeName)&&(c=b(a.nodeName).dataTable().fnSettings()):a instanceof jQuery?b.fn.dataTable.fnIsDataTable(a[0])&&(c=a.eq(0).dataTable().fnSettings()):c=a;var d=b.fn.dataTable.camelToHungarian;d&&(d(f.defaults,f.defaults,!0),d(f.defaults,e||{}));this.s={dt:null,init:b.extend(!0,{},f.defaults,e),fixed:0,
+fixedRight:0,dropCallback:null,mouse:{startX:-1,startY:-1,offsetX:-1,offsetY:-1,target:-1,targetIndex:-1,fromIndex:-1},aoTargets:[]};this.dom={drag:null,pointer:null};this.s.dt=c.oInstance.fnSettings();this.s.dt._colReorder=this;this._fnConstruct();c.oApi._fnCallbackReg(c,"aoDestroyCallback",b.proxy(this._fnDestroy,this),"ColReorder");return this};f.prototype={fnReset:function(){for(var a=[],b=0,c=this.s.dt.aoColumns.length;b<c;b++)a.push(this.s.dt.aoColumns[b]._ColReorder_iOrigCol);this._fnOrderColumns(a);
+return this},fnGetCurrentOrder:function(){return this.fnOrder()},fnOrder:function(a){if(a===r){for(var a=[],b=0,c=this.s.dt.aoColumns.length;b<c;b++)a.push(this.s.dt.aoColumns[b]._ColReorder_iOrigCol);return a}this._fnOrderColumns(o(a));return this},_fnConstruct:function(){var a=this,b=this.s.dt.aoColumns.length,c;this.s.init.iFixedColumns&&(this.s.fixed=this.s.init.iFixedColumns);this.s.fixedRight=this.s.init.iFixedColumnsRight?this.s.init.iFixedColumnsRight:0;this.s.init.fnReorderCallback&&(this.s.dropCallback=
+this.s.init.fnReorderCallback);for(c=0;c<b;c++)c>this.s.fixed-1&&c<b-this.s.fixedRight&&this._fnMouseListener(c,this.s.dt.aoColumns[c].nTh),this.s.dt.aoColumns[c]._ColReorder_iOrigCol=c;this.s.dt.oApi._fnCallbackReg(this.s.dt,"aoStateSaveParams",function(c,b){a._fnStateSave.call(a,b)},"ColReorder_State");var d=null;this.s.init.aiOrder&&(d=this.s.init.aiOrder.slice());this.s.dt.oLoadedState&&("undefined"!=typeof this.s.dt.oLoadedState.ColReorder&&this.s.dt.oLoadedState.ColReorder.length==this.s.dt.aoColumns.length)&&
+(d=this.s.dt.oLoadedState.ColReorder);if(d)if(a.s.dt._bInitComplete)b=o(d),a._fnOrderColumns.call(a,b);else{var f=!1;this.s.dt.aoDrawCallback.push({fn:function(){if(!a.s.dt._bInitComplete&&!f){f=true;var c=o(d);a._fnOrderColumns.call(a,c)}},sName:"ColReorder_Pre"})}else this._fnSetColumnIndexes()},_fnOrderColumns:function(a){if(a.length!=this.s.dt.aoColumns.length)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"ColReorder - array reorder does not match known number of columns. Skipping.");else{for(var e=
+0,c=a.length;e<c;e++){var d=b.inArray(e,a);e!=d&&(l(a,d,e),this.s.dt.oInstance.fnColReorder(d,e))}(""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&&this.s.dt.oInstance.fnAdjustColumnSizing();this.s.dt.oInstance.oApi._fnSaveState(this.s.dt);this._fnSetColumnIndexes()}},_fnStateSave:function(a){var e,c,d,f=this.s.dt.aoColumns;a.ColReorder=[];if(a.aaSorting){for(e=0;e<a.aaSorting.length;e++)a.aaSorting[e][0]=f[a.aaSorting[e][0]]._ColReorder_iOrigCol;var i=b.extend(!0,[],a.aoSearchCols);e=0;for(c=
+f.length;e<c;e++)d=f[e]._ColReorder_iOrigCol,a.aoSearchCols[d]=i[e],a.abVisCols[d]=f[e].bVisible,a.ColReorder.push(d)}else if(a.order){for(e=0;e<a.order.length;e++)a.order[e][0]=f[a.order[e][0]]._ColReorder_iOrigCol;i=b.extend(!0,[],a.columns);e=0;for(c=f.length;e<c;e++)d=f[e]._ColReorder_iOrigCol,a.columns[d]=i[e],a.ColReorder.push(d)}},_fnMouseListener:function(a,e){var c=this;b(e).on("mousedown.ColReorder",function(a){a.preventDefault();c._fnMouseDown.call(c,a,e)})},_fnMouseDown:function(a,e){var c=
+this,d=b(a.target).closest("th, td").offset(),f=parseInt(b(e).attr("data-column-index"),10);f!==r&&(this.s.mouse.startX=a.pageX,this.s.mouse.startY=a.pageY,this.s.mouse.offsetX=a.pageX-d.left,this.s.mouse.offsetY=a.pageY-d.top,this.s.mouse.target=this.s.dt.aoColumns[f].nTh,this.s.mouse.targetIndex=f,this.s.mouse.fromIndex=f,this._fnRegions(),b(q).on("mousemove.ColReorder",function(a){c._fnMouseMove.call(c,a)}).on("mouseup.ColReorder",function(a){c._fnMouseUp.call(c,a)}))},_fnMouseMove:function(a){if(null===
+this.dom.drag){if(5>Math.pow(Math.pow(a.pageX-this.s.mouse.startX,2)+Math.pow(a.pageY-this.s.mouse.startY,2),0.5))return;this._fnCreateDragNode()}this.dom.drag.css({left:a.pageX-this.s.mouse.offsetX,top:a.pageY-this.s.mouse.offsetY});for(var b=!1,c=this.s.mouse.toIndex,d=1,f=this.s.aoTargets.length;d<f;d++)if(a.pageX<this.s.aoTargets[d-1].x+(this.s.aoTargets[d].x-this.s.aoTargets[d-1].x)/2){this.dom.pointer.css("left",this.s.aoTargets[d-1].x);this.s.mouse.toIndex=this.s.aoTargets[d-1].to;b=!0;break}b||
+(this.dom.pointer.css("left",this.s.aoTargets[this.s.aoTargets.length-1].x),this.s.mouse.toIndex=this.s.aoTargets[this.s.aoTargets.length-1].to);this.s.init.bRealtime&&c!==this.s.mouse.toIndex&&(this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex),this.s.mouse.fromIndex=this.s.mouse.toIndex,this._fnRegions())},_fnMouseUp:function(){b(q).off("mousemove.ColReorder mouseup.ColReorder");null!==this.dom.drag&&(this.dom.drag.remove(),this.dom.pointer.remove(),this.dom.drag=null,
+this.dom.pointer=null,this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex),this._fnSetColumnIndexes(),(""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&&this.s.dt.oInstance.fnAdjustColumnSizing(),null!==this.s.dropCallback&&this.s.dropCallback.call(this),this.s.dt.oInstance.oApi._fnSaveState(this.s.dt))},_fnRegions:function(){var a=this.s.dt.aoColumns;this.s.aoTargets.splice(0,this.s.aoTargets.length);this.s.aoTargets.push({x:b(this.s.dt.nTable).offset().left,to:0});
+for(var e=0,c=0,d=a.length;c<d;c++)c!=this.s.mouse.fromIndex&&e++,a[c].bVisible&&this.s.aoTargets.push({x:b(a[c].nTh).offset().left+b(a[c].nTh).outerWidth(),to:e});0!==this.s.fixedRight&&this.s.aoTargets.splice(this.s.aoTargets.length-this.s.fixedRight);0!==this.s.fixed&&this.s.aoTargets.splice(0,this.s.fixed)},_fnCreateDragNode:function(){var a=""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY,e=this.s.dt.aoColumns[this.s.mouse.targetIndex].nTh,c=e.parentNode,d=c.parentNode,f=d.parentNode,i=b(e).clone();
+this.dom.drag=b(f.cloneNode(!1)).addClass("DTCR_clonedTable").append(d.cloneNode(!1).appendChild(c.cloneNode(!1).appendChild(i[0]))).css({position:"absolute",top:0,left:0,width:b(e).outerWidth(),height:b(e).outerHeight()}).appendTo("body");this.dom.pointer=b("<div></div>").addClass("DTCR_pointer").css({position:"absolute",top:a?b("div.dataTables_scroll",this.s.dt.nTableWrapper).offset().top:b(this.s.dt.nTable).offset().top,height:a?b("div.dataTables_scroll",this.s.dt.nTableWrapper).height():b(this.s.dt.nTable).height()}).appendTo("body")},
+_fnDestroy:function(){var a,e;a=0;for(e=this.s.dt.aoDrawCallback.length;a<e;a++)if("ColReorder_Pre"===this.s.dt.aoDrawCallback[a].sName){this.s.dt.aoDrawCallback.splice(a,1);break}b(this.s.dt.nTHead).find("*").off(".ColReorder");b.each(this.s.dt.aoColumns,function(a,e){b(e.nTh).removeAttr("data-column-index")});this.s=this.s.dt._colReorder=null},_fnSetColumnIndexes:function(){b.each(this.s.dt.aoColumns,function(a,e){b(e.nTh).attr("data-column-index",a)})}};f.defaults={aiOrder:null,bRealtime:!1,iFixedColumns:0,
+iFixedColumnsRight:0,fnReorderCallback:null};f.version="1.1.2";b.fn.dataTable.ColReorder=f;b.fn.DataTable.ColReorder=f;"function"==typeof b.fn.dataTable&&"function"==typeof b.fn.dataTableExt.fnVersionCheck&&b.fn.dataTableExt.fnVersionCheck("1.9.3")?b.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInstance;a._colReorder?b.oApi._fnLog(a,1,"ColReorder attempted to initialise twice. Ignoring second"):(b=a.oInit,new f(a,b.colReorder||b.oColReorder||{}));return null},cFeature:"R",sFeature:"ColReorder"}):
+alert("Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download");b.fn.dataTable.Api&&(b.fn.dataTable.Api.register("colReorder.reset()",function(){return this.iterator("table",function(a){a._colReorder.fnReset()})}),b.fn.dataTable.Api.register("colReorder.order()",function(a){return a?this.iterator("table",function(b){b._colReorder.fnOrder(a)}):this.context.length?this.context[0]._colReorder.fnOrder():null}));return f};"function"===typeof define&&define.amd?define(["jquery",
+"datatables"],n):"object"===typeof exports?n(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.ColReorder&&n(jQuery,jQuery.fn.dataTable)})(window,document);
diff --git a/public/admin/js/DataTables/extensions/ColVis/Readme.txt b/public/admin/js/DataTables/extensions/ColVis/Readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..62f432d779227280cd5507cd87095d87dc46c7d6
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/Readme.txt
@@ -0,0 +1,38 @@
+# ColVis
+
+ColVis adds a button to the toolbars around DataTables which gives the end user of the table the ability to dynamically change the visibility of the columns in the table:
+
+* Dynamically show and hide columns in a table
+* Very easy integration with DataTables
+* Ability to exclude columns from being either hidden or shown
+* Save saving integration with DataTables
+
+
+# Installation
+
+To use ColVis, first download DataTables ( http://datatables.net/download ) and place the unzipped ColVis package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
+
+
+# Basic usage
+
+ColVis is initialised using the `C` option that it adds to DataTables' `dom` option. For example:
+
+```js
+$(document).ready( function () {
+    $('#example').dataTable( {
+        "dom": 'C<"clear">lfrtip'
+    } );
+} );
+```
+
+
+# Documentation / support
+
+* Documentation: http://datatables.net/extensions/colvis/
+* DataTables support forums: http://datatables.net/forums
+
+
+# GitHub
+
+If you fancy getting involved with the development of ColVis and help make it better, please refer to its GitHub repo: https://github.com/DataTables/ColVis
+
diff --git a/public/admin/js/DataTables/extensions/ColVis/css/dataTables.colVis.css b/public/admin/js/DataTables/extensions/ColVis/css/dataTables.colVis.css
new file mode 100755
index 0000000000000000000000000000000000000000..51f546de8ed7b72070ccfe08a87aad8f422164f6
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/css/dataTables.colVis.css
@@ -0,0 +1,185 @@
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * ColVis styles
+ */
+div.ColVis {
+	float: right;
+	margin-bottom: 1em;
+}
+
+button.ColVis_Button,
+ul.ColVis_collection li {
+	position: relative;
+	float: left;
+	margin-right: 3px;
+	padding: 5px 8px;
+	border: 1px solid #999;
+	cursor: pointer;
+	*cursor: hand;
+	font-size: 0.88em;
+	color: black !important;
+	white-space: nowrap;
+
+	-webkit-border-radius: 2px;
+	   -moz-border-radius: 2px;
+	    -ms-border-radius: 2px;
+	     -o-border-radius: 2px;
+	        border-radius: 2px;
+
+	-webkit-box-shadow: 1px 1px 3px #ccc;
+	   -moz-box-shadow: 1px 1px 3px #ccc;
+	    -ms-box-shadow: 1px 1px 3px #ccc;
+	     -o-box-shadow: 1px 1px 3px #ccc;
+	        box-shadow: 1px 1px 3px #ccc;
+
+	/* Generated by http://www.colorzilla.com/gradient-editor/ */
+	background: #ffffff; /* Old browsers */
+	background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
+	background:    -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
+	background:     -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
+	background:      -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
+	background:         linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
+}
+
+.ColVis_Button:hover,
+ul.ColVis_collection li:hover {
+	border: 1px solid #666;
+	text-decoration: none !important;
+
+	-webkit-box-shadow: 1px 1px 3px #999;
+	   -moz-box-shadow: 1px 1px 3px #999;
+	    -ms-box-shadow: 1px 1px 3px #999;
+	     -o-box-shadow: 1px 1px 3px #999;
+	        box-shadow: 1px 1px 3px #999;
+
+	background: #f3f3f3; /* Old browsers */
+	background: -webkit-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Chrome10+,Safari5.1+ */
+	background:    -moz-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* FF3.6+ */
+	background:     -ms-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* IE10+ */
+	background:      -o-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Opera 11.10+ */
+	background:         linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 ); /* IE6-9 */
+}
+
+button.ColVis_Button {
+	height: 30px;
+	padding: 3px 8px;
+}
+
+button.ColVis_Button::-moz-focus-inner { 
+	border: none !important;
+	padding: 0;
+}
+
+button.ColVis_Button:active { 
+	outline: none;
+}
+
+
+div.ColVis_collectionBackground {
+	position: fixed;
+	top: 0;
+	left: 0;
+	height: 100%;
+	width: 100%;
+	background-color: black;
+	z-index: 1100;
+}
+
+ul.ColVis_collection {
+	list-style: none;
+	width: 150px;
+	padding: 8px 8px 4px 8px;
+	margin: 0;
+	border: 1px solid #ccc;
+	border: 1px solid rgba( 0, 0, 0, 0.4 );
+	background-color: #f3f3f3;
+	background-color: rgba( 255, 255, 255, 0.3 );
+	overflow: hidden;
+	z-index: 2002;
+
+	-webkit-border-radius: 5px;
+	   -moz-border-radius: 5px;
+	    -ms-border-radius: 5px;
+	     -o-border-radius: 5px;
+	        border-radius: 5px;
+	
+	-webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+	   -moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+	    -ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+	     -o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+	        box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+}
+
+ul.ColVis_collection li {
+	position: relative;
+	height: auto;
+	left: 0;
+	right: 0;
+	padding: 0.5em;
+
+	display: block;
+	float: none;
+	margin-bottom: 4px;
+	
+	-webkit-box-shadow: 1px 1px 3px #999;
+	   -moz-box-shadow: 1px 1px 3px #999;
+	    -ms-box-shadow: 1px 1px 3px #999;
+	     -o-box-shadow: 1px 1px 3px #999;
+	        box-shadow: 1px 1px 3px #999;
+}
+
+ul.ColVis_collection li {
+	text-align: left;
+}
+
+ul.ColVis_collection li.ColVis_Button:hover {
+	border: 1px solid #999;
+	background-color: #f0f0f0;
+}
+
+ul.ColVis_collection li span {
+	display: inline-block;
+	padding-left: 0.5em;
+	cursor: pointer;
+}
+
+
+ul.ColVis_collection li.ColVis_Special {
+	border-color: #555;
+	background: rgb(237,237,237); /* Old browsers */
+	background: -webkit-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* Chrome10+,Safari5.1+ */
+	background:    -moz-linear-gradient(top, rgba(237,237,237,1) 0%, rgba(214,214,214,1) 77%, rgba(232,232,232,1) 100%); /* FF3.6+ */
+	background:     -ms-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* IE10+ */
+	background:      -o-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* Opera 11.10+ */
+	background:         linear-gradient(to bottom, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ededed', endColorstr='#e8e8e8',GradientType=0 ); /* IE6-9 */
+}
+
+ul.ColVis_collection li.ColVis_Special:hover {
+	background: #e2e2e2; /* Old browsers */
+	background: -webkit-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* Chrome10+,Safari5.1+ */
+	background:    -moz-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* FF3.6+ */
+	background:     -ms-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* IE10+ */
+	background:      -o-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* Opera 11.10+ */
+	background:         linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#e2e2e2',GradientType=0 ); /* IE6-9 */
+}
+
+
+span.ColVis_radio {
+	display: inline-block;
+	width: 20px;
+}
+
+div.ColVis_catcher {
+	position: absolute;
+	z-index: 1101;
+}
+
+.disabled {
+	color: #999;
+}
+
+
diff --git a/public/admin/js/DataTables/extensions/ColVis/css/dataTables.colVis.min.css b/public/admin/js/DataTables/extensions/ColVis/css/dataTables.colVis.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..00ab37d788869d432f00da78a99d35596e3738a7
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/css/dataTables.colVis.min.css
@@ -0,0 +1 @@
+div.ColVis{float:right;margin-bottom:1em}button.ColVis_Button,ul.ColVis_collection li{position:relative;float:left;margin-right:3px;padding:5px 8px;border:1px solid #999;cursor:pointer;*cursor:hand;font-size:0.88em;color:black !important;white-space:nowrap;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;-ms-box-shadow:1px 1px 3px #ccc;-o-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-moz-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-ms-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-o-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 )}.ColVis_Button:hover,ul.ColVis_collection li:hover{border:1px solid #666;text-decoration:none !important;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background:#f3f3f3;background:-webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 )}button.ColVis_Button{height:30px;padding:3px 8px}button.ColVis_Button::-moz-focus-inner{border:none !important;padding:0}button.ColVis_Button:active{outline:none}div.ColVis_collectionBackground{position:fixed;top:0;left:0;height:100%;width:100%;background-color:black;z-index:1100}ul.ColVis_collection{list-style:none;width:150px;padding:8px 8px 4px 8px;margin:0;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.4);background-color:#f3f3f3;background-color:rgba(255,255,255,0.3);overflow:hidden;z-index:2002;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-moz-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-ms-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-o-box-shadow:3px 3px 5px rgba(0,0,0,0.3);box-shadow:3px 3px 5px rgba(0,0,0,0.3)}ul.ColVis_collection li{position:relative;height:auto;left:0;right:0;padding:0.5em;display:block;float:none;margin-bottom:4px;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999}ul.ColVis_collection li{text-align:left}ul.ColVis_collection li.ColVis_Button:hover{border:1px solid #999;background-color:#f0f0f0}ul.ColVis_collection li span{display:inline-block;padding-left:0.5em;cursor:pointer}ul.ColVis_collection li.ColVis_Special{border-color:#555;background:#ededed;background:-webkit-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:-moz-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:-ms-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:-o-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:linear-gradient(to bottom, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8',GradientType=0 )}ul.ColVis_collection li.ColVis_Special:hover{background:#e2e2e2;background:-webkit-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:-moz-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:-ms-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:-o-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#e2e2e2',GradientType=0 )}span.ColVis_radio{display:inline-block;width:20px}div.ColVis_catcher{position:absolute;z-index:1101}.disabled{color:#999}
diff --git a/public/admin/js/DataTables/extensions/ColVis/css/dataTables.colvis.jqueryui.css b/public/admin/js/DataTables/extensions/ColVis/css/dataTables.colvis.jqueryui.css
new file mode 100644
index 0000000000000000000000000000000000000000..2d76873265087c7bf13a43586e6672fa92d5935d
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/css/dataTables.colvis.jqueryui.css
@@ -0,0 +1,23 @@
+
+button.ColVis_Button,
+ul.ColVis_collection li {
+	padding: 0.5em;
+}
+
+ul.ColVis_collection {
+	margin: 0;
+	padding: 0;
+}
+
+ul.ColVis_collection li {
+	clear: both;
+	display: block;
+	text-align: left;
+	margin: -1px 0 0 0;
+}
+
+ul.ColVis_collection li span {
+	display: inline-block;
+	padding-left: 0.5em;
+	cursor: pointer;
+}
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/button_order.html b/public/admin/js/DataTables/extensions/ColVis/examples/button_order.html
new file mode 100644
index 0000000000000000000000000000000000000000..313cbf9de9ad4fa68a41a5b41c8b3b5a4a92a9b6
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/button_order.html
@@ -0,0 +1,643 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - Button ordering</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C<"clear">lfrtip',
+		colVis: {
+			order: 'alpha'
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>Button ordering</span></h1>
+
+			<div class="info">
+				<p>The list of columns that ColVis displays has two options for the order in which they are displayed.
+				The default mode of operation is to show the buttons in the same order as they appear in the HTML
+				table, but the second mode of operation is to show the buttons in alphabetical order. This is done by
+				specifying the <code>order</code> option, set to <code>alpha</code>. Alphabetical button ordering is
+				shown in this example.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C&lt;&quot;clear&quot;&gt;lfrtip',
+		colVis: {
+			order: 'alpha'
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li class="active"><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/exclude_columns.html b/public/admin/js/DataTables/extensions/ColVis/examples/exclude_columns.html
new file mode 100644
index 0000000000000000000000000000000000000000..72052364e272f7f67bcc0453120673531f3ad1b3
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/exclude_columns.html
@@ -0,0 +1,646 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - Exclude columns from list</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C<"clear">lfrtip',
+		colVis: {
+			exclude: [ 0 ]
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>Exclude columns from list</span></h1>
+
+			<div class="info">
+				<p>It can at times be useful to exclude columns from being in the 'show / hide' list (for example if
+				you have hidden information that the end user shouldn't be able to make visible. This can be done by
+				the <code>exclude</code> ColVis configuration parameter when creating the DataTable. This is simply an
+				array of integers, indicating which columns should be excluded. This example shows the first column
+				being excluded.</p>
+
+				<p>For full information about the ColVis options, please refer to the <a href=
+				"//datatables.net/extensions/colvis/options">ColVis options documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C&lt;&quot;clear&quot;&gt;lfrtip',
+		colVis: {
+			exclude: [ 0 ]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li class="active"><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/group_columns.html b/public/admin/js/DataTables/extensions/ColVis/examples/group_columns.html
new file mode 100644
index 0000000000000000000000000000000000000000..16fb7b6f9a1d2a9af6ced4e7a6921944e219d32d
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/group_columns.html
@@ -0,0 +1,670 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - Group columns</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C<"clear">lfrtip',
+		colVis: {
+			exclude: [],
+			groups: [
+				{
+					title: "Engine",
+					columns: [ 0, 3 ]
+				},
+				{
+					title: "Client",
+					columns: [ 1, 2 ]
+				}
+			]
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>Group columns</span></h1>
+
+			<div class="info">
+				<p>It can be useful at times to show and hide multiple columns together - i.e. grouping them together.
+				Groupings are defined by the <code>groups</code> array. Create a group button by naming it (using the
+				<code>title</code> option) and specifying by index which columns belong to it (using the
+				<code>columns</code> option).</p>
+
+				<p>Note also that this ability to create groups can be used in combination <code>exclude</code> to
+				remove individual columns from the list (should you wish them to only be used in the groups), or set
+				<code>exclude = [ 'all' ]</code> to show only the grouping buttons (i.e. individual column control
+				buttons will not be shown).</p>
+
+				<p>For full information about the ColVis options, please refer to the <a href=
+				"//datatables.net/extensions/colvis/options">ColVis options documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C&lt;&quot;clear&quot;&gt;lfrtip',
+		colVis: {
+			exclude: [],
+			groups: [
+				{
+					title: &quot;Engine&quot;,
+					columns: [ 0, 3 ]
+				},
+				{
+					title: &quot;Client&quot;,
+					columns: [ 1, 2 ]
+				}
+			]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li class="active"><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/index.html b/public/admin/js/DataTables/extensions/ColVis/examples/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..81298cb801bb966561ed0a8c60c88cee51a2fb0f
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/index.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+
+	<title>ColVis examples - ColVis examples</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>ColVis examples</span></h1>
+
+			<div class="info">
+				<p>ColVis adds a button to the toolbars around DataTables which gives the end user of the table the
+				ability to dynamically change the visibility of the columns in the table:</p>
+
+				<ul class="markdown">
+					<li>Dynamically show and hide columns in a table</li>
+					<li>Very easy integration with DataTables</li>
+					<li>Ability to exclude columns from being either hidden or shown</li>
+					<li>Save saving integration with DataTables</li>
+				</ul>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/jqueryui.html b/public/admin/js/DataTables/extensions/ColVis/examples/jqueryui.html
new file mode 100644
index 0000000000000000000000000000000000000000..c154f40334ae587e9b233da64d31805eea987adf
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/jqueryui.html
@@ -0,0 +1,648 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - jQuery UI styling</title>
+	<link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
+	<link rel="stylesheet" type="text/css" href="../../Plugins/integration/jqueryui/dataTables.jqueryui.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colvis.jqueryui.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src=
+	"../../Plugins/integration/jqueryui/dataTables.jqueryui.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.colVis( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>jQuery UI styling</span></h1>
+
+			<div class="info">
+				<p>This example shows how the jQuery UI ThemeRoller option in DataTables can be used with ColVis.</p>
+
+				<p>The important thing to note here is that it is easier to use <code>new
+				$.fn.dataTable.colVis()</code> to add ColVis to the table rather than <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> as the jQuery UI integration uses a
+				complex expression for <a href="//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.colVis( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href=
+						"../../Plugins/integration/jqueryui/dataTables.jqueryui.js">../../Plugins/integration/jqueryui/dataTables.jqueryui.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css</a></li>
+						<li><a href=
+						"../../Plugins/integration/jqueryui/dataTables.jqueryui.css">../../Plugins/integration/jqueryui/dataTables.jqueryui.css</a></li>
+						<li><a href=
+						"../css/dataTables.colvis.jqueryui.css">../css/dataTables.colvis.jqueryui.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li class="active"><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/mouseover.html b/public/admin/js/DataTables/extensions/ColVis/examples/mouseover.html
new file mode 100644
index 0000000000000000000000000000000000000000..f0721228d8eacb8db93d8837c8625bd13201851a
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/mouseover.html
@@ -0,0 +1,645 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - Mouseover activation</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C<"clear">lfrtip',
+		colVis: {
+			activate: "mouseover"
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>Mouseover activation</span></h1>
+
+			<div class="info">
+				<p>The default activation (showing the columns list) for ColVis is for the user to click the button.
+				This can be altered to a <code>mouseover</code> activation by making use of the <code>activate</code>
+				initialisation option and setting it to <code class="string" title="String">mouseover</code>. This is
+				shown in the example below.</p>
+
+				<p>For full information about the ColVis options, please refer to the <a href=
+				"//datatables.net/extensions/colvis/options">ColVis options documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C&lt;&quot;clear&quot;&gt;lfrtip',
+		colVis: {
+			activate: &quot;mouseover&quot;
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li class="active"><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/new_init.html b/public/admin/js/DataTables/extensions/ColVis/examples/new_init.html
new file mode 100644
index 0000000000000000000000000000000000000000..7f11b52f2175cf60c86fcbab82a83d10728a9854
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/new_init.html
@@ -0,0 +1,643 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - `new` initialisation</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+	var colvis = new $.fn.dataTable.ColVis( table );
+
+	$( colvis.button() ).insertAfter('div.info');
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>`new` initialisation</span></h1>
+
+			<div class="info">
+				<p>As well as providing the option to be initialised through the <code>C</code> option of <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a>, ColVis can also be added to a
+				DataTable using direct initialisation - <code>new $.fn.dataTable.ColVis();</code> as shown in this
+				example. The ColVis control button it available through its <code>button()</code> method, which can
+				then be used to attach to the document where you need.</p>
+
+				<p>For full information about the ColVis API, please refer to the <a href=
+				"//datatables.net/extensions/colvis/api">ColVis API documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+	var colvis = new $.fn.dataTable.ColVis( table );
+
+	$( colvis.button() ).insertAfter('div.info');
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li class="active"><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/restore.html b/public/admin/js/DataTables/extensions/ColVis/examples/restore.html
new file mode 100644
index 0000000000000000000000000000000000000000..663e58d2feb0f491af2006b941883ad14a176bd9
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/restore.html
@@ -0,0 +1,654 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - Restore / show all</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C<"clear">lfrtip',
+		columnDefs: [
+			{ visible: false, targets: 2 }
+		],
+		colVis: {
+			restore: "Restore",
+			showAll: "Show all",
+			showNone: "Show none"
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>Restore / show all</span></h1>
+
+			<div class="info">
+				<p>This demo of ColVis shows its ability to add "Restore", "Show all" and "Show none" buttons to the
+				list of column visibility options. This is done with the <code>restore</code>, <code>showAll</code> and
+				<code>showNone</code> options which can be enabled individually if needed.</p>
+
+				<p>For full information about the ColVis options, please refer to the <a href=
+				"//datatables.net/extensions/colvis/options">ColVis options documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C&lt;&quot;clear&quot;&gt;lfrtip',
+		columnDefs: [
+			{ visible: false, targets: 2 }
+		],
+		colVis: {
+			restore: &quot;Restore&quot;,
+			showAll: &quot;Show all&quot;,
+			showNone: &quot;Show none&quot;
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li class="active"><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/simple.html b/public/admin/js/DataTables/extensions/ColVis/examples/simple.html
new file mode 100644
index 0000000000000000000000000000000000000000..893a6fd4f50cee8f94f33ad67fa74e2a481e04da
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/simple.html
@@ -0,0 +1,640 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - Basic initialisation</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C<"clear">lfrtip'
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>Basic initialisation</span></h1>
+
+			<div class="info">
+				<p>ColVis is a plug-in for DataTables which presents a list of all columns to a user and allows them to
+				select which ones they wish to be visible. Click the 'Show / hide columns' button to be presented with
+				a list of columns in the table, and click the buttons to show and hide them as you wish.</p>
+
+				<p>ColVis is added to a DataTable by specifying the <code>C</code> option for <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a>. The example below shows the ColVis
+				button added to the table with a clearing element after it.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'C&lt;&quot;clear&quot;&gt;lfrtip'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/text.html b/public/admin/js/DataTables/extensions/ColVis/examples/text.html
new file mode 100644
index 0000000000000000000000000000000000000000..a08081b5dfdebd34f3ccc3f7a1b5bb8686eb537e
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/text.html
@@ -0,0 +1,643 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - Custom button text</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		"dom": 'C<"clear">lfrtip',
+		"colVis": {
+			"buttonText": "Change columns"
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>Custom button text</span></h1>
+
+			<div class="info">
+				<p>You may wish to use your own text in the ColVis button - this is done by making use of the
+				<code>buttonText</code> initialisation option, as shown in this example.</p>
+
+				<p>For full information about the ColVis options, please refer to the <a href=
+				"//datatables.net/extensions/colvis/options">ColVis options documentation</a>.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		&quot;dom&quot;: 'C&lt;&quot;clear&quot;&gt;lfrtip',
+		&quot;colVis&quot;: {
+			&quot;buttonText&quot;: &quot;Change columns&quot;
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li class="active"><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/title_callback.html b/public/admin/js/DataTables/extensions/ColVis/examples/title_callback.html
new file mode 100644
index 0000000000000000000000000000000000000000..640124ccc7318d48ae40b4785aac2e8731796c75
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/title_callback.html
@@ -0,0 +1,648 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - Column button callback</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		"dom": 'C<"clear">lfrtip',
+		"colVis": {
+			"label": function ( index, title, th ) {
+				return (index+1) +'. '+ title;
+			}
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>Column button callback</span></h1>
+
+			<div class="info">
+				<p>By default ColVis will use the information in the <code class="tag" title="HTML tag">th</code> cell
+				for each column as the button name to use in ColVis, which might not always be what you want (for
+				example you might has HTML in the cell that you don't want in the button). The <code>label</code>
+				callback provides the ability to customise the label used for the button.</p>
+
+				<p>In this example the column index is prefixed to the column title.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		&quot;dom&quot;: 'C&lt;&quot;clear&quot;&gt;lfrtip',
+		&quot;colVis&quot;: {
+			&quot;label&quot;: function ( index, title, th ) {
+				return (index+1) +'. '+ title;
+			}
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li class="active"><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/two_tables.html b/public/admin/js/DataTables/extensions/ColVis/examples/two_tables.html
new file mode 100644
index 0000000000000000000000000000000000000000..b9dd90500bd7fc1abae5292602b918ee9e629ce4
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/two_tables.html
@@ -0,0 +1,351 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - Two tables with individual controls</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('table.display').DataTable( {
+		dom: 'C<"clear">lfrtip',
+		displayLength: 5
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>Two tables with individual controls</span></h1>
+
+			<div class="info">
+				<p>It can be useful to have DataTables initialise more than one table with a single call can for them
+				to each have individual ColVis controllers. All this requires is a suitable jQuery selector to be used,
+				and DataTables and ColVis will take care of the rest - as shown in this example.</p>
+			</div>
+
+			<table id="" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>$183,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<table id="" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>$103,500</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('table.display').DataTable( {
+		dom: 'C&lt;&quot;clear&quot;&gt;lfrtip',
+		displayLength: 5
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li class="active"><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li><a href="./two_tables_identical.html">Two tables with shared controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/examples/two_tables_identical.html b/public/admin/js/DataTables/extensions/ColVis/examples/two_tables_identical.html
new file mode 100644
index 0000000000000000000000000000000000000000..ac9a01509714330b85b704b304ec948cdc4255f1
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/examples/two_tables_identical.html
@@ -0,0 +1,378 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>ColVis example - Two tables with shared controls</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var tables = $('table.display').DataTable( {
+		displayLength: 5
+	} );
+
+	// When the column visibility changes on the firs table, also change it on
+	// the others
+	tables.table(0).on('column-visibility', function ( e, settings, colIdx, visibility ) {
+		tables.tables(':gt(0)').column( colIdx ).visible( visibility );
+	} );
+
+	// Create ColVis on the first table only
+	var colvis = new $.fn.dataTable.ColVis( tables.table(0) );
+	$( colvis.button() ).insertAfter('div.info');
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>ColVis example <span>Two tables with shared controls</span></h1>
+
+			<div class="info">
+				<p>This example shows how the DataTables API can be used with ColVis to use a single ColVis control to
+				effect other tables. This is done by applying ColVis to the first table and then listening for the
+				<a href="//datatables.net/reference/event/column-visibility"><code class="event" title=
+				"DataTables event">column-visibility<span>DT</span></code></a> event and updating all other tables when
+				triggered.</p>
+
+				<p>This example makes use of the <a href="//datatables.net/reference/api/tables()"><code class="api"
+				title="DataTables API method">tables()<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/api/table()"><code class="api" title=
+				"DataTables API method">table()<span>DT</span></code></a> methods for working with multiple tables, and
+				also initialised ColVis using the <code>new $.fn.dataTable.ColVis();</code> operator.</p>
+			</div>
+
+			<table id="" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>$183,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<table id="" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>$103,500</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var tables = $('table.display').DataTable( {
+		displayLength: 5
+	} );
+
+	// When the column visibility changes on the firs table, also change it on
+	// the others
+	tables.table(0).on('column-visibility', function ( e, settings, colIdx, visibility ) {
+		tables.tables(':gt(0)').column( colIdx ).visible( visibility );
+	} );
+
+	// Create ColVis on the first table only
+	var colvis = new $.fn.dataTable.ColVis( tables.table(0) );
+	$( colvis.button() ).insertAfter('div.info');
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.colVis.js">../js/dataTables.colVis.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.colVis.css">../css/dataTables.colVis.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./new_init.html">`new` initialisation</a></li>
+							<li><a href="./text.html">Custom button text</a></li>
+							<li><a href="./exclude_columns.html">Exclude columns from list</a></li>
+							<li><a href="./title_callback.html">Column button callback</a></li>
+							<li><a href="./button_order.html">Button ordering</a></li>
+							<li><a href="./mouseover.html">Mouseover activation</a></li>
+							<li><a href="./group_columns.html">Group columns</a></li>
+							<li><a href="./two_tables.html">Two tables with individual controls</a></li>
+							<li class="active"><a href="./two_tables_identical.html">Two tables with shared
+							controls</a></li>
+							<li><a href="./restore.html">Restore / show all</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/ColVis/js/dataTables.colVis.js b/public/admin/js/DataTables/extensions/ColVis/js/dataTables.colVis.js
new file mode 100755
index 0000000000000000000000000000000000000000..331de3ffa039a1039e6cc9ff53001c7797a0ebf7
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/js/dataTables.colVis.js
@@ -0,0 +1,1107 @@
+/*! ColVis 1.1.1
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     ColVis
+ * @description Controls for column visibility in DataTables
+ * @version     1.1.1
+ * @file        dataTables.colReorder.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function(window, document, undefined) {
+
+
+var factory = function( $, DataTable ) {
+"use strict";
+
+/**
+ * ColVis provides column visibility control for DataTables
+ *
+ * @class ColVis
+ * @constructor
+ * @param {object} DataTables settings object. With DataTables 1.10 this can
+ *   also be and API instance, table node, jQuery collection or jQuery selector.
+ * @param {object} ColVis configuration options
+ */
+var ColVis = function( oDTSettings, oInit )
+{
+	/* Santiy check that we are a new instance */
+	if ( !this.CLASS || this.CLASS != "ColVis" )
+	{
+		alert( "Warning: ColVis must be initialised with the keyword 'new'" );
+	}
+
+	if ( typeof oInit == 'undefined' )
+	{
+		oInit = {};
+	}
+
+	if ( $.fn.dataTable.camelToHungarian ) {
+		$.fn.dataTable.camelToHungarian( ColVis.defaults, oInit );
+	}
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public class variables
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * @namespace Settings object which contains customisable information for
+	 *     ColVis instance. Augmented by ColVis.defaults
+	 */
+	this.s = {
+		/**
+		 * DataTables settings object
+		 *  @property dt
+		 *  @type     Object
+		 *  @default  null
+		 */
+		"dt": null,
+
+		/**
+		 * Customisation object
+		 *  @property oInit
+		 *  @type     Object
+		 *  @default  passed in
+		 */
+		"oInit": oInit,
+
+		/**
+		 * Flag to say if the collection is hidden
+		 *  @property hidden
+		 *  @type     boolean
+		 *  @default  true
+		 */
+		"hidden": true,
+
+		/**
+		 * Store the original visibility settings so they could be restored
+		 *  @property abOriginal
+		 *  @type     Array
+		 *  @default  []
+		 */
+		"abOriginal": []
+	};
+
+
+	/**
+	 * @namespace Common and useful DOM elements for the class instance
+	 */
+	this.dom = {
+		/**
+		 * Wrapper for the button - given back to DataTables as the node to insert
+		 *  @property wrapper
+		 *  @type     Node
+		 *  @default  null
+		 */
+		"wrapper": null,
+
+		/**
+		 * Activation button
+		 *  @property button
+		 *  @type     Node
+		 *  @default  null
+		 */
+		"button": null,
+
+		/**
+		 * Collection list node
+		 *  @property collection
+		 *  @type     Node
+		 *  @default  null
+		 */
+		"collection": null,
+
+		/**
+		 * Background node used for shading the display and event capturing
+		 *  @property background
+		 *  @type     Node
+		 *  @default  null
+		 */
+		"background": null,
+
+		/**
+		 * Element to position over the activation button to catch mouse events when using mouseover
+		 *  @property catcher
+		 *  @type     Node
+		 *  @default  null
+		 */
+		"catcher": null,
+
+		/**
+		 * List of button elements
+		 *  @property buttons
+		 *  @type     Array
+		 *  @default  []
+		 */
+		"buttons": [],
+
+		/**
+		 * List of group button elements
+		 *  @property groupButtons
+		 *  @type     Array
+		 *  @default  []
+		 */
+		"groupButtons": [],
+
+		/**
+		 * Restore button
+		 *  @property restore
+		 *  @type     Node
+		 *  @default  null
+		 */
+		"restore": null
+	};
+
+	/* Store global reference */
+	ColVis.aInstances.push( this );
+
+	/* Constructor logic */
+	this.s.dt = $.fn.dataTable.Api ?
+		new $.fn.dataTable.Api( oDTSettings ).settings()[0] :
+		oDTSettings;
+
+	this._fnConstruct( oInit );
+	return this;
+};
+
+
+
+ColVis.prototype = {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Get the ColVis instance's control button so it can be injected into the
+	 * DOM
+	 *  @method  button
+	 *  @returns {node} ColVis button
+	 */
+	button: function ()
+	{
+		return this.dom.wrapper;
+	},
+
+	/**
+	 * Alias of `rebuild` for backwards compatibility
+	 *  @method  fnRebuild
+	 */
+	"fnRebuild": function ()
+	{
+		this.rebuild();
+	},
+
+	/**
+	 * Rebuild the list of buttons for this instance (i.e. if there is a column
+	 * header update)
+	 *  @method  fnRebuild
+	 */
+	rebuild: function ()
+	{
+		/* Remove the old buttons */
+		for ( var i=this.dom.buttons.length-1 ; i>=0 ; i-- ) {
+			this.dom.collection.removeChild( this.dom.buttons[i] );
+		}
+		this.dom.buttons.splice( 0, this.dom.buttons.length );
+
+		if ( this.dom.restore ) {
+			this.dom.restore.parentNode( this.dom.restore );
+		}
+
+		/* Re-add them (this is not the optimal way of doing this, it is fast and effective) */
+		this._fnAddGroups();
+		this._fnAddButtons();
+
+		/* Update the checkboxes */
+		this._fnDrawCallback();
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods (they are of course public in JS, but recommended as private)
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Constructor logic
+	 *  @method  _fnConstruct
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnConstruct": function ( init )
+	{
+		this._fnApplyCustomisation( init );
+
+		var that = this;
+		var i, iLen;
+		this.dom.wrapper = document.createElement('div');
+		this.dom.wrapper.className = "ColVis";
+
+		this.dom.button = $( '<button />', {
+				'class': !this.s.dt.bJUI ?
+					"ColVis_Button ColVis_MasterButton" :
+					"ColVis_Button ColVis_MasterButton ui-button ui-state-default"
+			} )
+			.append( '<span>'+this.s.buttonText+'</span>' )
+			.bind( this.s.activate=="mouseover" ? "mouseover" : "click", function (e) {
+				e.preventDefault();
+				that._fnCollectionShow();
+			} )
+			.appendTo( this.dom.wrapper )[0];
+
+		this.dom.catcher = this._fnDomCatcher();
+		this.dom.collection = this._fnDomCollection();
+		this.dom.background = this._fnDomBackground();
+
+		this._fnAddGroups();
+		this._fnAddButtons();
+
+		/* Store the original visibility information */
+		for ( i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
+		{
+			this.s.abOriginal.push( this.s.dt.aoColumns[i].bVisible );
+		}
+
+		/* Update on each draw */
+		this.s.dt.aoDrawCallback.push( {
+			"fn": function () {
+				that._fnDrawCallback.call( that );
+			},
+			"sName": "ColVis"
+		} );
+
+		/* If columns are reordered, then we need to update our exclude list and
+		 * rebuild the displayed list
+		 */
+		$(this.s.dt.oInstance).bind( 'column-reorder', function ( e, oSettings, oReorder ) {
+			for ( i=0, iLen=that.s.aiExclude.length ; i<iLen ; i++ ) {
+				that.s.aiExclude[i] = oReorder.aiInvertMapping[ that.s.aiExclude[i] ];
+			}
+
+			var mStore = that.s.abOriginal.splice( oReorder.iFrom, 1 )[0];
+			that.s.abOriginal.splice( oReorder.iTo, 0, mStore );
+
+			that.fnRebuild();
+		} );
+
+		// Set the initial state
+		this._fnDrawCallback();
+	},
+
+
+	/**
+	 * Apply any customisation to the settings from the DataTables initialisation
+	 *  @method  _fnApplyCustomisation
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnApplyCustomisation": function ( init )
+	{
+		$.extend( true, this.s, ColVis.defaults, init );
+
+		// Slightly messy overlap for the camelCase notation
+		if ( ! this.s.showAll && this.s.bShowAll ) {
+			this.s.showAll = this.s.sShowAll;
+		}
+
+		if ( ! this.s.restore && this.s.bRestore ) {
+			this.s.restore = this.s.sRestore;
+		}
+
+		// CamelCase to Hungarian for the column groups 
+		var groups = this.s.groups;
+		var hungarianGroups = this.s.aoGroups;
+		if ( groups ) {
+			for ( var i=0, ien=groups.length ; i<ien ; i++ ) {
+				if ( groups[i].title ) {
+					hungarianGroups[i].sTitle = groups[i].title;
+				}
+				if ( groups[i].columns ) {
+					hungarianGroups[i].aiColumns = groups[i].columns;
+				}
+			}
+		}
+	},
+
+
+	/**
+	 * On each table draw, check the visibility checkboxes as needed. This allows any process to
+	 * update the table's column visibility and ColVis will still be accurate.
+	 *  @method  _fnDrawCallback
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnDrawCallback": function ()
+	{
+		var columns = this.s.dt.aoColumns;
+		var buttons = this.dom.buttons;
+		var groups = this.s.aoGroups;
+		var button;
+
+		for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+			button = buttons[i];
+
+			if ( button.__columnIdx !== undefined ) {
+				$('input', button).prop( 'checked', columns[ button.__columnIdx ].bVisible );
+			}
+		}
+
+		var allVisible = function ( columnIndeces ) {
+			for ( var k=0, kLen=columnIndeces.length ; k<kLen ; k++ )
+			{
+				if (  columns[columnIndeces[k]].bVisible === false ) { return false; }
+			}
+			return true;
+		};
+		var allHidden = function ( columnIndeces ) {
+			for ( var m=0 , mLen=columnIndeces.length ; m<mLen ; m++ )
+			{
+				if ( columns[columnIndeces[m]].bVisible === true ) { return false; }
+			}
+			return true;
+		};
+
+		for ( var j=0, jLen=groups.length ; j<jLen ; j++ )
+		{
+			if ( allVisible(groups[j].aiColumns) )
+			{
+				$('input', this.dom.groupButtons[j]).prop('checked', true);
+				$('input', this.dom.groupButtons[j]).prop('indeterminate', false);
+			}
+			else if ( allHidden(groups[j].aiColumns) )
+			{
+				$('input', this.dom.groupButtons[j]).prop('checked', false);
+				$('input', this.dom.groupButtons[j]).prop('indeterminate', false);
+			}
+			else
+			{
+				$('input', this.dom.groupButtons[j]).prop('indeterminate', true);
+			}
+		}
+	},
+
+
+	/**
+	 * Loop through the groups (provided in the settings) and create a button for each.
+	 *  @method  _fnAddgroups
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnAddGroups": function ()
+	{
+		var nButton;
+
+		if ( typeof this.s.aoGroups != 'undefined' )
+		{
+			for ( var i=0, iLen=this.s.aoGroups.length ; i<iLen ; i++ )
+			{
+				nButton = this._fnDomGroupButton( i );
+				this.dom.groupButtons.push( nButton );
+				this.dom.buttons.push( nButton );
+				this.dom.collection.appendChild( nButton );
+			}
+		}
+	},
+
+
+	/**
+	 * Loop through the columns in the table and as a new button for each one.
+	 *  @method  _fnAddButtons
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnAddButtons": function ()
+	{
+		var
+			nButton,
+			columns = this.s.dt.aoColumns;
+
+		if ( $.inArray( 'all', this.s.aiExclude ) === -1 ) {
+			for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
+			{
+				if ( $.inArray( i, this.s.aiExclude ) === -1 )
+				{
+					nButton = this._fnDomColumnButton( i );
+					nButton.__columnIdx = i;
+					this.dom.buttons.push( nButton );
+				}
+			}
+		}
+
+		if ( this.s.order === 'alpha' ) {
+			this.dom.buttons.sort( function ( a, b ) {
+				var titleA = columns[ a.__columnIdx ].sTitle;
+				var titleB = columns[ b.__columnIdx ].sTitle;
+
+				return titleA === titleB ?
+					0 :
+					titleA < titleB ?
+						-1 :
+						1;
+			} );
+		}
+
+		if ( this.s.restore )
+		{
+			nButton = this._fnDomRestoreButton();
+			nButton.className += " ColVis_Restore";
+			this.dom.buttons.push( nButton );
+		}
+
+		if ( this.s.showAll )
+		{
+			nButton = this._fnDomShowXButton( this.s.showAll, true );
+			nButton.className += " ColVis_ShowAll";
+			this.dom.buttons.push( nButton );
+		}
+
+		if ( this.s.showNone )
+		{
+			nButton = this._fnDomShowXButton( this.s.showNone, false );
+			nButton.className += " ColVis_ShowNone";
+			this.dom.buttons.push( nButton );
+		}
+
+		$(this.dom.collection).append( this.dom.buttons );
+	},
+
+
+	/**
+	 * Create a button which allows a "restore" action
+	 *  @method  _fnDomRestoreButton
+	 *  @returns {Node} Created button
+	 *  @private
+	 */
+	"_fnDomRestoreButton": function ()
+	{
+		var
+			that = this,
+			dt = this.s.dt;
+
+		return $(
+				'<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+
+					this.s.restore+
+				'</li>'
+			)
+			.click( function (e) {
+				for ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ )
+				{
+					that.s.dt.oInstance.fnSetColumnVis( i, that.s.abOriginal[i], false );
+				}
+				that._fnAdjustOpenRows();
+				that.s.dt.oInstance.fnAdjustColumnSizing( false );
+				that.s.dt.oInstance.fnDraw( false );
+			} )[0];
+	},
+
+
+	/**
+	 * Create a button which allows show all and show node actions
+	 *  @method  _fnDomShowXButton
+	 *  @returns {Node} Created button
+	 *  @private
+	 */
+	"_fnDomShowXButton": function ( str, action )
+	{
+		var
+			that = this,
+			dt = this.s.dt;
+
+		return $(
+				'<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+
+					str+
+				'</li>'
+			)
+			.click( function (e) {
+				for ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ )
+				{
+					if (that.s.aiExclude.indexOf(i) === -1)
+					{
+						that.s.dt.oInstance.fnSetColumnVis( i, action, false );
+					}
+				}
+				that._fnAdjustOpenRows();
+				that.s.dt.oInstance.fnAdjustColumnSizing( false );
+				that.s.dt.oInstance.fnDraw( false );
+			} )[0];
+	},
+
+
+	/**
+	 * Create the DOM for a show / hide group button
+	 *  @method  _fnDomGroupButton
+	 *  @param {int} i Group in question, order based on that provided in settings
+	 *  @returns {Node} Created button
+	 *  @private
+	 */
+	"_fnDomGroupButton": function ( i )
+	{
+		var
+			that = this,
+			dt = this.s.dt,
+			oGroup = this.s.aoGroups[i];
+
+		return $(
+				'<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+
+					'<label>'+
+						'<input type="checkbox" />'+
+						'<span>'+oGroup.sTitle+'</span>'+
+					'</label>'+
+				'</li>'
+			)
+			.click( function (e) {
+				var showHide = !$('input', this).is(":checked");
+				if (  e.target.nodeName.toLowerCase() !== "li" )
+				{
+					showHide = ! showHide;
+				}
+
+				for ( var j=0 ; j < oGroup.aiColumns.length ; j++ )
+				{
+					that.s.dt.oInstance.fnSetColumnVis( oGroup.aiColumns[j], showHide );
+				}
+			} )[0];
+	},
+
+
+	/**
+	 * Create the DOM for a show / hide button
+	 *  @method  _fnDomColumnButton
+	 *  @param {int} i Column in question
+	 *  @returns {Node} Created button
+	 *  @private
+	 */
+	"_fnDomColumnButton": function ( i )
+	{
+		var
+			that = this,
+			column = this.s.dt.aoColumns[i],
+			dt = this.s.dt;
+
+		var title = this.s.fnLabel===null ?
+			column.sTitle :
+			this.s.fnLabel( i, column.sTitle, column.nTh );
+
+		return $(
+				'<li '+(dt.bJUI ? 'class="ui-button ui-state-default"' : '')+'>'+
+					'<label>'+
+						'<input type="checkbox" />'+
+						'<span>'+title+'</span>'+
+					'</label>'+
+				'</li>'
+			)
+			.click( function (e) {
+				var showHide = !$('input', this).is(":checked");
+				if (  e.target.nodeName.toLowerCase() !== "li" )
+				{
+					showHide = ! showHide;
+				}
+
+				/* Need to consider the case where the initialiser created more than one table - change the
+				 * API index that DataTables is using
+				 */
+				var oldIndex = $.fn.dataTableExt.iApiIndex;
+				$.fn.dataTableExt.iApiIndex = that._fnDataTablesApiIndex.call(that);
+
+				// Optimisation for server-side processing when scrolling - don't do a full redraw
+				if ( dt.oFeatures.bServerSide )
+				{
+					that.s.dt.oInstance.fnSetColumnVis( i, showHide, false );
+					that.s.dt.oInstance.fnAdjustColumnSizing( false );
+					if (dt.oScroll.sX !== "" || dt.oScroll.sY !== "" )
+					{
+						that.s.dt.oInstance.oApi._fnScrollDraw( that.s.dt );
+					}
+					that._fnDrawCallback();
+				}
+				else
+				{
+					that.s.dt.oInstance.fnSetColumnVis( i, showHide );
+				}
+
+				$.fn.dataTableExt.iApiIndex = oldIndex; /* Restore */
+
+				if ( e.target.nodeName.toLowerCase() === 'input' && that.s.fnStateChange !== null )
+				{
+					that.s.fnStateChange.call( that, i, showHide );
+				}
+			} )[0];
+	},
+
+
+	/**
+	 * Get the position in the DataTables instance array of the table for this
+	 * instance of ColVis
+	 *  @method  _fnDataTablesApiIndex
+	 *  @returns {int} Index
+	 *  @private
+	 */
+	"_fnDataTablesApiIndex": function ()
+	{
+		for ( var i=0, iLen=this.s.dt.oInstance.length ; i<iLen ; i++ )
+		{
+			if ( this.s.dt.oInstance[i] == this.s.dt.nTable )
+			{
+				return i;
+			}
+		}
+		return 0;
+	},
+
+
+	/**
+	 * Create the element used to contain list the columns (it is shown and
+	 * hidden as needed)
+	 *  @method  _fnDomCollection
+	 *  @returns {Node} div container for the collection
+	 *  @private
+	 */
+	"_fnDomCollection": function ()
+	{
+		return $('<ul />', {
+				'class': !this.s.dt.bJUI ?
+					"ColVis_collection" :
+					"ColVis_collection ui-buttonset ui-buttonset-multi"
+			} )
+		.css( {
+			'display': 'none',
+			'opacity': 0,
+			'position': ! this.s.bCssPosition ?
+				'absolute' :
+				''
+		} )[0];
+	},
+
+
+	/**
+	 * An element to be placed on top of the activate button to catch events
+	 *  @method  _fnDomCatcher
+	 *  @returns {Node} div container for the collection
+	 *  @private
+	 */
+	"_fnDomCatcher": function ()
+	{
+		var
+			that = this,
+			nCatcher = document.createElement('div');
+		nCatcher.className = "ColVis_catcher";
+
+		$(nCatcher).click( function () {
+			that._fnCollectionHide.call( that, null, null );
+		} );
+
+		return nCatcher;
+	},
+
+
+	/**
+	 * Create the element used to shade the background, and capture hide events (it is shown and
+	 * hidden as needed)
+	 *  @method  _fnDomBackground
+	 *  @returns {Node} div container for the background
+	 *  @private
+	 */
+	"_fnDomBackground": function ()
+	{
+		var that = this;
+
+		var background = $('<div></div>')
+			.addClass( 'ColVis_collectionBackground' )
+			.css( 'opacity', 0 )
+			.click( function () {
+				that._fnCollectionHide.call( that, null, null );
+			} );
+
+		/* When considering a mouse over action for the activation, we also consider a mouse out
+		 * which is the same as a mouse over the background - without all the messing around of
+		 * bubbling events. Use the catcher element to avoid messing around with bubbling
+		 */
+		if ( this.s.activate == "mouseover" )
+		{
+			background.mouseover( function () {
+				that.s.overcollection = false;
+				that._fnCollectionHide.call( that, null, null );
+			} );
+		}
+
+		return background[0];
+	},
+
+
+	/**
+	 * Show the show / hide list and the background
+	 *  @method  _fnCollectionShow
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnCollectionShow": function ()
+	{
+		var that = this, i, iLen, iLeft;
+		var oPos = $(this.dom.button).offset();
+		var nHidden = this.dom.collection;
+		var nBackground = this.dom.background;
+		var iDivX = parseInt(oPos.left, 10);
+		var iDivY = parseInt(oPos.top + $(this.dom.button).outerHeight(), 10);
+
+		if ( ! this.s.bCssPosition )
+		{
+			nHidden.style.top = iDivY+"px";
+			nHidden.style.left = iDivX+"px";
+		}
+
+		$(nHidden).css( {
+			'display': 'block',
+			'opacity': 0
+		} );
+
+		nBackground.style.bottom ='0px';
+		nBackground.style.right = '0px';
+
+		var oStyle = this.dom.catcher.style;
+		oStyle.height = $(this.dom.button).outerHeight()+"px";
+		oStyle.width = $(this.dom.button).outerWidth()+"px";
+		oStyle.top = oPos.top+"px";
+		oStyle.left = iDivX+"px";
+
+		document.body.appendChild( nBackground );
+		document.body.appendChild( nHidden );
+		document.body.appendChild( this.dom.catcher );
+
+		/* This results in a very small delay for the end user but it allows the animation to be
+		 * much smoother. If you don't want the animation, then the setTimeout can be removed
+		 */
+		$(nHidden).animate({"opacity": 1}, that.s.iOverlayFade);
+		$(nBackground).animate({"opacity": 0.1}, that.s.iOverlayFade, 'linear', function () {
+			/* In IE6 if you set the checked attribute of a hidden checkbox, then this is not visually
+			 * reflected. As such, we need to do it here, once it is visible. Unbelievable.
+			 */
+			if ( $.browser && $.browser.msie && $.browser.version == "6.0" )
+			{
+				that._fnDrawCallback();
+			}
+		});
+
+		/* Visual corrections to try and keep the collection visible */
+		if ( !this.s.bCssPosition )
+		{
+			iLeft = ( this.s.sAlign=="left" ) ?
+				iDivX :
+				iDivX - $(nHidden).outerWidth() + $(this.dom.button).outerWidth();
+
+			nHidden.style.left = iLeft+"px";
+
+			var iDivWidth = $(nHidden).outerWidth();
+			var iDivHeight = $(nHidden).outerHeight();
+			var iDocWidth = $(document).width();
+
+			if ( iLeft + iDivWidth > iDocWidth )
+			{
+				nHidden.style.left = (iDocWidth-iDivWidth)+"px";
+			}
+		}
+
+		this.s.hidden = false;
+	},
+
+
+	/**
+	 * Hide the show / hide list and the background
+	 *  @method  _fnCollectionHide
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnCollectionHide": function (  )
+	{
+		var that = this;
+
+		if ( !this.s.hidden && this.dom.collection !== null )
+		{
+			this.s.hidden = true;
+
+			$(this.dom.collection).animate({"opacity": 0}, that.s.iOverlayFade, function (e) {
+				this.style.display = "none";
+			} );
+
+			$(this.dom.background).animate({"opacity": 0}, that.s.iOverlayFade, function (e) {
+				document.body.removeChild( that.dom.background );
+				document.body.removeChild( that.dom.catcher );
+			} );
+		}
+	},
+
+
+	/**
+	 * Alter the colspan on any fnOpen rows
+	 */
+	"_fnAdjustOpenRows": function ()
+	{
+		var aoOpen = this.s.dt.aoOpenRows;
+		var iVisible = this.s.dt.oApi._fnVisbleColumns( this.s.dt );
+
+		for ( var i=0, iLen=aoOpen.length ; i<iLen ; i++ ) {
+			aoOpen[i].nTr.getElementsByTagName('td')[0].colSpan = iVisible;
+		}
+	}
+};
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Static object methods
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * Rebuild the collection for a given table, or all tables if no parameter given
+ *  @method  ColVis.fnRebuild
+ *  @static
+ *  @param   object oTable DataTable instance to consider - optional
+ *  @returns void
+ */
+ColVis.fnRebuild = function ( oTable )
+{
+	var nTable = null;
+	if ( typeof oTable != 'undefined' )
+	{
+		nTable = oTable.fnSettings().nTable;
+	}
+
+	for ( var i=0, iLen=ColVis.aInstances.length ; i<iLen ; i++ )
+	{
+		if ( typeof oTable == 'undefined' || nTable == ColVis.aInstances[i].s.dt.nTable )
+		{
+			ColVis.aInstances[i].fnRebuild();
+		}
+	}
+};
+
+
+ColVis.defaults = {
+	/**
+	 * Mode of activation. Can be 'click' or 'mouseover'
+	 *  @property activate
+	 *  @type     string
+	 *  @default  click
+	 */
+	active: 'click',
+
+	/**
+	 * Text used for the button
+	 *  @property buttonText
+	 *  @type     string
+	 *  @default  Show / hide columns
+	 */
+	buttonText: 'Show / hide columns',
+
+	/**
+	 * List of columns (integers) which should be excluded from the list
+	 *  @property aiExclude
+	 *  @type     array
+	 *  @default  []
+	 */
+	aiExclude: [],
+
+	/**
+	 * Show restore button
+	 *  @property bRestore
+	 *  @type     boolean
+	 *  @default  false
+	 */
+	bRestore: false,
+
+	/**
+	 * Restore button text
+	 *  @property sRestore
+	 *  @type     string
+	 *  @default  Restore original
+	 */
+	sRestore: 'Restore original',
+
+	/**
+	 * Show Show-All button
+	 *  @property bShowAll
+	 *  @type     boolean
+	 *  @default  false
+	 */
+	bShowAll: false,
+
+	/**
+	 * Show All button text
+	 *  @property sShowAll
+	 *  @type     string
+	 *  @default  Restore original
+	 */
+	sShowAll: 'Show All',
+
+	/**
+	 * Position of the collection menu when shown - align "left" or "right"
+	 *  @property sAlign
+	 *  @type     string
+	 *  @default  left
+	 */
+	sAlign: 'left',
+
+	/**
+	 * Callback function to tell the user when the state has changed
+	 *  @property fnStateChange
+	 *  @type     function
+	 *  @default  null
+	 */
+	fnStateChange: null,
+
+	/**
+	 * Overlay animation duration in mS
+	 *  @property iOverlayFade
+	 *  @type     integer|false
+	 *  @default  500
+	 */
+	iOverlayFade: 500,
+
+	/**
+	 * Label callback for column names. Takes three parameters: 1. the
+	 * column index, 2. the column title detected by DataTables and 3. the
+	 * TH node for the column
+	 *  @property fnLabel
+	 *  @type     function
+	 *  @default  null
+	 */
+	fnLabel: null,
+
+	/**
+	 * Indicate if the column list should be positioned by Javascript,
+	 * visually below the button or allow CSS to do the positioning
+	 *  @property bCssPosition
+	 *  @type     boolean
+	 *  @default  false
+	 */
+	bCssPosition: false,
+
+	/**
+	 * Group buttons
+	 *  @property aoGroups
+	 *  @type     array
+	 *  @default  []
+	 */
+	aoGroups: [],
+
+	/**
+	 * Button ordering - 'alpha' (alphabetical) or 'column' (table column
+	 * order)
+	 *  @property order
+	 *  @type     string
+	 *  @default  column
+	 */
+	order: 'column'
+};
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Static object properties
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * Collection of all ColVis instances
+ *  @property ColVis.aInstances
+ *  @static
+ *  @type     Array
+ *  @default  []
+ */
+ColVis.aInstances = [];
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * Name of this class
+ *  @constant CLASS
+ *  @type     String
+ *  @default  ColVis
+ */
+ColVis.prototype.CLASS = "ColVis";
+
+
+/**
+ * ColVis version
+ *  @constant  VERSION
+ *  @type      String
+ *  @default   See code
+ */
+ColVis.VERSION = "1.1.1";
+ColVis.prototype.VERSION = ColVis.VERSION;
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Initialisation
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * Register a new feature with DataTables
+ */
+if ( typeof $.fn.dataTable == "function" &&
+     typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+     $.fn.dataTableExt.fnVersionCheck('1.7.0') )
+{
+	$.fn.dataTableExt.aoFeatures.push( {
+		"fnInit": function( oDTSettings ) {
+			var init = oDTSettings.oInit;
+			var colvis = new ColVis( oDTSettings, init.colVis || init.oColVis || {} );
+			return colvis.button();
+		},
+		"cFeature": "C",
+		"sFeature": "ColVis"
+	} );
+}
+else
+{
+	alert( "Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download");
+}
+
+
+// Make ColVis accessible from the DataTables instance
+$.fn.dataTable.ColVis = ColVis;
+$.fn.DataTable.ColVis = ColVis;
+
+
+return ColVis;
+}; // /factory
+
+
+// Define as an AMD module if possible
+if ( typeof define === 'function' && define.amd ) {
+	define( ['jquery', 'datatables'], factory );
+}
+else if ( typeof exports === 'object' ) {
+    // Node/CommonJS
+    factory( require('jquery'), require('datatables') );
+}
+else if ( jQuery && !jQuery.fn.dataTable.ColVis ) {
+	// Otherwise simply initialise as normal, stopping multiple evaluation
+	factory( jQuery, jQuery.fn.dataTable );
+}
+
+
+})(window, document);
+
diff --git a/public/admin/js/DataTables/extensions/ColVis/js/dataTables.colVis.min.js b/public/admin/js/DataTables/extensions/ColVis/js/dataTables.colVis.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..bda64c580dce1cc1fa09d18d417ede86a03585a8
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/ColVis/js/dataTables.colVis.min.js
@@ -0,0 +1,23 @@
+/*!
+ ColVis 1.1.1
+ ©2010-2014 SpryMedia Ltd - datatables.net/license
+*/
+(function(j,i,k){j=function(d){var e=function(a,b){(!this.CLASS||"ColVis"!=this.CLASS)&&alert("Warning: ColVis must be initialised with the keyword 'new'");"undefined"==typeof b&&(b={});d.fn.dataTable.camelToHungarian&&d.fn.dataTable.camelToHungarian(e.defaults,b);this.s={dt:null,oInit:b,hidden:!0,abOriginal:[]};this.dom={wrapper:null,button:null,collection:null,background:null,catcher:null,buttons:[],groupButtons:[],restore:null};e.aInstances.push(this);this.s.dt=d.fn.dataTable.Api?(new d.fn.dataTable.Api(a)).settings()[0]:
+a;this._fnConstruct(b);return this};e.prototype={button:function(){return this.dom.wrapper},fnRebuild:function(){this.rebuild()},rebuild:function(){for(var a=this.dom.buttons.length-1;0<=a;a--)this.dom.collection.removeChild(this.dom.buttons[a]);this.dom.buttons.splice(0,this.dom.buttons.length);this.dom.restore&&this.dom.restore.parentNode(this.dom.restore);this._fnAddGroups();this._fnAddButtons();this._fnDrawCallback()},_fnConstruct:function(a){this._fnApplyCustomisation(a);var b=this,c,f;this.dom.wrapper=
+i.createElement("div");this.dom.wrapper.className="ColVis";this.dom.button=d("<button />",{"class":!this.s.dt.bJUI?"ColVis_Button ColVis_MasterButton":"ColVis_Button ColVis_MasterButton ui-button ui-state-default"}).append("<span>"+this.s.buttonText+"</span>").bind("mouseover"==this.s.activate?"mouseover":"click",function(a){a.preventDefault();b._fnCollectionShow()}).appendTo(this.dom.wrapper)[0];this.dom.catcher=this._fnDomCatcher();this.dom.collection=this._fnDomCollection();this.dom.background=
+this._fnDomBackground();this._fnAddGroups();this._fnAddButtons();c=0;for(f=this.s.dt.aoColumns.length;c<f;c++)this.s.abOriginal.push(this.s.dt.aoColumns[c].bVisible);this.s.dt.aoDrawCallback.push({fn:function(){b._fnDrawCallback.call(b)},sName:"ColVis"});d(this.s.dt.oInstance).bind("column-reorder",function(a,d,e){c=0;for(f=b.s.aiExclude.length;c<f;c++)b.s.aiExclude[c]=e.aiInvertMapping[b.s.aiExclude[c]];a=b.s.abOriginal.splice(e.iFrom,1)[0];b.s.abOriginal.splice(e.iTo,0,a);b.fnRebuild()});this._fnDrawCallback()},
+_fnApplyCustomisation:function(a){d.extend(!0,this.s,e.defaults,a);!this.s.showAll&&this.s.bShowAll&&(this.s.showAll=this.s.sShowAll);!this.s.restore&&this.s.bRestore&&(this.s.restore=this.s.sRestore);var a=this.s.groups,b=this.s.aoGroups;if(a)for(var c=0,f=a.length;c<f;c++)if(a[c].title&&(b[c].sTitle=a[c].title),a[c].columns)b[c].aiColumns=a[c].columns},_fnDrawCallback:function(){for(var a=this.s.dt.aoColumns,b=this.dom.buttons,c=this.s.aoGroups,f,g=0,h=b.length;g<h;g++)f=b[g],f.__columnIdx!==k&&
+d("input",f).prop("checked",a[f.__columnIdx].bVisible);b=0;for(f=c.length;b<f;b++){a:{for(var g=c[b].aiColumns,h=0,e=g.length;h<e;h++)if(!1===a[g[h]].bVisible){g=!1;break a}g=!0}if(g)d("input",this.dom.groupButtons[b]).prop("checked",!0),d("input",this.dom.groupButtons[b]).prop("indeterminate",!1);else{a:{g=c[b].aiColumns;h=0;for(e=g.length;h<e;h++)if(!0===a[g[h]].bVisible){g=!1;break a}g=!0}g?(d("input",this.dom.groupButtons[b]).prop("checked",!1),d("input",this.dom.groupButtons[b]).prop("indeterminate",
+!1)):d("input",this.dom.groupButtons[b]).prop("indeterminate",!0)}}},_fnAddGroups:function(){var a;if("undefined"!=typeof this.s.aoGroups)for(var b=0,c=this.s.aoGroups.length;b<c;b++)a=this._fnDomGroupButton(b),this.dom.groupButtons.push(a),this.dom.buttons.push(a),this.dom.collection.appendChild(a)},_fnAddButtons:function(){var a,b=this.s.dt.aoColumns;if(-1===d.inArray("all",this.s.aiExclude))for(var c=0,f=b.length;c<f;c++)-1===d.inArray(c,this.s.aiExclude)&&(a=this._fnDomColumnButton(c),a.__columnIdx=
+c,this.dom.buttons.push(a));"alpha"===this.s.order&&this.dom.buttons.sort(function(a,c){var d=b[a.__columnIdx].sTitle,f=b[c.__columnIdx].sTitle;return d===f?0:d<f?-1:1});this.s.restore&&(a=this._fnDomRestoreButton(),a.className+=" ColVis_Restore",this.dom.buttons.push(a));this.s.showAll&&(a=this._fnDomShowXButton(this.s.showAll,!0),a.className+=" ColVis_ShowAll",this.dom.buttons.push(a));this.s.showNone&&(a=this._fnDomShowXButton(this.s.showNone,!1),a.className+=" ColVis_ShowNone",this.dom.buttons.push(a));
+d(this.dom.collection).append(this.dom.buttons)},_fnDomRestoreButton:function(){var a=this;return d('<li class="ColVis_Special '+(this.s.dt.bJUI?"ui-button ui-state-default":"")+'">'+this.s.restore+"</li>").click(function(){for(var b=0,c=a.s.abOriginal.length;b<c;b++)a.s.dt.oInstance.fnSetColumnVis(b,a.s.abOriginal[b],!1);a._fnAdjustOpenRows();a.s.dt.oInstance.fnAdjustColumnSizing(!1);a.s.dt.oInstance.fnDraw(!1)})[0]},_fnDomShowXButton:function(a,b){var c=this;return d('<li class="ColVis_Special '+
+(this.s.dt.bJUI?"ui-button ui-state-default":"")+'">'+a+"</li>").click(function(){for(var a=0,d=c.s.abOriginal.length;a<d;a++)-1===c.s.aiExclude.indexOf(a)&&c.s.dt.oInstance.fnSetColumnVis(a,b,!1);c._fnAdjustOpenRows();c.s.dt.oInstance.fnAdjustColumnSizing(!1);c.s.dt.oInstance.fnDraw(!1)})[0]},_fnDomGroupButton:function(a){var b=this,c=this.s.aoGroups[a];return d('<li class="ColVis_Special '+(this.s.dt.bJUI?"ui-button ui-state-default":"")+'"><label><input type="checkbox" /><span>'+c.sTitle+"</span></label></li>").click(function(a){var g=
+!d("input",this).is(":checked");"li"!==a.target.nodeName.toLowerCase()&&(g=!g);for(a=0;a<c.aiColumns.length;a++)b.s.dt.oInstance.fnSetColumnVis(c.aiColumns[a],g)})[0]},_fnDomColumnButton:function(a){var b=this,c=this.s.dt.aoColumns[a],f=this.s.dt,c=null===this.s.fnLabel?c.sTitle:this.s.fnLabel(a,c.sTitle,c.nTh);return d("<li "+(f.bJUI?'class="ui-button ui-state-default"':"")+'><label><input type="checkbox" /><span>'+c+"</span></label></li>").click(function(c){var e=!d("input",this).is(":checked");
+"li"!==c.target.nodeName.toLowerCase()&&(e=!e);var i=d.fn.dataTableExt.iApiIndex;d.fn.dataTableExt.iApiIndex=b._fnDataTablesApiIndex.call(b);f.oFeatures.bServerSide?(b.s.dt.oInstance.fnSetColumnVis(a,e,!1),b.s.dt.oInstance.fnAdjustColumnSizing(!1),(""!==f.oScroll.sX||""!==f.oScroll.sY)&&b.s.dt.oInstance.oApi._fnScrollDraw(b.s.dt),b._fnDrawCallback()):b.s.dt.oInstance.fnSetColumnVis(a,e);d.fn.dataTableExt.iApiIndex=i;"input"===c.target.nodeName.toLowerCase()&&null!==b.s.fnStateChange&&b.s.fnStateChange.call(b,
+a,e)})[0]},_fnDataTablesApiIndex:function(){for(var a=0,b=this.s.dt.oInstance.length;a<b;a++)if(this.s.dt.oInstance[a]==this.s.dt.nTable)return a;return 0},_fnDomCollection:function(){return d("<ul />",{"class":!this.s.dt.bJUI?"ColVis_collection":"ColVis_collection ui-buttonset ui-buttonset-multi"}).css({display:"none",opacity:0,position:!this.s.bCssPosition?"absolute":""})[0]},_fnDomCatcher:function(){var a=this,b=i.createElement("div");b.className="ColVis_catcher";d(b).click(function(){a._fnCollectionHide.call(a,
+null,null)});return b},_fnDomBackground:function(){var a=this,b=d("<div></div>").addClass("ColVis_collectionBackground").css("opacity",0).click(function(){a._fnCollectionHide.call(a,null,null)});"mouseover"==this.s.activate&&b.mouseover(function(){a.s.overcollection=!1;a._fnCollectionHide.call(a,null,null)});return b[0]},_fnCollectionShow:function(){var a=this,b;b=d(this.dom.button).offset();var c=this.dom.collection,f=this.dom.background,e=parseInt(b.left,10),h=parseInt(b.top+d(this.dom.button).outerHeight(),
+10);this.s.bCssPosition||(c.style.top=h+"px",c.style.left=e+"px");d(c).css({display:"block",opacity:0});f.style.bottom="0px";f.style.right="0px";h=this.dom.catcher.style;h.height=d(this.dom.button).outerHeight()+"px";h.width=d(this.dom.button).outerWidth()+"px";h.top=b.top+"px";h.left=e+"px";i.body.appendChild(f);i.body.appendChild(c);i.body.appendChild(this.dom.catcher);d(c).animate({opacity:1},a.s.iOverlayFade);d(f).animate({opacity:0.1},a.s.iOverlayFade,"linear",function(){d.browser&&(d.browser.msie&&
+d.browser.version=="6.0")&&a._fnDrawCallback()});this.s.bCssPosition||(b="left"==this.s.sAlign?e:e-d(c).outerWidth()+d(this.dom.button).outerWidth(),c.style.left=b+"px",f=d(c).outerWidth(),d(c).outerHeight(),e=d(i).width(),b+f>e&&(c.style.left=e-f+"px"));this.s.hidden=!1},_fnCollectionHide:function(){var a=this;!this.s.hidden&&null!==this.dom.collection&&(this.s.hidden=!0,d(this.dom.collection).animate({opacity:0},a.s.iOverlayFade,function(){this.style.display="none"}),d(this.dom.background).animate({opacity:0},
+a.s.iOverlayFade,function(){i.body.removeChild(a.dom.background);i.body.removeChild(a.dom.catcher)}))},_fnAdjustOpenRows:function(){for(var a=this.s.dt.aoOpenRows,b=this.s.dt.oApi._fnVisbleColumns(this.s.dt),c=0,d=a.length;c<d;c++)a[c].nTr.getElementsByTagName("td")[0].colSpan=b}};e.fnRebuild=function(a){var b=null;"undefined"!=typeof a&&(b=a.fnSettings().nTable);for(var c=0,d=e.aInstances.length;c<d;c++)("undefined"==typeof a||b==e.aInstances[c].s.dt.nTable)&&e.aInstances[c].fnRebuild()};e.defaults=
+{active:"click",buttonText:"Show / hide columns",aiExclude:[],bRestore:!1,sRestore:"Restore original",bShowAll:!1,sShowAll:"Show All",sAlign:"left",fnStateChange:null,iOverlayFade:500,fnLabel:null,bCssPosition:!1,aoGroups:[],order:"column"};e.aInstances=[];e.prototype.CLASS="ColVis";e.VERSION="1.1.1";e.prototype.VERSION=e.VERSION;"function"==typeof d.fn.dataTable&&"function"==typeof d.fn.dataTableExt.fnVersionCheck&&d.fn.dataTableExt.fnVersionCheck("1.7.0")?d.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=
+a.oInit;return(new e(a,b.colVis||b.oColVis||{})).button()},cFeature:"C",sFeature:"ColVis"}):alert("Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download");d.fn.dataTable.ColVis=e;return d.fn.DataTable.ColVis=e};"function"===typeof define&&define.amd?define(["jquery","datatables"],j):"object"===typeof exports?j(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.ColVis&&j(jQuery,jQuery.fn.dataTable)})(window,document);
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/Readme.txt b/public/admin/js/DataTables/extensions/FixedColumns/Readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..15d64c383040d1614d0e773fbe42aad2e082d2f9
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/Readme.txt
@@ -0,0 +1,42 @@
+# FixedColumns
+
+When making use of DataTables' x-axis scrolling feature (`scrollX`), you may wish to fix the left or right most columns in place. This plug-in for DataTables provides exactly this option (for non-scrolling tables, please use the FixedHeader plug-in, which can fix headers, footers and columns). Key features include:
+
+* Freezes the left most column to the side of the table
+* Option to freeze two or more columns
+* Full integration with DataTables' scrolling options
+
+
+# Installation
+
+To use FixedColumns, first download DataTables ( http://datatables.net/download ) and place the unzipped FixedColumns package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
+
+
+# Basic usage
+
+FixedColumns is initialised using the `$.fn.dataTable.FixedColumns()` constructor. For example:
+
+```js
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+
+	new $.fn.dataTable.FixedColumns( table );
+} );
+```
+
+
+# Documentation / support
+
+* Documentation: http://datatables.net/extensions/FixedColumns/
+* DataTables support forums: http://datatables.net/forums
+
+
+# GitHub
+
+If you fancy getting involved with the development of FixedColumns and help make it better, please refer to its GitHub repo: https://github.com/DataTables/FixedColumns
+
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/css/dataTables.fixedColumns.css b/public/admin/js/DataTables/extensions/FixedColumns/css/dataTables.fixedColumns.css
new file mode 100644
index 0000000000000000000000000000000000000000..0377aef2acd7860903139c093a3fbb9afa11b997
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/css/dataTables.fixedColumns.css
@@ -0,0 +1,24 @@
+
+
+/* Block out what is behind the fixed column's header and footer */
+table.DTFC_Cloned thead,
+table.DTFC_Cloned tfoot {
+	background-color: white;
+}
+
+/* Block out the gap above the scrollbar on the right, when there is a fixed
+ * right column
+ */
+div.DTFC_Blocker {
+	background-color: white;
+}
+
+div.DTFC_LeftWrapper table.dataTable,
+div.DTFC_RightWrapper table.dataTable {
+	margin-bottom: 0;
+}
+
+div.DTFC_LeftWrapper table.dataTable.no-footer,
+div.DTFC_RightWrapper table.dataTable.no-footer {
+	border-bottom: none;
+}
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/css/dataTables.fixedColumns.min.css b/public/admin/js/DataTables/extensions/FixedColumns/css/dataTables.fixedColumns.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..f0e5ff4c0b8bd474da871454808267f7f0e9ff6c
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/css/dataTables.fixedColumns.min.css
@@ -0,0 +1 @@
+table.DTFC_Cloned thead,table.DTFC_Cloned tfoot{background-color:white}div.DTFC_Blocker{background-color:white}div.DTFC_LeftWrapper table.dataTable,div.DTFC_RightWrapper table.dataTable{margin-bottom:0}div.DTFC_LeftWrapper table.dataTable.no-footer,div.DTFC_RightWrapper table.dataTable.no-footer{border-bottom:none}
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/bootstrap.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/bootstrap.html
new file mode 100644
index 0000000000000000000000000000000000000000..e5b94ddc11a76a8a67e430a4973a02e268d20246
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/bootstrap.html
@@ -0,0 +1,837 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - Bootstrap</title>
+	<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
+	<link rel="stylesheet" type="text/css" href="../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	body { font-size: 140%; }
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src=
+	"../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>Bootstrap</span></h1>
+
+			<div class="info">
+				<p>When displaying a table which scrolls along the x-axis, it can sometimes be useful to the end user
+				for the left most column to be fixed in place, if it shows grouping, index or similar information. This
+				is basically the same idea as 'freeze columns' in Excel. This can be achieved with the FixedColumns
+				plug-in for DataTables, as shown below.</p>
+
+				<p>Note that FixedColumns is suitable only for use with the scrolling features in <a href=
+				"http://datatables.net">DataTables</a>. If you want to achieve a similar effect without scrolling
+				enabled, please checkout <a href="http://datatables.net/plug-ins">FixedHeader</a>, also for
+				DataTables.</p>
+
+				<p>FixedColumns is initialised using the constructor <code>new $.fn.dataTable.FixedColumns();</code> -
+				shown below.</p>
+			</div>
+
+			<table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+						<li><a href=
+						"../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js">../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">body { font-size: 140%; }
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css</a></li>
+						<li><a href=
+						"../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css">../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li class="active"><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/col_filter.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/col_filter.html
new file mode 100644
index 0000000000000000000000000000000000000000..78499b01678f7298cc6e03d3a3a76cddc3063dc1
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/col_filter.html
@@ -0,0 +1,870 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - Individual column filtering</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	// Setup - add a text input to each footer cell
+	$('#example tfoot th').each( function () {
+		var title = $('#example thead th').eq( $(this).index() ).text();
+		$(this).html( '<input type="text" placeholder="Search '+title+'" />' );
+	} );
+ 
+	// DataTable
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+	 
+	// Apply the filter
+	table.columns().indexes().each( function (idx) {
+		$( 'input', table.column( idx ).footer() ).on( 'keyup change', function () {
+			table
+				.column( idx )
+				.search( this.value )
+				.draw();
+		} );
+	} );
+
+	new $.fn.dataTable.FixedColumns( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>Individual column filtering</span></h1>
+
+			<div class="info">
+				<p>This example shows FixedColumns being configured with individual column filtering abilities. Note
+				that the event handler for the filtering is applied to the <code class="tag" title=
+				"HTML tag">input</code> elements before FixedColumns is initialised, so when FixedColumns clones nodes
+				it also copies the event.</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	// Setup - add a text input to each footer cell
+	$('#example tfoot th').each( function () {
+		var title = $('#example thead th').eq( $(this).index() ).text();
+		$(this).html( '&lt;input type=&quot;text&quot; placeholder=&quot;Search '+title+'&quot; /&gt;' );
+	} );
+ 
+	// DataTable
+	var table = $('#example').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+	 
+	// Apply the filter
+	table.columns().indexes().each( function (idx) {
+		$( 'input', table.column( idx ).footer() ).on( 'keyup change', function () {
+			table
+				.column( idx )
+				.search( this.value )
+				.draw();
+		} );
+	} );
+
+	new $.fn.dataTable.FixedColumns( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li class="active"><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/colvis.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/colvis.html
new file mode 100644
index 0000000000000000000000000000000000000000..830642c2f26a9d8fdd643d53dba9147444e19166
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/colvis.html
@@ -0,0 +1,850 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - ColVis integration</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../ColVis/css/dataTables.colVis.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	div.ColVis {
+		float: left;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../ColVis/js/dataTables.colVis.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		dom:            "Cfrtip",
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+
+	new $.fn.dataTable.FixedColumns( table, {
+		leftColumns: 2
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>ColVis integration</span></h1>
+
+			<div class="info">
+				<p>FixedColumns operates with DataTables' built-in column visibility options (<a href=
+				"//datatables.net/reference/option/columns.visible"><code class="option" title=
+				"DataTables initialisation option">columns.visible<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/api/column().visible()"><code class="api" title=
+				"DataTables API method">column().visible()<span>DT</span></code></a>), which columns that are hidden
+				not being shown in the fixed columns. This integration also means that FixedColumns works well with
+				<a href="http://datatables.net/extensions/colvis">ColVis</a>, with columns that are dynamically shown
+				and hidden updated immediately in the fixed columns.</p>
+
+				<p>The example below shows ColVis and FixedColumns working together. Two columns have been fixed on the
+				left hand side of the table to show FixedColumns ability to work effortlessly with column
+				visibility.</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		dom:            &quot;Cfrtip&quot;,
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+
+	new $.fn.dataTable.FixedColumns( table, {
+		leftColumns: 2
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href=
+						"../../ColVis/js/dataTables.colVis.js">../../ColVis/js/dataTables.colVis.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	div.ColVis {
+		float: left;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href=
+						"../../ColVis/css/dataTables.colVis.css">../../ColVis/css/dataTables.colVis.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li class="active"><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/css_size.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/css_size.html
new file mode 100644
index 0000000000000000000000000000000000000000..a2f21e1920f260761051b75bfd6ff63f04b84b4e
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/css_size.html
@@ -0,0 +1,844 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - CSS row sizing</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	tr { height: 50px; }
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+
+	new $.fn.dataTable.FixedColumns( table, {
+		heightMatch: 'none'
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>CSS row sizing</span></h1>
+
+			<div class="info">
+				<p>Because of the method FixedColumns uses to display the fixed columns, an important consideration is
+				the alignment of the rows due to different heights in the individual rows of the table. There are two
+				different algorithms in FixedColumns which can be used, or you can switch off automatic row sizing all
+				together. This is controlled through the <code>heightMatch</code> parameter. If can take the following
+				values:</p>
+
+				<ul class="markdown">
+					<li><code class="string" title="String">none</code> - no automatic row height matching is
+					performed. CSS can be used in this case and is useful when speed is of primary importance.</li>
+					<li><code class="string" title="String">semiauto</code> (default) - the height calculation will be
+					performed once, and the result cached to be used again (<code>fnRecalculateHeight</code> can be
+					used to force recalculation)</li>
+					<li><code class="string" title="String">auto</code> - height matching is performed on every draw
+					(slowest but must accurate)</li>
+				</ul>
+
+				<p>This example shows row height matching switched off but there is a CSS statement of <code>tr {
+				height: 50px }</code> to force all rows to the same height.</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+
+	new $.fn.dataTable.FixedColumns( table, {
+		heightMatch: 'none'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	tr { height: 50px; }</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li class="active"><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/index.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..0aaef29f8081e9257ccefb313bbb0ef58df70f3d
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/index.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+
+	<title>FixedColumns examples - FixedColumns examples</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>FixedColumns examples</span></h1>
+
+			<div class="info">
+				<p>When making use of DataTables' x-axis scrolling feature (<a href=
+				"//datatables.net/reference/option/scrollX"><code class="option" title=
+				"DataTables initialisation option">scrollX<span>DT</span></code></a>), you may wish to fix the left or
+				right most columns in place. This extension for DataTables provides exactly this option (for
+				non-scrolling tables, please use the <a href="//datatables.net/extensions/fixedheader">FixedHeader
+				extension</a>, which can fix headers, footers and columns). Key features include:</p>
+
+				<ul class="markdown">
+					<li>Freezes the left most column to the side of the table</li>
+					<li>Option to freeze two or more columns</li>
+					<li>Full integration with DataTables' scrolling options</li>
+				</ul>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/index_column.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/index_column.html
new file mode 100644
index 0000000000000000000000000000000000000000..c93c7add2cbbfe5744d02bae0a83158f3ba9f775
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/index_column.html
@@ -0,0 +1,944 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - Index column</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	/* Styling for the index columns */
+	th.index,
+	td.index {
+		background-color: white !important;
+		border-top: 1px solid white !important;
+		border-bottom: none !important;
+	}
+	div.DTFC_LeftHeadWrapper table {
+		border-bottom: 1px solid white !important;
+	}
+	div.DTFC_LeftHeadWrapper th {
+		border-bottom: 1px solid white !important;
+	}
+	div.DTFC_LeftBodyWrapper {
+		border-right: 1px solid black;
+	}
+	div.DTFC_LeftFootWrapper th {
+		border-top: 1px solid white !important;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false,
+		columnDefs: [ {
+			sortable: false,
+			"class": "index",
+			targets: 0
+		} ],
+		order: [[ 1, 'asc' ]]
+	} );
+
+	table.on( 'order.dt search.dt', function () {
+		table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
+			cell.innerHTML = i+1;
+		} );
+	} ).draw();
+
+	new $.fn.dataTable.FixedColumns( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>Index column</span></h1>
+
+			<div class="info">
+				<p>A typical interaction to want to perform with a fixed column, is an index column. A method for how
+				this can be achieved with FixedColumns is shown in this example, building on the <a href=
+				"http://datatables.net/examples/api/counter_column">index column</a> example for DataTables. Also shown
+				in this example is how the fixed column can be styled with CSS to show it more prominently.</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th></th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td></td>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false,
+		columnDefs: [ {
+			sortable: false,
+			&quot;class&quot;: &quot;index&quot;,
+			targets: 0
+		} ],
+		order: [[ 1, 'asc' ]]
+	} );
+
+	table.on( 'order.dt search.dt', function () {
+		table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
+			cell.innerHTML = i+1;
+		} );
+	} ).draw();
+
+	new $.fn.dataTable.FixedColumns( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	/* Styling for the index columns */
+	th.index,
+	td.index {
+		background-color: white !important;
+		border-top: 1px solid white !important;
+		border-bottom: none !important;
+	}
+	div.DTFC_LeftHeadWrapper table {
+		border-bottom: 1px solid white !important;
+	}
+	div.DTFC_LeftHeadWrapper th {
+		border-bottom: 1px solid white !important;
+	}
+	div.DTFC_LeftBodyWrapper {
+		border-right: 1px solid black;
+	}
+	div.DTFC_LeftFootWrapper th {
+		border-top: 1px solid white !important;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li class="active"><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/left_right_columns.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/left_right_columns.html
new file mode 100644
index 0000000000000000000000000000000000000000..c1c18e24962b45770cb7c0476d8cb224ec2222c8
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/left_right_columns.html
@@ -0,0 +1,829 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - Left and right fixed columns</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+
+	new $.fn.dataTable.FixedColumns( table, {
+		leftColumns: 1,
+		rightColumns: 1
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>Left and right fixed columns</span></h1>
+
+			<div class="info">
+				<p>FixedColumns allows columns to be fixed from both the left and right hand sides of the table. Fixing
+				right hand-side columns is done by using the <code>rightColumns</code> initialisation parameter, which
+				works just the same as <code>leftColumns</code> does for the left side of the table. This example shows
+				both the left and right columns being fixed in place.</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+
+	new $.fn.dataTable.FixedColumns( table, {
+		leftColumns: 1,
+		rightColumns: 1
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./left_right_columns.html">Left and right fixed
+							columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/right_column.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/right_column.html
new file mode 100644
index 0000000000000000000000000000000000000000..b12ceb9a7d8f72e955fc2987f8f35bf451bcbb1b
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/right_column.html
@@ -0,0 +1,829 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - Right column only</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+
+	new $.fn.dataTable.FixedColumns( table, {
+		leftColumns: 0,
+		rightColumns: 1
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>Right column only</span></h1>
+
+			<div class="info">
+				<p>FixedColumns has the ability to freeze columns on both the left and right hand sides of the table.
+				By default it will fix the first column on the left, but using the initialisation parameters
+				<code>leftColumns</code> and <code>rightColumns</code> you can alter this to fix the columns on the
+				right as well. This example shows a single column fixed in place, in this case the right most
+				column.</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+
+	new $.fn.dataTable.FixedColumns( table, {
+		leftColumns: 0,
+		rightColumns: 1
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li class="active"><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/rowspan.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/rowspan.html
new file mode 100644
index 0000000000000000000000000000000000000000..3d10079469f7dccef20844ae1b4f1fbcc3480388
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/rowspan.html
@@ -0,0 +1,670 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - Complex headers</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td {
+		white-space: nowrap;
+		padding-left: 40px !important;
+		padding-right: 40px !important;
+	}
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>Complex headers</span></h1>
+
+			<div class="info">
+				<p>If you are using multiple rows in the table header, it can be useful to have a rowspanning cell on
+				the column(s) you have fixed in place - equally at other times it can be useful to not and make use of
+				the two or more cells per column. FixedColumns builds on the complex header support in DataTables to
+				make this trivial to use in FixedColumns. Just initialise your FixedColumns instance as you normally
+				would!</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th rowspan="2">Name</th>
+						<th colspan="2">HR Information</th>
+						<th colspan="3">Contact</th>
+					</tr>
+					<tr>
+						<th>Position</th>
+						<th>Salary</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Salary</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>$320,800</td>
+						<td>Edinburgh</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>$170,750</td>
+						<td>Tokyo</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>$86,000</td>
+						<td>San Francisco</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>$433,060</td>
+						<td>Edinburgh</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>$162,700</td>
+						<td>Tokyo</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>$372,000</td>
+						<td>New York</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>$137,500</td>
+						<td>San Francisco</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>$327,900</td>
+						<td>Tokyo</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>$205,500</td>
+						<td>San Francisco</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>$103,600</td>
+						<td>Edinburgh</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>$90,560</td>
+						<td>London</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>$342,000</td>
+						<td>Edinburgh</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>$470,600</td>
+						<td>San Francisco</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>$313,500</td>
+						<td>London</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>$385,750</td>
+						<td>London</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>$198,500</td>
+						<td>London</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>$725,000</td>
+						<td>New York</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>$237,500</td>
+						<td>New York</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>$132,000</td>
+						<td>London</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>$217,500</td>
+						<td>Edinburgh</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>$345,000</td>
+						<td>New York</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>$675,000</td>
+						<td>New York</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>$106,450</td>
+						<td>New York</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>$85,600</td>
+						<td>Sidney</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>$1,200,000</td>
+						<td>London</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>$92,575</td>
+						<td>Edinburgh</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>$357,650</td>
+						<td>Singapore</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>$206,850</td>
+						<td>San Francisco</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>$850,000</td>
+						<td>San Francisco</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>$163,000</td>
+						<td>Tokyo</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>$95,400</td>
+						<td>Sidney</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>$114,500</td>
+						<td>London</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>$145,000</td>
+						<td>London</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>$235,500</td>
+						<td>San Francisco</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>$324,050</td>
+						<td>Edinburgh</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>$85,675</td>
+						<td>San Francisco</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>$164,500</td>
+						<td>San Francisco</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>$109,850</td>
+						<td>San Francisco</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>$452,500</td>
+						<td>San Francisco</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>$136,200</td>
+						<td>London</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>$645,750</td>
+						<td>New York</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>$234,500</td>
+						<td>Singapore</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>$163,500</td>
+						<td>London</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>$139,575</td>
+						<td>Tokyo</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>$98,540</td>
+						<td>New York</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>$87,500</td>
+						<td>San Francisco</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>$138,575</td>
+						<td>Singapore</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>$125,250</td>
+						<td>New York</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>$115,000</td>
+						<td>San Francisco</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>$75,650</td>
+						<td>Edinburgh</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>$145,600</td>
+						<td>New York</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>$356,250</td>
+						<td>London</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>$103,500</td>
+						<td>London</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>$86,500</td>
+						<td>San Francisco</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>$183,000</td>
+						<td>Edinburgh</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>$183,000</td>
+						<td>Singapore</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>$112,000</td>
+						<td>New York</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td {
+		white-space: nowrap;
+		padding-left: 40px !important;
+		padding-right: 40px !important;
+	}
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li class="active"><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/server-side-processing.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/server-side-processing.html
new file mode 100644
index 0000000000000000000000000000000000000000..dc405e01695625556a267ca5c2fe5968ae3b0946
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/server-side-processing.html
@@ -0,0 +1,216 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - Server-side processing</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 600px;
+		margin: 0 auto;
+	}
+
+	/* Lots of padding for the cells as SSP has limited data in the demo */
+	th,
+	td {
+		padding-left: 40px !important;
+		padding-right: 40px !important;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		ajax: "../../../examples/server_side/scripts/server_processing.php",
+		serverSide: true
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>Server-side processing</span></h1>
+
+			<div class="info">
+				<p>This example shows how FixedColumns can be used with server-side processing in DataTables to cope
+				with very large tables. No special considerations are required, just initialise FixedColumns as you
+				normally would!</p>
+
+				<p>Note that the table width is constrained in this example to allow scrolling to occur as the
+				server-side processing data set has a limited number of columns in this demo!</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		ajax: &quot;../../../examples/server_side/scripts/server_processing.php&quot;,
+		serverSide: true
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 600px;
+		margin: 0 auto;
+	}
+
+	/* Lots of padding for the cells as SSP has limited data in the demo */
+	th,
+	td {
+		padding-left: 40px !important;
+		padding-right: 40px !important;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li class="active"><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/simple.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/simple.html
new file mode 100644
index 0000000000000000000000000000000000000000..f82969d4d989e5224a913ea0ba8794af6a08a4ee
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/simple.html
@@ -0,0 +1,828 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - Basic initialisation</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>Basic initialisation</span></h1>
+
+			<div class="info">
+				<p>When displaying a table which scrolls along the x-axis, it can sometimes be useful to the end user
+				for the left most column to be fixed in place, if it shows grouping, index or similar information. This
+				is basically the same idea as 'freeze columns' in Excel. This can be achieved with the FixedColumns
+				plug-in for DataTables, as shown below.</p>
+
+				<p>Note that FixedColumns is suitable only for use with the scrolling features in <a href=
+				"http://datatables.net">DataTables</a>. If you want to achieve a similar effect without scrolling
+				enabled, please checkout <a href="http://datatables.net/plug-ins">FixedHeader</a>, also for
+				DataTables.</p>
+
+				<p>FixedColumns is initialised using the constructor <code>new $.fn.dataTable.FixedColumns();</code> -
+				shown below.</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li class="active"><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/size_fixed.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/size_fixed.html
new file mode 100644
index 0000000000000000000000000000000000000000..8aa18d9112628df2bf0d9eb04db53498b6ce2399
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/size_fixed.html
@@ -0,0 +1,837 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - Assigned column width</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		margin: 0 auto;
+	}
+
+	div.container {
+		width: 80%;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').removeAttr('width').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false,
+		columnDefs: [
+			{ width: 200, targets: 0 }
+		]
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>Assigned column width</span></h1>
+
+			<div class="info">
+				<p>The columns that are fixed in place by FixedColumns take their width from the parent DataTable. As
+				such, the width of the column can be controlled using the <a href=
+				"//datatables.net/reference/option/columns.width"><code class="option" title=
+				"DataTables initialisation option">columns.width<span>DT</span></code></a> option.</p>
+
+				<p>This example shows the first column being set to <code>width: 200px</code> (note that this is not
+				pixel perfect in a table, the browser will make some adjustments!), a width that is reflected in the
+				fixed column. Resize the browser window horizontally and you will be able to see that the fixed column
+				retains its width while the scrolling viewport and the table resize.</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').removeAttr('width').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false,
+		columnDefs: [
+			{ width: 200, targets: 0 }
+		]
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		margin: 0 auto;
+	}
+
+	div.container {
+		width: 80%;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li class="active"><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/size_fluid.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/size_fluid.html
new file mode 100644
index 0000000000000000000000000000000000000000..b2ed045bd8c9753201e962c5fdafbcf64bd5c19e
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/size_fluid.html
@@ -0,0 +1,838 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - Fluid column width</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		margin: 0 auto;
+	}
+
+	div.container {
+		width: 80%;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false,
+		columnDefs: [
+			{ width: '20%', targets: 0 }
+		]
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>Fluid column width</span></h1>
+
+			<div class="info">
+				<p>The columns that are fixed in place by FixedColumns take their width from the parent DataTable. As
+				such, the width of the column can be controlled using the <a href=
+				"//datatables.net/reference/option/columns.width"><code class="option" title=
+				"DataTables initialisation option">columns.width<span>DT</span></code></a> option.</p>
+
+				<p>This example shows the first column being set to <code>width: 20%</code> (note that this is not
+				pixel perfect in a table, the browser will make some adjustments!), a width that is reflected in the
+				fixed column. Resize the browser window horizontally and you will be able to see that the fixed column
+				retains its proportional width (again with a small margin dictated by the browser) in the resizing
+				table.</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false,
+		columnDefs: [
+			{ width: '20%', targets: 0 }
+		]
+	} );
+	new $.fn.dataTable.FixedColumns( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		margin: 0 auto;
+	}
+
+	div.container {
+		width: 80%;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li class="active"><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/examples/two_columns.html b/public/admin/js/DataTables/extensions/FixedColumns/examples/two_columns.html
new file mode 100644
index 0000000000000000000000000000000000000000..62a85fa4395217bfd7e59915c1146275d4e940af
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/examples/two_columns.html
@@ -0,0 +1,822 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedColumns example - Multiple fixed columns</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedColumns.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedColumns.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        "300px",
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+	new $.fn.dataTable.FixedColumns( table, {
+		leftColumns: 2
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedColumns example <span>Multiple fixed columns</span></h1>
+
+			<div class="info">
+				<p>FixedColumns allows more than one column to be frozen into place using the <code>leftColumns</code>
+				parameter. The example below shows two columns fixed.</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY:        &quot;300px&quot;,
+		scrollX:        true,
+		scrollCollapse: true,
+		paging:         false
+	} );
+	new $.fn.dataTable.FixedColumns( table, {
+		leftColumns: 2
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedColumns.js">../js/dataTables.fixedColumns.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">/* Ensure that the demo table scrolls */
+	th, td { white-space: nowrap; }
+	div.dataTables_wrapper {
+		width: 800px;
+		margin: 0 auto;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedColumns.css">../css/dataTables.fixedColumns.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./left_right_columns.html">Left and right fixed columns</a></li>
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li class="active"><a href="./two_columns.html">Multiple fixed columns</a></li>
+							<li><a href="./right_column.html">Right column only</a></li>
+							<li><a href="./rowspan.html">Complex headers</a></li>
+							<li><a href="./colvis.html">ColVis integration</a></li>
+							<li><a href="./server-side-processing.html">Server-side processing</a></li>
+							<li><a href="./css_size.html">CSS row sizing</a></li>
+							<li><a href="./size_fixed.html">Assigned column width</a></li>
+							<li><a href="./size_fluid.html">Fluid column width</a></li>
+							<li><a href="./col_filter.html">Individual column filtering</a></li>
+							<li><a href="./bootstrap.html">Bootstrap</a></li>
+							<li><a href="./index_column.html">Index column</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/js/dataTables.fixedColumns.js b/public/admin/js/DataTables/extensions/FixedColumns/js/dataTables.fixedColumns.js
new file mode 100644
index 0000000000000000000000000000000000000000..a03cea8991dde2d73e846c9b0f001ff15449d51c
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/js/dataTables.fixedColumns.js
@@ -0,0 +1,1399 @@
+/*! FixedColumns 3.0.2
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     FixedColumns
+ * @description Freeze columns in place on a scrolling DataTable
+ * @version     3.0.2
+ * @file        dataTables.fixedColumns.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+
+(function(window, document, undefined) {
+
+
+var factory = function( $, DataTable ) {
+"use strict";
+
+/**
+ * When making use of DataTables' x-axis scrolling feature, you may wish to
+ * fix the left most column in place. This plug-in for DataTables provides
+ * exactly this option (note for non-scrolling tables, please use the
+ * FixedHeader plug-in, which can fix headers, footers and columns). Key
+ * features include:
+ *
+ * * Freezes the left or right most columns to the side of the table
+ * * Option to freeze two or more columns
+ * * Full integration with DataTables' scrolling options
+ * * Speed - FixedColumns is fast in its operation
+ *
+ *  @class
+ *  @constructor
+ *  @global
+ *  @param {object} dt DataTables instance. With DataTables 1.10 this can also
+ *    be a jQuery collection, a jQuery selector, DataTables API instance or
+ *    settings object.
+ *  @param {object} [init={}] Configuration object for FixedColumns. Options are
+ *    defined by {@link FixedColumns.defaults}
+ *
+ *  @requires jQuery 1.7+
+ *  @requires DataTables 1.8.0+
+ *
+ *  @example
+ *      var table = $('#example').dataTable( {
+ *        "scrollX": "100%"
+ *      } );
+ *      new $.fn.dataTable.fixedColumns( table );
+ */
+var FixedColumns = function ( dt, init ) {
+	var that = this;
+
+	/* Sanity check - you just know it will happen */
+	if ( ! this instanceof FixedColumns )
+	{
+		alert( "FixedColumns warning: FixedColumns must be initialised with the 'new' keyword." );
+		return;
+	}
+
+	if ( typeof init == 'undefined' )
+	{
+		init = {};
+	}
+
+	// Use the DataTables Hungarian notation mapping method, if it exists to
+	// provide forwards compatibility for camel case variables
+	if ( $.fn.dataTable.camelToHungarian ) {
+		$.fn.dataTable.camelToHungarian( FixedColumns.defaults, init );
+	}
+
+	// v1.10 allows the settings object to be got form a number of sources
+	var dtSettings = $.fn.dataTable.Api ?
+		new $.fn.dataTable.Api( dt ).settings()[0] :
+		dt.fnSettings();
+
+	/**
+	 * Settings object which contains customisable information for FixedColumns instance
+	 * @namespace
+	 * @extends FixedColumns.defaults
+	 * @private
+	 */
+	this.s = {
+		/**
+		 * DataTables settings objects
+		 *  @type     object
+		 *  @default  Obtained from DataTables instance
+		 */
+		"dt": dtSettings,
+
+		/**
+		 * Number of columns in the DataTable - stored for quick access
+		 *  @type     int
+		 *  @default  Obtained from DataTables instance
+		 */
+		"iTableColumns": dtSettings.aoColumns.length,
+
+		/**
+		 * Original outer widths of the columns as rendered by DataTables - used to calculate
+		 * the FixedColumns grid bounding box
+		 *  @type     array.<int>
+		 *  @default  []
+		 */
+		"aiOuterWidths": [],
+
+		/**
+		 * Original inner widths of the columns as rendered by DataTables - used to apply widths
+		 * to the columns
+		 *  @type     array.<int>
+		 *  @default  []
+		 */
+		"aiInnerWidths": []
+	};
+
+
+	/**
+	 * DOM elements used by the class instance
+	 * @namespace
+	 * @private
+	 *
+	 */
+	this.dom = {
+		/**
+		 * DataTables scrolling element
+		 *  @type     node
+		 *  @default  null
+		 */
+		"scroller": null,
+
+		/**
+		 * DataTables header table
+		 *  @type     node
+		 *  @default  null
+		 */
+		"header": null,
+
+		/**
+		 * DataTables body table
+		 *  @type     node
+		 *  @default  null
+		 */
+		"body": null,
+
+		/**
+		 * DataTables footer table
+		 *  @type     node
+		 *  @default  null
+		 */
+		"footer": null,
+
+		/**
+		 * Display grid elements
+		 * @namespace
+		 */
+		"grid": {
+			/**
+			 * Grid wrapper. This is the container element for the 3x3 grid
+			 *  @type     node
+			 *  @default  null
+			 */
+			"wrapper": null,
+
+			/**
+			 * DataTables scrolling element. This element is the DataTables
+			 * component in the display grid (making up the main table - i.e.
+			 * not the fixed columns).
+			 *  @type     node
+			 *  @default  null
+			 */
+			"dt": null,
+
+			/**
+			 * Left fixed column grid components
+			 * @namespace
+			 */
+			"left": {
+				"wrapper": null,
+				"head": null,
+				"body": null,
+				"foot": null
+			},
+
+			/**
+			 * Right fixed column grid components
+			 * @namespace
+			 */
+			"right": {
+				"wrapper": null,
+				"head": null,
+				"body": null,
+				"foot": null
+			}
+		},
+
+		/**
+		 * Cloned table nodes
+		 * @namespace
+		 */
+		"clone": {
+			/**
+			 * Left column cloned table nodes
+			 * @namespace
+			 */
+			"left": {
+				/**
+				 * Cloned header table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"header": null,
+
+				/**
+				 * Cloned body table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"body": null,
+
+				/**
+				 * Cloned footer table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"footer": null
+			},
+
+			/**
+			 * Right column cloned table nodes
+			 * @namespace
+			 */
+			"right": {
+				/**
+				 * Cloned header table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"header": null,
+
+				/**
+				 * Cloned body table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"body": null,
+
+				/**
+				 * Cloned footer table
+				 *  @type     node
+				 *  @default  null
+				 */
+				"footer": null
+			}
+		}
+	};
+
+	/* Attach the instance to the DataTables instance so it can be accessed easily */
+	dtSettings._oFixedColumns = this;
+
+	/* Let's do it */
+	if ( ! dtSettings._bInitComplete )
+	{
+		dtSettings.oApi._fnCallbackReg( dtSettings, 'aoInitComplete', function () {
+			that._fnConstruct( init );
+		}, 'FixedColumns' );
+	}
+	else
+	{
+		this._fnConstruct( init );
+	}
+};
+
+
+
+FixedColumns.prototype = /** @lends FixedColumns.prototype */{
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Update the fixed columns - including headers and footers. Note that FixedColumns will
+	 * automatically update the display whenever the host DataTable redraws.
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // at some later point when the table has been manipulated....
+	 *      fc.fnUpdate();
+	 */
+	"fnUpdate": function ()
+	{
+		this._fnDraw( true );
+	},
+
+
+	/**
+	 * Recalculate the resizes of the 3x3 grid that FixedColumns uses for display of the table.
+	 * This is useful if you update the width of the table container. Note that FixedColumns will
+	 * perform this function automatically when the window.resize event is fired.
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // Resize the table container and then have FixedColumns adjust its layout....
+	 *      $('#content').width( 1200 );
+	 *      fc.fnRedrawLayout();
+	 */
+	"fnRedrawLayout": function ()
+	{
+		this._fnColCalc();
+		this._fnGridLayout();
+		this.fnUpdate();
+	},
+
+
+	/**
+	 * Mark a row such that it's height should be recalculated when using 'semiauto' row
+	 * height matching. This function will have no effect when 'none' or 'auto' row height
+	 * matching is used.
+	 *  @param   {Node} nTr TR element that should have it's height recalculated
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // manipulate the table - mark the row as needing an update then update the table
+	 *      // this allows the redraw performed by DataTables fnUpdate to recalculate the row
+	 *      // height
+	 *      fc.fnRecalculateHeight();
+	 *      table.fnUpdate( $('#example tbody tr:eq(0)')[0], ["insert date", 1, 2, 3 ... ]);
+	 */
+	"fnRecalculateHeight": function ( nTr )
+	{
+		delete nTr._DTTC_iHeight;
+		nTr.style.height = 'auto';
+	},
+
+
+	/**
+	 * Set the height of a given row - provides cross browser compatibility
+	 *  @param   {Node} nTarget TR element that should have it's height recalculated
+	 *  @param   {int} iHeight Height in pixels to set
+	 *  @returns {void}
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      var fc = new $.fn.dataTable.fixedColumns( table );
+	 *
+	 *      // You may want to do this after manipulating a row in the fixed column
+	 *      fc.fnSetRowHeight( $('#example tbody tr:eq(0)')[0], 50 );
+	 */
+	"fnSetRowHeight": function ( nTarget, iHeight )
+	{
+		nTarget.style.height = iHeight+"px";
+	},
+
+
+	/**
+	 * Get data index information about a row or cell in the table body.
+	 * This function is functionally identical to fnGetPosition in DataTables,
+	 * taking the same parameter (TH, TD or TR node) and returning exactly the
+	 * the same information (data index information). THe difference between
+	 * the two is that this method takes into account the fixed columns in the
+	 * table, so you can pass in nodes from the master table, or the cloned
+	 * tables and get the index position for the data in the main table.
+	 *  @param {node} node TR, TH or TD element to get the information about
+	 *  @returns {int} If nNode is given as a TR, then a single index is 
+	 *    returned, or if given as a cell, an array of [row index, column index
+	 *    (visible), column index (all)] is given.
+	 */
+	"fnGetPosition": function ( node )
+	{
+		var idx;
+		var inst = this.s.dt.oInstance;
+
+		if ( ! $(node).parents('.DTFC_Cloned').length )
+		{
+			// Not in a cloned table
+			return inst.fnGetPosition( node );
+		}
+		else
+		{
+			// Its in the cloned table, so need to look up position
+			if ( node.nodeName.toLowerCase() === 'tr' ) {
+				idx = $(node).index();
+				return inst.fnGetPosition( $('tr', this.s.dt.nTBody)[ idx ] );
+			}
+			else
+			{
+				var colIdx = $(node).index();
+				idx = $(node.parentNode).index();
+				var row = inst.fnGetPosition( $('tr', this.s.dt.nTBody)[ idx ] );
+
+				return [
+					row,
+					colIdx,
+					inst.oApi._fnVisibleToColumnIndex( this.s.dt, colIdx )
+				];
+			}
+		}
+	},
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods (they are of course public in JS, but recommended as private)
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Initialisation for FixedColumns
+	 *  @param   {Object} oInit User settings for initialisation
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnConstruct": function ( oInit )
+	{
+		var i, iLen, iWidth,
+			that = this;
+
+		/* Sanity checking */
+		if ( typeof this.s.dt.oInstance.fnVersionCheck != 'function' ||
+		     this.s.dt.oInstance.fnVersionCheck( '1.8.0' ) !== true )
+		{
+			alert( "FixedColumns "+FixedColumns.VERSION+" required DataTables 1.8.0 or later. "+
+				"Please upgrade your DataTables installation" );
+			return;
+		}
+
+		if ( this.s.dt.oScroll.sX === "" )
+		{
+			this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "FixedColumns is not needed (no "+
+				"x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for "+
+				"column fixing when scrolling is not enabled" );
+			return;
+		}
+
+		/* Apply the settings from the user / defaults */
+		this.s = $.extend( true, this.s, FixedColumns.defaults, oInit );
+
+		/* Set up the DOM as we need it and cache nodes */
+		var classes = this.s.dt.oClasses;
+		this.dom.grid.dt = $(this.s.dt.nTable).parents('div.'+classes.sScrollWrapper)[0];
+		this.dom.scroller = $('div.'+classes.sScrollBody, this.dom.grid.dt )[0];
+
+		/* Set up the DOM that we want for the fixed column layout grid */
+		this._fnColCalc();
+		this._fnGridSetup();
+
+		/* Event handlers */
+		var mouseController;
+
+		// When the body is scrolled - scroll the left and right columns
+		$(this.dom.scroller)
+			.on( 'mouseover.DTFC touchstart.DTFC', function () {
+				mouseController = 'main';
+			} )
+			.on( 'scroll.DTFC', function () {
+				if ( mouseController === 'main' ) {
+					if ( that.s.iLeftColumns > 0 ) {
+						that.dom.grid.left.liner.scrollTop = that.dom.scroller.scrollTop;
+					}
+					if ( that.s.iRightColumns > 0 ) {
+						that.dom.grid.right.liner.scrollTop = that.dom.scroller.scrollTop;
+					}
+				}
+			} );
+
+		var wheelType = 'onwheel' in document.createElement('div') ?
+			'wheel.DTFC' :
+			'mousewheel.DTFC';
+
+		if ( that.s.iLeftColumns > 0 ) {
+			// When scrolling the left column, scroll the body and right column
+			$(that.dom.grid.left.liner)
+				.on( 'mouseover.DTFC touchstart.DTFC', function () {
+					mouseController = 'left';
+				} )
+				.on( 'scroll.DTFC', function () {
+					if ( mouseController === 'left' ) {
+						that.dom.scroller.scrollTop = that.dom.grid.left.liner.scrollTop;
+						if ( that.s.iRightColumns > 0 ) {
+							that.dom.grid.right.liner.scrollTop = that.dom.grid.left.liner.scrollTop;
+						}
+					}
+				} )
+				.on( wheelType, function(e) { // xxx update the destroy as well
+					// Pass horizontal scrolling through
+					var xDelta = e.type === 'wheel' ?
+						-e.originalEvent.deltaX :
+						e.originalEvent.wheelDeltaX;
+					that.dom.scroller.scrollLeft -= xDelta;
+				} );
+		}
+
+		if ( that.s.iRightColumns > 0 ) {
+			// When scrolling the right column, scroll the body and the left column
+			$(that.dom.grid.right.liner)
+				.on( 'mouseover.DTFC touchstart.DTFC', function () {
+					mouseController = 'right';
+				} )
+				.on( 'scroll.DTFC', function () {
+					if ( mouseController === 'right' ) {
+						that.dom.scroller.scrollTop = that.dom.grid.right.liner.scrollTop;
+						if ( that.s.iLeftColumns > 0 ) {
+							that.dom.grid.left.liner.scrollTop = that.dom.grid.right.liner.scrollTop;
+						}
+					}
+				} )
+				.on( wheelType, function(e) {
+					// Pass horizontal scrolling through
+					var xDelta = e.type === 'wheel' ?
+						-e.originalEvent.deltaX :
+						e.originalEvent.wheelDeltaX;
+					that.dom.scroller.scrollLeft -= xDelta;
+				} );
+		}
+
+		$(window).on( 'resize.DTFC', function () {
+			that._fnGridLayout.call( that );
+		} );
+
+		var bFirstDraw = true;
+		var jqTable = $(this.s.dt.nTable);
+
+		jqTable
+			.on( 'draw.dt.DTFC', function () {
+				that._fnDraw.call( that, bFirstDraw );
+				bFirstDraw = false;
+			} )
+			.on( 'column-sizing.dt.DTFC', function () {
+				that._fnColCalc();
+				that._fnGridLayout( that );
+			} )
+			.on( 'column-visibility.dt.DTFC', function () {
+				that._fnColCalc();
+				that._fnGridLayout( that );
+				that._fnDraw( true );
+			} )
+			.on( 'destroy.dt.DTFC', function () {
+				jqTable.off( 'column-sizing.dt.DTFC destroy.dt.DTFC draw.dt.DTFC' );
+
+				$(that.dom.scroller).off( 'scroll.DTFC mouseover.DTFC' );
+				$(window).off( 'resize.DTFC' );
+
+				$(that.dom.grid.left.liner).off( 'scroll.DTFC mouseover.DTFC '+wheelType );
+				$(that.dom.grid.left.wrapper).remove();
+
+				$(that.dom.grid.right.liner).off( 'scroll.DTFC mouseover.DTFC '+wheelType );
+				$(that.dom.grid.right.wrapper).remove();
+			} );
+
+		/* Get things right to start with - note that due to adjusting the columns, there must be
+		 * another redraw of the main table. It doesn't need to be a full redraw however.
+		 */
+		this._fnGridLayout();
+		this.s.dt.oInstance.fnDraw(false);
+	},
+
+
+	/**
+	 * Calculate the column widths for the grid layout
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnColCalc": function ()
+	{
+		var that = this;
+		var iLeftWidth = 0;
+		var iRightWidth = 0;
+
+		this.s.aiInnerWidths = [];
+		this.s.aiOuterWidths = [];
+
+		$.each( this.s.dt.aoColumns, function (i, col) {
+			var th = $(col.nTh);
+			var border;
+
+			if ( ! th.filter(':visible').length ) {
+				that.s.aiInnerWidths.push( 0 );
+				that.s.aiOuterWidths.push( 0 );
+			}
+			else
+			{
+				// Inner width is used to assign widths to cells
+				// Outer width is used to calculate the container
+				var iWidth = th.outerWidth();
+
+				// When working with the left most-cell, need to add on the
+				// table's border to the outerWidth, since we need to take
+				// account of it, but it isn't in any cell
+				if ( that.s.aiOuterWidths.length === 0 ) {
+					border = $(that.s.dt.nTable).css('border-left-width');
+					iWidth += typeof border === 'string' ? 1 : parseInt( border, 10 );
+				}
+
+				// Likewise with the final column on the right
+				if ( that.s.aiOuterWidths.length === that.s.dt.aoColumns.length-1 ) {
+					border = $(that.s.dt.nTable).css('border-right-width');
+					iWidth += typeof border === 'string' ? 1 : parseInt( border, 10 );
+				}
+
+				that.s.aiOuterWidths.push( iWidth );
+				that.s.aiInnerWidths.push( th.width() );
+
+				if ( i < that.s.iLeftColumns )
+				{
+					iLeftWidth += iWidth;
+				}
+
+				if ( that.s.iTableColumns-that.s.iRightColumns <= i )
+				{
+					iRightWidth += iWidth;
+				}
+			}
+		} );
+
+		this.s.iLeftWidth = iLeftWidth;
+		this.s.iRightWidth = iRightWidth;
+	},
+
+
+	/**
+	 * Set up the DOM for the fixed column. The way the layout works is to create a 1x3 grid
+	 * for the left column, the DataTable (for which we just reuse the scrolling element DataTable
+	 * puts into the DOM) and the right column. In each of he two fixed column elements there is a
+	 * grouping wrapper element and then a head, body and footer wrapper. In each of these we then
+	 * place the cloned header, body or footer tables. This effectively gives as 3x3 grid structure.
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnGridSetup": function ()
+	{
+		var that = this;
+		var oOverflow = this._fnDTOverflow();
+		var block;
+
+		this.dom.body = this.s.dt.nTable;
+		this.dom.header = this.s.dt.nTHead.parentNode;
+		this.dom.header.parentNode.parentNode.style.position = "relative";
+
+		var nSWrapper =
+			$('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;">'+
+				'<div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;">'+
+					'<div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div>'+
+					'<div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;">'+
+						'<div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div>'+
+					'</div>'+
+					'<div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div>'+
+				'</div>'+
+				'<div class="DTFC_RightWrapper" style="position:absolute; top:0; left:0;">'+
+					'<div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;">'+
+						'<div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div>'+
+					'</div>'+
+					'<div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;">'+
+						'<div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div>'+
+					'</div>'+
+					'<div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;">'+
+						'<div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div>'+
+					'</div>'+
+				'</div>'+
+			'</div>')[0];
+		var nLeft = nSWrapper.childNodes[0];
+		var nRight = nSWrapper.childNodes[1];
+
+		this.dom.grid.dt.parentNode.insertBefore( nSWrapper, this.dom.grid.dt );
+		nSWrapper.appendChild( this.dom.grid.dt );
+
+		this.dom.grid.wrapper = nSWrapper;
+
+		if ( this.s.iLeftColumns > 0 )
+		{
+			this.dom.grid.left.wrapper = nLeft;
+			this.dom.grid.left.head = nLeft.childNodes[0];
+			this.dom.grid.left.body = nLeft.childNodes[1];
+			this.dom.grid.left.liner = $('div.DTFC_LeftBodyLiner', nSWrapper)[0];
+
+			nSWrapper.appendChild( nLeft );
+		}
+
+		if ( this.s.iRightColumns > 0 )
+		{
+			this.dom.grid.right.wrapper = nRight;
+			this.dom.grid.right.head = nRight.childNodes[0];
+			this.dom.grid.right.body = nRight.childNodes[1];
+			this.dom.grid.right.liner = $('div.DTFC_RightBodyLiner', nSWrapper)[0];
+
+			block = $('div.DTFC_RightHeadBlocker', nSWrapper)[0];
+			block.style.width = oOverflow.bar+"px";
+			block.style.right = -oOverflow.bar+"px";
+			this.dom.grid.right.headBlock = block;
+
+			block = $('div.DTFC_RightFootBlocker', nSWrapper)[0];
+			block.style.width = oOverflow.bar+"px";
+			block.style.right = -oOverflow.bar+"px";
+			this.dom.grid.right.footBlock = block;
+
+			nSWrapper.appendChild( nRight );
+		}
+
+		if ( this.s.dt.nTFoot )
+		{
+			this.dom.footer = this.s.dt.nTFoot.parentNode;
+			if ( this.s.iLeftColumns > 0 )
+			{
+				this.dom.grid.left.foot = nLeft.childNodes[2];
+			}
+			if ( this.s.iRightColumns > 0 )
+			{
+				this.dom.grid.right.foot = nRight.childNodes[2];
+			}
+		}
+	},
+
+
+	/**
+	 * Style and position the grid used for the FixedColumns layout
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnGridLayout": function ()
+	{
+		var oGrid = this.dom.grid;
+		var iWidth = $(oGrid.wrapper).width();
+		var iBodyHeight = $(this.s.dt.nTable.parentNode).outerHeight();
+		var iFullHeight = $(this.s.dt.nTable.parentNode.parentNode).outerHeight();
+		var oOverflow = this._fnDTOverflow();
+		var
+			iLeftWidth = this.s.iLeftWidth,
+			iRightWidth = this.s.iRightWidth,
+			iRight;
+
+		// When x scrolling - don't paint the fixed columns over the x scrollbar
+		if ( oOverflow.x )
+		{
+			iBodyHeight -= oOverflow.bar;
+		}
+
+		oGrid.wrapper.style.height = iFullHeight+"px";
+
+		if ( this.s.iLeftColumns > 0 )
+		{
+			oGrid.left.wrapper.style.width = iLeftWidth+"px";
+			oGrid.left.wrapper.style.height = "1px";
+			oGrid.left.body.style.height = iBodyHeight+"px";
+			if ( oGrid.left.foot ) {
+				oGrid.left.foot.style.top = (oOverflow.x ? oOverflow.bar : 0)+"px"; // shift footer for scrollbar
+			}
+
+			oGrid.left.liner.style.width = (iLeftWidth+oOverflow.bar)+"px";
+			oGrid.left.liner.style.height = iBodyHeight+"px";
+		}
+
+		if ( this.s.iRightColumns > 0 )
+		{
+			iRight = iWidth - iRightWidth;
+			if ( oOverflow.y )
+			{
+				iRight -= oOverflow.bar;
+			}
+
+			oGrid.right.wrapper.style.width = iRightWidth+"px";
+			oGrid.right.wrapper.style.left = iRight+"px";
+			oGrid.right.wrapper.style.height = "1px";
+			oGrid.right.body.style.height = iBodyHeight+"px";
+			if ( oGrid.right.foot ) {
+				oGrid.right.foot.style.top = (oOverflow.x ? oOverflow.bar : 0)+"px";
+			}
+
+			oGrid.right.liner.style.width = (iRightWidth+oOverflow.bar)+"px";
+			oGrid.right.liner.style.height = iBodyHeight+"px";
+
+			oGrid.right.headBlock.style.display = oOverflow.y ? 'block' : 'none';
+			oGrid.right.footBlock.style.display = oOverflow.y ? 'block' : 'none';
+		}
+	},
+
+
+	/**
+	 * Get information about the DataTable's scrolling state - specifically if the table is scrolling
+	 * on either the x or y axis, and also the scrollbar width.
+	 *  @returns {object} Information about the DataTables scrolling state with the properties:
+	 *    'x', 'y' and 'bar'
+	 *  @private
+	 */
+	"_fnDTOverflow": function ()
+	{
+		var nTable = this.s.dt.nTable;
+		var nTableScrollBody = nTable.parentNode;
+		var out = {
+			"x": false,
+			"y": false,
+			"bar": this.s.dt.oScroll.iBarWidth
+		};
+
+		if ( nTable.offsetWidth > nTableScrollBody.clientWidth )
+		{
+			out.x = true;
+		}
+
+		if ( nTable.offsetHeight > nTableScrollBody.clientHeight )
+		{
+			out.y = true;
+		}
+
+		return out;
+	},
+
+
+	/**
+	 * Clone and position the fixed columns
+	 *  @returns {void}
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnDraw": function ( bAll )
+	{
+		this._fnGridLayout();
+		this._fnCloneLeft( bAll );
+		this._fnCloneRight( bAll );
+
+		/* Draw callback function */
+		if ( this.s.fnDrawCallback !== null )
+		{
+			this.s.fnDrawCallback.call( this, this.dom.clone.left, this.dom.clone.right );
+		}
+
+		/* Event triggering */
+		$(this).trigger( 'draw.dtfc', {
+			"leftClone": this.dom.clone.left,
+			"rightClone": this.dom.clone.right
+		} );
+	},
+
+
+	/**
+	 * Clone the right columns
+	 *  @returns {void}
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnCloneRight": function ( bAll )
+	{
+		if ( this.s.iRightColumns <= 0 ) {
+			return;
+		}
+
+		var that = this,
+			i, jq,
+			aiColumns = [];
+
+		for ( i=this.s.iTableColumns-this.s.iRightColumns ; i<this.s.iTableColumns ; i++ ) {
+			if ( this.s.dt.aoColumns[i].bVisible ) {
+				aiColumns.push( i );
+			}
+		}
+
+		this._fnClone( this.dom.clone.right, this.dom.grid.right, aiColumns, bAll );
+	},
+
+
+	/**
+	 * Clone the left columns
+	 *  @returns {void}
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnCloneLeft": function ( bAll )
+	{
+		if ( this.s.iLeftColumns <= 0 ) {
+			return;
+		}
+
+		var that = this,
+			i, jq,
+			aiColumns = [];
+
+		for ( i=0 ; i<this.s.iLeftColumns ; i++ ) {
+			if ( this.s.dt.aoColumns[i].bVisible ) {
+				aiColumns.push( i );
+			}
+		}
+
+		this._fnClone( this.dom.clone.left, this.dom.grid.left, aiColumns, bAll );
+	},
+
+
+	/**
+	 * Make a copy of the layout object for a header or footer element from DataTables. Note that
+	 * this method will clone the nodes in the layout object.
+	 *  @returns {Array} Copy of the layout array
+	 *  @param   {Object} aoOriginal Layout array from DataTables (aoHeader or aoFooter)
+	 *  @param   {Object} aiColumns Columns to copy
+	 *  @private
+	 */
+	"_fnCopyLayout": function ( aoOriginal, aiColumns )
+	{
+		var aReturn = [];
+		var aClones = [];
+		var aCloned = [];
+
+		for ( var i=0, iLen=aoOriginal.length ; i<iLen ; i++ )
+		{
+			var aRow = [];
+			aRow.nTr = $(aoOriginal[i].nTr).clone(true, true)[0];
+
+			for ( var j=0, jLen=this.s.iTableColumns ; j<jLen ; j++ )
+			{
+				if ( $.inArray( j, aiColumns ) === -1 )
+				{
+					continue;
+				}
+
+				var iCloned = $.inArray( aoOriginal[i][j].cell, aCloned );
+				if ( iCloned === -1 )
+				{
+					var nClone = $(aoOriginal[i][j].cell).clone(true, true)[0];
+					aClones.push( nClone );
+					aCloned.push( aoOriginal[i][j].cell );
+
+					aRow.push( {
+						"cell": nClone,
+						"unique": aoOriginal[i][j].unique
+					} );
+				}
+				else
+				{
+					aRow.push( {
+						"cell": aClones[ iCloned ],
+						"unique": aoOriginal[i][j].unique
+					} );
+				}
+			}
+
+			aReturn.push( aRow );
+		}
+
+		return aReturn;
+	},
+
+
+	/**
+	 * Clone the DataTable nodes and place them in the DOM (sized correctly)
+	 *  @returns {void}
+	 *  @param   {Object} oClone Object containing the header, footer and body cloned DOM elements
+	 *  @param   {Object} oGrid Grid object containing the display grid elements for the cloned
+	 *                    column (left or right)
+	 *  @param   {Array} aiColumns Column indexes which should be operated on from the DataTable
+	 *  @param   {Boolean} bAll Indicate if the header and footer should be updated as well (true)
+	 *  @private
+	 */
+	"_fnClone": function ( oClone, oGrid, aiColumns, bAll )
+	{
+		var that = this,
+			i, iLen, j, jLen, jq, nTarget, iColumn, nClone, iIndex, aoCloneLayout,
+			jqCloneThead, aoFixedHeader;
+
+		/*
+		 * Header
+		 */
+		if ( bAll )
+		{
+			if ( oClone.header !== null )
+			{
+				oClone.header.parentNode.removeChild( oClone.header );
+			}
+			oClone.header = $(this.dom.header).clone(true, true)[0];
+			oClone.header.className += " DTFC_Cloned";
+			oClone.header.style.width = "100%";
+			oGrid.head.appendChild( oClone.header );
+
+			/* Copy the DataTables layout cache for the header for our floating column */
+			aoCloneLayout = this._fnCopyLayout( this.s.dt.aoHeader, aiColumns );
+			jqCloneThead = $('>thead', oClone.header);
+			jqCloneThead.empty();
+
+			/* Add the created cloned TR elements to the table */
+			for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+			{
+				jqCloneThead[0].appendChild( aoCloneLayout[i].nTr );
+			}
+
+			/* Use the handy _fnDrawHead function in DataTables to do the rowspan/colspan
+			 * calculations for us
+			 */
+			this.s.dt.oApi._fnDrawHead( this.s.dt, aoCloneLayout, true );
+		}
+		else
+		{
+			/* To ensure that we copy cell classes exactly, regardless of colspan, multiple rows
+			 * etc, we make a copy of the header from the DataTable again, but don't insert the
+			 * cloned cells, just copy the classes across. To get the matching layout for the
+			 * fixed component, we use the DataTables _fnDetectHeader method, allowing 1:1 mapping
+			 */
+			aoCloneLayout = this._fnCopyLayout( this.s.dt.aoHeader, aiColumns );
+			aoFixedHeader=[];
+
+			this.s.dt.oApi._fnDetectHeader( aoFixedHeader, $('>thead', oClone.header)[0] );
+
+			for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+			{
+				for ( j=0, jLen=aoCloneLayout[i].length ; j<jLen ; j++ )
+				{
+					aoFixedHeader[i][j].cell.className = aoCloneLayout[i][j].cell.className;
+
+					// If jQuery UI theming is used we need to copy those elements as well
+					$('span.DataTables_sort_icon', aoFixedHeader[i][j].cell).each( function () {
+						this.className = $('span.DataTables_sort_icon', aoCloneLayout[i][j].cell)[0].className;
+					} );
+				}
+			}
+		}
+		this._fnEqualiseHeights( 'thead', this.dom.header, oClone.header );
+
+		/*
+		 * Body
+		 */
+		if ( this.s.sHeightMatch == 'auto' )
+		{
+			/* Remove any heights which have been applied already and let the browser figure it out */
+			$('>tbody>tr', that.dom.body).css('height', 'auto');
+		}
+
+		if ( oClone.body !== null )
+		{
+			oClone.body.parentNode.removeChild( oClone.body );
+			oClone.body = null;
+		}
+
+		oClone.body = $(this.dom.body).clone(true)[0];
+		oClone.body.className += " DTFC_Cloned";
+		oClone.body.style.paddingBottom = this.s.dt.oScroll.iBarWidth+"px";
+		oClone.body.style.marginBottom = (this.s.dt.oScroll.iBarWidth*2)+"px"; /* For IE */
+		if ( oClone.body.getAttribute('id') !== null )
+		{
+			oClone.body.removeAttribute('id');
+		}
+
+		$('>thead>tr', oClone.body).empty();
+		$('>tfoot', oClone.body).remove();
+
+		var nBody = $('tbody', oClone.body)[0];
+		$(nBody).empty();
+		if ( this.s.dt.aiDisplay.length > 0 )
+		{
+			/* Copy the DataTables' header elements to force the column width in exactly the
+			 * same way that DataTables does it - have the header element, apply the width and
+			 * colapse it down
+			 */
+			var nInnerThead = $('>thead>tr', oClone.body)[0];
+			for ( iIndex=0 ; iIndex<aiColumns.length ; iIndex++ )
+			{
+				iColumn = aiColumns[iIndex];
+
+				nClone = $(this.s.dt.aoColumns[iColumn].nTh).clone(true)[0];
+				nClone.innerHTML = "";
+
+				var oStyle = nClone.style;
+				oStyle.paddingTop = "0";
+				oStyle.paddingBottom = "0";
+				oStyle.borderTopWidth = "0";
+				oStyle.borderBottomWidth = "0";
+				oStyle.height = 0;
+				oStyle.width = that.s.aiInnerWidths[iColumn]+"px";
+
+				nInnerThead.appendChild( nClone );
+			}
+
+			/* Add in the tbody elements, cloning form the master table */
+			$('>tbody>tr', that.dom.body).each( function (z) {
+				var n = this.cloneNode(false);
+				n.removeAttribute('id');
+				var i = that.s.dt.oFeatures.bServerSide===false ?
+					that.s.dt.aiDisplay[ that.s.dt._iDisplayStart+z ] : z;
+				for ( iIndex=0 ; iIndex<aiColumns.length ; iIndex++ )
+				{
+					var aTds = that.s.dt.aoData[i].anCells || that.s.dt.oApi._fnGetTdNodes( that.s.dt, i );
+					iColumn = aiColumns[iIndex];
+
+					if ( aTds.length > 0 )
+					{
+						nClone = $( aTds[iColumn] ).clone(true, true)[0];
+						n.appendChild( nClone );
+					}
+				}
+				nBody.appendChild( n );
+			} );
+		}
+		else
+		{
+			$('>tbody>tr', that.dom.body).each( function (z) {
+				nClone = this.cloneNode(true);
+				nClone.className += ' DTFC_NoData';
+				$('td', nClone).html('');
+				nBody.appendChild( nClone );
+			} );
+		}
+
+		oClone.body.style.width = "100%";
+		oClone.body.style.margin = "0";
+		oClone.body.style.padding = "0";
+
+		if ( bAll )
+		{
+			if ( typeof this.s.dt.oScroller != 'undefined' )
+			{
+				oGrid.liner.appendChild( this.s.dt.oScroller.dom.force.cloneNode(true) );
+			}
+		}
+		oGrid.liner.appendChild( oClone.body );
+
+		this._fnEqualiseHeights( 'tbody', that.dom.body, oClone.body );
+
+		/*
+		 * Footer
+		 */
+		if ( this.s.dt.nTFoot !== null )
+		{
+			if ( bAll )
+			{
+				if ( oClone.footer !== null )
+				{
+					oClone.footer.parentNode.removeChild( oClone.footer );
+				}
+				oClone.footer = $(this.dom.footer).clone(true, true)[0];
+				oClone.footer.className += " DTFC_Cloned";
+				oClone.footer.style.width = "100%";
+				oGrid.foot.appendChild( oClone.footer );
+
+				/* Copy the footer just like we do for the header */
+				aoCloneLayout = this._fnCopyLayout( this.s.dt.aoFooter, aiColumns );
+				var jqCloneTfoot = $('>tfoot', oClone.footer);
+				jqCloneTfoot.empty();
+
+				for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+				{
+					jqCloneTfoot[0].appendChild( aoCloneLayout[i].nTr );
+				}
+				this.s.dt.oApi._fnDrawHead( this.s.dt, aoCloneLayout, true );
+			}
+			else
+			{
+				aoCloneLayout = this._fnCopyLayout( this.s.dt.aoFooter, aiColumns );
+				var aoCurrFooter=[];
+
+				this.s.dt.oApi._fnDetectHeader( aoCurrFooter, $('>tfoot', oClone.footer)[0] );
+
+				for ( i=0, iLen=aoCloneLayout.length ; i<iLen ; i++ )
+				{
+					for ( j=0, jLen=aoCloneLayout[i].length ; j<jLen ; j++ )
+					{
+						aoCurrFooter[i][j].cell.className = aoCloneLayout[i][j].cell.className;
+					}
+				}
+			}
+			this._fnEqualiseHeights( 'tfoot', this.dom.footer, oClone.footer );
+		}
+
+		/* Equalise the column widths between the header footer and body - body get's priority */
+		var anUnique = this.s.dt.oApi._fnGetUniqueThs( this.s.dt, $('>thead', oClone.header)[0] );
+		$(anUnique).each( function (i) {
+			iColumn = aiColumns[i];
+			this.style.width = that.s.aiInnerWidths[iColumn]+"px";
+		} );
+
+		if ( that.s.dt.nTFoot !== null )
+		{
+			anUnique = this.s.dt.oApi._fnGetUniqueThs( this.s.dt, $('>tfoot', oClone.footer)[0] );
+			$(anUnique).each( function (i) {
+				iColumn = aiColumns[i];
+				this.style.width = that.s.aiInnerWidths[iColumn]+"px";
+			} );
+		}
+	},
+
+
+	/**
+	 * From a given table node (THEAD etc), get a list of TR direct child elements
+	 *  @param   {Node} nIn Table element to search for TR elements (THEAD, TBODY or TFOOT element)
+	 *  @returns {Array} List of TR elements found
+	 *  @private
+	 */
+	"_fnGetTrNodes": function ( nIn )
+	{
+		var aOut = [];
+		for ( var i=0, iLen=nIn.childNodes.length ; i<iLen ; i++ )
+		{
+			if ( nIn.childNodes[i].nodeName.toUpperCase() == "TR" )
+			{
+				aOut.push( nIn.childNodes[i] );
+			}
+		}
+		return aOut;
+	},
+
+
+	/**
+	 * Equalise the heights of the rows in a given table node in a cross browser way
+	 *  @returns {void}
+	 *  @param   {String} nodeName Node type - thead, tbody or tfoot
+	 *  @param   {Node} original Original node to take the heights from
+	 *  @param   {Node} clone Copy the heights to
+	 *  @private
+	 */
+	"_fnEqualiseHeights": function ( nodeName, original, clone )
+	{
+		if ( this.s.sHeightMatch == 'none' && nodeName !== 'thead' && nodeName !== 'tfoot' )
+		{
+			return;
+		}
+
+		var that = this,
+			i, iLen, iHeight, iHeight2, iHeightOriginal, iHeightClone,
+			rootOriginal = original.getElementsByTagName(nodeName)[0],
+			rootClone    = clone.getElementsByTagName(nodeName)[0],
+			jqBoxHack    = $('>'+nodeName+'>tr:eq(0)', original).children(':first'),
+			iBoxHack     = jqBoxHack.outerHeight() - jqBoxHack.height(),
+			anOriginal   = this._fnGetTrNodes( rootOriginal ),
+			anClone      = this._fnGetTrNodes( rootClone ),
+			heights      = [];
+
+		for ( i=0, iLen=anClone.length ; i<iLen ; i++ )
+		{
+			iHeightOriginal = anOriginal[i].offsetHeight;
+			iHeightClone = anClone[i].offsetHeight;
+			iHeight = iHeightClone > iHeightOriginal ? iHeightClone : iHeightOriginal;
+
+			if ( this.s.sHeightMatch == 'semiauto' )
+			{
+				anOriginal[i]._DTTC_iHeight = iHeight;
+			}
+
+			heights.push( iHeight );
+		}
+
+		for ( i=0, iLen=anClone.length ; i<iLen ; i++ )
+		{
+			anClone[i].style.height = heights[i]+"px";
+			anOriginal[i].style.height = heights[i]+"px";
+		}
+	}
+};
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Statics
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * FixedColumns default settings for initialisation
+ *  @name FixedColumns.defaults
+ *  @namespace
+ *  @static
+ */
+FixedColumns.defaults = /** @lends FixedColumns.defaults */{
+	/**
+	 * Number of left hand columns to fix in position
+	 *  @type     int
+	 *  @default  1
+	 *  @static
+	 *  @example
+	 *      var  = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "leftColumns": 2
+	 *      } );
+	 */
+	"iLeftColumns": 1,
+
+	/**
+	 * Number of right hand columns to fix in position
+	 *  @type     int
+	 *  @default  0
+	 *  @static
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "rightColumns": 1
+	 *      } );
+	 */
+	"iRightColumns": 0,
+
+	/**
+	 * Draw callback function which is called when FixedColumns has redrawn the fixed assets
+	 *  @type     function(object, object):void
+	 *  @default  null
+	 *  @static
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "drawCallback": function () {
+	 *	            alert( "FixedColumns redraw" );
+	 *	        }
+	 *      } );
+	 */
+	"fnDrawCallback": null,
+
+	/**
+	 * Height matching algorthim to use. This can be "none" which will result in no height
+	 * matching being applied by FixedColumns (height matching could be forced by CSS in this
+	 * case), "semiauto" whereby the height calculation will be performed once, and the result
+	 * cached to be used again (fnRecalculateHeight can be used to force recalculation), or
+	 * "auto" when height matching is performed on every draw (slowest but must accurate)
+	 *  @type     string
+	 *  @default  semiauto
+	 *  @static
+	 *  @example
+	 *      var table = $('#example').dataTable( {
+	 *          "scrollX": "100%"
+	 *      } );
+	 *      new $.fn.dataTable.fixedColumns( table, {
+	 *          "heightMatch": "auto"
+	 *      } );
+	 */
+	"sHeightMatch": "semiauto"
+};
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * FixedColumns version
+ *  @name      FixedColumns.version
+ *  @type      String
+ *  @default   See code
+ *  @static
+ */
+FixedColumns.version = "3.0.2";
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Fired events (for documentation)
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * Event fired whenever FixedColumns redraws the fixed columns (i.e. clones the table elements from the main DataTable). This will occur whenever the DataTable that the FixedColumns instance is attached does its own draw.
+ * @name FixedColumns#draw.dtfc
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o Event parameters from FixedColumns
+ * @param {object} o.leftClone Instance's object dom.clone.left for easy reference. This object contains references to the left fixed clumn column's nodes
+ * @param {object} o.rightClone Instance's object dom.clone.right for easy reference. This object contains references to the right fixed clumn column's nodes
+ */
+
+
+// Make FixedColumns accessible from the DataTables instance
+$.fn.dataTable.FixedColumns = FixedColumns;
+$.fn.DataTable.FixedColumns = FixedColumns;
+
+
+return FixedColumns;
+}; // /factory
+
+
+// Define as an AMD module if possible
+if ( typeof define === 'function' && define.amd ) {
+	define( ['jquery', 'datatables'], factory );
+}
+else if ( typeof exports === 'object' ) {
+    // Node/CommonJS
+    factory( require('jquery'), require('datatables') );
+}
+else if ( jQuery && !jQuery.fn.dataTable.FixedColumns ) {
+	// Otherwise simply initialise as normal, stopping multiple evaluation
+	factory( jQuery, jQuery.fn.dataTable );
+}
+
+
+})(window, document);
+
diff --git a/public/admin/js/DataTables/extensions/FixedColumns/js/dataTables.fixedColumns.min.js b/public/admin/js/DataTables/extensions/FixedColumns/js/dataTables.fixedColumns.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f1291b2e3ef0bf18645944529723858c50ea775
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedColumns/js/dataTables.fixedColumns.min.js
@@ -0,0 +1,30 @@
+/*!
+ FixedColumns 3.0.2
+ ©2010-2014 SpryMedia Ltd - datatables.net/license
+*/
+(function(q,r){var o=function(d){var k=function(a,b){var c=this;if(!this instanceof k)alert("FixedColumns warning: FixedColumns must be initialised with the 'new' keyword.");else{"undefined"==typeof b&&(b={});d.fn.dataTable.camelToHungarian&&d.fn.dataTable.camelToHungarian(k.defaults,b);var g=d.fn.dataTable.Api?(new d.fn.dataTable.Api(a)).settings()[0]:a.fnSettings();this.s={dt:g,iTableColumns:g.aoColumns.length,aiOuterWidths:[],aiInnerWidths:[]};this.dom={scroller:null,header:null,body:null,footer:null,
+grid:{wrapper:null,dt:null,left:{wrapper:null,head:null,body:null,foot:null},right:{wrapper:null,head:null,body:null,foot:null}},clone:{left:{header:null,body:null,footer:null},right:{header:null,body:null,footer:null}}};g._oFixedColumns=this;g._bInitComplete?this._fnConstruct(b):g.oApi._fnCallbackReg(g,"aoInitComplete",function(){c._fnConstruct(b)},"FixedColumns")}};k.prototype={fnUpdate:function(){this._fnDraw(!0)},fnRedrawLayout:function(){this._fnColCalc();this._fnGridLayout();this.fnUpdate()},
+fnRecalculateHeight:function(a){delete a._DTTC_iHeight;a.style.height="auto"},fnSetRowHeight:function(a,b){a.style.height=b+"px"},fnGetPosition:function(a){var b=this.s.dt.oInstance;if(d(a).parents(".DTFC_Cloned").length){if("tr"===a.nodeName.toLowerCase())return a=d(a).index(),b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]);var c=d(a).index(),a=d(a.parentNode).index();return[b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]),c,b.oApi._fnVisibleToColumnIndex(this.s.dt,c)]}return b.fnGetPosition(a)},_fnConstruct:function(a){var b=
+this;if("function"!=typeof this.s.dt.oInstance.fnVersionCheck||!0!==this.s.dt.oInstance.fnVersionCheck("1.8.0"))alert("FixedColumns "+k.VERSION+" required DataTables 1.8.0 or later. Please upgrade your DataTables installation");else if(""===this.s.dt.oScroll.sX)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"FixedColumns is not needed (no x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for column fixing when scrolling is not enabled");else{this.s=d.extend(!0,this.s,
+k.defaults,a);a=this.s.dt.oClasses;this.dom.grid.dt=d(this.s.dt.nTable).parents("div."+a.sScrollWrapper)[0];this.dom.scroller=d("div."+a.sScrollBody,this.dom.grid.dt)[0];this._fnColCalc();this._fnGridSetup();var c;d(this.dom.scroller).on("mouseover.DTFC touchstart.DTFC",function(){c="main"}).on("scroll.DTFC",function(){if("main"===c&&(0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.scroller.scrollTop),0<b.s.iRightColumns))b.dom.grid.right.liner.scrollTop=b.dom.scroller.scrollTop});var g=
+"onwheel"in r.createElement("div")?"wheel.DTFC":"mousewheel.DTFC";if(0<b.s.iLeftColumns)d(b.dom.grid.left.liner).on("mouseover.DTFC touchstart.DTFC",function(){c="left"}).on("scroll.DTFC",function(){"left"===c&&(b.dom.scroller.scrollTop=b.dom.grid.left.liner.scrollTop,0<b.s.iRightColumns&&(b.dom.grid.right.liner.scrollTop=b.dom.grid.left.liner.scrollTop))}).on(g,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});if(0<b.s.iRightColumns)d(b.dom.grid.right.liner).on("mouseover.DTFC touchstart.DTFC",
+function(){c="right"}).on("scroll.DTFC",function(){"right"===c&&(b.dom.scroller.scrollTop=b.dom.grid.right.liner.scrollTop,0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.grid.right.liner.scrollTop))}).on(g,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});d(q).on("resize.DTFC",function(){b._fnGridLayout.call(b)});var f=!0,e=d(this.s.dt.nTable);e.on("draw.dt.DTFC",function(){b._fnDraw.call(b,f);f=!1}).on("column-sizing.dt.DTFC",
+function(){b._fnColCalc();b._fnGridLayout(b)}).on("column-visibility.dt.DTFC",function(){b._fnColCalc();b._fnGridLayout(b);b._fnDraw(!0)}).on("destroy.dt.DTFC",function(){e.off("column-sizing.dt.DTFC destroy.dt.DTFC draw.dt.DTFC");d(b.dom.scroller).off("scroll.DTFC mouseover.DTFC");d(q).off("resize.DTFC");d(b.dom.grid.left.liner).off("scroll.DTFC mouseover.DTFC "+g);d(b.dom.grid.left.wrapper).remove();d(b.dom.grid.right.liner).off("scroll.DTFC mouseover.DTFC "+g);d(b.dom.grid.right.wrapper).remove()});
+this._fnGridLayout();this.s.dt.oInstance.fnDraw(!1)}},_fnColCalc:function(){var a=this,b=0,c=0;this.s.aiInnerWidths=[];this.s.aiOuterWidths=[];d.each(this.s.dt.aoColumns,function(g,f){var e=d(f.nTh),h;if(e.filter(":visible").length){var i=e.outerWidth();0===a.s.aiOuterWidths.length&&(h=d(a.s.dt.nTable).css("border-left-width"),i+="string"===typeof h?1:parseInt(h,10));a.s.aiOuterWidths.length===a.s.dt.aoColumns.length-1&&(h=d(a.s.dt.nTable).css("border-right-width"),i+="string"===typeof h?1:parseInt(h,
+10));a.s.aiOuterWidths.push(i);a.s.aiInnerWidths.push(e.width());g<a.s.iLeftColumns&&(b+=i);a.s.iTableColumns-a.s.iRightColumns<=g&&(c+=i)}else a.s.aiInnerWidths.push(0),a.s.aiOuterWidths.push(0)});this.s.iLeftWidth=b;this.s.iRightWidth=c},_fnGridSetup:function(){var a=this._fnDTOverflow(),b;this.dom.body=this.s.dt.nTable;this.dom.header=this.s.dt.nTHead.parentNode;this.dom.header.parentNode.parentNode.style.position="relative";var c=d('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;"><div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div><div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div></div><div class="DTFC_RightWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div><div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div></div></div>')[0],
+g=c.childNodes[0],f=c.childNodes[1];this.dom.grid.dt.parentNode.insertBefore(c,this.dom.grid.dt);c.appendChild(this.dom.grid.dt);this.dom.grid.wrapper=c;0<this.s.iLeftColumns&&(this.dom.grid.left.wrapper=g,this.dom.grid.left.head=g.childNodes[0],this.dom.grid.left.body=g.childNodes[1],this.dom.grid.left.liner=d("div.DTFC_LeftBodyLiner",c)[0],c.appendChild(g));0<this.s.iRightColumns&&(this.dom.grid.right.wrapper=f,this.dom.grid.right.head=f.childNodes[0],this.dom.grid.right.body=f.childNodes[1],this.dom.grid.right.liner=
+d("div.DTFC_RightBodyLiner",c)[0],b=d("div.DTFC_RightHeadBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.headBlock=b,b=d("div.DTFC_RightFootBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.footBlock=b,c.appendChild(f));if(this.s.dt.nTFoot&&(this.dom.footer=this.s.dt.nTFoot.parentNode,0<this.s.iLeftColumns&&(this.dom.grid.left.foot=g.childNodes[2]),0<this.s.iRightColumns))this.dom.grid.right.foot=f.childNodes[2]},_fnGridLayout:function(){var a=
+this.dom.grid,b=d(a.wrapper).width(),c=d(this.s.dt.nTable.parentNode).outerHeight(),g=d(this.s.dt.nTable.parentNode.parentNode).outerHeight(),f=this._fnDTOverflow(),e=this.s.iLeftWidth,h=this.s.iRightWidth;f.x&&(c-=f.bar);a.wrapper.style.height=g+"px";0<this.s.iLeftColumns&&(a.left.wrapper.style.width=e+"px",a.left.wrapper.style.height="1px",a.left.body.style.height=c+"px",a.left.foot&&(a.left.foot.style.top=(f.x?f.bar:0)+"px"),a.left.liner.style.width=e+f.bar+"px",a.left.liner.style.height=c+"px");
+0<this.s.iRightColumns&&(b-=h,f.y&&(b-=f.bar),a.right.wrapper.style.width=h+"px",a.right.wrapper.style.left=b+"px",a.right.wrapper.style.height="1px",a.right.body.style.height=c+"px",a.right.foot&&(a.right.foot.style.top=(f.x?f.bar:0)+"px"),a.right.liner.style.width=h+f.bar+"px",a.right.liner.style.height=c+"px",a.right.headBlock.style.display=f.y?"block":"none",a.right.footBlock.style.display=f.y?"block":"none")},_fnDTOverflow:function(){var a=this.s.dt.nTable,b=a.parentNode,c={x:!1,y:!1,bar:this.s.dt.oScroll.iBarWidth};
+a.offsetWidth>b.clientWidth&&(c.x=!0);a.offsetHeight>b.clientHeight&&(c.y=!0);return c},_fnDraw:function(a){this._fnGridLayout();this._fnCloneLeft(a);this._fnCloneRight(a);null!==this.s.fnDrawCallback&&this.s.fnDrawCallback.call(this,this.dom.clone.left,this.dom.clone.right);d(this).trigger("draw.dtfc",{leftClone:this.dom.clone.left,rightClone:this.dom.clone.right})},_fnCloneRight:function(a){if(!(0>=this.s.iRightColumns)){var b,c=[];for(b=this.s.iTableColumns-this.s.iRightColumns;b<this.s.iTableColumns;b++)this.s.dt.aoColumns[b].bVisible&&
+c.push(b);this._fnClone(this.dom.clone.right,this.dom.grid.right,c,a)}},_fnCloneLeft:function(a){if(!(0>=this.s.iLeftColumns)){var b,c=[];for(b=0;b<this.s.iLeftColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.left,this.dom.grid.left,c,a)}},_fnCopyLayout:function(a,b){for(var c=[],g=[],f=[],e=0,h=a.length;e<h;e++){var i=[];i.nTr=d(a[e].nTr).clone(!0,!0)[0];for(var j=0,n=this.s.iTableColumns;j<n;j++)if(-1!==d.inArray(j,b)){var l=d.inArray(a[e][j].cell,f);-1===l?(l=
+d(a[e][j].cell).clone(!0,!0)[0],g.push(l),f.push(a[e][j].cell),i.push({cell:l,unique:a[e][j].unique})):i.push({cell:g[l],unique:a[e][j].unique})}c.push(i)}return c},_fnClone:function(a,b,c,g){var f=this,e,h,i,j,n,l,k,m,p;if(g){null!==a.header&&a.header.parentNode.removeChild(a.header);a.header=d(this.dom.header).clone(!0,!0)[0];a.header.className+=" DTFC_Cloned";a.header.style.width="100%";b.head.appendChild(a.header);m=this._fnCopyLayout(this.s.dt.aoHeader,c);j=d(">thead",a.header);j.empty();e=0;
+for(h=m.length;e<h;e++)j[0].appendChild(m[e].nTr);this.s.dt.oApi._fnDrawHead(this.s.dt,m,!0)}else{m=this._fnCopyLayout(this.s.dt.aoHeader,c);p=[];this.s.dt.oApi._fnDetectHeader(p,d(">thead",a.header)[0]);e=0;for(h=m.length;e<h;e++){i=0;for(j=m[e].length;i<j;i++)p[e][i].cell.className=m[e][i].cell.className,d("span.DataTables_sort_icon",p[e][i].cell).each(function(){this.className=d("span.DataTables_sort_icon",m[e][i].cell)[0].className})}}this._fnEqualiseHeights("thead",this.dom.header,a.header);
+"auto"==this.s.sHeightMatch&&d(">tbody>tr",f.dom.body).css("height","auto");null!==a.body&&(a.body.parentNode.removeChild(a.body),a.body=null);a.body=d(this.dom.body).clone(!0)[0];a.body.className+=" DTFC_Cloned";a.body.style.paddingBottom=this.s.dt.oScroll.iBarWidth+"px";a.body.style.marginBottom=2*this.s.dt.oScroll.iBarWidth+"px";null!==a.body.getAttribute("id")&&a.body.removeAttribute("id");d(">thead>tr",a.body).empty();d(">tfoot",a.body).remove();var o=d("tbody",a.body)[0];d(o).empty();if(0<this.s.dt.aiDisplay.length){h=
+d(">thead>tr",a.body)[0];for(k=0;k<c.length;k++)n=c[k],l=d(this.s.dt.aoColumns[n].nTh).clone(!0)[0],l.innerHTML="",j=l.style,j.paddingTop="0",j.paddingBottom="0",j.borderTopWidth="0",j.borderBottomWidth="0",j.height=0,j.width=f.s.aiInnerWidths[n]+"px",h.appendChild(l);d(">tbody>tr",f.dom.body).each(function(a){var b=this.cloneNode(false);b.removeAttribute("id");a=f.s.dt.oFeatures.bServerSide===false?f.s.dt.aiDisplay[f.s.dt._iDisplayStart+a]:a;for(k=0;k<c.length;k++){var e=f.s.dt.aoData[a].anCells||
+f.s.dt.oApi._fnGetTdNodes(f.s.dt,a);n=c[k];if(e.length>0){l=d(e[n]).clone(true,true)[0];b.appendChild(l)}}o.appendChild(b)})}else d(">tbody>tr",f.dom.body).each(function(){l=this.cloneNode(true);l.className=l.className+" DTFC_NoData";d("td",l).html("");o.appendChild(l)});a.body.style.width="100%";a.body.style.margin="0";a.body.style.padding="0";g&&"undefined"!=typeof this.s.dt.oScroller&&b.liner.appendChild(this.s.dt.oScroller.dom.force.cloneNode(!0));b.liner.appendChild(a.body);this._fnEqualiseHeights("tbody",
+f.dom.body,a.body);if(null!==this.s.dt.nTFoot){if(g){null!==a.footer&&a.footer.parentNode.removeChild(a.footer);a.footer=d(this.dom.footer).clone(!0,!0)[0];a.footer.className+=" DTFC_Cloned";a.footer.style.width="100%";b.foot.appendChild(a.footer);m=this._fnCopyLayout(this.s.dt.aoFooter,c);b=d(">tfoot",a.footer);b.empty();e=0;for(h=m.length;e<h;e++)b[0].appendChild(m[e].nTr);this.s.dt.oApi._fnDrawHead(this.s.dt,m,!0)}else{m=this._fnCopyLayout(this.s.dt.aoFooter,c);b=[];this.s.dt.oApi._fnDetectHeader(b,
+d(">tfoot",a.footer)[0]);e=0;for(h=m.length;e<h;e++){i=0;for(j=m[e].length;i<j;i++)b[e][i].cell.className=m[e][i].cell.className}}this._fnEqualiseHeights("tfoot",this.dom.footer,a.footer)}b=this.s.dt.oApi._fnGetUniqueThs(this.s.dt,d(">thead",a.header)[0]);d(b).each(function(a){n=c[a];this.style.width=f.s.aiInnerWidths[n]+"px"});null!==f.s.dt.nTFoot&&(b=this.s.dt.oApi._fnGetUniqueThs(this.s.dt,d(">tfoot",a.footer)[0]),d(b).each(function(a){n=c[a];this.style.width=f.s.aiInnerWidths[n]+"px"}))},_fnGetTrNodes:function(a){for(var b=
+[],c=0,d=a.childNodes.length;c<d;c++)"TR"==a.childNodes[c].nodeName.toUpperCase()&&b.push(a.childNodes[c]);return b},_fnEqualiseHeights:function(a,b,c){if(!("none"==this.s.sHeightMatch&&"thead"!==a&&"tfoot"!==a)){var g,f,e=b.getElementsByTagName(a)[0],c=c.getElementsByTagName(a)[0],a=d(">"+a+">tr:eq(0)",b).children(":first");a.outerHeight();a.height();for(var e=this._fnGetTrNodes(e),b=this._fnGetTrNodes(c),h=[],c=0,a=b.length;c<a;c++)g=e[c].offsetHeight,f=b[c].offsetHeight,g=f>g?f:g,"semiauto"==this.s.sHeightMatch&&
+(e[c]._DTTC_iHeight=g),h.push(g);c=0;for(a=b.length;c<a;c++)b[c].style.height=h[c]+"px",e[c].style.height=h[c]+"px"}}};k.defaults={iLeftColumns:1,iRightColumns:0,fnDrawCallback:null,sHeightMatch:"semiauto"};k.version="3.0.2";d.fn.dataTable.FixedColumns=k;return d.fn.DataTable.FixedColumns=k};"function"===typeof define&&define.amd?define(["jquery","datatables"],o):"object"===typeof exports?o(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.FixedColumns&&o(jQuery,jQuery.fn.dataTable)})(window,
+document);
diff --git a/public/admin/js/DataTables/extensions/FixedHeader/Readme.txt b/public/admin/js/DataTables/extensions/FixedHeader/Readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..875e05176abdf04dfc9c069e86f99f2f16eba564
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedHeader/Readme.txt
@@ -0,0 +1,36 @@
+# FixedHeader
+
+At times it can be useful to ensure that column titles will remain always visible on a table, even when a user scrolls down a table. The FixedHeader plug-in for DataTables will float the 'thead' element above the table at all times to help address this issue. The column titles also remain click-able to perform sorting. Key features include:
+
+* Fix the header to the top of the window
+* Ability to fix the footer and left / right columns as well
+* z-Index ordering options
+
+
+# Installation
+
+To use FixedHeader, first download DataTables ( http://datatables.net/download ) and place the unzipped FixedHeader package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
+
+
+# Basic usage
+
+FixedHeader is initialised using the `$.fn.dataTable.FixedHeader()` object. For example:
+
+```js
+$(document).ready( function () {
+    var table = $('#example').dataTable();
+    new $.fn.dataTable.FixedHeader( table );
+} );
+```
+
+
+# Documentation / support
+
+* Documentation: http://datatables.net/extensions/FixedHeader/
+* DataTables support forums: http://datatables.net/forums
+
+
+# GitHub
+
+If you fancy getting involved with the development of FixedHeader and help make it better, please refer to its GitHub repo: https://github.com/DataTables/FixedHeader
+
diff --git a/public/admin/js/DataTables/extensions/FixedHeader/css/dataTables.fixedHeader.css b/public/admin/js/DataTables/extensions/FixedHeader/css/dataTables.fixedHeader.css
new file mode 100644
index 0000000000000000000000000000000000000000..724317a6edbc65145267ac79fc202c21e6777c2f
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedHeader/css/dataTables.fixedHeader.css
@@ -0,0 +1,7 @@
+
+
+div.FixedHeader_Cloned th,
+div.FixedHeader_Cloned td {
+	background-color: white !important;
+}
+
diff --git a/public/admin/js/DataTables/extensions/FixedHeader/css/dataTables.fixedHeader.min.css b/public/admin/js/DataTables/extensions/FixedHeader/css/dataTables.fixedHeader.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..e276a91a8546ad72d1933022d1124fefe46d901a
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedHeader/css/dataTables.fixedHeader.min.css
@@ -0,0 +1 @@
+div.FixedHeader_Cloned th,div.FixedHeader_Cloned td{background-color:white !important}
diff --git a/public/admin/js/DataTables/extensions/FixedHeader/examples/header_footer.html b/public/admin/js/DataTables/extensions/FixedHeader/examples/header_footer.html
new file mode 100644
index 0000000000000000000000000000000000000000..97aae29842b205dfb000df5d6d52de1af125b464
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedHeader/examples/header_footer.html
@@ -0,0 +1,641 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedHeader example - Header and footer fixed</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedHeader.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedHeader.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.FixedHeader( table, {
+		bottom: true
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedHeader example <span>Header and footer fixed</span></h1>
+
+			<div class="info">
+				<p>FixedHeader provides the ability to fix in place the header, footer, left and right columns of the
+				table. These are controlled by the options:</p>
+
+				<ul class="markdown">
+					<li><code>top</code> - default true</li>
+					<li><code>bottom</code> - default false</li>
+					<li><code>left</code> - default false</li>
+					<li><code>right</code> - default false</li>
+				</ul>
+
+				<p>This example shows the header and footer of the table fixed by enabling the <code>bottom</code>
+				option.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.FixedHeader( table, {
+		bottom: true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedHeader.js">../js/dataTables.fixedHeader.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedHeader.css">../css/dataTables.fixedHeader.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li class="active"><a href="./header_footer.html">Header and footer fixed</a></li>
+							<li><a href="./top_left_right.html">Header, left and right all fixed</a></li>
+							<li><a href="./two_tables.html">Multiple tables</a></li>
+							<li><a href="./zIndexes.html">z-index order control</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedHeader/examples/index.html b/public/admin/js/DataTables/extensions/FixedHeader/examples/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..2198d78c6feef5add6745b9bb0e4f8341f39b543
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedHeader/examples/index.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+
+	<title>FixedHeader examples - FixedHeader examples</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedHeader example <span>FixedHeader examples</span></h1>
+
+			<div class="info">
+				<p>At times it can be useful to ensure that column titles will remain always visible on a table, even
+				when a user scrolls down a table. The FixedHeader plug-in for DataTables will float the <code class=
+				"tag" title="HTML tag">thead</code> element above the table at all times to help address this issue.
+				The column titles also remain click-able to perform sorting. Key features include:</p>
+
+				<ul class="markdown">
+					<li>Fix the header to the top of the window</li>
+					<li>Ability to fix the footer and left / right columns as well</li>
+					<li>z-Index ordering options</li>
+				</ul>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./header_footer.html">Header and footer fixed</a></li>
+							<li><a href="./top_left_right.html">Header, left and right all fixed</a></li>
+							<li><a href="./two_tables.html">Multiple tables</a></li>
+							<li><a href="./zIndexes.html">z-index order control</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedHeader/examples/simple.html b/public/admin/js/DataTables/extensions/FixedHeader/examples/simple.html
new file mode 100644
index 0000000000000000000000000000000000000000..1ad6efa77892139456cfbdd3a88937223e9898a5
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedHeader/examples/simple.html
@@ -0,0 +1,637 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedHeader example - Basic initialisation</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedHeader.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedHeader.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.FixedHeader( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedHeader example <span>Basic initialisation</span></h1>
+
+			<div class="info">
+				<p>When displaying large amounts of data in a table, it can often be useful for the end user to have
+				the column titles (the <code class="tag" title="HTML tag">thead</code> element as a whole in fact)
+				always visible. This is particularly true if using DataTables with pagination disabled, or the display
+				length is set to a high value.</p>
+
+				<p>The FixedHeader extension for DataTables will ensure that your column titles will scroll with the
+				page, showing at the top of the table at all times. Try the demo shown below - you might want to try
+				resizing the window for full effect! Note also that the column titles remain clickable to perform
+				sorting on the table.</p>
+
+				<p>FixedHeader is initialised using the constructor <code>new $.fn.dataTable.FixedHeader();</code> -
+				shown below.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.FixedHeader( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedHeader.js">../js/dataTables.fixedHeader.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedHeader.css">../css/dataTables.fixedHeader.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./header_footer.html">Header and footer fixed</a></li>
+							<li><a href="./top_left_right.html">Header, left and right all fixed</a></li>
+							<li><a href="./two_tables.html">Multiple tables</a></li>
+							<li><a href="./zIndexes.html">z-index order control</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedHeader/examples/top_left_right.html b/public/admin/js/DataTables/extensions/FixedHeader/examples/top_left_right.html
new file mode 100644
index 0000000000000000000000000000000000000000..f15faeb5778a15703c30cb3e527c8225b046376a
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedHeader/examples/top_left_right.html
@@ -0,0 +1,236 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedHeader example - Header, left and right all fixed</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedHeader.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	div.dataTables_wrapper {
+		width: 150%;
+	}
+
+	div.FixedHeader_Cloned.fixedLeft tbody td {
+		border-right: 1px solid black;
+	}
+
+	div.FixedHeader_Cloned.fixedRight tbody td {
+		border-left: 1px solid black;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedHeader.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		"order": [ 1, 'asc' ],
+		"ajax": "../../../examples/ajax/data/objects.txt",
+		"columns": [
+			{ title: '',           data: null, defaultContent: "" },
+			{ title: 'Name',       data: "name" },
+			{ title: 'Position',   data: "position" },
+			{ title: 'Office',     data: "office" },
+			{ title: 'Extn.',      data: "extn" },
+			{ title: 'Start date', data: "start_date" },
+			{ title: 'Salary',     data: "salary" },
+			{ title: '',           data: null, defaultContent: "" }
+		],
+		initComplete: function () {
+			new $.fn.dataTable.FixedHeader( table, {
+				left:   true,
+				right:  true
+			} );
+		}
+	} );
+
+	table.on( 'order.dt search.dt', function () {
+		table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
+			cell.innerHTML = i+1;
+		} );
+
+		table.column(-1, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
+			cell.innerHTML = i+1;
+		} );
+	} ).draw();
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedHeader example <span>Header, left and right all fixed</span></h1>
+
+			<div class="info">
+				<p>FixedHeader provides the ability to fix in place the header, footer, left and right columns of the
+				table. These are controlled by the options:</p>
+
+				<ul class="markdown">
+					<li><code>top</code> - default true</li>
+					<li><code>bottom</code> - default false</li>
+					<li><code>left</code> - default false</li>
+					<li><code>right</code> - default false</li>
+				</ul>
+
+				<p>This example shows top, left and right enabled with index columns on the left and right.</p>
+
+				<p>Note that in such a situation as this, the <a href=
+				"//datatables.net/extensions/fixedcolumns">FixedColumns extension</a> might be more useful,
+				particularly if you want to use the scrolling options built into DataTables.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%"></table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		&quot;order&quot;: [ 1, 'asc' ],
+		&quot;ajax&quot;: &quot;../../../examples/ajax/data/objects.txt&quot;,
+		&quot;columns&quot;: [
+			{ title: '',           data: null, defaultContent: &quot;&quot; },
+			{ title: 'Name',       data: &quot;name&quot; },
+			{ title: 'Position',   data: &quot;position&quot; },
+			{ title: 'Office',     data: &quot;office&quot; },
+			{ title: 'Extn.',      data: &quot;extn&quot; },
+			{ title: 'Start date', data: &quot;start_date&quot; },
+			{ title: 'Salary',     data: &quot;salary&quot; },
+			{ title: '',           data: null, defaultContent: &quot;&quot; }
+		],
+		initComplete: function () {
+			new $.fn.dataTable.FixedHeader( table, {
+				left:   true,
+				right:  true
+			} );
+		}
+	} );
+
+	table.on( 'order.dt search.dt', function () {
+		table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
+			cell.innerHTML = i+1;
+		} );
+
+		table.column(-1, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
+			cell.innerHTML = i+1;
+		} );
+	} ).draw();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedHeader.js">../js/dataTables.fixedHeader.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">div.dataTables_wrapper {
+		width: 150%;
+	}
+
+	div.FixedHeader_Cloned.fixedLeft tbody td {
+		border-right: 1px solid black;
+	}
+
+	div.FixedHeader_Cloned.fixedRight tbody td {
+		border-left: 1px solid black;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedHeader.css">../css/dataTables.fixedHeader.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./header_footer.html">Header and footer fixed</a></li>
+							<li class="active"><a href="./top_left_right.html">Header, left and right all
+							fixed</a></li>
+							<li><a href="./two_tables.html">Multiple tables</a></li>
+							<li><a href="./zIndexes.html">z-index order control</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedHeader/examples/two_tables.html b/public/admin/js/DataTables/extensions/FixedHeader/examples/two_tables.html
new file mode 100644
index 0000000000000000000000000000000000000000..1fbb3dfcb4d1f13ec8ab88aa98e98c87c667bda2
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedHeader/examples/two_tables.html
@@ -0,0 +1,354 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedHeader example - Multiple tables</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedHeader.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedHeader.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var t1 = $('table.display').eq(0).DataTable();
+	new $.fn.dataTable.FixedHeader( t1, {
+		bottom: true
+	} );
+
+	var t2 = $('table.display').eq(1).DataTable();
+	new $.fn.dataTable.FixedHeader( t2, {
+		bottom: true
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedHeader example <span>Multiple tables</span></h1>
+
+			<div class="info">
+				<p>The following example shows two DataTables enhanced tables both with FixedHeader enabled on them.
+				This is done simply by initialising FixedHeader on each table. This example also shows the footer being
+				fixed in place for the two tables.</p>
+			</div>
+
+			<table id="" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>$183,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<table id="" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>$103,500</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var t1 = $('table.display').eq(0).DataTable();
+	new $.fn.dataTable.FixedHeader( t1, {
+		bottom: true
+	} );
+
+	var t2 = $('table.display').eq(1).DataTable();
+	new $.fn.dataTable.FixedHeader( t2, {
+		bottom: true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedHeader.js">../js/dataTables.fixedHeader.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedHeader.css">../css/dataTables.fixedHeader.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./header_footer.html">Header and footer fixed</a></li>
+							<li><a href="./top_left_right.html">Header, left and right all fixed</a></li>
+							<li class="active"><a href="./two_tables.html">Multiple tables</a></li>
+							<li><a href="./zIndexes.html">z-index order control</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedHeader/examples/zIndexes.html b/public/admin/js/DataTables/extensions/FixedHeader/examples/zIndexes.html
new file mode 100644
index 0000000000000000000000000000000000000000..a3292c4cea6337c2c82ab471fa1e668fc5dc869b
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedHeader/examples/zIndexes.html
@@ -0,0 +1,653 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>FixedHeader example - z-index order control</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.fixedHeader.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	div.dataTables_wrapper {
+		width: 1500px;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.fixedHeader.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.FixedHeader( table, {
+		left: true,
+		zLeft: 105
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>FixedHeader example <span>z-index order control</span></h1>
+
+			<div class="info">
+				<p>When you have two or more columns fixed on a table, there might be occasions when you which to have
+				one column floating on top of another. This example shows how you can do that with the initialisation
+				parameters <code>zTop</code>, <code>zBottom</code>, <code>zLeft</code> and <code>zRight</code>. In this
+				example the left column is set to float on top of the header. The difference is subtle, but can be
+				effective.</p>
+
+				<p>The default zIndexes are:</p>
+
+				<ul class="markdown">
+					<li><code>zTop</code>: 104</li>
+					<li><code>zBottom</code>: 103</li>
+					<li><code>zLeft</code>: 102</li>
+					<li><code>zRight</code>: 101</li>
+				</ul>
+
+				<p>This example shows the left column being floated on top of the header.</p>
+			</div>
+
+			<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.FixedHeader( table, {
+		left: true,
+		zLeft: 105
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.fixedHeader.js">../js/dataTables.fixedHeader.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">div.dataTables_wrapper {
+		width: 1500px;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.fixedHeader.css">../css/dataTables.fixedHeader.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./header_footer.html">Header and footer fixed</a></li>
+							<li><a href="./top_left_right.html">Header, left and right all fixed</a></li>
+							<li><a href="./two_tables.html">Multiple tables</a></li>
+							<li class="active"><a href="./zIndexes.html">z-index order control</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/FixedHeader/js/dataTables.fixedHeader.js b/public/admin/js/DataTables/extensions/FixedHeader/js/dataTables.fixedHeader.js
new file mode 100644
index 0000000000000000000000000000000000000000..90df878678bfa36e647e91d5cc67f6420de0c995
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedHeader/js/dataTables.fixedHeader.js
@@ -0,0 +1,1028 @@
+/*! FixedHeader 2.1.2
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     FixedHeader
+ * @description Fix a table's header or footer, so it is always visible while
+ *              Scrolling
+ * @version     2.1.2
+ * @file        dataTables.fixedHeader.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2009-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+/* Global scope for FixedColumns for backwards compatibility - will be removed
+ * in future. Not documented in 1.1.x.
+ */
+
+/* Global scope for FixedColumns */
+var FixedHeader;
+
+(function(window, document, undefined) {
+
+
+var factory = function( $, DataTable ) {
+"use strict";
+
+/*
+ * Function: FixedHeader
+ * Purpose:  Provide 'fixed' header, footer and columns for a DataTable
+ * Returns:  object:FixedHeader - must be called with 'new'
+ * Inputs:   mixed:mTable - target table
+ *  @param {object} dt DataTables instance or HTML table node. With DataTables
+ *    1.10 this can also be a jQuery collection (with just a single table in its
+ *    result set), a jQuery selector, DataTables API instance or settings
+ *    object.
+ *  @param {object} [oInit] initialisation settings, with the following
+ *    properties (each optional)
+ *    * bool:top -    fix the header (default true)
+ *    * bool:bottom - fix the footer (default false)
+ *    * int:left -    fix the left column(s) (default 0)
+ *    * int:right -   fix the right column(s) (default 0)
+ *    * int:zTop -    fixed header zIndex
+ *    * int:zBottom - fixed footer zIndex
+ *    * int:zLeft -   fixed left zIndex
+ *    * int:zRight -  fixed right zIndex
+ */
+FixedHeader = function ( mTable, oInit ) {
+	/* Sanity check - you just know it will happen */
+	if ( ! this instanceof FixedHeader )
+	{
+		alert( "FixedHeader warning: FixedHeader must be initialised with the 'new' keyword." );
+		return;
+	}
+
+	var that = this;
+	var oSettings = {
+		"aoCache": [],
+		"oSides": {
+			"top": true,
+			"bottom": false,
+			"left": 0,
+			"right": 0
+		},
+		"oZIndexes": {
+			"top": 104,
+			"bottom": 103,
+			"left": 102,
+			"right": 101
+		},
+		"oCloneOnDraw": {
+			"top": false,
+			"bottom": false,
+			"left": true,
+			"right": true
+		},
+		"oMes": {
+			"iTableWidth": 0,
+			"iTableHeight": 0,
+			"iTableLeft": 0,
+			"iTableRight": 0, /* note this is left+width, not actually "right" */
+			"iTableTop": 0,
+			"iTableBottom": 0 /* note this is top+height, not actually "bottom" */
+		},
+		"oOffset": {
+			"top": 0
+		},
+		"nTable": null,
+		"bFooter": false,
+		"bInitComplete": false
+	};
+
+	/*
+	 * Function: fnGetSettings
+	 * Purpose:  Get the settings for this object
+	 * Returns:  object: - settings object
+	 * Inputs:   -
+	 */
+	this.fnGetSettings = function () {
+		return oSettings;
+	};
+
+	/*
+	 * Function: fnUpdate
+	 * Purpose:  Update the positioning and copies of the fixed elements
+	 * Returns:  -
+	 * Inputs:   -
+	 */
+	this.fnUpdate = function () {
+		this._fnUpdateClones();
+		this._fnUpdatePositions();
+	};
+
+	/*
+	 * Function: fnPosition
+	 * Purpose:  Update the positioning of the fixed elements
+	 * Returns:  -
+	 * Inputs:   -
+	 */
+	this.fnPosition = function () {
+		this._fnUpdatePositions();
+	};
+
+
+	var dt = $.fn.dataTable.Api ?
+		new $.fn.dataTable.Api( mTable ).settings()[0] :
+		mTable.fnSettings();
+
+	dt._oPluginFixedHeader = this;
+
+	/* Let's do it */
+	this.fnInit( dt, oInit );
+
+};
+
+
+/*
+ * Variable: FixedHeader
+ * Purpose:  Prototype for FixedHeader
+ * Scope:    global
+ */
+FixedHeader.prototype = {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Initialisation
+	 */
+
+	/*
+	 * Function: fnInit
+	 * Purpose:  The "constructor"
+	 * Returns:  -
+	 * Inputs:   {as FixedHeader function}
+	 */
+	fnInit: function ( oDtSettings, oInit )
+	{
+		var s = this.fnGetSettings();
+		var that = this;
+
+		/* Record the user definable settings */
+		this.fnInitSettings( s, oInit );
+
+		if ( oDtSettings.oScroll.sX !== "" || oDtSettings.oScroll.sY !== "" )
+		{
+			alert( "FixedHeader 2 is not supported with DataTables' scrolling mode at this time" );
+			return;
+		}
+
+		s.nTable = oDtSettings.nTable;
+		oDtSettings.aoDrawCallback.unshift( {
+			"fn": function () {
+				FixedHeader.fnMeasure();
+				that._fnUpdateClones.call(that);
+				that._fnUpdatePositions.call(that);
+			},
+			"sName": "FixedHeader"
+		} );
+
+		s.bFooter = ($('>tfoot', s.nTable).length > 0) ? true : false;
+
+		/* Add the 'sides' that are fixed */
+		if ( s.oSides.top )
+		{
+			s.aoCache.push( that._fnCloneTable( "fixedHeader", "FixedHeader_Header", that._fnCloneThead ) );
+		}
+		if ( s.oSides.bottom )
+		{
+			s.aoCache.push( that._fnCloneTable( "fixedFooter", "FixedHeader_Footer", that._fnCloneTfoot ) );
+		}
+		if ( s.oSides.left )
+		{
+			s.aoCache.push( that._fnCloneTable( "fixedLeft", "FixedHeader_Left", that._fnCloneTLeft, s.oSides.left ) );
+		}
+		if ( s.oSides.right )
+		{
+			s.aoCache.push( that._fnCloneTable( "fixedRight", "FixedHeader_Right", that._fnCloneTRight, s.oSides.right ) );
+		}
+
+		/* Event listeners for window movement */
+		FixedHeader.afnScroll.push( function () {
+			that._fnUpdatePositions.call(that);
+		} );
+
+		$(window).resize( function () {
+			FixedHeader.fnMeasure();
+			that._fnUpdateClones.call(that);
+			that._fnUpdatePositions.call(that);
+		} );
+
+		$(s.nTable)
+			.on('column-reorder.dt', function () {
+				FixedHeader.fnMeasure();
+				that._fnUpdateClones( true );
+				that._fnUpdatePositions();
+			} )
+			.on('column-visibility.dt', function () {
+				FixedHeader.fnMeasure();
+				that._fnUpdateClones( true );
+				that._fnUpdatePositions();
+			} );
+
+		/* Get things right to start with */
+		FixedHeader.fnMeasure();
+		that._fnUpdateClones();
+		that._fnUpdatePositions();
+
+		s.bInitComplete = true;
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Support functions
+	 */
+
+	/*
+	 * Function: fnInitSettings
+	 * Purpose:  Take the user's settings and copy them to our local store
+	 * Returns:  -
+	 * Inputs:   object:s - the local settings object
+	 *           object:oInit - the user's settings object
+	 */
+	fnInitSettings: function ( s, oInit )
+	{
+		if ( oInit !== undefined )
+		{
+			if ( oInit.top !== undefined ) {
+				s.oSides.top = oInit.top;
+			}
+			if ( oInit.bottom !== undefined ) {
+				s.oSides.bottom = oInit.bottom;
+			}
+			if ( typeof oInit.left == 'boolean' ) {
+				s.oSides.left = oInit.left ? 1 : 0;
+			}
+			else if ( oInit.left !== undefined ) {
+				s.oSides.left = oInit.left;
+			}
+			if ( typeof oInit.right == 'boolean' ) {
+				s.oSides.right = oInit.right ? 1 : 0;
+			}
+			else if ( oInit.right !== undefined ) {
+				s.oSides.right = oInit.right;
+			}
+
+			if ( oInit.zTop !== undefined ) {
+				s.oZIndexes.top = oInit.zTop;
+			}
+			if ( oInit.zBottom !== undefined ) {
+				s.oZIndexes.bottom = oInit.zBottom;
+			}
+			if ( oInit.zLeft !== undefined ) {
+				s.oZIndexes.left = oInit.zLeft;
+			}
+			if ( oInit.zRight !== undefined ) {
+				s.oZIndexes.right = oInit.zRight;
+			}
+
+			if ( oInit.offsetTop !== undefined ) {
+				s.oOffset.top = oInit.offsetTop;
+			}
+			if ( oInit.alwaysCloneTop !== undefined ) {
+				s.oCloneOnDraw.top = oInit.alwaysCloneTop;
+			}
+			if ( oInit.alwaysCloneBottom !== undefined ) {
+				s.oCloneOnDraw.bottom = oInit.alwaysCloneBottom;
+			}
+			if ( oInit.alwaysCloneLeft !== undefined ) {
+				s.oCloneOnDraw.left = oInit.alwaysCloneLeft;
+			}
+			if ( oInit.alwaysCloneRight !== undefined ) {
+				s.oCloneOnDraw.right = oInit.alwaysCloneRight;
+			}
+		}
+	},
+
+	/*
+	 * Function: _fnCloneTable
+	 * Purpose:  Clone the table node and do basic initialisation
+	 * Returns:  -
+	 * Inputs:   -
+	 */
+	_fnCloneTable: function ( sType, sClass, fnClone, iCells )
+	{
+		var s = this.fnGetSettings();
+		var nCTable;
+
+		/* We know that the table _MUST_ has a DIV wrapped around it, because this is simply how
+		 * DataTables works. Therefore, we can set this to be relatively position (if it is not
+		 * alreadu absolute, and use this as the base point for the cloned header
+		 */
+		if ( $(s.nTable.parentNode).css('position') != "absolute" )
+		{
+			s.nTable.parentNode.style.position = "relative";
+		}
+
+		/* Just a shallow clone will do - we only want the table node */
+		nCTable = s.nTable.cloneNode( false );
+		nCTable.removeAttribute( 'id' );
+
+		var nDiv = document.createElement( 'div' );
+		nDiv.style.position = "absolute";
+		nDiv.style.top = "0px";
+		nDiv.style.left = "0px";
+		nDiv.className += " FixedHeader_Cloned "+sType+" "+sClass;
+
+		/* Set the zIndexes */
+		if ( sType == "fixedHeader" )
+		{
+			nDiv.style.zIndex = s.oZIndexes.top;
+		}
+		if ( sType == "fixedFooter" )
+		{
+			nDiv.style.zIndex = s.oZIndexes.bottom;
+		}
+		if ( sType == "fixedLeft" )
+		{
+			nDiv.style.zIndex = s.oZIndexes.left;
+		}
+		else if ( sType == "fixedRight" )
+		{
+			nDiv.style.zIndex = s.oZIndexes.right;
+		}
+
+		/* remove margins since we are going to position it absolutely */
+		nCTable.style.margin = "0";
+
+		/* Insert the newly cloned table into the DOM, on top of the "real" header */
+		nDiv.appendChild( nCTable );
+		document.body.appendChild( nDiv );
+
+		return {
+			"nNode": nCTable,
+			"nWrapper": nDiv,
+			"sType": sType,
+			"sPosition": "",
+			"sTop": "",
+			"sLeft": "",
+			"fnClone": fnClone,
+			"iCells": iCells
+		};
+	},
+
+	/*
+	 * Function: _fnMeasure
+	 * Purpose:  Get the current positioning of the table in the DOM
+	 * Returns:  -
+	 * Inputs:   -
+	 */
+	_fnMeasure: function ()
+	{
+		var
+			s = this.fnGetSettings(),
+			m = s.oMes,
+			jqTable = $(s.nTable),
+			oOffset = jqTable.offset(),
+			iParentScrollTop = this._fnSumScroll( s.nTable.parentNode, 'scrollTop' ),
+			iParentScrollLeft = this._fnSumScroll( s.nTable.parentNode, 'scrollLeft' );
+
+		m.iTableWidth = jqTable.outerWidth();
+		m.iTableHeight = jqTable.outerHeight();
+		m.iTableLeft = oOffset.left + s.nTable.parentNode.scrollLeft;
+		m.iTableTop = oOffset.top + iParentScrollTop;
+		m.iTableRight = m.iTableLeft + m.iTableWidth;
+		m.iTableRight = FixedHeader.oDoc.iWidth - m.iTableLeft - m.iTableWidth;
+		m.iTableBottom = FixedHeader.oDoc.iHeight - m.iTableTop - m.iTableHeight;
+	},
+
+	/*
+	 * Function: _fnSumScroll
+	 * Purpose:  Sum node parameters all the way to the top
+	 * Returns:  int: sum
+	 * Inputs:   node:n - node to consider
+	 *           string:side - scrollTop or scrollLeft
+	 */
+	_fnSumScroll: function ( n, side )
+	{
+		var i = n[side];
+		while ( n = n.parentNode )
+		{
+			if ( n.nodeName == 'HTML' || n.nodeName == 'BODY' )
+			{
+				break;
+			}
+			i = n[side];
+		}
+		return i;
+	},
+
+	/*
+	 * Function: _fnUpdatePositions
+	 * Purpose:  Loop over the fixed elements for this table and update their positions
+	 * Returns:  -
+	 * Inputs:   -
+	 */
+	_fnUpdatePositions: function ()
+	{
+		var s = this.fnGetSettings();
+		this._fnMeasure();
+
+		for ( var i=0, iLen=s.aoCache.length ; i<iLen ; i++ )
+		{
+			if ( s.aoCache[i].sType == "fixedHeader" )
+			{
+				this._fnScrollFixedHeader( s.aoCache[i] );
+			}
+			else if ( s.aoCache[i].sType == "fixedFooter" )
+			{
+				this._fnScrollFixedFooter( s.aoCache[i] );
+			}
+			else if ( s.aoCache[i].sType == "fixedLeft" )
+			{
+				this._fnScrollHorizontalLeft( s.aoCache[i] );
+			}
+			else
+			{
+				this._fnScrollHorizontalRight( s.aoCache[i] );
+			}
+		}
+	},
+
+	/*
+	 * Function: _fnUpdateClones
+	 * Purpose:  Loop over the fixed elements for this table and call their cloning functions
+	 * Returns:  -
+	 * Inputs:   -
+	 */
+	_fnUpdateClones: function ( full )
+	{
+		var s = this.fnGetSettings();
+
+		if ( full ) {
+			// This is a little bit of a hack to force a full clone draw. When
+			// `full` is set to true, we want to reclone the source elements,
+			// regardless of the clone-on-draw settings
+			s.bInitComplete = false;
+		}
+
+		for ( var i=0, iLen=s.aoCache.length ; i<iLen ; i++ )
+		{
+			s.aoCache[i].fnClone.call( this, s.aoCache[i] );
+		}
+
+		if ( full ) {
+			s.bInitComplete = true;
+		}
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Scrolling functions
+	 */
+
+	/*
+	 * Function: _fnScrollHorizontalLeft
+	 * Purpose:  Update the positioning of the scrolling elements
+	 * Returns:  -
+	 * Inputs:   object:oCache - the cached values for this fixed element
+	 */
+	_fnScrollHorizontalRight: function ( oCache )
+	{
+		var
+			s = this.fnGetSettings(),
+			oMes = s.oMes,
+			oWin = FixedHeader.oWin,
+			oDoc = FixedHeader.oDoc,
+			nTable = oCache.nWrapper,
+			iFixedWidth = $(nTable).outerWidth();
+
+		if ( oWin.iScrollRight < oMes.iTableRight )
+		{
+			/* Fully right aligned */
+			this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', oMes.iTableTop+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', (oMes.iTableLeft+oMes.iTableWidth-iFixedWidth)+"px", 'left', nTable.style );
+		}
+		else if ( oMes.iTableLeft < oDoc.iWidth-oWin.iScrollRight-iFixedWidth )
+		{
+			/* Middle */
+			this._fnUpdateCache( oCache, 'sPosition', 'fixed', 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', (oMes.iTableTop-oWin.iScrollTop)+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', (oWin.iWidth-iFixedWidth)+"px", 'left', nTable.style );
+		}
+		else
+		{
+			/* Fully left aligned */
+			this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', oMes.iTableTop+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style );
+		}
+	},
+
+	/*
+	 * Function: _fnScrollHorizontalLeft
+	 * Purpose:  Update the positioning of the scrolling elements
+	 * Returns:  -
+	 * Inputs:   object:oCache - the cached values for this fixed element
+	 */
+	_fnScrollHorizontalLeft: function ( oCache )
+	{
+		var
+			s = this.fnGetSettings(),
+			oMes = s.oMes,
+			oWin = FixedHeader.oWin,
+			oDoc = FixedHeader.oDoc,
+			nTable = oCache.nWrapper,
+			iCellWidth = $(nTable).outerWidth();
+
+		if ( oWin.iScrollLeft < oMes.iTableLeft )
+		{
+			/* Fully left align */
+			this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', oMes.iTableTop+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style );
+		}
+		else if ( oWin.iScrollLeft < oMes.iTableLeft+oMes.iTableWidth-iCellWidth )
+		{
+			this._fnUpdateCache( oCache, 'sPosition', 'fixed', 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', (oMes.iTableTop-oWin.iScrollTop)+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', "0px", 'left', nTable.style );
+		}
+		else
+		{
+			/* Fully right align */
+			this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', oMes.iTableTop+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', (oMes.iTableLeft+oMes.iTableWidth-iCellWidth)+"px", 'left', nTable.style );
+		}
+	},
+
+	/*
+	 * Function: _fnScrollFixedFooter
+	 * Purpose:  Update the positioning of the scrolling elements
+	 * Returns:  -
+	 * Inputs:   object:oCache - the cached values for this fixed element
+	 */
+	_fnScrollFixedFooter: function ( oCache )
+	{
+		var
+			s = this.fnGetSettings(),
+			oMes = s.oMes,
+			oWin = FixedHeader.oWin,
+			oDoc = FixedHeader.oDoc,
+			nTable = oCache.nWrapper,
+			iTheadHeight = $("thead", s.nTable).outerHeight(),
+			iCellHeight = $(nTable).outerHeight();
+
+		if ( oWin.iScrollBottom < oMes.iTableBottom )
+		{
+			/* Below */
+			this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', (oMes.iTableTop+oMes.iTableHeight-iCellHeight)+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style );
+		}
+		else if ( oWin.iScrollBottom < oMes.iTableBottom+oMes.iTableHeight-iCellHeight-iTheadHeight )
+		{
+			this._fnUpdateCache( oCache, 'sPosition', 'fixed', 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', (oWin.iHeight-iCellHeight)+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', (oMes.iTableLeft-oWin.iScrollLeft)+"px", 'left', nTable.style );
+		}
+		else
+		{
+			/* Above */
+			this._fnUpdateCache( oCache, 'sPosition', 'absolute', 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', (oMes.iTableTop+iCellHeight)+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style );
+		}
+	},
+
+	/*
+	 * Function: _fnScrollFixedHeader
+	 * Purpose:  Update the positioning of the scrolling elements
+	 * Returns:  -
+	 * Inputs:   object:oCache - the cached values for this fixed element
+	 */
+	_fnScrollFixedHeader: function ( oCache )
+	{
+		var
+			s = this.fnGetSettings(),
+			oMes = s.oMes,
+			oWin = FixedHeader.oWin,
+			oDoc = FixedHeader.oDoc,
+			nTable = oCache.nWrapper,
+			iTbodyHeight = 0,
+			anTbodies = s.nTable.getElementsByTagName('tbody');
+
+		for (var i = 0; i < anTbodies.length; ++i) {
+			iTbodyHeight += anTbodies[i].offsetHeight;
+		}
+
+		if ( oMes.iTableTop > oWin.iScrollTop + s.oOffset.top )
+		{
+			/* Above the table */
+			this._fnUpdateCache( oCache, 'sPosition', "absolute", 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', oMes.iTableTop+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style );
+		}
+		else if ( oWin.iScrollTop + s.oOffset.top > oMes.iTableTop+iTbodyHeight )
+		{
+			/* At the bottom of the table */
+			this._fnUpdateCache( oCache, 'sPosition', "absolute", 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', (oMes.iTableTop+iTbodyHeight)+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', oMes.iTableLeft+"px", 'left', nTable.style );
+		}
+		else
+		{
+			/* In the middle of the table */
+			this._fnUpdateCache( oCache, 'sPosition', 'fixed', 'position', nTable.style );
+			this._fnUpdateCache( oCache, 'sTop', s.oOffset.top+"px", 'top', nTable.style );
+			this._fnUpdateCache( oCache, 'sLeft', (oMes.iTableLeft-oWin.iScrollLeft)+"px", 'left', nTable.style );
+		}
+	},
+
+	/*
+	 * Function: _fnUpdateCache
+	 * Purpose:  Check the cache and update cache and value if needed
+	 * Returns:  -
+	 * Inputs:   object:oCache - local cache object
+	 *           string:sCache - cache property
+	 *           string:sSet - value to set
+	 *           string:sProperty - object property to set
+	 *           object:oObj - object to update
+	 */
+	_fnUpdateCache: function ( oCache, sCache, sSet, sProperty, oObj )
+	{
+		if ( oCache[sCache] != sSet )
+		{
+			oObj[sProperty] = sSet;
+			oCache[sCache] = sSet;
+		}
+	},
+
+
+
+	/**
+	 * Copy the classes of all child nodes from one element to another. This implies
+	 * that the two have identical structure - no error checking is performed to that
+	 * fact.
+	 *  @param {element} source Node to copy classes from
+	 *  @param {element} dest Node to copy classes too
+	 */
+	_fnClassUpdate: function ( source, dest )
+	{
+		var that = this;
+
+		if ( source.nodeName.toUpperCase() === "TR" || source.nodeName.toUpperCase() === "TH" ||
+			 source.nodeName.toUpperCase() === "TD" || source.nodeName.toUpperCase() === "SPAN" )
+		{
+			dest.className = source.className;
+		}
+
+		$(source).children().each( function (i) {
+			that._fnClassUpdate( $(source).children()[i], $(dest).children()[i] );
+		} );
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Cloning functions
+	 */
+
+	/*
+	 * Function: _fnCloneThead
+	 * Purpose:  Clone the thead element
+	 * Returns:  -
+	 * Inputs:   object:oCache - the cached values for this fixed element
+	 */
+	_fnCloneThead: function ( oCache )
+	{
+		var s = this.fnGetSettings();
+		var nTable = oCache.nNode;
+
+		if ( s.bInitComplete && !s.oCloneOnDraw.top )
+		{
+			this._fnClassUpdate( $('thead', s.nTable)[0], $('thead', nTable)[0] );
+			return;
+		}
+
+		/* Set the wrapper width to match that of the cloned table */
+		var iDtWidth = $(s.nTable).outerWidth();
+		oCache.nWrapper.style.width = iDtWidth+"px";
+		nTable.style.width = iDtWidth+"px";
+
+		/* Remove any children the cloned table has */
+		while ( nTable.childNodes.length > 0 )
+		{
+			$('thead th', nTable).unbind( 'click' );
+			nTable.removeChild( nTable.childNodes[0] );
+		}
+
+		/* Clone the DataTables header */
+		var nThead = $('thead', s.nTable).clone(true)[0];
+		nTable.appendChild( nThead );
+
+		/* Copy the widths across - apparently a clone isn't good enough for this */
+		var a = [];
+		var b = [];
+
+		$("thead>tr th", s.nTable).each( function (i) {
+			a.push( $(this).width() );
+		} );
+
+		$("thead>tr td", s.nTable).each( function (i) {
+			b.push( $(this).width() );
+		} );
+
+		$("thead>tr th", s.nTable).each( function (i) {
+			$("thead>tr th:eq("+i+")", nTable).width( a[i] );
+			$(this).width( a[i] );
+		} );
+
+		$("thead>tr td", s.nTable).each( function (i) {
+			$("thead>tr td:eq("+i+")", nTable).width( b[i] );
+			$(this).width( b[i] );
+		} );
+
+		// Stop DataTables 1.9 from putting a focus ring on the headers when
+		// clicked to sort
+		$('th.sorting, th.sorting_desc, th.sorting_asc', nTable).bind( 'click', function () {
+			this.blur();
+		} );
+	},
+
+	/*
+	 * Function: _fnCloneTfoot
+	 * Purpose:  Clone the tfoot element
+	 * Returns:  -
+	 * Inputs:   object:oCache - the cached values for this fixed element
+	 */
+	_fnCloneTfoot: function ( oCache )
+	{
+		var s = this.fnGetSettings();
+		var nTable = oCache.nNode;
+
+		/* Set the wrapper width to match that of the cloned table */
+		oCache.nWrapper.style.width = $(s.nTable).outerWidth()+"px";
+
+		/* Remove any children the cloned table has */
+		while ( nTable.childNodes.length > 0 )
+		{
+			nTable.removeChild( nTable.childNodes[0] );
+		}
+
+		/* Clone the DataTables footer */
+		var nTfoot = $('tfoot', s.nTable).clone(true)[0];
+		nTable.appendChild( nTfoot );
+
+		/* Copy the widths across - apparently a clone isn't good enough for this */
+		$("tfoot:eq(0)>tr th", s.nTable).each( function (i) {
+			$("tfoot:eq(0)>tr th:eq("+i+")", nTable).width( $(this).width() );
+		} );
+
+		$("tfoot:eq(0)>tr td", s.nTable).each( function (i) {
+			$("tfoot:eq(0)>tr td:eq("+i+")", nTable).width( $(this).width() );
+		} );
+	},
+
+	/*
+	 * Function: _fnCloneTLeft
+	 * Purpose:  Clone the left column(s)
+	 * Returns:  -
+	 * Inputs:   object:oCache - the cached values for this fixed element
+	 */
+	_fnCloneTLeft: function ( oCache )
+	{
+		var s = this.fnGetSettings();
+		var nTable = oCache.nNode;
+		var nBody = $('tbody', s.nTable)[0];
+
+		/* Remove any children the cloned table has */
+		while ( nTable.childNodes.length > 0 )
+		{
+			nTable.removeChild( nTable.childNodes[0] );
+		}
+
+		/* Is this the most efficient way to do this - it looks horrible... */
+		nTable.appendChild( $("thead", s.nTable).clone(true)[0] );
+		nTable.appendChild( $("tbody", s.nTable).clone(true)[0] );
+		if ( s.bFooter )
+		{
+			nTable.appendChild( $("tfoot", s.nTable).clone(true)[0] );
+		}
+
+		/* Remove unneeded cells */
+		var sSelector = 'gt(' + (oCache.iCells - 1) + ')';
+		$('thead tr', nTable).each( function (k) {
+			$('th:' + sSelector, this).remove();
+		} );
+
+		$('tfoot tr', nTable).each( function (k) {
+			$('th:' + sSelector, this).remove();
+		} );
+
+		$('tbody tr', nTable).each( function (k) {
+			$('td:' + sSelector, this).remove();
+		} );
+
+		this.fnEqualiseHeights( 'thead', nBody.parentNode, nTable );
+		this.fnEqualiseHeights( 'tbody', nBody.parentNode, nTable );
+		this.fnEqualiseHeights( 'tfoot', nBody.parentNode, nTable );
+
+		var iWidth = 0;
+		for (var i = 0; i < oCache.iCells; i++) {
+			iWidth += $('thead tr th:eq(' + i + ')', s.nTable).outerWidth();
+		}
+		nTable.style.width = iWidth+"px";
+		oCache.nWrapper.style.width = iWidth+"px";
+	},
+
+	/*
+	 * Function: _fnCloneTRight
+	 * Purpose:  Clone the right most column(s)
+	 * Returns:  -
+	 * Inputs:   object:oCache - the cached values for this fixed element
+	 */
+	_fnCloneTRight: function ( oCache )
+	{
+		var s = this.fnGetSettings();
+		var nBody = $('tbody', s.nTable)[0];
+		var nTable = oCache.nNode;
+		var iCols = $('tbody tr:eq(0) td', s.nTable).length;
+
+		/* Remove any children the cloned table has */
+		while ( nTable.childNodes.length > 0 )
+		{
+			nTable.removeChild( nTable.childNodes[0] );
+		}
+
+		/* Is this the most efficient way to do this - it looks horrible... */
+		nTable.appendChild( $("thead", s.nTable).clone(true)[0] );
+		nTable.appendChild( $("tbody", s.nTable).clone(true)[0] );
+		if ( s.bFooter )
+		{
+			nTable.appendChild( $("tfoot", s.nTable).clone(true)[0] );
+		}
+		$('thead tr th:lt('+(iCols-oCache.iCells)+')', nTable).remove();
+		$('tfoot tr th:lt('+(iCols-oCache.iCells)+')', nTable).remove();
+
+		/* Remove unneeded cells */
+		$('tbody tr', nTable).each( function (k) {
+			$('td:lt('+(iCols-oCache.iCells)+')', this).remove();
+		} );
+
+		this.fnEqualiseHeights( 'thead', nBody.parentNode, nTable );
+		this.fnEqualiseHeights( 'tbody', nBody.parentNode, nTable );
+		this.fnEqualiseHeights( 'tfoot', nBody.parentNode, nTable );
+
+		var iWidth = 0;
+		for (var i = 0; i < oCache.iCells; i++) {
+			iWidth += $('thead tr th:eq('+(iCols-1-i)+')', s.nTable).outerWidth();
+		}
+		nTable.style.width = iWidth+"px";
+		oCache.nWrapper.style.width = iWidth+"px";
+	},
+
+
+	/**
+	 * Equalise the heights of the rows in a given table node in a cross browser way. Note that this
+	 * is more or less lifted as is from FixedColumns
+	 *  @method  fnEqualiseHeights
+	 *  @returns void
+	 *  @param   {string} parent Node type - thead, tbody or tfoot
+	 *  @param   {element} original Original node to take the heights from
+	 *  @param   {element} clone Copy the heights to
+	 *  @private
+	 */
+	"fnEqualiseHeights": function ( parent, original, clone )
+	{
+		var that = this;
+		var originals = $(parent +' tr', original);
+		var height;
+
+		$(parent+' tr', clone).each( function (k) {
+			height = originals.eq( k ).css('height');
+
+			// This is nasty :-(. IE has a sub-pixel error even when setting
+			// the height below (the Firefox fix) which causes the fixed column
+			// to go out of alignment. Need to add a pixel before the assignment
+			// Can this be feature detected? Not sure how...
+			if ( navigator.appName == 'Microsoft Internet Explorer' ) {
+				height = parseInt( height, 10 ) + 1;
+			}
+
+			$(this).css( 'height', height );
+
+			// For Firefox to work, we need to also set the height of the
+			// original row, to the value that we read from it! Otherwise there
+			// is a sub-pixel rounding error
+			originals.eq( k ).css( 'height', height );
+		} );
+	}
+};
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Static properties and methods
+ *   We use these for speed! This information is common to all instances of FixedHeader, so no
+ * point if having them calculated and stored for each different instance.
+ */
+
+/*
+ * Variable: oWin
+ * Purpose:  Store information about the window positioning
+ * Scope:    FixedHeader
+ */
+FixedHeader.oWin = {
+	"iScrollTop": 0,
+	"iScrollRight": 0,
+	"iScrollBottom": 0,
+	"iScrollLeft": 0,
+	"iHeight": 0,
+	"iWidth": 0
+};
+
+/*
+ * Variable: oDoc
+ * Purpose:  Store information about the document size
+ * Scope:    FixedHeader
+ */
+FixedHeader.oDoc = {
+	"iHeight": 0,
+	"iWidth": 0
+};
+
+/*
+ * Variable: afnScroll
+ * Purpose:  Array of functions that are to be used for the scrolling components
+ * Scope:    FixedHeader
+ */
+FixedHeader.afnScroll = [];
+
+/*
+ * Function: fnMeasure
+ * Purpose:  Update the measurements for the window and document
+ * Returns:  -
+ * Inputs:   -
+ */
+FixedHeader.fnMeasure = function ()
+{
+	var
+		jqWin = $(window),
+		jqDoc = $(document),
+		oWin = FixedHeader.oWin,
+		oDoc = FixedHeader.oDoc;
+
+	oDoc.iHeight = jqDoc.height();
+	oDoc.iWidth = jqDoc.width();
+
+	oWin.iHeight = jqWin.height();
+	oWin.iWidth = jqWin.width();
+	oWin.iScrollTop = jqWin.scrollTop();
+	oWin.iScrollLeft = jqWin.scrollLeft();
+	oWin.iScrollRight = oDoc.iWidth - oWin.iScrollLeft - oWin.iWidth;
+	oWin.iScrollBottom = oDoc.iHeight - oWin.iScrollTop - oWin.iHeight;
+};
+
+
+FixedHeader.version = "2.1.2";
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Global processing
+ */
+
+/*
+ * Just one 'scroll' event handler in FixedHeader, which calls the required components. This is
+ * done as an optimisation, to reduce calculation and proagation time
+ */
+$(window).scroll( function () {
+	FixedHeader.fnMeasure();
+
+	for ( var i=0, iLen=FixedHeader.afnScroll.length ; i<iLen ; i++ ) {
+		FixedHeader.afnScroll[i]();
+	}
+} );
+
+
+$.fn.dataTable.FixedHeader = FixedHeader;
+$.fn.DataTable.FixedHeader = FixedHeader;
+
+
+return FixedHeader;
+}; // /factory
+
+
+// Define as an AMD module if possible
+if ( typeof define === 'function' && define.amd ) {
+	define( ['jquery', 'datatables'], factory );
+}
+else if ( typeof exports === 'object' ) {
+    // Node/CommonJS
+    factory( require('jquery'), require('datatables') );
+}
+else if ( jQuery && !jQuery.fn.dataTable.FixedHeader ) {
+	// Otherwise simply initialise as normal, stopping multiple evaluation
+	factory( jQuery, jQuery.fn.dataTable );
+}
+
+
+})(window, document);
+
diff --git a/public/admin/js/DataTables/extensions/FixedHeader/js/dataTables.fixedHeader.min.js b/public/admin/js/DataTables/extensions/FixedHeader/js/dataTables.fixedHeader.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..17160910247351e3312e4c92440287bb400302aa
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/FixedHeader/js/dataTables.fixedHeader.min.js
@@ -0,0 +1,30 @@
+/*!
+ FixedHeader 2.1.2
+ ©2010-2014 SpryMedia Ltd - datatables.net/license
+*/
+var FixedHeader;
+(function(j,k,h){var l=function(e){FixedHeader=function(a,b){if(!this instanceof FixedHeader)alert("FixedHeader warning: FixedHeader must be initialised with the 'new' keyword.");else{var c={aoCache:[],oSides:{top:!0,bottom:!1,left:0,right:0},oZIndexes:{top:104,bottom:103,left:102,right:101},oCloneOnDraw:{top:!1,bottom:!1,left:!0,right:!0},oMes:{iTableWidth:0,iTableHeight:0,iTableLeft:0,iTableRight:0,iTableTop:0,iTableBottom:0},oOffset:{top:0},nTable:null,bFooter:!1,bInitComplete:!1};this.fnGetSettings=
+function(){return c};this.fnUpdate=function(){this._fnUpdateClones();this._fnUpdatePositions()};this.fnPosition=function(){this._fnUpdatePositions()};var d=e.fn.dataTable.Api?(new e.fn.dataTable.Api(a)).settings()[0]:a.fnSettings();d._oPluginFixedHeader=this;this.fnInit(d,b)}};FixedHeader.prototype={fnInit:function(a,b){var c=this.fnGetSettings(),d=this;this.fnInitSettings(c,b);""!==a.oScroll.sX||""!==a.oScroll.sY?alert("FixedHeader 2 is not supported with DataTables' scrolling mode at this time"):
+(c.nTable=a.nTable,a.aoDrawCallback.unshift({fn:function(){FixedHeader.fnMeasure();d._fnUpdateClones.call(d);d._fnUpdatePositions.call(d)},sName:"FixedHeader"}),c.bFooter=0<e(">tfoot",c.nTable).length?!0:!1,c.oSides.top&&c.aoCache.push(d._fnCloneTable("fixedHeader","FixedHeader_Header",d._fnCloneThead)),c.oSides.bottom&&c.aoCache.push(d._fnCloneTable("fixedFooter","FixedHeader_Footer",d._fnCloneTfoot)),c.oSides.left&&c.aoCache.push(d._fnCloneTable("fixedLeft","FixedHeader_Left",d._fnCloneTLeft,c.oSides.left)),
+c.oSides.right&&c.aoCache.push(d._fnCloneTable("fixedRight","FixedHeader_Right",d._fnCloneTRight,c.oSides.right)),FixedHeader.afnScroll.push(function(){d._fnUpdatePositions.call(d)}),e(j).resize(function(){FixedHeader.fnMeasure();d._fnUpdateClones.call(d);d._fnUpdatePositions.call(d)}),e(c.nTable).on("column-reorder.dt",function(){FixedHeader.fnMeasure();d._fnUpdateClones(!0);d._fnUpdatePositions()}).on("column-visibility.dt",function(){FixedHeader.fnMeasure();d._fnUpdateClones(!0);d._fnUpdatePositions()}),
+FixedHeader.fnMeasure(),d._fnUpdateClones(),d._fnUpdatePositions(),c.bInitComplete=!0)},fnInitSettings:function(a,b){if(b!==h&&(b.top!==h&&(a.oSides.top=b.top),b.bottom!==h&&(a.oSides.bottom=b.bottom),"boolean"==typeof b.left?a.oSides.left=b.left?1:0:b.left!==h&&(a.oSides.left=b.left),"boolean"==typeof b.right?a.oSides.right=b.right?1:0:b.right!==h&&(a.oSides.right=b.right),b.zTop!==h&&(a.oZIndexes.top=b.zTop),b.zBottom!==h&&(a.oZIndexes.bottom=b.zBottom),b.zLeft!==h&&(a.oZIndexes.left=b.zLeft),b.zRight!==
+h&&(a.oZIndexes.right=b.zRight),b.offsetTop!==h&&(a.oOffset.top=b.offsetTop),b.alwaysCloneTop!==h&&(a.oCloneOnDraw.top=b.alwaysCloneTop),b.alwaysCloneBottom!==h&&(a.oCloneOnDraw.bottom=b.alwaysCloneBottom),b.alwaysCloneLeft!==h&&(a.oCloneOnDraw.left=b.alwaysCloneLeft),b.alwaysCloneRight!==h))a.oCloneOnDraw.right=b.alwaysCloneRight},_fnCloneTable:function(a,b,c,d){var f=this.fnGetSettings(),g;"absolute"!=e(f.nTable.parentNode).css("position")&&(f.nTable.parentNode.style.position="relative");g=f.nTable.cloneNode(!1);
+g.removeAttribute("id");var i=k.createElement("div");i.style.position="absolute";i.style.top="0px";i.style.left="0px";i.className+=" FixedHeader_Cloned "+a+" "+b;"fixedHeader"==a&&(i.style.zIndex=f.oZIndexes.top);"fixedFooter"==a&&(i.style.zIndex=f.oZIndexes.bottom);"fixedLeft"==a?i.style.zIndex=f.oZIndexes.left:"fixedRight"==a&&(i.style.zIndex=f.oZIndexes.right);g.style.margin="0";i.appendChild(g);k.body.appendChild(i);return{nNode:g,nWrapper:i,sType:a,sPosition:"",sTop:"",sLeft:"",fnClone:c,iCells:d}},
+_fnMeasure:function(){var a=this.fnGetSettings(),b=a.oMes,c=e(a.nTable),d=c.offset(),f=this._fnSumScroll(a.nTable.parentNode,"scrollTop");this._fnSumScroll(a.nTable.parentNode,"scrollLeft");b.iTableWidth=c.outerWidth();b.iTableHeight=c.outerHeight();b.iTableLeft=d.left+a.nTable.parentNode.scrollLeft;b.iTableTop=d.top+f;b.iTableRight=b.iTableLeft+b.iTableWidth;b.iTableRight=FixedHeader.oDoc.iWidth-b.iTableLeft-b.iTableWidth;b.iTableBottom=FixedHeader.oDoc.iHeight-b.iTableTop-b.iTableHeight},_fnSumScroll:function(a,
+b){for(var c=a[b];(a=a.parentNode)&&!("HTML"==a.nodeName||"BODY"==a.nodeName);)c=a[b];return c},_fnUpdatePositions:function(){var a=this.fnGetSettings();this._fnMeasure();for(var b=0,c=a.aoCache.length;b<c;b++)"fixedHeader"==a.aoCache[b].sType?this._fnScrollFixedHeader(a.aoCache[b]):"fixedFooter"==a.aoCache[b].sType?this._fnScrollFixedFooter(a.aoCache[b]):"fixedLeft"==a.aoCache[b].sType?this._fnScrollHorizontalLeft(a.aoCache[b]):this._fnScrollHorizontalRight(a.aoCache[b])},_fnUpdateClones:function(a){var b=
+this.fnGetSettings();a&&(b.bInitComplete=!1);for(var c=0,d=b.aoCache.length;c<d;c++)b.aoCache[c].fnClone.call(this,b.aoCache[c]);a&&(b.bInitComplete=!0)},_fnScrollHorizontalRight:function(a){var b=this.fnGetSettings().oMes,c=FixedHeader.oWin,d=FixedHeader.oDoc,f=a.nWrapper,g=e(f).outerWidth();c.iScrollRight<b.iTableRight?(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",f.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+b.iTableWidth-
+g+"px","left",f.style)):b.iTableLeft<d.iWidth-c.iScrollRight-g?(this._fnUpdateCache(a,"sPosition","fixed","position",f.style),this._fnUpdateCache(a,"sTop",b.iTableTop-c.iScrollTop+"px","top",f.style),this._fnUpdateCache(a,"sLeft",c.iWidth-g+"px","left",f.style)):(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",f.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+"px","left",f.style))},_fnScrollHorizontalLeft:function(a){var b=this.fnGetSettings().oMes,
+c=FixedHeader.oWin,d=a.nWrapper,f=e(d).outerWidth();c.iScrollLeft<b.iTableLeft?(this._fnUpdateCache(a,"sPosition","absolute","position",d.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",d.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+"px","left",d.style)):c.iScrollLeft<b.iTableLeft+b.iTableWidth-f?(this._fnUpdateCache(a,"sPosition","fixed","position",d.style),this._fnUpdateCache(a,"sTop",b.iTableTop-c.iScrollTop+"px","top",d.style),this._fnUpdateCache(a,"sLeft","0px","left",d.style)):
+(this._fnUpdateCache(a,"sPosition","absolute","position",d.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",d.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+b.iTableWidth-f+"px","left",d.style))},_fnScrollFixedFooter:function(a){var b=this.fnGetSettings(),c=b.oMes,d=FixedHeader.oWin,f=a.nWrapper,b=e("thead",b.nTable).outerHeight(),g=e(f).outerHeight();d.iScrollBottom<c.iTableBottom?(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",c.iTableTop+
+c.iTableHeight-g+"px","top",f.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft+"px","left",f.style)):d.iScrollBottom<c.iTableBottom+c.iTableHeight-g-b?(this._fnUpdateCache(a,"sPosition","fixed","position",f.style),this._fnUpdateCache(a,"sTop",d.iHeight-g+"px","top",f.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft-d.iScrollLeft+"px","left",f.style)):(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",c.iTableTop+g+"px","top",f.style),this._fnUpdateCache(a,
+"sLeft",c.iTableLeft+"px","left",f.style))},_fnScrollFixedHeader:function(a){for(var b=this.fnGetSettings(),c=b.oMes,d=FixedHeader.oWin,e=a.nWrapper,g=0,i=b.nTable.getElementsByTagName("tbody"),h=0;h<i.length;++h)g+=i[h].offsetHeight;c.iTableTop>d.iScrollTop+b.oOffset.top?(this._fnUpdateCache(a,"sPosition","absolute","position",e.style),this._fnUpdateCache(a,"sTop",c.iTableTop+"px","top",e.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft+"px","left",e.style)):d.iScrollTop+b.oOffset.top>c.iTableTop+
+g?(this._fnUpdateCache(a,"sPosition","absolute","position",e.style),this._fnUpdateCache(a,"sTop",c.iTableTop+g+"px","top",e.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft+"px","left",e.style)):(this._fnUpdateCache(a,"sPosition","fixed","position",e.style),this._fnUpdateCache(a,"sTop",b.oOffset.top+"px","top",e.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft-d.iScrollLeft+"px","left",e.style))},_fnUpdateCache:function(a,b,c,d,e){a[b]!=c&&(e[d]=c,a[b]=c)},_fnClassUpdate:function(a,b){var c=this;
+if("TR"===a.nodeName.toUpperCase()||"TH"===a.nodeName.toUpperCase()||"TD"===a.nodeName.toUpperCase()||"SPAN"===a.nodeName.toUpperCase())b.className=a.className;e(a).children().each(function(d){c._fnClassUpdate(e(a).children()[d],e(b).children()[d])})},_fnCloneThead:function(a){var b=this.fnGetSettings(),c=a.nNode;if(b.bInitComplete&&!b.oCloneOnDraw.top)this._fnClassUpdate(e("thead",b.nTable)[0],e("thead",c)[0]);else{var d=e(b.nTable).outerWidth();a.nWrapper.style.width=d+"px";for(c.style.width=d+
+"px";0<c.childNodes.length;)e("thead th",c).unbind("click"),c.removeChild(c.childNodes[0]);a=e("thead",b.nTable).clone(!0)[0];c.appendChild(a);var f=[],g=[];e("thead>tr th",b.nTable).each(function(){f.push(e(this).width())});e("thead>tr td",b.nTable).each(function(){g.push(e(this).width())});e("thead>tr th",b.nTable).each(function(a){e("thead>tr th:eq("+a+")",c).width(f[a]);e(this).width(f[a])});e("thead>tr td",b.nTable).each(function(a){e("thead>tr td:eq("+a+")",c).width(g[a]);e(this).width(g[a])});
+e("th.sorting, th.sorting_desc, th.sorting_asc",c).bind("click",function(){this.blur()})}},_fnCloneTfoot:function(a){var b=this.fnGetSettings(),c=a.nNode;for(a.nWrapper.style.width=e(b.nTable).outerWidth()+"px";0<c.childNodes.length;)c.removeChild(c.childNodes[0]);a=e("tfoot",b.nTable).clone(!0)[0];c.appendChild(a);e("tfoot:eq(0)>tr th",b.nTable).each(function(a){e("tfoot:eq(0)>tr th:eq("+a+")",c).width(e(this).width())});e("tfoot:eq(0)>tr td",b.nTable).each(function(a){e("tfoot:eq(0)>tr td:eq("+
+a+")",c).width(e(this).width())})},_fnCloneTLeft:function(a){for(var b=this.fnGetSettings(),c=a.nNode,d=e("tbody",b.nTable)[0];0<c.childNodes.length;)c.removeChild(c.childNodes[0]);c.appendChild(e("thead",b.nTable).clone(!0)[0]);c.appendChild(e("tbody",b.nTable).clone(!0)[0]);b.bFooter&&c.appendChild(e("tfoot",b.nTable).clone(!0)[0]);var f="gt("+(a.iCells-1)+")";e("thead tr",c).each(function(){e("th:"+f,this).remove()});e("tfoot tr",c).each(function(){e("th:"+f,this).remove()});e("tbody tr",c).each(function(){e("td:"+
+f,this).remove()});this.fnEqualiseHeights("thead",d.parentNode,c);this.fnEqualiseHeights("tbody",d.parentNode,c);this.fnEqualiseHeights("tfoot",d.parentNode,c);for(var g=d=0;g<a.iCells;g++)d+=e("thead tr th:eq("+g+")",b.nTable).outerWidth();c.style.width=d+"px";a.nWrapper.style.width=d+"px"},_fnCloneTRight:function(a){for(var b=this.fnGetSettings(),c=e("tbody",b.nTable)[0],d=a.nNode,f=e("tbody tr:eq(0) td",b.nTable).length;0<d.childNodes.length;)d.removeChild(d.childNodes[0]);d.appendChild(e("thead",
+b.nTable).clone(!0)[0]);d.appendChild(e("tbody",b.nTable).clone(!0)[0]);b.bFooter&&d.appendChild(e("tfoot",b.nTable).clone(!0)[0]);e("thead tr th:lt("+(f-a.iCells)+")",d).remove();e("tfoot tr th:lt("+(f-a.iCells)+")",d).remove();e("tbody tr",d).each(function(){e("td:lt("+(f-a.iCells)+")",this).remove()});this.fnEqualiseHeights("thead",c.parentNode,d);this.fnEqualiseHeights("tbody",c.parentNode,d);this.fnEqualiseHeights("tfoot",c.parentNode,d);for(var g=c=0;g<a.iCells;g++)c+=e("thead tr th:eq("+(f-
+1-g)+")",b.nTable).outerWidth();d.style.width=c+"px";a.nWrapper.style.width=c+"px"},fnEqualiseHeights:function(a,b,c){var d=e(a+" tr",b),f;e(a+" tr",c).each(function(a){f=d.eq(a).css("height");"Microsoft Internet Explorer"==navigator.appName&&(f=parseInt(f,10)+1);e(this).css("height",f);d.eq(a).css("height",f)})}};FixedHeader.oWin={iScrollTop:0,iScrollRight:0,iScrollBottom:0,iScrollLeft:0,iHeight:0,iWidth:0};FixedHeader.oDoc={iHeight:0,iWidth:0};FixedHeader.afnScroll=[];FixedHeader.fnMeasure=function(){var a=
+e(j),b=e(k),c=FixedHeader.oWin,d=FixedHeader.oDoc;d.iHeight=b.height();d.iWidth=b.width();c.iHeight=a.height();c.iWidth=a.width();c.iScrollTop=a.scrollTop();c.iScrollLeft=a.scrollLeft();c.iScrollRight=d.iWidth-c.iScrollLeft-c.iWidth;c.iScrollBottom=d.iHeight-c.iScrollTop-c.iHeight};FixedHeader.version="2.1.2";e(j).scroll(function(){FixedHeader.fnMeasure();for(var a=0,b=FixedHeader.afnScroll.length;a<b;a++)FixedHeader.afnScroll[a]()});e.fn.dataTable.FixedHeader=FixedHeader;return e.fn.DataTable.FixedHeader=
+FixedHeader};"function"===typeof define&&define.amd?define(["jquery","datatables"],l):"object"===typeof exports?l(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.FixedHeader&&l(jQuery,jQuery.fn.dataTable)})(window,document);
diff --git a/public/admin/js/DataTables/extensions/KeyTable/Readme.txt b/public/admin/js/DataTables/extensions/KeyTable/Readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..345e9113ba17b8c9d34e04826af6694761b07639
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/KeyTable/Readme.txt
@@ -0,0 +1,36 @@
+# KeyTable
+
+KeyTable provides enhanced accessibility and navigation options for DataTables enhanced tables, by allowing Excel like cell navigation on any table. Events (focus, blur, action etc) can be assigned to individual cells, columns, rows or all cells to allow advanced interaction options.. Key features include:
+
+* Easy to use spreadsheet like interaction
+* Fully integrated with DataTables
+* Wide range of supported events
+
+
+# Installation
+
+To use KeyTable, first download DataTables ( http://datatables.net/download ) and place the unzipped KeyTable package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
+
+
+# Basic usage
+
+KeyTable is initialised using the `C` option that it adds to DataTables' `dom` option. For example:
+
+```js
+$(document).ready( function () {
+	var table = $('#example').DataTable();
+	new $.fn.dataTable.KeyTable( table );
+} );
+```
+
+
+# Documentation / support
+
+* Documentation: http://datatables.net/extensions/keytable/
+* DataTables support forums: http://datatables.net/forums
+
+
+# GitHub
+
+If you fancy getting involved with the development of KeyTable and help make it better, please refer to its GitHub repo: https://github.com/DataTables/KeyTable
+
diff --git a/public/admin/js/DataTables/extensions/KeyTable/css/dataTables.keyTable.css b/public/admin/js/DataTables/extensions/KeyTable/css/dataTables.keyTable.css
new file mode 100644
index 0000000000000000000000000000000000000000..2759df1b2d70f3696d43342a49fda1d8c1296086
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/KeyTable/css/dataTables.keyTable.css
@@ -0,0 +1,7 @@
+
+
+table.KeyTable th.focus,
+table.KeyTable td.focus {
+	outline: 3px solid #3366FF;
+	outline-offset: -3px;
+}
diff --git a/public/admin/js/DataTables/extensions/KeyTable/css/dataTables.keyTable.min.css b/public/admin/js/DataTables/extensions/KeyTable/css/dataTables.keyTable.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..db04020176d7a14fca626938d78b5b4991b75361
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/KeyTable/css/dataTables.keyTable.min.css
@@ -0,0 +1 @@
+table.KeyTable th.focus,table.KeyTable td.focus{outline:3px solid #3366FF;outline-offset:-3px}
diff --git a/public/admin/js/DataTables/extensions/KeyTable/examples/events.html b/public/admin/js/DataTables/extensions/KeyTable/examples/events.html
new file mode 100644
index 0000000000000000000000000000000000000000..2ef0a9f875621414628da82880fb629e11ddcee5
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/KeyTable/examples/events.html
@@ -0,0 +1,756 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>KeyTable example - Events</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.keyTable.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.keyTable.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+function eventMsg ( msg ) {
+	var n = document.getElementById('info');
+	n.innerHTML += msg+"<br>";
+	n.scrollTop = n.scrollHeight;
+}
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+	var keys = new $.fn.dataTable.KeyTable( table );
+
+	/* Focus handler for all cells in last column */
+	keys.event.focus( 4, null, function( node, x, y ) {
+		eventMsg( "Cell "+x+","+y+" focused ('live' event - column)" );
+	} );
+	
+	/* Focus handler for all cells in 8th row */
+	keys.event.focus( null, 7, function( node, x, y ) {
+		eventMsg( "Cell "+x+","+y+" focused ('live' event - row)" );
+	} );
+	
+	/* Focus using coords. */
+	keys.event.focus( 1, 0, function( node ) {
+		keys.event.remove.focus( node );
+		eventMsg( "Cell 1,0 focus - this event has now been removed" );
+	} );
+	
+	keys.event.focus( 1, 3, function() {
+		eventMsg( "Cell 1,3 focus" );
+	} );
+	
+	/* focus with a node */
+	keys.event.focus( $('#example tbody tr:eq(2) td:eq(0)')[0], function() {
+		eventMsg( "Cell 0,2 focus" );
+	} );
+	
+	/* Blur using a node */
+	keys.event.blur( $('#example tbody tr:eq(1) td:eq(2)')[0], function() {
+		eventMsg( "Cell 1,2 blur" );
+	} );
+	
+	/* Blur using coords */
+	keys.event.blur( 2, 4, function() {
+		eventMsg( "Cell 2,4 blur" );
+	} );
+	
+	/* Action */
+	keys.event.action( 2, 2, function( node ) {
+		eventMsg( "Cell 2,2 action" );
+		if ( node.style.fontWeight == "" || node.style.fontWeight == "normal" ) {
+			node.style.fontWeight = "bold";
+		}
+		else {
+			node.style.fontWeight = "normal";
+		}
+	} );
+	
+	keys.event.action( 2, 5, function( node ) {
+		eventMsg( "Cell 2,5 action" );
+		if ( node.style.fontStyle == "" ) {
+			node.style.fontStyle = "italic";
+		}
+		else {
+			node.style.fontStyle = "";
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>KeyTable example <span>Events</span></h1>
+
+			<div class="info">
+				<p>KeyTable provides the ability to listen for events such as <code>focus</code>, <code>blur</code>,
+				<code>esc</code> (the escape key) and 'return' (the return key) can be assigned event handling
+				functions through KeyTable's the API. This gives you the ability to take an action on a cell.</p>
+
+				<p>The example shown below has a few cells (selected at random, but near the top) with blur and focus
+				events assigned to them. You can also see the navigation around the table using arrow keys.</p>
+			</div>
+
+			<div id="info" class="box">
+				Event information:<br>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">function eventMsg ( msg ) {
+	var n = document.getElementById('info');
+	n.innerHTML += msg+&quot;&lt;br&gt;&quot;;
+	n.scrollTop = n.scrollHeight;
+}
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+	var keys = new $.fn.dataTable.KeyTable( table );
+
+	/* Focus handler for all cells in last column */
+	keys.event.focus( 4, null, function( node, x, y ) {
+		eventMsg( &quot;Cell &quot;+x+&quot;,&quot;+y+&quot; focused ('live' event - column)&quot; );
+	} );
+	
+	/* Focus handler for all cells in 8th row */
+	keys.event.focus( null, 7, function( node, x, y ) {
+		eventMsg( &quot;Cell &quot;+x+&quot;,&quot;+y+&quot; focused ('live' event - row)&quot; );
+	} );
+	
+	/* Focus using coords. */
+	keys.event.focus( 1, 0, function( node ) {
+		keys.event.remove.focus( node );
+		eventMsg( &quot;Cell 1,0 focus - this event has now been removed&quot; );
+	} );
+	
+	keys.event.focus( 1, 3, function() {
+		eventMsg( &quot;Cell 1,3 focus&quot; );
+	} );
+	
+	/* focus with a node */
+	keys.event.focus( $('#example tbody tr:eq(2) td:eq(0)')[0], function() {
+		eventMsg( &quot;Cell 0,2 focus&quot; );
+	} );
+	
+	/* Blur using a node */
+	keys.event.blur( $('#example tbody tr:eq(1) td:eq(2)')[0], function() {
+		eventMsg( &quot;Cell 1,2 blur&quot; );
+	} );
+	
+	/* Blur using coords */
+	keys.event.blur( 2, 4, function() {
+		eventMsg( &quot;Cell 2,4 blur&quot; );
+	} );
+	
+	/* Action */
+	keys.event.action( 2, 2, function( node ) {
+		eventMsg( &quot;Cell 2,2 action&quot; );
+		if ( node.style.fontWeight == &quot;&quot; || node.style.fontWeight == &quot;normal&quot; ) {
+			node.style.fontWeight = &quot;bold&quot;;
+		}
+		else {
+			node.style.fontWeight = &quot;normal&quot;;
+		}
+	} );
+	
+	keys.event.action( 2, 5, function( node ) {
+		eventMsg( &quot;Cell 2,5 action&quot; );
+		if ( node.style.fontStyle == &quot;&quot; ) {
+			node.style.fontStyle = &quot;italic&quot;;
+		}
+		else {
+			node.style.fontStyle = &quot;&quot;;
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.keyTable.js">../js/dataTables.keyTable.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.keyTable.css">../css/dataTables.keyTable.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li class="active"><a href="./events.html">Events</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./html.html">Plain HTML table</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/KeyTable/examples/html.html b/public/admin/js/DataTables/extensions/KeyTable/examples/html.html
new file mode 100644
index 0000000000000000000000000000000000000000..a0a0e108b7936e1d62a64d14f7f29cb4bf4f1bf7
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/KeyTable/examples/html.html
@@ -0,0 +1,627 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>KeyTable example - Plain HTML table</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.keyTable.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.keyTable.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').addClass('KeyTable');
+	new $.fn.dataTable.KeyTable();
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>KeyTable example <span>Plain HTML table</span></h1>
+
+			<div class="info">
+				<p>As well as being usable with DataTables, KeyTable can also be used with a plain HTML table. Please
+				note that this ability is deprecated and will be removed in KeyTable 1.3.</p>
+
+				<p>This example shows KeyTable being initialised without any parameter, which instructs it to search
+				for any table with the class <code>KeyTable</code> which will be used.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').addClass('KeyTable');
+	new $.fn.dataTable.KeyTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.keyTable.js">../js/dataTables.keyTable.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.keyTable.css">../css/dataTables.keyTable.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./events.html">Events</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li class="active"><a href="./html.html">Plain HTML table</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/KeyTable/examples/index.html b/public/admin/js/DataTables/extensions/KeyTable/examples/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..71ab0a8f854ec17215f87b767ed4d2a57133df03
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/KeyTable/examples/index.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+
+	<title>KeyTable examples - KeyTable examples</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>KeyTable example <span>KeyTable examples</span></h1>
+
+			<div class="info">
+				<p>KeyTable provides enhanced accessibility and navigation options for DataTables enhanced tables, by
+				allowing Excel like cell navigation on any table. Events (focus, blur, action etc) can be assigned to
+				individual cells, columns, rows or all cells to allow advanced interaction options.. Key features
+				include:</p>
+
+				<ul class="markdown">
+					<li>Easy to use spreadsheet like interaction</li>
+					<li>Fully integrated with DataTables</li>
+					<li>Wide range of supported events</li>
+					<li>Works without DataTables if you just want a plain table</li>
+				</ul>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./events.html">Events</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./html.html">Plain HTML table</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/KeyTable/examples/scrolling.html b/public/admin/js/DataTables/extensions/KeyTable/examples/scrolling.html
new file mode 100644
index 0000000000000000000000000000000000000000..6df1580538dfd5de6bcf1df4de0f34219b44fddf
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/KeyTable/examples/scrolling.html
@@ -0,0 +1,637 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>KeyTable example - Scrolling table</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.keyTable.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.keyTable.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY: 300,
+		paging: false
+	} );
+
+	new $.fn.dataTable.KeyTable( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>KeyTable example <span>Scrolling table</span></h1>
+
+			<div class="info">
+				<p>KeyTable supports DataTables' scrolling options (<a href=
+				"//datatables.net/reference/option/scrollX"><code class="option" title=
+				"DataTables initialisation option">scrollX<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/option/scrollY"><code class="option" title=
+				"DataTables initialisation option">scrollY<span>DT</span></code></a>) without required any additional
+				configuration. As the navigation keys are used to alter the focus of the KeyTable, the DataTables
+				scrolling position is altered to show the focused cell.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		scrollY: 300,
+		paging: false
+	} );
+
+	new $.fn.dataTable.KeyTable( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.keyTable.js">../js/dataTables.keyTable.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.keyTable.css">../css/dataTables.keyTable.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./events.html">Events</a></li>
+							<li class="active"><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./html.html">Plain HTML table</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/KeyTable/examples/simple.html b/public/admin/js/DataTables/extensions/KeyTable/examples/simple.html
new file mode 100644
index 0000000000000000000000000000000000000000..e18ed1c6d2c774781f55ecadab1a94cd63d51b23
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/KeyTable/examples/simple.html
@@ -0,0 +1,631 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>KeyTable example - Basic initialisation</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.keyTable.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.keyTable.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.KeyTable( table );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>KeyTable example <span>Basic initialisation</span></h1>
+
+			<div class="info">
+				<p>KeyTable allows you to use keyboard navigation on a DataTables enhanced table, like an Excel
+				spreadsheet. The focused cell is shown through the CSS class ('focus') which in the case below is
+				simply a blue border. Use your keyboard's arrow keys and click the cells in the table to navigate.</p>
+
+				<p>This example simply shows key table being initialised on a DataTable, but <a href=
+				"events.html">events</a> can be listened for through the KeyTable API which provide interaction
+				options.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.KeyTable( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.keyTable.js">../js/dataTables.keyTable.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.keyTable.css">../css/dataTables.keyTable.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./events.html">Events</a></li>
+							<li><a href="./scrolling.html">Scrolling table</a></li>
+							<li><a href="./html.html">Plain HTML table</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/KeyTable/js/dataTables.keyTable.js b/public/admin/js/DataTables/extensions/KeyTable/js/dataTables.keyTable.js
new file mode 100644
index 0000000000000000000000000000000000000000..f303f766000a7fdce2b2639b9c1e06f36b24a1f4
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/KeyTable/js/dataTables.keyTable.js
@@ -0,0 +1,1175 @@
+/*! KeyTable 1.2.1
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     KeyTable
+ * @description Spreadsheet like keyboard navigation for DataTables
+ * @version     1.2.1
+ * @file        dataTables.keyTable.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2009-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+// Global scope for KeyTable for backwards compatibility. Will be removed in 1.3
+var KeyTable;
+
+
+(function(window, document, undefined) {
+
+
+var factory = function( $, DataTable ) {
+"use strict";
+
+KeyTable = function ( oInit )
+{
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * API parameters
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/*
+	 * Variable: block
+	 * Purpose:  Flag whether or not KeyTable events should be processed
+	 * Scope:    KeyTable - public
+	 */
+	this.block = false;
+
+	/*
+	 * Variable: event
+	 * Purpose:  Container for all event application methods
+	 * Scope:    KeyTable - public
+	 * Notes:    This object contains all the public methods for adding and removing events - these
+	 *           are dynamically added later on
+	 */
+	this.event = {
+		"remove": {}
+	};
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * API methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/*
+	 * Function: fnGetCurrentPosition
+	 * Purpose:  Get the currently focused cell's position
+	 * Returns:  array int: [ x, y ]
+	 * Inputs:   void
+	 */
+	this.fnGetCurrentPosition = function ()
+	{
+		return [ _iOldX, _iOldY ];
+	};
+
+
+	/*
+	 * Function: fnGetCurrentData
+	 * Purpose:  Get the currently focused cell's data (innerHTML)
+	 * Returns:  string: - data requested
+	 * Inputs:   void
+	 */
+	this.fnGetCurrentData = function ()
+	{
+		return _nOldFocus.innerHTML;
+	};
+
+
+	/*
+	 * Function: fnGetCurrentTD
+	 * Purpose:  Get the currently focused cell
+	 * Returns:  node: - focused element
+	 * Inputs:   void
+	 */
+	this.fnGetCurrentTD = function ()
+	{
+		return _nOldFocus;
+	};
+
+
+	/*
+	 * Function: fnSetPosition
+	 * Purpose:  Set the position of the focused cell
+	 * Returns:  -
+	 * Inputs:   int:x - x coordinate
+	 *           int:y - y coordinate
+	 * Notes:    Thanks to Rohan Daxini for the basis of this function
+	 */
+	this.fnSetPosition = function( x, y )
+	{
+		if ( typeof x == 'object' && x.nodeName )
+		{
+			_fnSetFocus( x );
+		}
+		else
+		{
+			_fnSetFocus( _fnCellFromCoords(x, y) );
+		}
+	};
+
+
+	/*
+	 * Function: fnBlur
+	 * Purpose:  Blur the current focus
+	 * Returns:  -
+	 * Inputs:   -
+	 */
+	this.fnBlur = function()
+	{
+		_fnBlur();
+	};
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private parameters
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/*
+	 * Variable: _nBody
+	 * Purpose:  Body node of the table - cached for renference
+	 * Scope:    KeyTable - private
+	 */
+	var _nBody = null;
+
+	/*
+	 * Variable: 
+	 * Purpose:  
+	 * Scope:    KeyTable - private
+	 */
+	var _nOldFocus = null;
+
+	/*
+	 * Variable: _iOldX and _iOldY
+	 * Purpose:  X and Y coords of the old elemet that was focused on
+	 * Scope:    KeyTable - private
+	 */
+	var _iOldX = null;
+	var _iOldY = null;
+
+	/*
+	 * Variable: _that
+	 * Purpose:  Scope saving for 'this' after a jQuery event
+	 * Scope:    KeyTable - private
+	 */
+	var _that = null;
+
+	/*
+	 * Variable: sFocusClass
+	 * Purpose:  Class that should be used for focusing on a cell
+	 * Scope:    KeyTable - private
+	 */
+	var _sFocusClass = "focus";
+
+	/*
+	 * Variable: _bKeyCapture
+	 * Purpose:  Flag for should KeyTable capture key events or not
+	 * Scope:    KeyTable - private
+	 */
+	var _bKeyCapture = false;
+
+	/*
+	 * Variable: _oaoEvents
+	 * Purpose:  Event cache object, one array for each supported event for speed of searching
+	 * Scope:    KeyTable - private
+	 */
+	var _oaoEvents = {
+		"action": [],
+		"esc": [],
+		"focus": [],
+		"blur": []
+	};
+
+	/*
+	 * Variable: _oDatatable
+	 * Purpose:  DataTables settings object for if we are actually using a 
+	 *           DataTables table
+	 * Scope:    KeyTable - private
+	 */
+	var _oDatatable = null;
+
+	var _bForm;
+	var _nInput;
+	var _bInputFocused = false;
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Key table events
+	 */
+
+	/*
+	 * Function: _fnEventAddTemplate
+	 * Purpose:  Create a function (with closure for sKey) event addition API
+	 * Returns:  function: - template function
+	 * Inputs:   string:sKey - type of event to detect
+	 */
+	function _fnEventAddTemplate( sKey )
+	{
+		/*
+		 * Function: -
+		 * Purpose:  API function for adding event to cache
+		 * Returns:  -
+		 * Inputs:   1. node:x - target node to add event for
+		 *           2. function:y - callback function to apply
+		 *         or
+		 *           1. int:x - x coord. of target cell (can be null for live events)
+		 *           2. int:y - y coord. of target cell (can be null for live events)
+		 *           3. function:z - callback function to apply
+		 * Notes:    This function is (interally) overloaded (in as much as javascript allows for
+		 *           that) - the target cell can be given by either node or coords.
+		 */
+		return function ( x, y, z ) {
+			if ( (x===null || typeof x == "number") &&
+				 (y===null || typeof y == "number") &&
+				 typeof z == "function" )
+			{
+				_fnEventAdd( sKey, x, y, z );
+			}
+			else if ( typeof x == "object" && typeof y == "function" )
+			{
+				var aCoords = _fnCoordsFromCell( x );
+				_fnEventAdd( sKey, aCoords[0], aCoords[1], y );
+			}
+			else
+			{
+				alert( "Unhandable event type was added: x" +x+ "  y:" +y+ "  z:" +z );
+			}
+		};
+	}
+
+
+	/*
+	 * Function: _fnEventRemoveTemplate
+	 * Purpose:  Create a function (with closure for sKey) event removal API
+	 * Returns:  function: - template function
+	 * Inputs:   string:sKey - type of event to detect
+	 */
+	function _fnEventRemoveTemplate( sKey )
+	{
+		/*
+		 * Function: -
+		 * Purpose:  API function for removing event from cache
+		 * Returns:  int: - number of events removed
+		 * Inputs:   1. node:x - target node to remove event from
+		 *           2. function:y - callback function to apply
+		 *         or
+		 *           1. int:x - x coord. of target cell (can be null for live events)
+		 *           2. int:y - y coord. of target cell (can be null for live events)
+		 *           3. function:z - callback function to remove - optional
+		 * Notes:    This function is (interally) overloaded (in as much as javascript allows for
+		 *           that) - the target cell can be given by either node or coords and the function
+		 *           to remove is optional
+		 */
+		return function ( x, y, z ) {
+			if ( (x===null || typeof arguments[0] == "number") &&
+				 (y===null || typeof arguments[1] == "number" ) )
+			{
+				if ( typeof arguments[2] == "function" )
+				{
+					_fnEventRemove( sKey, x, y, z );
+				}
+				else
+				{
+					_fnEventRemove( sKey, x, y );
+				}
+			}
+			else if ( typeof arguments[0] == "object" )
+			{
+				var aCoords = _fnCoordsFromCell( x );
+				if ( typeof arguments[1] == "function" )
+				{
+					_fnEventRemove( sKey, aCoords[0], aCoords[1], y );
+				}
+				else
+				{
+					_fnEventRemove( sKey, aCoords[0], aCoords[1] );
+				}
+			}
+			else
+			{
+				alert( "Unhandable event type was removed: x" +x+ "  y:" +y+ "  z:" +z );
+			}
+		};
+	}
+
+	/* Use the template functions to add the event API functions */
+	for ( var sKey in _oaoEvents )
+	{
+		if ( sKey )
+		{
+			this.event[sKey] = _fnEventAddTemplate( sKey );
+			this.event.remove[sKey] = _fnEventRemoveTemplate( sKey );
+		}
+	}
+
+
+	/*
+	 * Function: _fnEventAdd
+	 * Purpose:  Add an event to the internal cache
+	 * Returns:  -
+	 * Inputs:   string:sType - type of event to add, given by the available elements in _oaoEvents
+	 *           int:x - x-coords to add event to - can be null for "blanket" event
+	 *           int:y - y-coords to add event to - can be null for "blanket" event
+	 *           function:fn - callback function for when triggered
+	 */
+	function _fnEventAdd( sType, x, y, fn )
+	{
+		_oaoEvents[sType].push( {
+			"x": x,
+			"y": y,
+			"fn": fn
+		} );
+	}
+
+
+	/*
+	 * Function: _fnEventRemove
+	 * Purpose:  Remove an event from the event cache
+	 * Returns:  int: - number of matching events removed
+	 * Inputs:   string:sType - type of event to look for
+	 *           node:nTarget - target table cell
+	 *           function:fn - optional - remove this function. If not given all handlers of this
+	 *             type will be removed
+	 */
+	function _fnEventRemove( sType, x, y, fn )
+	{
+		var iCorrector = 0;
+
+		for ( var i=0, iLen=_oaoEvents[sType].length ; i<iLen-iCorrector ; i++ )
+		{
+			if ( typeof fn != 'undefined' )
+			{
+				if ( _oaoEvents[sType][i-iCorrector].x == x &&
+					 _oaoEvents[sType][i-iCorrector].y == y &&
+					   _oaoEvents[sType][i-iCorrector].fn == fn )
+				{
+					_oaoEvents[sType].splice( i-iCorrector, 1 );
+					iCorrector++;
+				}
+			}
+			else
+			{
+				if ( _oaoEvents[sType][i-iCorrector].x == x &&
+					 _oaoEvents[sType][i-iCorrector].y == y )
+				{
+					_oaoEvents[sType].splice( i, 1 );
+					return 1;
+				}
+			}
+		}
+		return iCorrector;
+	}
+
+
+	/*
+	 * Function: _fnEventFire
+	 * Purpose:  Look thought the events cache and fire off the event of interest
+	 * Returns:  int:iFired - number of events fired
+	 * Inputs:   string:sType - type of event to look for
+	 *           int:x - x coord of cell
+	 *           int:y - y coord of  ell
+	 * Notes:    It might be more efficient to return after the first event has been tirggered,
+	 *           but that would mean that only one function of a particular type can be
+	 *           subscribed to a particular node.
+	 */
+	function _fnEventFire ( sType, x, y )
+	{
+		var iFired = 0;
+		var aEvents = _oaoEvents[sType];
+		for ( var i=0 ; i<aEvents.length ; i++ )
+		{
+			if ( (aEvents[i].x == x     && aEvents[i].y == y    ) ||
+				 (aEvents[i].x === null && aEvents[i].y == y    ) ||
+				 (aEvents[i].x == x     && aEvents[i].y === null ) ||
+				 (aEvents[i].x === null && aEvents[i].y === null )
+			)
+			{
+				aEvents[i].fn( _fnCellFromCoords(x,y), x, y );
+				iFired++;
+			}
+		}
+		return iFired;
+	}
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Focus functions
+	 */
+
+	/*
+	 * Function: _fnSetFocus
+	 * Purpose:  Set focus on a node, and remove from an old node if needed
+	 * Returns:  -
+	 * Inputs:   node:nTarget - node we want to focus on
+	 *           bool:bAutoScroll - optional - should we scroll the view port to the display
+	 */
+	function _fnSetFocus( nTarget, bAutoScroll )
+	{
+		/* If node already has focus, just ignore this call */
+		if ( _nOldFocus == nTarget )
+		{
+			return;
+		}
+
+		if ( typeof bAutoScroll == 'undefined' )
+		{
+			bAutoScroll = true;
+		}
+
+		/* Remove old focus (with blur event if needed) */
+		if ( _nOldFocus !== null )
+		{
+			_fnRemoveFocus( _nOldFocus );
+		}
+
+		/* Add the new class to highlight the focused cell */
+		$(nTarget).addClass( _sFocusClass );
+		$(nTarget).parent().addClass( _sFocusClass );
+
+		/* If it's a DataTable then we need to jump the paging to the relevant page */
+		var oSettings;
+		if ( _oDatatable )
+		{
+			oSettings = _oDatatable;
+			var iRow = _fnFindDtCell( nTarget )[1];
+			var bKeyCaptureCache = _bKeyCapture;
+
+			/* Page forwards */
+			while ( iRow >= oSettings.fnDisplayEnd() )
+			{
+				if ( oSettings._iDisplayLength >= 0 )
+				{
+					/* Make sure we are not over running the display array */
+					if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )
+					{
+						oSettings._iDisplayStart += oSettings._iDisplayLength;
+					}
+				}
+				else
+				{
+					oSettings._iDisplayStart = 0;
+				}
+				_oDatatable.oApi._fnCalculateEnd( oSettings );
+			}
+
+			/* Page backwards */
+			while ( iRow < oSettings._iDisplayStart )
+			{
+				oSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?
+					oSettings._iDisplayStart - oSettings._iDisplayLength :
+					0;
+
+				if ( oSettings._iDisplayStart < 0 )
+				{
+				  oSettings._iDisplayStart = 0;
+				}
+				_oDatatable.oApi._fnCalculateEnd( oSettings );
+			}
+
+			/* Re-draw the table */
+			_oDatatable.oApi._fnDraw( oSettings );
+
+			/* Restore the key capture */
+			_bKeyCapture = bKeyCaptureCache;
+		}
+
+		/* Cache the information that we are interested in */
+		var aNewPos = _fnCoordsFromCell( nTarget );
+		_nOldFocus = nTarget;
+		_iOldX = aNewPos[0];
+		_iOldY = aNewPos[1];
+
+		var iViewportHeight, iViewportWidth, iScrollTop, iScrollLeft, iHeight, iWidth, aiPos;
+		if ( bAutoScroll )
+		{
+			/* Scroll the viewport such that the new cell is fully visible in the rendered window */
+			iViewportHeight = $(window).height();
+			iViewportWidth = $(window).width();
+			iScrollTop = $(document).scrollTop();
+			iScrollLeft = $(document).scrollLeft();
+			iHeight = nTarget.offsetHeight;
+			iWidth = nTarget.offsetWidth;
+			aiPos = _fnGetPos( nTarget );
+
+			/* Take account of scrolling in DataTables 1.7 - remove scrolling since that would add to
+			 * the positioning calculation
+			 */
+			if ( _oDatatable && typeof oSettings.oScroll != 'undefined' &&
+			  (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") )
+			{
+				aiPos[1] -= $(oSettings.nTable.parentNode).scrollTop();
+				aiPos[0] -= $(oSettings.nTable.parentNode).scrollLeft();
+			}
+
+			/* Correct viewport positioning for vertical scrolling */
+			if ( aiPos[1]+iHeight > iScrollTop+iViewportHeight )
+			{
+				/* Displayed element if off the bottom of the viewport */
+				_fnSetScrollTop( aiPos[1]+iHeight - iViewportHeight );
+			}
+			else if ( aiPos[1] < iScrollTop )
+			{
+				/* Displayed element if off the top of the viewport */
+				_fnSetScrollTop( aiPos[1] );
+			}
+
+			/* Correct viewport positioning for horizontal scrolling */
+			if ( aiPos[0]+iWidth > iScrollLeft+iViewportWidth )
+			{
+				/* Displayed element is off the bottom of the viewport */
+				_fnSetScrollLeft( aiPos[0]+iWidth - iViewportWidth );
+			}
+			else if ( aiPos[0] < iScrollLeft )
+			{
+				/* Displayed element if off the Left of the viewport */
+				_fnSetScrollLeft( aiPos[0] );
+			}
+		}
+
+		/* Take account of scrolling in DataTables 1.7 */
+		if ( _oDatatable && typeof oSettings.oScroll != 'undefined' &&
+		  (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") )
+		{
+			var dtScrollBody = oSettings.nTable.parentNode;
+			iViewportHeight = dtScrollBody.clientHeight;
+			iViewportWidth = dtScrollBody.clientWidth;
+			iScrollTop = dtScrollBody.scrollTop;
+			iScrollLeft = dtScrollBody.scrollLeft;
+			iHeight = nTarget.offsetHeight;
+			iWidth = nTarget.offsetWidth;
+
+			/* Correct for vertical scrolling */
+			if ( nTarget.offsetTop + iHeight > iViewportHeight+iScrollTop )
+			{
+				dtScrollBody.scrollTop = (nTarget.offsetTop + iHeight) - iViewportHeight;
+			}
+			else if ( nTarget.offsetTop < iScrollTop )
+			{
+				dtScrollBody.scrollTop = nTarget.offsetTop;
+			}
+
+			/* Correct for horizontal scrolling */
+			if ( nTarget.offsetLeft + iWidth > iViewportWidth+iScrollLeft )
+			{
+				dtScrollBody.scrollLeft = (nTarget.offsetLeft + iWidth) - iViewportWidth;
+			}
+			else if ( nTarget.offsetLeft < iScrollLeft )
+			{
+				dtScrollBody.scrollLeft = nTarget.offsetLeft;
+			}
+		}
+
+		/* Focused - so we want to capture the keys */
+		_fnCaptureKeys();
+
+		/* Fire of the focus event if there is one */
+		_fnEventFire( "focus", _iOldX, _iOldY );
+	}
+
+
+	/*
+	 * Function: _fnBlur
+	 * Purpose:  Blur focus from the whole table
+	 * Returns:  -
+	 * Inputs:   -
+	 */
+	function _fnBlur()
+	{
+		_fnRemoveFocus( _nOldFocus );
+		_iOldX = null;
+		_iOldY = null;
+		_nOldFocus = null;
+		_fnReleaseKeys();
+	}
+
+
+	/*
+	 * Function: _fnRemoveFocus
+	 * Purpose:  Remove focus from a cell and fire any blur events which are attached
+	 * Returns:  -
+	 * Inputs:   node:nTarget - cell of interest
+	 */
+	function _fnRemoveFocus( nTarget )
+	{
+		$(nTarget).removeClass( _sFocusClass );
+		$(nTarget).parent().removeClass( _sFocusClass );
+		_fnEventFire( "blur", _iOldX, _iOldY );
+	}
+
+
+	/*
+	 * Function: _fnClick
+	 * Purpose:  Focus on the element that has been clicked on by the user
+	 * Returns:  -
+	 * Inputs:   event:e - click event
+	 */
+	function _fnClick ( e )
+	{
+		var nTarget = this;
+		while ( nTarget.nodeName != "TD" )
+		{
+			nTarget = nTarget.parentNode;
+		}
+
+		_fnSetFocus( nTarget );
+		_fnCaptureKeys();
+	}
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Key events
+	 */
+
+	/*
+	 * Function: _fnKey
+	 * Purpose:  Deal with a key events, be it moving the focus or return etc.
+	 * Returns:  bool: - allow browser default action
+	 * Inputs:   event:e - key event
+	 */
+	function _fnKey ( e )
+	{
+		/* If user or system has blocked KeyTable from doing anything, just ignore this event */
+		if ( _that.block || !_bKeyCapture )
+		{
+			return true;
+		}
+
+		/* If a modifier key is pressed (exapct shift), ignore the event */
+		if ( e.metaKey || e.altKey || e.ctrlKey )
+		{
+			return true;
+		}
+		var
+			x, y,
+			iTableWidth = _nBody.getElementsByTagName('tr')[0].getElementsByTagName('td').length,
+			iTableHeight;
+
+		/* Get table height and width - done here so as to be dynamic (if table is updated) */
+		if ( _oDatatable )
+		{
+			/* 
+			 * Locate the current node in the DataTable overriding the old positions - the reason for
+			 * is is that there might have been some DataTables interaction between the last focus and
+			 * now
+			 */
+			iTableHeight = _oDatatable.aiDisplay.length;
+
+			var aDtPos = _fnFindDtCell( _nOldFocus );
+			if ( aDtPos === null )
+			{
+				/* If the table has been updated such that the focused cell can't be seen - do nothing */
+				return;
+			}
+			_iOldX = aDtPos[ 0 ];
+			_iOldY = aDtPos[ 1 ];
+		}
+		else
+		{
+			iTableHeight = _nBody.getElementsByTagName('tr').length;
+		}
+
+		/* Capture shift+tab to match the left arrow key */
+		var iKey = (e.keyCode == 9 && e.shiftKey) ? -1 : e.keyCode;
+
+		switch( iKey )
+		{
+			case 13: /* return */
+				e.preventDefault();
+				e.stopPropagation();
+				_fnEventFire( "action", _iOldX, _iOldY );
+				return true;
+
+			case 27: /* esc */
+				if ( !_fnEventFire( "esc", _iOldX, _iOldY ) )
+				{
+					/* Only lose focus if there isn't an escape handler on the cell */
+					_fnBlur();
+					return;
+				}
+				x = _iOldX;
+				y = _iOldY;
+				break;
+
+			case -1:
+			case 37: /* left arrow */
+				if ( _iOldX > 0 ) {
+					x = _iOldX - 1;
+					y = _iOldY;
+				} else if ( _iOldY > 0 ) {
+					x = iTableWidth-1;
+					y = _iOldY - 1;
+				} else {
+					/* at start of table */
+					if ( iKey == -1 && _bForm )
+					{
+						/* If we are in a form, return focus to the 'input' element such that tabbing will
+						 * follow correctly in the browser
+						 */
+						_bInputFocused = true;
+						_nInput.focus();
+
+						/* This timeout is a little nasty - but IE appears to have some asyhnc behaviour for 
+						 * focus
+						 */
+						setTimeout( function(){ _bInputFocused = false; }, 0 );
+						_bKeyCapture = false;
+						_fnBlur();
+						return true;
+					}
+					else
+					{
+						return false;
+					}
+				}
+				break;
+
+			case 38: /* up arrow */
+				if ( _iOldY > 0 ) {
+					x = _iOldX;
+					y = _iOldY - 1;
+				} else {
+					return false;
+				}
+				break;
+
+			case 36: /* home */
+				x = _iOldX;
+				y = 0;
+				break;
+
+			case 33: /* page up */
+				x = _iOldX;
+				y = _iOldY - 10;
+				if (y < 0) {
+					y = 0;
+				}
+				break;
+
+			case 9: /* tab */
+			case 39: /* right arrow */
+				if ( _iOldX < iTableWidth-1 ) {
+					x = _iOldX + 1;
+					y = _iOldY;
+				} else if ( _iOldY < iTableHeight-1 ) {
+					x = 0;
+					y = _iOldY + 1;
+				} else {
+					/* at end of table */
+					if ( iKey == 9 && _bForm )
+					{
+						/* If we are in a form, return focus to the 'input' element such that tabbing will
+						 * follow correctly in the browser
+						 */
+						_bInputFocused = true;
+						_nInput.focus();
+
+						/* This timeout is a little nasty - but IE appears to have some asyhnc behaviour for 
+						 * focus
+						 */
+						setTimeout( function(){ _bInputFocused = false; }, 0 );
+						_bKeyCapture = false;
+						_fnBlur();
+						return true;
+					}
+					else
+					{
+						return false;
+					}
+				}
+				break;
+
+			case 40: /* down arrow */
+				if ( _iOldY < iTableHeight-1 ) {
+					x = _iOldX;
+					y = _iOldY + 1;
+				} else {
+					return false;
+				}
+				break;
+
+			case 35: /* end */
+				x = _iOldX;
+				y = iTableHeight-1;
+				break;
+
+			case 34: /* page down */
+				x = _iOldX;
+				y = _iOldY+10;
+				if (y > iTableHeight-1) {
+					y = iTableHeight-1;
+				}
+				break;
+
+			default: /* Nothing we are interested in */
+				return true;
+		}
+
+		_fnSetFocus( _fnCellFromCoords(x, y) );
+		return false;
+	}
+
+
+	/*
+	 * Function: _fnCaptureKeys
+	 * Purpose:  Start capturing key events for this table
+	 * Returns:  -
+	 * Inputs:   -
+	 */
+	function _fnCaptureKeys( )
+	{
+		if ( !_bKeyCapture )
+		{
+			_bKeyCapture = true;
+		}
+	}
+
+
+	/*
+	 * Function: _fnReleaseKeys
+	 * Purpose:  Stop capturing key events for this table
+	 * Returns:  -
+	 * Inputs:   -
+	 */
+	function _fnReleaseKeys( )
+	{
+		_bKeyCapture = false;
+	}
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Support functions
+	 */
+
+	/*
+	 * Function: _fnCellFromCoords
+	 * Purpose:  Calulate the target TD cell from x and y coordinates
+	 * Returns:  node: - TD target
+	 * Inputs:   int:x - x coordinate
+	 *           int:y - y coordinate
+	 */
+	function _fnCellFromCoords( x, y )
+	{
+		if ( _oDatatable )
+		{
+			if ( typeof _oDatatable.aoData[ _oDatatable.aiDisplay[ y ] ] != 'undefined' )
+			{
+				return _oDatatable.aoData[ _oDatatable.aiDisplay[ y ] ].nTr.getElementsByTagName('td')[x];
+			}
+			else
+			{
+				return null;
+			}
+		}
+		else
+		{
+			return $('tr:eq('+y+')>td:eq('+x+')', _nBody )[0];
+		}
+	}
+
+
+	/*
+	 * Function: _fnCoordsFromCell
+	 * Purpose:  Calculate the x and y position in a table from a TD cell
+	 * Returns:  array[2] int: [x, y]
+	 * Inputs:   node:n - TD cell of interest
+	 * Notes:    Not actually interested in this for DataTables since it might go out of date
+	 */
+	function _fnCoordsFromCell( n )
+	{
+		if ( _oDatatable )
+		{
+			return [
+				$('td', n.parentNode).index(n),
+				$('tr', n.parentNode.parentNode).index(n.parentNode) + _oDatatable._iDisplayStart
+			];
+		}
+		else
+		{
+			return [
+				$('td', n.parentNode).index(n),
+				$('tr', n.parentNode.parentNode).index(n.parentNode)
+			];
+		}
+	}
+
+
+	/*
+	 * Function: _fnSetScrollTop
+	 * Purpose:  Set the vertical scrolling position
+	 * Returns:  -
+	 * Inputs:   int:iPos - scrolltop
+	 * Notes:    This is so nasty, but without browser detection you can't tell which you should set
+	 *           So on browsers that support both, the scroll top will be set twice. I can live with
+	 *           that :-)
+	 */
+	function _fnSetScrollTop( iPos )
+	{
+		document.documentElement.scrollTop = iPos;
+		document.body.scrollTop = iPos;
+	}
+
+
+	/*
+	 * Function: _fnSetScrollLeft
+	 * Purpose:  Set the horizontal scrolling position
+	 * Returns:  -
+	 * Inputs:   int:iPos - scrollleft
+	 */
+	function _fnSetScrollLeft( iPos )
+	{
+		document.documentElement.scrollLeft = iPos;
+		document.body.scrollLeft = iPos;
+	}
+
+
+	/*
+	 * Function: _fnGetPos
+	 * Purpose:  Get the position of an object on the rendered page
+	 * Returns:  array[2] int: [left, right]
+	 * Inputs:   node:obj - element of interest
+	 */
+	function _fnGetPos ( obj )
+	{
+		var iLeft = 0;
+		var iTop = 0;
+
+		if (obj.offsetParent)
+		{
+			iLeft = obj.offsetLeft;
+			iTop = obj.offsetTop;
+			obj = obj.offsetParent;
+			while (obj)
+			{
+				iLeft += obj.offsetLeft;
+				iTop += obj.offsetTop;
+				obj = obj.offsetParent;
+			}
+		}
+		return [iLeft,iTop];
+	}
+
+
+	/*
+	 * Function: _fnFindDtCell
+	 * Purpose:  Get the coords. of a cell from the DataTables internal information
+	 * Returns:  array[2] int: [x, y] coords. or null if not found
+	 * Inputs:   node:nTarget - the node of interest
+	 */
+	function _fnFindDtCell( nTarget )
+	{
+		for ( var i=0, iLen=_oDatatable.aiDisplay.length ; i<iLen ; i++ )
+		{
+			var nTr = _oDatatable.aoData[ _oDatatable.aiDisplay[i] ].nTr;
+			var nTds = nTr.getElementsByTagName('td');
+			for ( var j=0, jLen=nTds.length ; j<jLen ; j++ )
+			{
+				if ( nTds[j] == nTarget )
+				{
+					return [ j, i ];
+				}
+			}
+		}
+		return null;
+	}
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Initialisation
+	 */
+
+	/*
+	 * Function: _fnInit
+	 * Purpose:  Initialise the KeyTable
+	 * Returns:  -
+	 * Inputs:   object:oInit - optional - Initalisation object with the following parameters:
+	 *   array[2] int:focus - x and y coordinates of the initial target
+	 *     or
+	 *     node:focus - the node to set initial focus on
+	 *   node:table - the table to use, if not given, first table with class 'KeyTable' will be used
+	 *   string:focusClass - focusing class to give to table elements
+	 *           object:that - focus
+	 *   bool:initScroll - scroll the view port on load, default true
+	 *   int:tabIndex - the tab index to give the hidden input element
+	 */
+	function _fnInit( table, datatable, oInit, that )
+	{
+		/* Save scope */
+		_that = that;
+
+		/* Capture undefined initialisation and apply the defaults */
+		if ( typeof oInit == 'undefined' ) {
+			oInit = {};
+		}
+
+		if ( typeof oInit.focus == 'undefined' ) {
+			oInit.focus = [0,0];
+		}
+
+		oInit.table = table;
+		$(oInit.table).addClass('KeyTable');
+
+		if ( typeof oInit.focusClass != 'undefined' ) {
+			_sFocusClass = oInit.focusClass;
+		}
+
+		if ( typeof datatable != 'undefined' ) {
+			_oDatatable = datatable;
+		}
+
+		if ( typeof oInit.initScroll == 'undefined' ) {
+			oInit.initScroll = true;
+		}
+
+		if ( typeof oInit.form == 'undefined' ) {
+			oInit.form = false;
+		}
+		_bForm = oInit.form;
+
+		/* Cache the tbody node of interest */
+		_nBody = oInit.table.getElementsByTagName('tbody')[0];
+
+		/* If the table is inside a form, then we need a hidden input box which can be used by the
+		 * browser to catch the browser tabbing for our table
+		 */
+		if ( _bForm )
+		{
+			var nDiv = document.createElement('div');
+			_nInput = document.createElement('input');
+			nDiv.style.height = "1px"; /* Opera requires a little something */
+			nDiv.style.width = "0px";
+			nDiv.style.overflow = "hidden";
+			if ( typeof oInit.tabIndex != 'undefined' )
+			{
+				_nInput.tabIndex = oInit.tabIndex;
+			}
+			nDiv.appendChild(_nInput);
+			oInit.table.parentNode.insertBefore( nDiv, oInit.table.nextSibling );
+
+			$(_nInput).focus( function () {
+				/* See if we want to 'tab into' the table or out */
+				if ( !_bInputFocused )
+				{
+					_bKeyCapture = true;
+					_bInputFocused = false;
+					if ( typeof oInit.focus.nodeName != "undefined" )
+					{
+						_fnSetFocus( oInit.focus, oInit.initScroll );
+					}
+					else
+					{
+						_fnSetFocus( _fnCellFromCoords( oInit.focus[0], oInit.focus[1]), oInit.initScroll );
+					}
+
+					/* Need to interup the thread for this to work */
+					setTimeout( function() { _nInput.blur(); }, 0 );
+				}
+			} );
+			_bKeyCapture = false;
+		}
+		else
+		{
+			/* Set the initial focus on the table */
+			if ( typeof oInit.focus.nodeName != "undefined" )
+			{
+				_fnSetFocus( oInit.focus, oInit.initScroll );
+			}
+			else
+			{
+				_fnSetFocus( _fnCellFromCoords( oInit.focus[0], oInit.focus[1]), oInit.initScroll );
+			}
+			_fnCaptureKeys();
+		}
+
+		/* Add event listeners */
+		$(document).bind( "keydown", _fnKey );
+
+		if ( _oDatatable )
+		{
+			$(_oDatatable.nTable).on( 'click', 'td', _fnClick );
+		}
+		else
+		{
+			$(_nBody).on( 'click', 'td', _fnClick );
+		}
+
+		/* Loose table focus when click outside the table */
+		$(document).click( function(e) {
+			var nTarget = e.target;
+			var bTableClick = false;
+			while ( nTarget )
+			{
+				if ( nTarget == oInit.table )
+				{
+					bTableClick = true;
+					break;
+				}
+				nTarget = nTarget.parentNode;
+			}
+			if ( !bTableClick )
+			{
+				_fnBlur();
+			}
+		} );
+	}
+
+	var table, datatable;
+
+	if ( oInit === undefined ) {
+		table = $('table.KeyTable')[0];
+		datatable = null;
+	}
+	else if ( $.isPlainObject( oInit ) ) {
+		table = oInit.table;
+		datatable = oInit.datatable;
+	}
+	else {
+		datatable = new $.fn.dataTable.Api( oInit ).settings()[0];
+		table = datatable.nTable;
+	}
+	/* Initialise our new object */
+	_fnInit( table, datatable, oInit, this );
+};
+
+
+KeyTable.version = "1.2.1";
+
+
+$.fn.dataTable.KeyTable = KeyTable;
+$.fn.DataTable.KeyTable = KeyTable;
+
+
+return KeyTable;
+}; // /factory
+
+
+// Define as an AMD module if possible
+if ( typeof define === 'function' && define.amd ) {
+	define( ['jquery', 'datatables'], factory );
+}
+else if ( typeof exports === 'object' ) {
+    // Node/CommonJS
+    factory( require('jquery'), require('datatables') );
+}
+else if ( jQuery && !jQuery.fn.dataTable.KeyTable ) {
+	// Otherwise simply initialise as normal, stopping multiple evaluation
+	factory( jQuery, jQuery.fn.dataTable );
+}
+
+
+})(window, document);
diff --git a/public/admin/js/DataTables/extensions/KeyTable/js/dataTables.keyTable.min.js b/public/admin/js/DataTables/extensions/KeyTable/js/dataTables.keyTable.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..f4c13d211556ba4cf0b06cad72174a16cdc5c262
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/KeyTable/js/dataTables.keyTable.min.js
@@ -0,0 +1,18 @@
+/*!
+ KeyTable 1.2.1
+ ©2010-2014 SpryMedia Ltd - datatables.net/license
+*/
+var KeyTable;
+(function(F,n,K){var A=function(d){KeyTable=function(j){function A(a){return function(e,c,p){(null===e||"number"==typeof e)&&(null===c||"number"==typeof c)&&"function"==typeof p?k[a].push({x:e,y:c,fn:p}):"object"==typeof e&&"function"==typeof c?(e=E(e),k[a].push({x:e[0],y:e[1],fn:c})):alert("Unhandable event type was added: x"+e+"  y:"+c+"  z:"+p)}}function L(a){return function(e,c,p){(null===e||"number"==typeof e)&&(null===c||"number"==typeof c)?"function"==typeof p?B(a,e,c,p):B(a,e,c):"object"==
+typeof e?(e=E(e),"function"==typeof c?B(a,e[0],e[1],c):B(a,e[0],e[1])):alert("Unhandable event type was removed: x"+e+"  y:"+c+"  z:"+p)}}function B(a,e,c,p){for(var h=0,b=0,d=k[a].length;b<d-h;b++)if("undefined"!=typeof p)k[a][b-h].x==e&&(k[a][b-h].y==c&&k[a][b-h].fn==p)&&(k[a].splice(b-h,1),h++);else if(k[a][b-h].x==e&&k[a][b-h].y==c)return k[a].splice(b,1),1;return h}function C(a,e,c){for(var p=0,a=k[a],b=0;b<a.length;b++)if(a[b].x==e&&a[b].y==c||null===a[b].x&&a[b].y==c||a[b].x==e&&null===a[b].y||
+null===a[b].x&&null===a[b].y)a[b].fn(w(e,c),e,c),p++;return p}function q(a,e){if(t!=a){"undefined"==typeof e&&(e=!0);null!==t&&G(t);d(a).addClass(x);d(a).parent().addClass(x);var c;if(i){c=i;for(var b=H(a)[1],h=o;b>=c.fnDisplayEnd();)0<=c._iDisplayLength?c._iDisplayStart+c._iDisplayLength<c.fnRecordsDisplay()&&(c._iDisplayStart+=c._iDisplayLength):c._iDisplayStart=0,i.oApi._fnCalculateEnd(c);for(;b<c._iDisplayStart;)c._iDisplayStart=0<=c._iDisplayLength?c._iDisplayStart-c._iDisplayLength:0,0>c._iDisplayStart&&
+(c._iDisplayStart=0),i.oApi._fnCalculateEnd(c);i.oApi._fnDraw(c);o=h}b=E(a);t=a;l=b[0];g=b[1];var r,j,k,m,f;if(e){r=d(F).height();b=d(F).width();j=d(n).scrollTop();h=d(n).scrollLeft();k=a.offsetHeight;m=a.offsetWidth;f=a;var q=0,s=0;if(f.offsetParent){q=f.offsetLeft;s=f.offsetTop;for(f=f.offsetParent;f;)q+=f.offsetLeft,s+=f.offsetTop,f=f.offsetParent}f=[q,s];if(i&&"undefined"!=typeof c.oScroll&&(""!==c.oScroll.sX||""!==c.oScroll.sY))f[1]-=d(c.nTable.parentNode).scrollTop(),f[0]-=d(c.nTable.parentNode).scrollLeft();
+f[1]+k>j+r?(r=f[1]+k-r,n.documentElement.scrollTop=r,n.body.scrollTop=r):f[1]<j&&(r=f[1],n.documentElement.scrollTop=r,n.body.scrollTop=r);f[0]+m>h+b?(b=f[0]+m-b,n.documentElement.scrollLeft=b,n.body.scrollLeft=b):f[0]<h&&(b=f[0],n.documentElement.scrollLeft=b,n.body.scrollLeft=b)}if(i&&"undefined"!=typeof c.oScroll&&(""!==c.oScroll.sX||""!==c.oScroll.sY))(c=c.nTable.parentNode,r=c.clientHeight,b=c.clientWidth,j=c.scrollTop,h=c.scrollLeft,k=a.offsetHeight,m=a.offsetWidth,a.offsetTop+k>r+j?c.scrollTop=
+a.offsetTop+k-r:a.offsetTop<j&&(c.scrollTop=a.offsetTop),a.offsetLeft+m>b+h)?c.scrollLeft=a.offsetLeft+m-b:a.offsetLeft<h&&(c.scrollLeft=a.offsetLeft);o||(o=!0);C("focus",l,g)}}function y(){G(t);t=g=l=null;o=!1}function G(a){d(a).removeClass(x);d(a).parent().removeClass(x);C("blur",l,g)}function I(){for(var a=this;"TD"!=a.nodeName;)a=a.parentNode;q(a);o||(o=!0)}function w(a,b){return i?"undefined"!=typeof i.aoData[i.aiDisplay[b]]?i.aoData[i.aiDisplay[b]].nTr.getElementsByTagName("td")[a]:null:d("tr:eq("+
+b+")>td:eq("+a+")",z)[0]}function E(a){return i?[d("td",a.parentNode).index(a),d("tr",a.parentNode.parentNode).index(a.parentNode)+i._iDisplayStart]:[d("td",a.parentNode).index(a),d("tr",a.parentNode.parentNode).index(a.parentNode)]}function H(a){for(var b=0,c=i.aiDisplay.length;b<c;b++)for(var d=i.aoData[i.aiDisplay[b]].nTr.getElementsByTagName("td"),h=0,g=d.length;h<g;h++)if(d[h]==a)return[h,b];return null}this.block=!1;this.event={remove:{}};this.fnGetCurrentPosition=function(){return[l,g]};this.fnGetCurrentData=
+function(){return t.innerHTML};this.fnGetCurrentTD=function(){return t};this.fnSetPosition=function(a,b){"object"==typeof a&&a.nodeName?q(a):q(w(a,b))};this.fnBlur=function(){y()};var z=null,t=null,l=null,g=null,J=null,x="focus",o=!1,k={action:[],esc:[],focus:[],blur:[]},i=null,D,s,u=!1,m;for(m in k)m&&(this.event[m]=A(m),this.event.remove[m]=L(m));var v;j===K?(m=d("table.KeyTable")[0],v=null):d.isPlainObject(j)?(m=j.table,v=j.datatable):(v=(new d.fn.dataTable.Api(j)).settings()[0],m=v.nTable);var b=
+j,J=this;"undefined"==typeof b&&(b={});"undefined"==typeof b.focus&&(b.focus=[0,0]);b.table=m;d(b.table).addClass("KeyTable");"undefined"!=typeof b.focusClass&&(x=b.focusClass);"undefined"!=typeof v&&(i=v);"undefined"==typeof b.initScroll&&(b.initScroll=!0);"undefined"==typeof b.form&&(b.form=!1);D=b.form;z=b.table.getElementsByTagName("tbody")[0];D?(j=n.createElement("div"),s=n.createElement("input"),j.style.height="1px",j.style.width="0px",j.style.overflow="hidden","undefined"!=typeof b.tabIndex&&
+(s.tabIndex=b.tabIndex),j.appendChild(s),b.table.parentNode.insertBefore(j,b.table.nextSibling),d(s).focus(function(){if(!u){o=true;u=false;typeof b.focus.nodeName!="undefined"?q(b.focus,b.initScroll):q(w(b.focus[0],b.focus[1]),b.initScroll);setTimeout(function(){s.blur()},0)}}),o=!1):("undefined"!=typeof b.focus.nodeName?q(b.focus,b.initScroll):q(w(b.focus[0],b.focus[1]),b.initScroll),o||(o=!0));d(n).bind("keydown",function(a){if(J.block||!o||a.metaKey||a.altKey||a.ctrlKey)return true;var b;b=z.getElementsByTagName("tr")[0].getElementsByTagName("td").length;
+var c;if(i){c=i.aiDisplay.length;var d=H(t);if(d===null)return;l=d[0];g=d[1]}else c=z.getElementsByTagName("tr").length;d=a.keyCode==9&&a.shiftKey?-1:a.keyCode;switch(d){case 13:a.preventDefault();a.stopPropagation();C("action",l,g);return true;case 27:if(!C("esc",l,g)){y();return}a=l;b=g;break;case -1:case 37:if(l>0){a=l-1;b=g}else if(g>0){a=b-1;b=g-1}else{if(d==-1&&D){u=true;s.focus();setTimeout(function(){u=false},0);o=false;y();return true}return false}break;case 38:if(g>0){a=l;b=g-1}else return false;
+break;case 36:a=l;b=0;break;case 33:a=l;b=g-10;b<0&&(b=0);break;case 9:case 39:if(l<b-1){a=l+1;b=g}else if(g<c-1){a=0;b=g+1}else{if(d==9&&D){u=true;s.focus();setTimeout(function(){u=false},0);o=false;y();return true}return false}break;case 40:if(g<c-1){a=l;b=g+1}else return false;break;case 35:a=l;b=c-1;break;case 34:a=l;b=g+10;b>c-1&&(b=c-1);break;default:return true}q(w(a,b));return false});if(i)d(i.nTable).on("click","td",I);else d(z).on("click","td",I);d(n).click(function(a){for(var a=a.target,
+d=false;a;){if(a==b.table){d=true;break}a=a.parentNode}d||y()})};KeyTable.version="1.2.1";d.fn.dataTable.KeyTable=KeyTable;return d.fn.DataTable.KeyTable=KeyTable};"function"===typeof define&&define.amd?define(["jquery","datatables"],A):"object"===typeof exports?A(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.KeyTable&&A(jQuery,jQuery.fn.dataTable)})(window,document);
diff --git a/public/admin/js/DataTables/extensions/Responsive/Readme.md b/public/admin/js/DataTables/extensions/Responsive/Readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/public/admin/js/DataTables/extensions/Responsive/css/dataTables.responsive.css b/public/admin/js/DataTables/extensions/Responsive/css/dataTables.responsive.css
new file mode 100644
index 0000000000000000000000000000000000000000..80d9fadeae13c0d027163644d4efcd007192abc4
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/css/dataTables.responsive.css
@@ -0,0 +1,89 @@
+table.dataTable.dtr-inline.collapsed tbody td:first-child,
+table.dataTable.dtr-inline.collapsed tbody th:first-child {
+  position: relative;
+  padding-left: 30px;
+  cursor: pointer;
+}
+table.dataTable.dtr-inline.collapsed tbody td:first-child:before,
+table.dataTable.dtr-inline.collapsed tbody th:first-child:before {
+  top: 8px;
+  left: 4px;
+  height: 16px;
+  width: 16px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 16px;
+  text-align: center;
+  line-height: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  content: '+';
+  background-color: #31b131;
+}
+table.dataTable.dtr-inline.collapsed tbody tr.parent td:first-child:before,
+table.dataTable.dtr-inline.collapsed tbody tr.parent th:first-child:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable.dtr-inline.collapsed tbody tr.child td:before {
+  display: none;
+}
+table.dataTable.dtr-column tbody td.control,
+table.dataTable.dtr-column tbody th.control {
+  position: relative;
+  cursor: pointer;
+}
+table.dataTable.dtr-column tbody td.control:before,
+table.dataTable.dtr-column tbody th.control:before {
+  top: 50%;
+  left: 50%;
+  height: 16px;
+  width: 16px;
+  margin-top: -10px;
+  margin-left: -10px;
+  display: block;
+  position: absolute;
+  color: white;
+  border: 2px solid white;
+  border-radius: 16px;
+  text-align: center;
+  line-height: 14px;
+  box-shadow: 0 0 3px #444;
+  box-sizing: content-box;
+  content: '+';
+  background-color: #31b131;
+}
+table.dataTable.dtr-column tbody tr.parent td.control:before,
+table.dataTable.dtr-column tbody tr.parent th.control:before {
+  content: '-';
+  background-color: #d33333;
+}
+table.dataTable tr.child {
+  padding: 0.5em 1em;
+}
+table.dataTable tr.child:hover {
+  background: transparent !important;
+}
+table.dataTable tr.child ul {
+  display: inline-block;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+table.dataTable tr.child ul li {
+  border-bottom: 1px solid #efefef;
+  padding: 0.5em 0;
+}
+table.dataTable tr.child ul li:first-child {
+  padding-top: 0;
+}
+table.dataTable tr.child ul li:last-child {
+  border-bottom: none;
+}
+table.dataTable tr.child span.dtr-title {
+  display: inline-block;
+  min-width: 75px;
+  font-weight: bold;
+}
diff --git a/public/admin/js/DataTables/extensions/Responsive/css/dataTables.responsive.scss b/public/admin/js/DataTables/extensions/Responsive/css/dataTables.responsive.scss
new file mode 100644
index 0000000000000000000000000000000000000000..fdf671bbad87660bd5687d02764b57907d94e4a1
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/css/dataTables.responsive.scss
@@ -0,0 +1,128 @@
+
+//
+// Mixins
+//
+@mixin control() {
+	display: block;
+	position: absolute;
+	color: white;
+	border: 2px solid white;
+	border-radius: 16px;
+	text-align: center;
+	line-height: 14px;
+	box-shadow: 0 0 3px #444;
+	box-sizing: content-box;
+}
+
+@mixin control-open() {
+	content: '+';
+	background-color: #31b131;
+}
+
+@mixin control-close() {
+	content: '-';
+	background-color: #d33333;
+}
+
+
+//
+// Table styles
+//
+table.dataTable {
+	// Styling for the `inline` type
+	&.dtr-inline.collapsed tbody {
+		td:first-child,
+		th:first-child {
+			position: relative;
+			padding-left: 30px;
+			cursor: pointer;
+
+			&:before {
+				top: 8px;
+				left: 4px;
+				height: 16px;
+				width: 16px;
+				@include control;
+				@include control-open;
+			}
+		}
+
+		tr.parent {
+			td:first-child:before,
+			th:first-child:before {
+				@include control-close;
+			}
+		}
+
+		tr.child td:before {
+			display: none;
+		}
+	}
+
+
+	// Styling for the `column` type
+	&.dtr-column tbody {
+		td.control,
+		th.control {
+			position: relative;
+			cursor: pointer;
+
+			&:before {
+				top: 50%;
+				left: 50%;
+				height: 16px;
+				width: 16px;
+				margin-top: -10px;
+				margin-left: -10px;
+				@include control;
+				@include control-open;
+			}
+		}
+
+		tr.parent {
+			td.control:before,
+			th.control:before {
+				@include control-close;
+			}
+		}
+	}
+
+
+	// Child row styling
+	tr.child {
+		padding: 0.5em 1em;
+
+		&:hover {
+			background: transparent !important;
+		}
+
+		ul {
+			display: inline-block;
+			list-style-type: none;
+			margin: 0;
+			padding: 0;
+
+			li {
+				border-bottom: 1px solid #efefef;
+				padding: 0.5em 0;
+
+				&:first-child {
+					padding-top: 0;
+				}
+
+				&:last-child {
+					border-bottom: none;
+				}
+			}
+		}
+
+		span.dtr-title {
+			display: inline-block;
+			min-width: 75px;
+			font-weight: bold;
+		}
+
+		span.dtr-data {}
+	}
+}
+
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/column-control.html b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/column-control.html
new file mode 100644
index 0000000000000000000000000000000000000000..37269ddda16d2b552da1db26393a7ff2cc80f25a
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/column-control.html
@@ -0,0 +1,867 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Column controlled child rows</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: {
+			details: {
+				type: 'column'
+			}
+		},
+		columnDefs: [ {
+			className: 'control',
+			orderable: false,
+			targets:   0
+		} ],
+		order: [ 1, 'asc' ]
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Column controlled child rows</span></h1>
+
+			<div class="info">
+				<p>Responsive has two built in methods for displaying the controlling element of the child rows;
+				<code>inline</code> which is the default option and shows the control in the first column, and
+				<code>column</code> which set a <em>control column</em> as the control. The control column is shown
+				only when there is some other column hidden, and is dedicated only to the show / hide control for the
+				rows.</p>
+
+				<p>This example shows the <a href=
+				"//datatables.net/extensions/responsive/reference/option/responsive.details.type"><code class="option"
+				title="Responsive initialisation option">responsive.details.type<span>R</span></code></a> option set to
+				<code>column</code> to activate the control column. Note that by default the first column is used as
+				the control, so additionally in the initialisation the <a href=
+				"//datatables.net/reference/option/order"><code class="option" title=
+				"DataTables initialisation option">order<span>DT</span></code></a> and <a href=
+				"//datatables.net/reference/option/columns.orderable"><code class="option" title=
+				"DataTables initialisation option">columns.orderable<span>DT</span></code></a> options are used to
+				disable sorting on this column.</p>
+			</div>
+
+			<table id="example" class="display nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th></th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th></th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td></td>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: {
+			details: {
+				type: 'column'
+			}
+		},
+		columnDefs: [ {
+			className: 'control',
+			orderable: false,
+			targets:   0
+		} ],
+		order: [ 1, 'asc' ]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../initialisation/className.html">Class name</a></li>
+							<li><a href="../initialisation/option.html">Configuration option</a></li>
+							<li><a href="../initialisation/new.html">`new` constructor</a></li>
+							<li><a href="../initialisation/ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="../display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="../display-control/classes.html">Class control</a></li>
+							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Child rows</a></h3>
+						<ul class="toc active">
+							<li><a href="./disable-child-rows.html">Disable child rows</a></li>
+							<li class="active"><a href="./column-control.html">Column controlled child rows</a></li>
+							<li><a href="./right-column.html">Column control - right</a></li>
+							<li><a href="./whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="./custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/custom-renderer.html b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/custom-renderer.html
new file mode 100644
index 0000000000000000000000000000000000000000..6be4528165eb0d8fc393cb93e09f28a5846b7f91
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/custom-renderer.html
@@ -0,0 +1,872 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Custom child row renderer</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: {
+			details: {
+				renderer: function ( api, rowIdx ) {
+					// Select hidden columns for the given row
+					var data = api.cells( rowIdx, ':hidden' ).eq(0).map( function ( cell ) {
+						var header = $( api.column( cell.column ).header() );
+
+						return '<tr>'+
+								'<td>'+
+									header.text()+':'+
+								'</td> '+
+								'<td>'+
+									api.cell( cell ).data()+
+								'</td>'+
+							'</tr>';
+					} ).toArray().join('');
+
+					return data ?
+						$('<table/>').append( data ) :
+						false;
+				}
+			}
+		}
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Custom child row renderer</span></h1>
+
+			<div class="info">
+				<p>The child row's for a collapsed table in Responsive, by default, show a <code class="tag" title=
+				"HTML tag">ul/li</code> list of the data from the hidden columns. The <a href=
+				"//datatables.net/extensions/responsive/reference/option/responsive.details.renderer"><code class=
+				"option" title="Responsive initialisation option">responsive.details.renderer<span>R</span></code></a>
+				option provide the ability to create your own custom renderer. It is given two parameters: the
+				DataTables API instance for the table and the row index to use.</p>
+
+				<p>This example shows the <a href="//datatables.net/reference/api/cells()"><code class="api" title=
+				"DataTables API method">cells()<span>DT</span></code></a> method being used to select the hidden
+				columns and constructing a table of the data. You could refine the selector to select only certain
+				columns, or show all columns, etc.</p>
+			</div>
+
+			<table id="example" class="display nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: {
+			details: {
+				renderer: function ( api, rowIdx ) {
+					// Select hidden columns for the given row
+					var data = api.cells( rowIdx, ':hidden' ).eq(0).map( function ( cell ) {
+						var header = $( api.column( cell.column ).header() );
+
+						return '&lt;tr&gt;'+
+								'&lt;td&gt;'+
+									header.text()+':'+
+								'&lt;/td&gt; '+
+								'&lt;td&gt;'+
+									api.cell( cell ).data()+
+								'&lt;/td&gt;'+
+							'&lt;/tr&gt;';
+					} ).toArray().join('');
+
+					return data ?
+						$('&lt;table/&gt;').append( data ) :
+						false;
+				}
+			}
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../initialisation/className.html">Class name</a></li>
+							<li><a href="../initialisation/option.html">Configuration option</a></li>
+							<li><a href="../initialisation/new.html">`new` constructor</a></li>
+							<li><a href="../initialisation/ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="../display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="../display-control/classes.html">Class control</a></li>
+							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Child rows</a></h3>
+						<ul class="toc active">
+							<li><a href="./disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="./column-control.html">Column controlled child rows</a></li>
+							<li><a href="./right-column.html">Column control - right</a></li>
+							<li><a href="./whole-row-control.html">Whole row child row control</a></li>
+							<li class="active"><a href="./custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/disable-child-rows.html b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/disable-child-rows.html
new file mode 100644
index 0000000000000000000000000000000000000000..21a8e2950fbc49d50111ba134f58b01875bd5c8f
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/disable-child-rows.html
@@ -0,0 +1,827 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Disable child rows</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: {
+			details: false
+		}
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Disable child rows</span></h1>
+
+			<div class="info">
+				<p>By default, when Responsive collapses a table, it will show an option for the end user to expand the
+				row, showing the details of the hidden columns in a child row. This can be disabled using the <a href=
+				"//datatables.net/extensions/responsive/reference/option/responsive.details"><code class="option"
+				title="Responsive initialisation option">responsive.details<span>R</span></code></a> option and setting
+				it to <code>false</code>, as shown in the example below. In this case the hidden data is not directly
+				accessible to the end user.</p>
+			</div>
+
+			<table id="example" class="display nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: {
+			details: false
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../initialisation/className.html">Class name</a></li>
+							<li><a href="../initialisation/option.html">Configuration option</a></li>
+							<li><a href="../initialisation/new.html">`new` constructor</a></li>
+							<li><a href="../initialisation/ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="../display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="../display-control/classes.html">Class control</a></li>
+							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Child rows</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="./column-control.html">Column controlled child rows</a></li>
+							<li><a href="./right-column.html">Column control - right</a></li>
+							<li><a href="./whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="./custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/index.html b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..bcf9bd1c768561910b0438fb256b8fe65bc49a00
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/index.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+
+	<title>Responsive examples - Child row control</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Child row control</span></h1>
+
+			<div class="info">
+				<p>When a column is removed from display by Responsive, the data is still available in the table and
+				can be displayed in a DataTables <em>child row</em> (see <a href=
+				"//datatables.net/reference/api/row().child()"><code class="api" title=
+				"DataTables API method">row().child()<span>DT</span></code></a>). By default Responsive will show child
+				row controls in the first column when the table has been collapsed, allowing the end user to show /
+				hide the information from the hidden columns.</p>
+
+				<p>Responsive has a number of options for display of the child rows:</p>
+
+				<ul class="markdown">
+					<li>If child row display is enabled: <a href=
+					"//datatables.net/extensions/responsive/reference/option/responsive.details"><code class="option"
+					title="Responsive initialisation option">responsive.details<span>R</span></code></a></li>
+					<li>How the show / hide control is displayed: <a href=
+					"//datatables.net/extensions/responsive/reference/option/responsive.details.type"><code class=
+					"option" title=
+					"Responsive initialisation option">responsive.details.type<span>R</span></code></a></li>
+					<li>How the child row is rendered: <a href=
+					"//datatables.net/extensions/responsive/reference/option/responsive.details.renderer"><code class=
+					"option" title=
+					"Responsive initialisation option">responsive.details.renderer<span>R</span></code></a></li>
+				</ul>
+
+				<p>This section shows examples of these options being used.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="./disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="./column-control.html">Column controlled child rows</a></li>
+							<li><a href="./right-column.html">Column control - right</a></li>
+							<li><a href="./whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="./custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/right-column.html b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/right-column.html
new file mode 100644
index 0000000000000000000000000000000000000000..68f2597b0714ff5a1a6bf15dd930fb35e6ecc436
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/right-column.html
@@ -0,0 +1,858 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Column control - right</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: {
+			details: {
+				type: 'column',
+				target: -1
+			}
+		},
+		columnDefs: [ {
+			className: 'control',
+			orderable: false,
+			targets:   -1
+		} ]
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Column control - right</span></h1>
+
+			<div class="info">
+				<p>When using the <code>column</code> child row control type, Responsive has the ability to use any
+				column or element as the show / hide control for the row details. This is provided through the <a href=
+				"//datatables.net/extensions/responsive/reference/option/responsive.details.target"><code class=
+				"option" title="Responsive initialisation option">responsive.details.target<span>R</span></code></a>
+				option, which can be either a column index, or a jQuery selector.</p>
+
+				<p>This example shows the last column in the table being used as the control column.</p>
+			</div>
+
+			<table id="example" class="display nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th></th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th></th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td></td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: {
+			details: {
+				type: 'column',
+				target: -1
+			}
+		},
+		columnDefs: [ {
+			className: 'control',
+			orderable: false,
+			targets:   -1
+		} ]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../initialisation/className.html">Class name</a></li>
+							<li><a href="../initialisation/option.html">Configuration option</a></li>
+							<li><a href="../initialisation/new.html">`new` constructor</a></li>
+							<li><a href="../initialisation/ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="../display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="../display-control/classes.html">Class control</a></li>
+							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Child rows</a></h3>
+						<ul class="toc active">
+							<li><a href="./disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="./column-control.html">Column controlled child rows</a></li>
+							<li class="active"><a href="./right-column.html">Column control - right</a></li>
+							<li><a href="./whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="./custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/whole-row-control.html b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/whole-row-control.html
new file mode 100644
index 0000000000000000000000000000000000000000..cf113be0eb56301e122f725c66ccc415ca00eb70
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/child-rows/whole-row-control.html
@@ -0,0 +1,860 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Whole row child row control</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: {
+			details: {
+				type: 'column',
+				target: 'tr'
+			}
+		},
+		columnDefs: [ {
+			className: 'control',
+			orderable: false,
+			targets:   0
+		} ],
+		order: [ 1, 'asc' ]
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Whole row child row control</span></h1>
+
+			<div class="info">
+				<p>When using the <code>column</code> details type in Responsive the <a href=
+				"//datatables.net/extensions/responsive/reference/option/responsive.details.target"><code class=
+				"option" title="Responsive initialisation option">responsive.details.target<span>R</span></code></a>
+				option provides the ability to control what element is used to show / hide the child rows when the
+				table is collapsed.</p>
+
+				<p>This example uses the <code>tr</code> selector to have the whole row act as the control.</p>
+			</div>
+
+			<table id="example" class="display nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th></th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th></th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td></td>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+					</tr>
+					<tr>
+						<td></td>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: {
+			details: {
+				type: 'column',
+				target: 'tr'
+			}
+		},
+		columnDefs: [ {
+			className: 'control',
+			orderable: false,
+			targets:   0
+		} ],
+		order: [ 1, 'asc' ]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../initialisation/className.html">Class name</a></li>
+							<li><a href="../initialisation/option.html">Configuration option</a></li>
+							<li><a href="../initialisation/new.html">`new` constructor</a></li>
+							<li><a href="../initialisation/ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="../display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="../display-control/classes.html">Class control</a></li>
+							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Child rows</a></h3>
+						<ul class="toc active">
+							<li><a href="./disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="./column-control.html">Column controlled child rows</a></li>
+							<li><a href="./right-column.html">Column control - right</a></li>
+							<li class="active"><a href="./whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="./custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/display-control/auto.html b/public/admin/js/DataTables/extensions/Responsive/examples/display-control/auto.html
new file mode 100644
index 0000000000000000000000000000000000000000..f90f2d4921833e149b87329dce9cf00b18e829b9
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/display-control/auto.html
@@ -0,0 +1,822 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Automatic column hiding</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable();
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Automatic column hiding</span></h1>
+
+			<div class="info">
+				<p>Responsive will automatically detect which columns have breakpoint class names assigned to them for
+				visibility control. If no breakpoint class is found for a column, Responsive will determine
+				automatically if the column should be shown or not at any particular viewport width. This is done by
+				removing columns which cause the table to overflow the viewport, with the columns being removed from
+				the right.</p>
+
+				<p>This example shows that simple case. On a desktop browser resize the window horizontally to see
+				columns added and removed on-the-fly. On a tablet or mobile browser, change the screen's
+				orientation.</p>
+			</div>
+
+			<table id="example" class="display responsive nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../initialisation/className.html">Class name</a></li>
+							<li><a href="../initialisation/option.html">Configuration option</a></li>
+							<li><a href="../initialisation/new.html">`new` constructor</a></li>
+							<li><a href="../initialisation/ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Display control</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./auto.html">Automatic column hiding</a></li>
+							<li><a href="./classes.html">Class control</a></li>
+							<li><a href="./init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../child-rows/index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="../child-rows/column-control.html">Column controlled child rows</a></li>
+							<li><a href="../child-rows/right-column.html">Column control - right</a></li>
+							<li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/display-control/classes.html b/public/admin/js/DataTables/extensions/Responsive/examples/display-control/classes.html
new file mode 100644
index 0000000000000000000000000000000000000000..e38c8d7e1bafd005ba17e84ead6f7f105f5729a0
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/display-control/classes.html
@@ -0,0 +1,258 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Class control</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		"ajax": "../../../../examples/ajax/data/objects.txt",
+		"columns": [
+			{ "data": "name" },
+			{ "data": "position" },
+			{ "data": "office" },
+			{ "data": "extn" },
+			{ "data": "start_date" },
+			{ "data": "salary" },
+			{ "data": "extn" }
+		]
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Class control</span></h1>
+
+			<div class="info">
+				<p>You can tell Responsive what columns to want to be visible on different devices through the use of
+				class names on the columns. The breakpoints are horizontal screen resolutions and the defaults are set
+				for common devices:</p>
+
+				<ul class="markdown">
+					<li><code>desktop</code> x &gt;= 1024px</li>
+					<li><code>tablet-l</code> (landscape) 768 &lt;= x &lt; 1024</li>
+					<li><code>tablet-p</code> (portrait) 480 &lt;= x &lt; 768</li>
+					<li><code>mobile-l</code> (landscape) 320 &lt;= x &lt; 480</li>
+					<li><code>mobile-p</code> (portrait) x &lt; 320</li>
+				</ul>
+
+				<p>You may leave the <code>-[lp]</code> option from the end if you wish to just target all tablet or
+				mobile devices. Additionally to may add <code>min-</code>, <code>max-</code> or <code>not-</code> as a
+				prefix to the class name to perform logic operations. For example <code>not-mobile</code> would cause a
+				column to appear as visible on desktop and tablet devices, while <code>min-tablet-l</code> would
+				require at least a horizontal width of 768 for the browser window to be shown, and be shown at all
+				sizes larger.</p>
+
+				<p>Additionally, there are three special class names:</p>
+
+				<ul class="markdown">
+					<li><code>all</code> - Always display</li>
+					<li><code>none</code> - Never display</li>
+					<li><code>control</code> - Used for the <code>column</code> <a href=
+					"//datatables.net/extensions/responsive/reference/option/responsive.details.type"><code class=
+					"option" title="Responsive initialisation option">responsive.details.type<span>R</span></code></a>
+					option.</li>
+				</ul>
+
+				<p>Please <a href="//datatables.net/extensions/responsive/">refer to the Responsive manual</a> for
+				further details of these options.</p>
+
+				<p>This example shows the <code>start date</code> and <code>salary</code> columns visible on a desktop
+				only - <code>office</code> and <code>age</code> require a tablet, while the <code>position</code>
+				column requires a phone in landscape or larger. The <code>name</code> column is always visible.</p>
+
+				<p>This can be useful if you wish to change the format of the data shown on different devices, for
+				example using a combination of <code>mobile</code> and <code>not-mobile</code> on two different columns
+				would allow information to be formatted suitable for each device type.</p>
+			</div>
+
+			<div id="breakpoint"></div>
+
+			<table id="example" class="display responsive" width="100%">
+				<thead>
+					<tr>
+						<th class="all">Name</th>
+						<th class="min-phone-l">Position</th>
+						<th class="min-tablet">Office</th>
+						<th class="min-tablet">Age</th>
+						<th class="desktop">Start date</th>
+						<th class="desktop">Salary</th>
+						<th class="none">Extn.</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		&quot;ajax&quot;: &quot;../../../../examples/ajax/data/objects.txt&quot;,
+		&quot;columns&quot;: [
+			{ &quot;data&quot;: &quot;name&quot; },
+			{ &quot;data&quot;: &quot;position&quot; },
+			{ &quot;data&quot;: &quot;office&quot; },
+			{ &quot;data&quot;: &quot;extn&quot; },
+			{ &quot;data&quot;: &quot;start_date&quot; },
+			{ &quot;data&quot;: &quot;salary&quot; },
+			{ &quot;data&quot;: &quot;extn&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../initialisation/className.html">Class name</a></li>
+							<li><a href="../initialisation/option.html">Configuration option</a></li>
+							<li><a href="../initialisation/new.html">`new` constructor</a></li>
+							<li><a href="../initialisation/ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Display control</a></h3>
+						<ul class="toc active">
+							<li><a href="./auto.html">Automatic column hiding</a></li>
+							<li class="active"><a href="./classes.html">Class control</a></li>
+							<li><a href="./init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../child-rows/index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="../child-rows/column-control.html">Column controlled child rows</a></li>
+							<li><a href="../child-rows/right-column.html">Column control - right</a></li>
+							<li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/display-control/index.html b/public/admin/js/DataTables/extensions/Responsive/examples/display-control/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..1dea6c93c156ecabb484247391d0d4fa3f57de0f
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/display-control/index.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+
+	<title>Responsive examples - Display control</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Display control</span></h1>
+
+			<div class="info">
+				<p>Responsive has two basic modes of operation for controlling the visibility of columns at different
+				display sizes. These two modes can be using either separately or together:</p>
+
+				<ul class="markdown">
+					<li>Manually assigned class names for breakpoints - Assign a column a class name to tell Responsive
+					which breakpoint(s) to show it in.</li>
+					<li>Automatically - for columns without a breakpoint class name, it will be automatically removed
+					if there is no room available on screen to show it. Columns are removed from the right, moving
+					left.</li>
+				</ul>
+
+				<p>This section explores these two options.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="./auto.html">Automatic column hiding</a></li>
+							<li><a href="./classes.html">Class control</a></li>
+							<li><a href="./init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/display-control/init-classes.html b/public/admin/js/DataTables/extensions/Responsive/examples/display-control/init-classes.html
new file mode 100644
index 0000000000000000000000000000000000000000..7d67f3cbd247cbbbefa3b32cc9c9d73bcd2ed8a9
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/display-control/init-classes.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Assigned class control</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		"ajax": "../../../../examples/ajax/data/objects.txt",
+		"columns": [
+			{ "data": "name",       className="all" },
+			{ "data": "position",   className="min-phone-l" },
+			{ "data": "office",     className="min-tablet" },
+			{ "data": "extn",       className="min-tablet" },
+			{ "data": "start_date", className="desktop" },
+			{ "data": "salary",     className="desktop" },
+			{ "data": "extn",       className="none" }
+		]
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Assigned class control</span></h1>
+
+			<div class="info">
+				<p>This example exactly matches the functionality of the <a href="classes.xml">class control
+				example</a> but in this case the classes are assigned using the <a href=
+				"//datatables.net/reference/option/columns.className"><code class="option" title=
+				"DataTables initialisation option">columns.className<span>DT</span></code></a> option.</p>
+			</div>
+
+			<div id="breakpoint"></div>
+
+			<table id="example" class="display responsive" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		&quot;ajax&quot;: &quot;../../../../examples/ajax/data/objects.txt&quot;,
+		&quot;columns&quot;: [
+			{ &quot;data&quot;: &quot;name&quot;,       className=&quot;all&quot; },
+			{ &quot;data&quot;: &quot;position&quot;,   className=&quot;min-phone-l&quot; },
+			{ &quot;data&quot;: &quot;office&quot;,     className=&quot;min-tablet&quot; },
+			{ &quot;data&quot;: &quot;extn&quot;,       className=&quot;min-tablet&quot; },
+			{ &quot;data&quot;: &quot;start_date&quot;, className=&quot;desktop&quot; },
+			{ &quot;data&quot;: &quot;salary&quot;,     className=&quot;desktop&quot; },
+			{ &quot;data&quot;: &quot;extn&quot;,       className=&quot;none&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../initialisation/className.html">Class name</a></li>
+							<li><a href="../initialisation/option.html">Configuration option</a></li>
+							<li><a href="../initialisation/new.html">`new` constructor</a></li>
+							<li><a href="../initialisation/ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Display control</a></h3>
+						<ul class="toc active">
+							<li><a href="./auto.html">Automatic column hiding</a></li>
+							<li><a href="./classes.html">Class control</a></li>
+							<li class="active"><a href="./init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../child-rows/index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="../child-rows/column-control.html">Column controlled child rows</a></li>
+							<li><a href="../child-rows/right-column.html">Column control - right</a></li>
+							<li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/index.html b/public/admin/js/DataTables/extensions/Responsive/examples/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..d5b70e3abb1f69b90e3052ee9267b6d5555c7ca9
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/index.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+
+	<title>Responsive examples - Responsive DataTables</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Responsive DataTables</span></h1>
+
+			<div class="info"></div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="./initialisation/className.html">Class name</a></li>
+							<li><a href="./initialisation/option.html">Configuration option</a></li>
+							<li><a href="./initialisation/new.html">`new` constructor</a></li>
+							<li><a href="./initialisation/ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="./styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="./display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="./display-control/classes.html">Class control</a></li>
+							<li><a href="./display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./child-rows/index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="./child-rows/disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="./child-rows/column-control.html">Column controlled child rows</a></li>
+							<li><a href="./child-rows/right-column.html">Column control - right</a></li>
+							<li><a href="./child-rows/whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="./child-rows/custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/ajax.html b/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/ajax.html
new file mode 100644
index 0000000000000000000000000000000000000000..ff8ab99fa9336fd16410d1fed9cbba96649dc855
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/ajax.html
@@ -0,0 +1,217 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Ajax data</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	div.container { max-width: 1200px }
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		"ajax": "../../../../examples/ajax/data/objects.txt",
+		"columns": [
+			{ "data": "name" },
+			{ "data": "position" },
+			{ "data": "office" },
+			{ "data": "extn" },
+			{ "data": "start_date" },
+			{ "data": "salary" }
+		]
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Ajax data</span></h1>
+
+			<div class="info">
+				<p>This example shows the Responsive extension working with <a href="//datatables.net/manual/data">Ajax
+				sourced data</a> in the DataTable. Note that no special initialisation is required. Responsive is
+				enabled by adding the <code class="string" title="String">responsive</code> class to the <code class=
+				"tag" title="HTML tag">table</code> element.</p>
+			</div>
+
+			<table id="example" class="display responsive nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		&quot;ajax&quot;: &quot;../../../../examples/ajax/data/objects.txt&quot;,
+		&quot;columns&quot;: [
+			{ &quot;data&quot;: &quot;name&quot; },
+			{ &quot;data&quot;: &quot;position&quot; },
+			{ &quot;data&quot;: &quot;office&quot; },
+			{ &quot;data&quot;: &quot;extn&quot; },
+			{ &quot;data&quot;: &quot;start_date&quot; },
+			{ &quot;data&quot;: &quot;salary&quot; }
+		]
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">div.container { max-width: 1200px }</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./className.html">Class name</a></li>
+							<li><a href="./option.html">Configuration option</a></li>
+							<li><a href="./new.html">`new` constructor</a></li>
+							<li class="active"><a href="./ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="../display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="../display-control/classes.html">Class control</a></li>
+							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../child-rows/index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="../child-rows/column-control.html">Column controlled child rows</a></li>
+							<li><a href="../child-rows/right-column.html">Column control - right</a></li>
+							<li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/className.html b/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/className.html
new file mode 100644
index 0000000000000000000000000000000000000000..4a595595bb15355f6ede0326515fe12a067916ed
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/className.html
@@ -0,0 +1,820 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Class name</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable();
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Class name</span></h1>
+
+			<div class="info">
+				<p>The easiest way to initialise the Responsive extension for DataTables is simply to add the class
+				<code class="string" title="String">responsive</code> to the table's class name. When the DataTable is
+				initialised the Responsive extension will automatically enable itself on these tables.</p>
+
+				<p>The may also use the class <code>dt-responsive</code> to perform the same action, since
+				<code>responsive</code> may be used in your stylesheet, or may have some other meaning in a CSS
+				framework being used (for example Bootstrap).</p>
+			</div>
+
+			<table id="example" class="display responsive nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./className.html">Class name</a></li>
+							<li><a href="./option.html">Configuration option</a></li>
+							<li><a href="./new.html">`new` constructor</a></li>
+							<li><a href="./ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="../display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="../display-control/classes.html">Class control</a></li>
+							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../child-rows/index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="../child-rows/column-control.html">Column controlled child rows</a></li>
+							<li><a href="../child-rows/right-column.html">Column control - right</a></li>
+							<li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/index.html b/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..ac76c0dc9121f77972f8f637253d2a8f9115af03
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/index.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+
+	<title>Responsive examples - Initialisation</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Initialisation</span></h1>
+
+			<div class="info">
+				<p>Responsive can be run on a DataTable in a number of different ways:</p>
+
+				<ul class="markdown">
+					<li>By adding the class <code>responsive</code> or <code>dt-responsive</code> to the <code class=
+					"tag" title="HTML tag">table</code></li>
+					<li>Using the <a href=
+					"//datatables.net/extensions/responsive/reference/option/responsive"><code class="option" title=
+					"Responsive initialisation option">responsive<span>R</span></code></a> option in the DataTables
+					initialisation</li>
+					<li>Use the <code>$.fn.dataTable.Responsive</code> constructor.</li>
+				</ul>
+
+				<p>This set of examples demonstrates these initialisation options.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="./className.html">Class name</a></li>
+							<li><a href="./option.html">Configuration option</a></li>
+							<li><a href="./new.html">`new` constructor</a></li>
+							<li><a href="./ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/new.html b/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/new.html
new file mode 100644
index 0000000000000000000000000000000000000000..19e737f6497b1b36085da1e98d99adc344910b29
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/new.html
@@ -0,0 +1,829 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - `new` constructor</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	div.container { max-width: 1200px }
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.Responsive( table );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>`new` constructor</span></h1>
+
+			<div class="info">
+				<p>Responsive will automatically detect new DataTable instances being created on a page and initialise
+				itself if it find the <a href=
+				"//datatables.net/extensions/responsive/reference/option/responsive"><code class="option" title=
+				"Responsive initialisation option">responsive<span>R</span></code></a> option or
+				<code>responsive</code> class name on the table, as shown in the other examples.</p>
+
+				<p>The third way of initialising Responsive is manually creating a new instance using the
+				<code>$.fn.dataTable.Responsive</code> class, as shown in this example (the other two methods are
+				provided using this constructor in a <a href="//datatables.net/reference/event/init"><code class=
+				"event" title="DataTables event">init<span>DT</span></code></a> event handler!).</p>
+			</div>
+
+			<table id="example" class="display nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+
+	new $.fn.dataTable.Responsive( table );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">div.container { max-width: 1200px }</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./className.html">Class name</a></li>
+							<li><a href="./option.html">Configuration option</a></li>
+							<li class="active"><a href="./new.html">`new` constructor</a></li>
+							<li><a href="./ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="../display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="../display-control/classes.html">Class control</a></li>
+							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../child-rows/index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="../child-rows/column-control.html">Column controlled child rows</a></li>
+							<li><a href="../child-rows/right-column.html">Column control - right</a></li>
+							<li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/option.html b/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/option.html
new file mode 100644
index 0000000000000000000000000000000000000000..c2297b87e1e11a20378b265dca7120789c8e9479
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/initialisation/option.html
@@ -0,0 +1,830 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Configuration option</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	div.container { max-width: 1200px }
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: true
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Configuration option</span></h1>
+
+			<div class="info">
+				<p>The Responsive extension for DataTables can be applied to a DataTable in one of two ways; with a
+				specific class name on the table, or using the DataTables initialisation options. This method shows the
+				latter, with the <a href=
+				"//datatables.net/extensions/responsive/reference/option/responsive"><code class="option" title=
+				"Responsive initialisation option">responsive<span>R</span></code></a> option being set to the boolean
+				value <code>true</code>.</p>
+
+				<p>The <a href="//datatables.net/extensions/responsive/reference/option/responsive"><code class=
+				"option" title="Responsive initialisation option">responsive<span>R</span></code></a> option can be
+				given as a boolean value, or as an object with configuration options. If as a boolean, as in this case,
+				the default options are used.</p>
+			</div>
+
+			<table id="example" class="display nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		responsive: true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">div.container { max-width: 1200px }</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Basic initialisation</a></h3>
+						<ul class="toc active">
+							<li><a href="./className.html">Class name</a></li>
+							<li class="active"><a href="./option.html">Configuration option</a></li>
+							<li><a href="./new.html">`new` constructor</a></li>
+							<li><a href="./ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="../display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="../display-control/classes.html">Class control</a></li>
+							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../child-rows/index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="../child-rows/column-control.html">Column controlled child rows</a></li>
+							<li><a href="../child-rows/right-column.html">Column control - right</a></li>
+							<li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/styling/bootstrap.html b/public/admin/js/DataTables/extensions/Responsive/examples/styling/bootstrap.html
new file mode 100644
index 0000000000000000000000000000000000000000..c3efde388070b8338662931f50a1f3dc68ea941f
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/styling/bootstrap.html
@@ -0,0 +1,843 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Bootstrap styling</title>
+	<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
+	<link rel="stylesheet" type="text/css" href="../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	body { font-size: 140% }
+
+	table.dataTable th,
+	table.dataTable td {
+		white-space: nowrap;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src=
+	"../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable(;
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Bootstrap styling</span></h1>
+
+			<div class="info">
+				<p>This example shows DataTables and the Responsive extension being used with the <a href=
+				"http://getbootstrap.com">Bootstrap</a> framework providing the styling. The <a href=
+				"//datatables.net/manual/styling/bootstrap">DataTables / Bootstrap integration files</a> prove seamless
+				integration for DataTables to be used in a Bootstrap page.</p>
+
+				<p>Note that the <code>dt-responsive</code> class is used to indicate to the extension that it should
+				be enabled on this page, as <code>responsive</code> <a href=
+				"http://getbootstrap.com/css/#tables-responsive">has special meaning in Bootstrap</a>. The <a href=
+				"//datatables.net/extensions/responsive/reference/option/responsive"><code class="option" title=
+				"Responsive initialisation option">responsive<span>R</span></code></a> option could also be used if
+				required.</p>
+			</div>
+
+			<table id="example" class="table table-striped table-hover dt-responsive" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable(;
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+						<li><a href=
+						"../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js">../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">body { font-size: 140% }
+
+	table.dataTable th,
+	table.dataTable td {
+		white-space: nowrap;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css</a></li>
+						<li><a href=
+						"../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css">../../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../initialisation/className.html">Class name</a></li>
+							<li><a href="../initialisation/option.html">Configuration option</a></li>
+							<li><a href="../initialisation/new.html">`new` constructor</a></li>
+							<li><a href="../initialisation/ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="../display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="../display-control/classes.html">Class control</a></li>
+							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../child-rows/index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="../child-rows/column-control.html">Column controlled child rows</a></li>
+							<li><a href="../child-rows/right-column.html">Column control - right</a></li>
+							<li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/styling/foundation.html b/public/admin/js/DataTables/extensions/Responsive/examples/styling/foundation.html
new file mode 100644
index 0000000000000000000000000000000000000000..1ac8b352ee2167ca78e0d49e3ebfecb1c7d7629a
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/styling/foundation.html
@@ -0,0 +1,833 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Foundation styling</title>
+	<link rel="stylesheet" type="text/css" href=
+	"//cdnjs.cloudflare.com/ajax/libs/foundation/4.3.1/css/foundation.min.css">
+	<link rel="stylesheet" type="text/css" href="../../../Plugins/integration/foundation/dataTables.foundation.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	table.dataTable th,
+	table.dataTable td {
+		white-space: nowrap;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src=
+	"../../../Plugins/integration/foundation/dataTables.foundation.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable();
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Foundation styling</span></h1>
+
+			<div class="info">
+				<p>This example shows DataTables and the Responsive extension being used with the <a href=
+				"http://foundation.zurb.com">Foundation</a> framework providing the styling. The <a href=
+				"//datatables.net/manual/styling/foundation">DataTables / Foundation integration files</a> prove
+				seamless integration for DataTables to be used in a Foundation page.</p>
+			</div>
+
+			<table id="example" class="tdisplay responsive" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tbody>
+					<tr>
+						<td>Tiger</td>
+						<td>Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett</td>
+						<td>Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton</td>
+						<td>Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric</td>
+						<td>Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi</td>
+						<td>Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle</td>
+						<td>Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod</td>
+						<td>Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona</td>
+						<td>Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen</td>
+						<td>Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya</td>
+						<td>Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena</td>
+						<td>Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn</td>
+						<td>Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde</td>
+						<td>Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley</td>
+						<td>Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana</td>
+						<td>Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul</td>
+						<td>Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria</td>
+						<td>Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley</td>
+						<td>Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai</td>
+						<td>Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette</td>
+						<td>Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri</td>
+						<td>Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar</td>
+						<td>Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris</td>
+						<td>Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica</td>
+						<td>Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden</td>
+						<td>Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona</td>
+						<td>Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou</td>
+						<td>Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle</td>
+						<td>House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki</td>
+						<td>Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott</td>
+						<td>Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin</td>
+						<td>Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena</td>
+						<td>Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity</td>
+						<td>Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard</td>
+						<td>Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope</td>
+						<td>Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian</td>
+						<td>Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy</td>
+						<td>Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson</td>
+						<td>Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia</td>
+						<td>Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno</td>
+						<td>Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura</td>
+						<td>Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor</td>
+						<td>Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn</td>
+						<td>Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge</td>
+						<td>Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida</td>
+						<td>Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita</td>
+						<td>Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer</td>
+						<td>Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara</td>
+						<td>Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione</td>
+						<td>Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael</td>
+						<td>Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas</td>
+						<td>Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad</td>
+						<td>Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael</td>
+						<td>Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna</td>
+						<td>Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable();
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+						<li><a href=
+						"../../../Plugins/integration/foundation/dataTables.foundation.js">../../../Plugins/integration/foundation/dataTables.foundation.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">table.dataTable th,
+	table.dataTable td {
+		white-space: nowrap;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//cdnjs.cloudflare.com/ajax/libs/foundation/4.3.1/css/foundation.min.css">//cdnjs.cloudflare.com/ajax/libs/foundation/4.3.1/css/foundation.min.css</a></li>
+						<li><a href=
+						"../../../Plugins/integration/foundation/dataTables.foundation.css">../../../Plugins/integration/foundation/dataTables.foundation.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../initialisation/className.html">Class name</a></li>
+							<li><a href="../initialisation/option.html">Configuration option</a></li>
+							<li><a href="../initialisation/new.html">`new` constructor</a></li>
+							<li><a href="../initialisation/ajax.html">Ajax data</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc active">
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li class="active"><a href="./foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../display-control/index.html">Display control</a></h3>
+						<ul class="toc">
+							<li><a href="../display-control/auto.html">Automatic column hiding</a></li>
+							<li><a href="../display-control/classes.html">Class control</a></li>
+							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../child-rows/index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="../child-rows/column-control.html">Column controlled child rows</a></li>
+							<li><a href="../child-rows/right-column.html">Column control - right</a></li>
+							<li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/examples/styling/index.html b/public/admin/js/DataTables/extensions/Responsive/examples/styling/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..f6ef05a72682fc9f162f53f2e3afc8c758c1fdf5
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/examples/styling/index.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+
+	<title>Responsive examples - Styling</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Styling</span></h1>
+
+			<div class="info">
+				<p>Responsive requires very little styling information of its own, with styling needed only for the
+				child row display when the table has been collapsed. As such, integrating Responsive with your
+				application should be as simple as including the Javascript and base stylesheet! This section shows
+				Responsive being styling using external CSS frameworks.</p>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./foundation.html">Foundation styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Responsive/js/dataTables.responsive.js b/public/admin/js/DataTables/extensions/Responsive/js/dataTables.responsive.js
new file mode 100644
index 0000000000000000000000000000000000000000..3140bbba17a6d7b05e6724729b557ffbc13a2a5b
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/js/dataTables.responsive.js
@@ -0,0 +1,711 @@
+/*! Responsive 1.0.0
+ * 2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     Responsive
+ * @description Responsive tables plug-in for DataTables
+ * @version     1.0.0
+ * @file        dataTables.responsive.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function(window, document, undefined) {
+
+
+var factory = function( $, DataTable ) {
+"use strict";
+
+/**
+ * Responsive is a plug-in for the DataTables library that makes use of
+ * DataTables' ability to change the visibility of columns, changing the
+ * visibility of columns so the displayed columns fit into the table container.
+ * The end result is that complex tables will be dynamically adjusted to fit
+ * into the viewport, be it on a desktop, tablet or mobile browser.
+ *
+ * Responsive for DataTables has two modes of operation, which can used
+ * individually or combined:
+ *
+ * * Class name based control - columns assigned class names that match the
+ *   breakpoint logic can be shown / hidden as required for each breakpoint.
+ * * Automatic control - columns are automatically hidden when there is no
+ *   room left to display them. Columns removed from the right.
+ *
+ * In additional to column visibility control, Responsive also has built into
+ * options to use DataTables' child row display to show / hide the information
+ * from the table that has been hidden. There are also two modes of operation
+ * for this child row display:
+ *
+ * * Inline - when the control element that the user can use to show / hide
+ *   child rows is displayed inside the first column of the table.
+ * * Column - where a whole column is dedicated to be the show / hide control.
+ *
+ * Initialisation of Responsive is performed by:
+ *
+ * * Adding the class `responsive` or `dt-responsive` to the table. In this case
+ *   Responsive will automatically be initialised with the default configuration
+ *   options when the DataTable is created.
+ * * Using the `responsive` option in the DataTables configuration options. This
+ *   can also be used to specify the configuration options, or simply set to
+ *   `true` to use the defaults.
+ *
+ *  @class
+ *  @param {object} settings DataTables settings object for the host table
+ *  @param {object} [opts] Configuration options
+ *  @requires jQuery 1.7+
+ *  @requires DataTables 1.10.1+
+ *
+ *  @example
+ *      $('#example').DataTable( {
+ *        responsive: true
+ *      } );
+ *    } );
+ */
+var Responsive = function ( settings, opts ) {
+	// Sanity check that we are using DataTables 1.10 or newer
+	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.1' ) ) {
+		throw 'DataTables Responsive requires DataTables 1.10.1 or newer';
+	}
+	else if ( settings.responsive ) {
+		return;
+	}
+
+	this.s = {
+		dt: new DataTable.Api( settings ),
+		columns: []
+	};
+
+	// details is an object, but for simplicity the user can give it as a string
+	if ( opts && typeof opts.details === 'string' ) {
+		opts.details = { type: opts.details };
+	}
+
+	this.c = $.extend( true, {}, Responsive.defaults, opts );
+	settings.responsive = this;
+	this._constructor();
+};
+
+Responsive.prototype = {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Constructor
+	 */
+
+	/**
+	 * Initialise the Responsive instance
+	 *
+	 * @private
+	 */
+	_constructor: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		// Use DataTables' private throttle function to avoid processor thrashing
+		$(window).on( 'resize.dtr', dt.settings()[0].oApi._fnThrottle( function () {
+			that._resize();
+		} ) );
+
+		// Destroy event handler
+		dt.on( 'destroy.dtr', function () {
+			$(window).off( 'resize.dtr' );
+		} );
+
+		// Reorder the breakpoints array here in case they have been added out
+		// of order
+		this.c.breakpoints.sort( function (a, b) {
+			return a.width < b.width ? 1 :
+				a.width > b.width ? -1 : 0;
+		} );
+
+		this._classLogic();
+		this._resizeAuto();
+
+		// First pass - draw the table for the current viewport size
+		this._resize();
+
+		// Details handler
+		var details = this.c.details;
+		if ( details.type ) {
+			that._detailsInit();
+			this._detailsVis();
+
+			dt.on( 'column-visibility.dtr', function () {
+				that._detailsVis();
+			} );
+
+			$(dt.table().node()).addClass( 'dtr-'+details.type );
+		}
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods
+	 */
+
+	/**
+	 * Calculate the visibility for the columns in a table for a given
+	 * breakpoint. The result is pre-determined based on the class logic if
+	 * class names are used to control all columns, but the width of the table
+	 * is also used if there are columns which are to be automatically shown
+	 * and hidden.
+	 *
+	 * @param  {string} breakpoint Breakpoint name to use for the calculation
+	 * @return {array} Array of boolean values initiating the visibility of each
+	 *   column.
+	 *  @private
+	 */
+	_columnsVisiblity: function ( breakpoint )
+	{
+		var dt = this.s.dt;
+		var columns = this.s.columns;
+		var i, ien;
+
+		// Class logic - determine which columns are in this breakpoint based
+		// on the classes. If no class control (i.e. `auto`) then `-` is used
+		// to indicate this to the rest of the function
+		var display = $.map( columns, function ( col ) {
+			return col.auto && col.minWidth === null ?
+				false :
+				col.auto === true ?
+					'-' :
+					col.includeIn.indexOf( breakpoint ) !== -1;
+		} );
+
+		// Auto column control - first pass: how much width is taken by the
+		// ones that must be included from the non-auto columns
+		var requiredWidth = 0;
+		for ( i=0, ien=display.length ; i<ien ; i++ ) {
+			if ( display[i] === true ) {
+				requiredWidth += columns[i].minWidth;
+			}
+		}
+
+		// Second pass, use up any remaining width for other columns
+		var widthAvailable = dt.table().container().offsetWidth;
+		var usedWidth = widthAvailable - requiredWidth;
+
+		for ( i=0, ien=display.length ; i<ien ; i++ ) {
+			// Control column needs to always be included. This makes it sub-
+			// optimal in terms of using the available with, but to stop layout
+			// thrashing or overflow
+			if ( columns[i].control ) {
+				usedWidth -= columns[i].minWidth;
+			}
+			else if ( display[i] === '-' ) {
+				// Otherwise, remove the width
+				display[i] = usedWidth - columns[i].minWidth < 0 ?
+					false :
+					true;
+
+				// Continue counting down the width, so a smaller column to the
+				// left won't be shown
+				usedWidth -= columns[i].minWidth;
+			}
+		}
+
+		// Determine if the 'control' column should be shown (if there is one).
+		// This is the case when there is a hidden column (that is not the
+		// control column). The two loops look inefficient here, but they are
+		// trivial and will fly through. We need to know the outcome from the
+		// first , before the action in the second can be taken
+		var showControl = false;
+
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			if ( ! columns[i].control && ! display[i] ) {
+				showControl = true;
+				break;
+			}
+		}
+
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			if ( columns[i].control ) {
+				display[i] = showControl;
+			}
+		}
+
+		return display;
+	},
+
+
+	/**
+	 * Create the internal `columns` array with information about the columns
+	 * for the table. This includes determining which breakpoints the column
+	 * will appear in, based upon class names in the column, which makes up the
+	 * vast majority of this method.
+	 *
+	 * @private
+	 */
+	_classLogic: function ()
+	{
+		var that = this;
+		var calc = {};
+		var breakpoints = this.c.breakpoints;
+		var columns = this.s.dt.columns().eq(0).map( function (i) {
+			return {
+				className: this.column(i).header().className,
+				includeIn: [],
+				auto:      false,
+				control:   false
+			};
+		} );
+
+		// Simply add a breakpoint to `includeIn` array, ensuring that there are
+		// no duplicates
+		var add = function ( colIdx, name ) {
+			var includeIn = columns[ colIdx ].includeIn;
+
+			if ( includeIn.indexOf( name ) === -1 ) {
+				includeIn.push( name );
+			}
+		};
+
+		var column = function ( colIdx, name, operator, matched ) {
+			var size, i, ien;
+
+			if ( ! operator ) {
+				columns[ colIdx ].includeIn.push( name );
+			}
+			else if ( operator === 'max-' ) {
+				// Add this breakpoint and all smaller
+				size = that._find( name ).width;
+
+				for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+					if ( breakpoints[i].width <= size ) {
+						add( colIdx, breakpoints[i].name );
+					}
+				}
+			}
+			else if ( operator === 'min-' ) {
+				// Add this breakpoint and all larger
+				size = that._find( name ).width;
+
+				for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+					if ( breakpoints[i].width >= size ) {
+						add( colIdx, breakpoints[i].name );
+					}
+				}
+			}
+			else if ( operator === 'not-' ) {
+				// Add all but this breakpoint (xxx need extra information)
+
+				for ( i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+					if ( breakpoints[i].name.indexOf( matched ) === -1 ) {
+						add( colIdx, breakpoints[i].name );
+					}
+				}
+			}
+		};
+
+		// Loop over each column and determine if it has a responsive control
+		// class
+		columns.each( function ( col, i ) {
+			var classNames = col.className.split(' ');
+			var hasClass = false;
+
+			// Split the class name up so multiple rules can be applied if needed
+			for ( var k=0, ken=classNames.length ; k<ken ; k++ ) {
+				var className = $.trim( classNames[k] );
+
+				if ( className === 'all' ) {
+					// Include in all
+					hasClass = true;
+					col.includeIn = $.map( breakpoints, function (a) {
+						return a.name;
+					} );
+					return;
+				}
+				else if ( className === 'none' ) {
+					// Include in none (default) and no auto
+					hasClass = true;
+					return;
+				}
+				else if ( className === 'control' ) {
+					// Special column that is only visible, when one of the other
+					// columns is hidden. This is used for the details control
+					hasClass = true;
+					col.control = true;
+					return;
+				}
+
+				$.each( breakpoints, function ( j, breakpoint ) {
+					// Does this column have a class that matches this breakpoint?
+					var brokenPoint = breakpoint.name.split('-');
+					var re = new RegExp( '(min\\-|max\\-|not\\-)?('+brokenPoint[0]+')(\\-[_a-zA-Z0-9])?' );
+					var match = className.match( re );
+
+					if ( match ) {
+						hasClass = true;
+
+						if ( match[2] === brokenPoint[0] && match[3] === '-'+brokenPoint[1] ) {
+							// Class name matches breakpoint name fully
+							column( i, breakpoint.name, match[1], match[2]+match[3] );
+						}
+						else if ( match[2] === brokenPoint[0] && ! match[3] ) {
+							// Class name matched primary breakpoint name with no qualifier
+							column( i, breakpoint.name, match[1], match[2] );
+						}
+					}
+				} );
+			}
+
+			// If there was no control class, then automatic sizing is used
+			if ( ! hasClass ) {
+				col.auto = true;
+			}
+		} );
+
+		this.s.columns = columns;
+	},
+
+
+	/**
+	 * Initialisation for the details handler
+	 *
+	 * @private
+	 */
+	_detailsInit: function ()
+	{
+		var that    = this;
+		var dt      = this.s.dt;
+		var details = this.c.details;
+
+		// The inline type always uses the first child as the target
+		if ( details.type === 'inline' ) {
+			details.target = 'td:first-child';
+		}
+
+		// type.target can be a string jQuery selector or a column index
+		var target   = details.target;
+		var selector = typeof target === 'string' ? target : 'td';
+
+		// Click handler to show / hide the details rows when they are available
+		$( dt.table().body() ).on( 'click', selector, function (e) {
+			// For column index, we determine if we should act or not in the
+			// handler - otherwise it is already okay
+			if ( typeof target === 'number' ) {
+				var targetIdx = target < 0 ?
+					dt.columns().eq().length + target :
+					target;
+
+				if ( dt.cell( this ).index().column !== targetIdx ) {
+					return;
+				}
+			}
+
+			// If the table is not collapsed (i.e. there is no hidden columns)
+			// then the details row cannot be displayed
+			if ( ! $(dt.table().node()).hasClass('collapsed' ) ) {
+				return;
+			}
+
+			// $().closest() includes itself in its check
+			var row = dt.row( $(this).closest('tr') );
+
+			if ( row.child.isShown() ) {
+				row.child( false );
+				$( row.node() ).removeClass( 'parent' );
+			}
+			else {
+				var info = that.c.details.renderer( dt, row[0] );
+				row.child( info, 'child' ).show();
+				$( row.node() ).addClass( 'parent' );
+			}
+		} );
+	},
+
+
+	/**
+	 * Update the child rows in the table whenever the column visibility changes
+	 *
+	 * @private
+	 */
+	_detailsVis: function ()
+	{
+		var that = this;
+		var dt = this.s.dt;
+
+		if ( dt.columns().visible().indexOf( false ) !== -1 ) {
+			// Got hidden columns
+			$( dt.table().node() ).addClass('collapsed');
+
+			// Show all existing child rows
+			dt.rows().eq(0).each( function (idx) {
+				var row = dt.row( idx );
+
+				if ( row.child() ) {
+					var info = that.c.details.renderer( dt, row[0] );
+
+					// The renderer can return false to have no child row
+					if ( info === false ) {
+						row.child.hide();
+					}
+					else {
+						row.child( info, 'child' ).show();
+					}
+				}
+			} );
+		}
+		else {
+			// No hidden columns
+			$( dt.table().node() ).removeClass('collapsed');
+
+			// Hide all existing child rows
+			dt.rows().eq(0).each( function (idx) {
+				dt.row( idx ).child.hide();
+			} );
+		}
+	},
+
+
+	/**
+	 * Find a breakpoint object from a name
+	 * @param  {string} name Breakpoint name to find
+	 * @return {object}      Breakpoint description object
+	 */
+	_find: function ( name )
+	{
+		var breakpoints = this.c.breakpoints;
+
+		for ( var i=0, ien=breakpoints.length ; i<ien ; i++ ) {
+			if ( breakpoints[i].name === name ) {
+				return breakpoints[i];
+			}
+		}
+	},
+
+
+	/**
+	 * Alter the table display for a resized viewport. This involves first
+	 * determining what breakpoint the window currently is in, getting the
+	 * column visibilities to apply and then setting them.
+	 *
+	 * @private
+	 */
+	_resize: function ()
+	{
+		var dt = this.s.dt;
+		var width = $(window).width();
+		var breakpoints = this.c.breakpoints;
+		var breakpoint = breakpoints[0].name;
+
+		// Determine what breakpoint we are currently at
+		for ( var i=breakpoints.length-1 ; i>=0 ; i-- ) {
+			if ( width <= breakpoints[i].width ) {
+				breakpoint = breakpoints[i].name;
+				break;
+			}
+		}
+		
+		// Show the columns for that break point
+		var columns = this._columnsVisiblity( breakpoint );
+
+		dt.columns().eq(0).each( function ( colIdx, i ) {
+			dt.column( colIdx ).visible( columns[i] );
+		} );
+	},
+
+
+	/**
+	 * Determine the width of each column in the table so the auto column hiding
+	 * has that information to work with. This method is never going to be 100%
+	 * perfect since column widths can change slightly per page, but without
+	 * seriously compromising performance this is quite effective.
+	 *
+	 * @private
+	 */
+	_resizeAuto: function ()
+	{
+		var dt = this.s.dt;
+		var columns = this.s.columns;
+
+		// Are we allowed to do auto sizing?
+		if ( ! this.c.auto ) {
+			return;
+		}
+
+		// Are there any columns that actually need auto-sizing, or do they all
+		// have classes defined
+		if ( $.inArray( true, $.map( columns, function (c) { return c.auto; } ) ) === -1 ) {
+			return;
+		}
+
+		// Clone the table with the current data in it
+		var tableWidth = dt.table().node().offsetWidth;
+		var columnWidths = dt.columns;
+		var clonedTable = dt.table().node().cloneNode( false );
+		var clonedHeader = $( dt.table().header() ).clone( false ).appendTo( clonedTable );
+		var clonedRow = $( dt.table().body().cloneNode( true ) ).appendTo( clonedTable );
+		var cells = dt.settings()[0].oApi._fnGetUniqueThs( dt.settings()[0], clonedHeader );
+		var inserted = $('<div/>')
+			.css( {
+				width: 1,
+				height: 1,
+				overflow: 'hidden'
+			} )
+			.append( clonedTable )
+			.insertBefore( dt.table().node() );
+
+		// The cloned header now contains the smallest that each column can be
+		dt.columns().eq(0).each( function ( idx ) {
+			columns[idx].minWidth = dt.column( idx ).visible() ?
+				cells[ dt.column( idx ).index('visible') ].offsetWidth :
+				null;
+		} );
+
+		inserted.remove();
+	}
+};
+
+
+/**
+ * List of default breakpoints. Each item in the array is an object with two
+ * properties:
+ *
+ * * `name` - the breakpoint name.
+ * * `width` - the breakpoint width
+ *
+ * @name Responsive.breakpoints
+ * @static
+ */
+Responsive.breakpoints = [
+	{ name: 'desktop',  width: Infinity },
+	{ name: 'tablet-l', width: 1024 },
+	{ name: 'tablet-p', width: 768 },
+	{ name: 'mobile-l', width: 480 },
+	{ name: 'mobile-p', width: 320 }
+];
+
+
+/**
+ * Responsive default settings for initialisation
+ *
+ * @namespace
+ * @name Responsive.defaults
+ * @static
+ */
+Responsive.defaults = {
+	/**
+	 * List of breakpoints for the instance. Note that this means that each
+	 * instance can have its own breakpoints. Additionally, the breakpoints
+	 * cannot be changed once an instance has been creased.
+	 *
+	 * @type {Array}
+	 * @default Takes the value of `Responsive.breakpoints`
+	 */
+	breakpoints: Responsive.breakpoints,
+
+	/**
+	 * Enable / disable auto hiding calculations. It can help to increase
+	 * performance slightly if you disable this option, but all columns would
+	 * need to have breakpoint classes assigned to them
+	 *
+	 * @type {Boolean}
+	 * @default  `true`
+	 */
+	auto: true,
+
+	/**
+	 * Details control. If given as a string value, the `type` property of the
+	 * default object is set to that value, and the defaults used for the rest
+	 * of the object - this is for ease of implementation.
+	 *
+	 * The object consists of the following properties:
+	 *
+	 * * `renderer` - function that is called for display of the child row data.
+	 *   The default function will show the data from the hidden columns
+	 * * `target` - Used as the selector for what objects to attach the child
+	 *   open / close to
+	 * * `type` - `false` to disable the details display, `inline` or `column`
+	 *   for the two control types
+	 *
+	 * @type {Object|string}
+	 */
+	details: {
+		renderer: function ( api, rowIdx ) {
+			var data = api.cells( rowIdx, ':hidden' ).eq(0).map( function ( cell ) {
+				var header = $( api.column( cell.column ).header() );
+
+				if ( header.hasClass( 'control' ) ) {
+					return '';
+				}
+
+				return '<li>'+
+						'<span class="dtr-title">'+
+							header.text()+':'+
+						'</span> '+
+						'<span class="dtr-data">'+
+							api.cell( cell ).data()+
+						'</span>'+
+					'</li>';
+			} ).toArray().join('');
+
+			return data ?
+				$('<ul/>').append( data ) :
+				false;
+		},
+
+		target: 0,
+
+		type: 'inline'
+	}
+};
+
+
+/**
+ * Version information
+ *
+ * @name Responsive.version
+ * @static
+ */
+Responsive.version = '1.0.0';
+
+
+$.fn.dataTable.Responsive = Responsive;
+$.fn.DataTable.Responsive = Responsive;
+
+// Attach a listener to the document which listens for DataTables initialisation
+// events so we can automatically initialise
+$(document).on( 'init.dt.dtr', function (e, settings, json) {
+	if ( $(settings.nTable).hasClass( 'responsive' ) ||
+		 $(settings.nTable).hasClass( 'dt-responsive' ) ||
+		 settings.oInit.responsive
+	) {
+		var init = settings.oInit.responsive;
+
+		if ( init !== false ) {
+			new Responsive( settings, $.isPlainObject( init ) ? init : {}  );
+		}
+	}
+} );
+
+return Responsive;
+}; // /factory
+
+
+// Define as an AMD module if possible
+if ( typeof define === 'function' && define.amd ) {
+	define( ['jquery', 'datatables'], factory );
+}
+else if ( typeof exports === 'object' ) {
+    // Node/CommonJS
+    factory( require('jquery'), require('datatables') );
+}
+else if ( jQuery && !jQuery.fn.dataTable.Responsive ) {
+	// Otherwise simply initialise as normal, stopping multiple evaluation
+	factory( jQuery, jQuery.fn.dataTable );
+}
+
+
+})(window, document);
+
diff --git a/public/admin/js/DataTables/extensions/Responsive/js/dataTables.responsive.min.js b/public/admin/js/DataTables/extensions/Responsive/js/dataTables.responsive.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..37f8f30d124177b5d026684f4297faec4de346fa
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Responsive/js/dataTables.responsive.min.js
@@ -0,0 +1,15 @@
+/*!
+ Responsive 1.0.0
+ 2014 SpryMedia Ltd - datatables.net/license
+*/
+(function(m,o){var k=function(d,k){var g=function(c,a){if(!k.versionCheck||!k.versionCheck("1.10.1"))throw"DataTables Responsive requires DataTables 1.10.1 or newer";c.responsive||(this.s={dt:new k.Api(c),columns:[]},a&&"string"===typeof a.details&&(a.details={type:a.details}),this.c=d.extend(!0,{},g.defaults,a),c.responsive=this,this._constructor())};g.prototype={_constructor:function(){var c=this,a=this.s.dt;d(m).on("resize.dtr",a.settings()[0].oApi._fnThrottle(function(){c._resize()}));a.on("destroy.dtr",
+function(){d(m).off("resize.dtr")});this.c.breakpoints.sort(function(a,b){return a.width<b.width?1:a.width>b.width?-1:0});this._classLogic();this._resizeAuto();this._resize();var b=this.c.details;b.type&&(c._detailsInit(),this._detailsVis(),a.on("column-visibility.dtr",function(){c._detailsVis()}),d(a.table().node()).addClass("dtr-"+b.type))},_columnsVisiblity:function(c){var a=this.s.dt,b=this.s.columns,e,f,h=d.map(b,function(a){return a.auto&&null===a.minWidth?!1:!0===a.auto?"-":-1!==a.includeIn.indexOf(c)}),
+n=0;e=0;for(f=h.length;e<f;e++)!0===h[e]&&(n+=b[e].minWidth);a=a.table().container().offsetWidth-n;e=0;for(f=h.length;e<f;e++)b[e].control?a-=b[e].minWidth:"-"===h[e]&&(h[e]=0>a-b[e].minWidth?!1:!0,a-=b[e].minWidth);a=!1;e=0;for(f=b.length;e<f;e++)if(!b[e].control&&!h[e]){a=!0;break}e=0;for(f=b.length;e<f;e++)b[e].control&&(h[e]=a);return h},_classLogic:function(){var c=this,a=this.c.breakpoints,b=this.s.dt.columns().eq(0).map(function(a){return{className:this.column(a).header().className,includeIn:[],
+auto:!1,control:!1}}),e=function(a,e){var c=b[a].includeIn;-1===c.indexOf(e)&&c.push(e)},f=function(f,d,j,i){if(j)if("max-"===j){i=c._find(d).width;d=0;for(j=a.length;d<j;d++)a[d].width<=i&&e(f,a[d].name)}else if("min-"===j){i=c._find(d).width;d=0;for(j=a.length;d<j;d++)a[d].width>=i&&e(f,a[d].name)}else{if("not-"===j){d=0;for(j=a.length;d<j;d++)-1===a[d].name.indexOf(i)&&e(f,a[d].name)}}else b[f].includeIn.push(d)};b.each(function(b,e){for(var c=b.className.split(" "),i=!1,g=0,k=c.length;g<k;g++){var l=
+d.trim(c[g]);if("all"===l){i=!0;b.includeIn=d.map(a,function(a){return a.name});return}if("none"===l){i=!0;return}if("control"===l){i=!0;b.control=!0;return}d.each(a,function(a,b){var d=b.name.split("-"),c=l.match(RegExp("(min\\-|max\\-|not\\-)?("+d[0]+")(\\-[_a-zA-Z0-9])?"));c&&(i=!0,c[2]===d[0]&&c[3]==="-"+d[1]?f(e,b.name,c[1],c[2]+c[3]):c[2]===d[0]&&!c[3]&&f(e,b.name,c[1],c[2]))})}i||(b.auto=!0)});this.s.columns=b},_detailsInit:function(){var c=this,a=this.s.dt,b=this.c.details;"inline"===b.type&&
+(b.target="td:first-child");var e=b.target;d(a.table().body()).on("click","string"===typeof e?e:"td",function(){if(typeof e==="number"){var b=e<0?a.columns().eq().length+e:e;if(a.cell(this).index().column!==b)return}if(d(a.table().node()).hasClass("collapsed")){b=a.row(d(this).closest("tr"));if(b.child.isShown()){b.child(false);d(b.node()).removeClass("parent")}else{var h=c.c.details.renderer(a,b[0]);b.child(h,"child").show();d(b.node()).addClass("parent")}}})},_detailsVis:function(){var c=this,a=
+this.s.dt;-1!==a.columns().visible().indexOf(!1)?(d(a.table().node()).addClass("collapsed"),a.rows().eq(0).each(function(b){b=a.row(b);if(b.child()){var e=c.c.details.renderer(a,b[0]);!1===e?b.child.hide():b.child(e,"child").show()}})):(d(a.table().node()).removeClass("collapsed"),a.rows().eq(0).each(function(b){a.row(b).child.hide()}))},_find:function(c){for(var a=this.c.breakpoints,b=0,e=a.length;b<e;b++)if(a[b].name===c)return a[b]},_resize:function(){for(var c=this.s.dt,a=d(m).width(),b=this.c.breakpoints,
+e=b[0].name,f=b.length-1;0<=f;f--)if(a<=b[f].width){e=b[f].name;break}var h=this._columnsVisiblity(e);c.columns().eq(0).each(function(a,b){c.column(a).visible(h[b])})},_resizeAuto:function(){var c=this.s.dt,a=this.s.columns;if(this.c.auto&&-1!==d.inArray(!0,d.map(a,function(a){return a.auto}))){c.table().node();var b=c.table().node().cloneNode(!1),e=d(c.table().header()).clone(!1).appendTo(b);d(c.table().body().cloneNode(!0)).appendTo(b);var f=c.settings()[0].oApi._fnGetUniqueThs(c.settings()[0],
+e),b=d("<div/>").css({width:1,height:1,overflow:"hidden"}).append(b).insertBefore(c.table().node());c.columns().eq(0).each(function(b){a[b].minWidth=c.column(b).visible()?f[c.column(b).index("visible")].offsetWidth:null});b.remove()}}};g.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];g.defaults={breakpoints:g.breakpoints,auto:!0,details:{renderer:function(c,a){var b=c.cells(a,":hidden").eq(0).map(function(a){var b=
+d(c.column(a.column).header());return b.hasClass("control")?"":'<li><span class="dtr-title">'+b.text()+':</span> <span class="dtr-data">'+c.cell(a).data()+"</span></li>"}).toArray().join("");return b?d("<ul/>").append(b):!1},target:0,type:"inline"}};g.version="1.0.0";d.fn.dataTable.Responsive=g;d.fn.DataTable.Responsive=g;d(o).on("init.dt.dtr",function(c,a){if(d(a.nTable).hasClass("responsive")||d(a.nTable).hasClass("dt-responsive")||a.oInit.responsive){var b=a.oInit.responsive;!1!==b&&new g(a,d.isPlainObject(b)?
+b:{})}});return g};"function"===typeof define&&define.amd?define(["jquery","datatables"],k):"object"===typeof exports?k(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.Responsive&&k(jQuery,jQuery.fn.dataTable)})(window,document);
diff --git a/public/admin/js/DataTables/extensions/Scroller/Readme.txt b/public/admin/js/DataTables/extensions/Scroller/Readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d262eaf8d2c457b08d4123f055926cf5733137c1
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/Readme.txt
@@ -0,0 +1,43 @@
+# Scroller
+
+Scroller is a virtual rendering plug-in for DataTables which allows large datasets to be drawn on screen every quickly. What the virtual rendering means is that only the visible portion of the table (and a bit to either side to make the scrolling smooth) is drawn, while the scrolling container gives the visual impression that the whole table is visible. This is done by making use of the pagination abilities of DataTables and moving the table around in the scrolling container DataTables adds to the page. The scrolling container is forced to the height it would be for the full table display using an extra element.
+
+Key features include:
+
+* Speed! The aim of Scroller for DataTables is to make rendering large data sets fast
+* Full compatibility with DataTables' deferred rendering for maximum speed
+* Integration with state saving in DataTables (scrolling position is saved)
+* Support for scrolling with millions of rows
+* Easy to use
+
+
+# Installation
+
+To use Scroller, first download DataTables ( http://datatables.net/download ) and place the unzipped Scroller package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
+
+
+# Basic usage
+
+Scroller is initialised by simply including the letter `dt-string S` in the `dt-init dom` for the table you want to have this feature enabled on. Note that the `dt-string S` must come after the `dt-string t` parameter in `dom`. For example:
+
+```js
+$(document).ready( function () {
+	$('#example').DataTable( {
+		dom: 'lfrtipS'
+	} );
+} );
+```
+
+Note that rows in the table must all be the same height. Information in a cell which expands on to multiple lines will cause some odd behaviour in the scrolling. Additionally, the table's `cellspacing` parameter must be set to 0, again to ensure the information display is correct.
+
+
+# Documentation / support
+
+* Documentation: http://datatables.net/extensions/scroller/
+* DataTables support forums: http://datatables.net/forums
+
+
+# GitHub
+
+If you fancy getting involved with the development of Scroller and help make it better, please refer to its GitHub repo: https://github.com/DataTables/Scroller
+
diff --git a/public/admin/js/DataTables/extensions/Scroller/css/dataTables.scroller.css b/public/admin/js/DataTables/extensions/Scroller/css/dataTables.scroller.css
new file mode 100644
index 0000000000000000000000000000000000000000..4bbaa5754c35a47f3b7de15d7d8efb0f86a25849
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/css/dataTables.scroller.css
@@ -0,0 +1,44 @@
+
+/*
+ * Namespace: DTS (DataTables Scroller)
+ */
+
+div.DTS tbody th,
+div.DTS tbody td {
+	white-space: nowrap;
+}
+
+div.DTS tbody tr.even {
+	background-color: white;
+}
+
+div.DTS div.DTS_Loading {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	width: 200px;
+	height: 20px;
+	margin-top: -20px;
+	margin-left: -100px;
+	z-index: 1;
+
+	border: 1px solid #999;
+	padding: 20px 0;
+	text-align: center;
+	background-color: white;
+	background-color: rgba(255, 255, 255, 0.5);
+}
+
+div.DTS div.dataTables_scrollHead,
+div.DTS div.dataTables_scrollFoot {
+	background-color: white;
+}
+
+div.DTS div.dataTables_scrollBody {
+	z-index: 2;
+}
+
+div.DTS div.dataTables_scroll {
+	background: url('../images/loading-background.png') repeat 0 0;
+}
+
diff --git a/public/admin/js/DataTables/extensions/Scroller/css/dataTables.scroller.min.css b/public/admin/js/DataTables/extensions/Scroller/css/dataTables.scroller.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..499b85d60ed9c21eb13a100883afa419e1c84e60
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/css/dataTables.scroller.min.css
@@ -0,0 +1 @@
+div.DTS tbody th,div.DTS tbody td{white-space:nowrap}div.DTS tbody tr.even{background-color:white}div.DTS div.DTS_Loading{position:absolute;top:50%;left:50%;width:200px;height:20px;margin-top:-20px;margin-left:-100px;z-index:1;border:1px solid #999;padding:20px 0;text-align:center;background-color:white;background-color:rgba(255,255,255,0.5)}div.DTS div.dataTables_scrollHead,div.DTS div.dataTables_scrollFoot{background-color:white}div.DTS div.dataTables_scrollBody{z-index:2}div.DTS div.dataTables_scroll{background:url("../images/loading-background.png") repeat 0 0}
diff --git a/public/admin/js/DataTables/extensions/Scroller/examples/api_scrolling.html b/public/admin/js/DataTables/extensions/Scroller/examples/api_scrolling.html
new file mode 100644
index 0000000000000000000000000000000000000000..1653d2151fcd294be7e874aa29c335f3122084c9
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/examples/api_scrolling.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Scroller example - API</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.scroller.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.scroller.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		ajax:        "data/2500.txt",
+		deferRender: true,
+		dom:         "frtiS",
+		scrollY:     200,
+		scrollCollapse: true,
+		initComplete: function () {
+			var api = this.api();
+			api.scroller().scrollToRow( 1000 );
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Scroller example <span>API</span></h1>
+
+			<div class="info">
+				<p>This example shows a trivial use of the API methods that Scroller adds to the DataTables API to
+				scroll to a row once the table's data has been loaded. In this case
+				<code>scroller().scrollToRow()</code> is used to jump to row 1000.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>ID</th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>ZIP / Post code</th>
+						<th>Country</th>
+					</tr>
+				</thead>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		ajax:        &quot;data/2500.txt&quot;,
+		deferRender: true,
+		dom:         &quot;frtiS&quot;,
+		scrollY:     200,
+		scrollCollapse: true,
+		initComplete: function () {
+			var api = this.api();
+			api.scroller().scrollToRow( 1000 );
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.scroller.js">../js/dataTables.scroller.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.scroller.css">../css/dataTables.scroller.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./state_saving.html">State saving</a></li>
+							<li><a href="./large_js_source.html">Client-side data source (50,000 rows)</a></li>
+							<li><a href="./server-side_processing.html">Server-side processing (5,000,000
+							rows)</a></li>
+							<li class="active"><a href="./api_scrolling.html">API</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Scroller/examples/data/2500.txt b/public/admin/js/DataTables/extensions/Scroller/examples/data/2500.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4e9f706e7403e9294d00dc9ba3881d1e190c21ee
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/examples/data/2500.txt
@@ -0,0 +1,2502 @@
+{ "aaData": [
+	[ "1", "Armand", "Warren", "56045", "Taiwan, Province of China" ],
+	[ "2", "Xenos", "Salas", "71090", "Liberia" ],
+	[ "3", "Virginia", "Whitaker", "62723", "Nicaragua" ],
+	[ "4", "Kato", "Patrick", "97662", "Palau" ],
+	[ "5", "Penelope", "Hensley", "76634", "Greenland" ],
+	[ "6", "Georgia", "Erickson", "81358", "Bolivia" ],
+	[ "7", "Shad", "Pena", "20600", "Palestinian Territory, Occupied" ],
+	[ "8", "Tanisha", "Humphrey", "93371", "Kenya" ],
+	[ "9", "Claire", "Espinoza", "I8S 2S8", "Panama" ],
+	[ "10", "Raya", "Tucker", "O8D 8W7", "Botswana" ],
+	[ "11", "Otto", "Briggs", "57590", "Anguilla" ],
+	[ "12", "Logan", "Burt", "53041", "Venezuela" ],
+	[ "13", "Cooper", "Pennington", "36994", "France" ],
+	[ "14", "Kristen", "Peterson", "52917", "Sao Tome and Principe" ],
+	[ "15", "Jordan", "Velasquez", "08884", "Switzerland" ],
+	[ "16", "Zelda", "Freeman", "F9H 1J9", "Holy See (Vatican City State)" ],
+	[ "17", "Mary", "Pacheco", "A7Y 6X9", "Niger" ],
+	[ "18", "Tiger", "Robles", "44533", "Malaysia" ],
+	[ "19", "Zelenia", "Buckner", "Q8N 6E5", "Malawi" ],
+	[ "20", "Coby", "Johnston", "N6I 2O9", "Rwanda" ],
+	[ "21", "Gillian", "Strickland", "12258", "Cook Islands" ],
+	[ "22", "Alfreda", "Mcbride", "K5A 3B6", "Nigeria" ],
+	[ "23", "Laith", "Ford", "19072", "Czech Republic" ],
+	[ "24", "Autumn", "Barton", "U9D 9F4", "Angola" ],
+	[ "25", "Nadine", "Britt", "G4U 8L0", "Liechtenstein" ],
+	[ "26", "Xaviera", "Hart", "T1N 7D2", "Mali" ],
+	[ "27", "Neil", "Page", "T3E 9F4", "Korea" ],
+	[ "28", "Rose", "French", "B7T 8M2", "French Polynesia" ],
+	[ "29", "Alyssa", "Poole", "S1L 2T5", "Yemen" ],
+	[ "30", "Chantale", "Lynch", "97316", "United States" ],
+	[ "31", "Jermaine", "Dawson", "A3H 7A1", "American Samoa" ],
+	[ "32", "Ann", "Giles", "54258", "Korea" ],
+	[ "33", "Jerry", "Carr", "04901", "South Georgia and The South Sandwich Islands" ],
+	[ "34", "Lionel", "Hooper", "67970", "Bahrain" ],
+	[ "35", "Alyssa", "Hewitt", "R3K 2V8", "Paraguay" ],
+	[ "36", "Lisandra", "Sheppard", "71886", "Seychelles" ],
+	[ "37", "Kylan", "Harrison", "96763", "Italy" ],
+	[ "38", "Kaitlin", "Montgomery", "V5K 5U8", "Niger" ],
+	[ "39", "Heidi", "Boyd", "B3C 8M9", "Papua New Guinea" ],
+	[ "40", "Rinah", "Case", "W7M 5K1", "Mali" ],
+	[ "41", "Thaddeus", "Maynard", "E4V 6W6", "Egypt" ],
+	[ "42", "Lacota", "Ray", "T3J 8D8", "United Kingdom" ],
+	[ "43", "Olympia", "Cortez", "F8C 7I5", "Palau" ],
+	[ "44", "Wendy", "Rojas", "N8T 4K6", "Cook Islands" ],
+	[ "45", "Arden", "Kelley", "V9N 2T6", "India" ],
+	[ "46", "Colorado", "Lindsey", "96703", "Chad" ],
+	[ "47", "Alika", "Weaver", "F6V 1I1", "Bulgaria" ],
+	[ "48", "Phoebe", "Mack", "E4B 1X2", "El Salvador" ],
+	[ "49", "Sybill", "Bridges", "Z2G 6A2", "Somalia" ],
+	[ "50", "Trevor", "Larsen", "K1R 3B9", "United Arab Emirates" ],
+	[ "51", "Maya", "Battle", "70881", "Australia" ],
+	[ "52", "Charity", "Walton", "I4I 5R9", "Swaziland" ],
+	[ "53", "Lane", "Sloan", "79076", "Nauru" ],
+	[ "54", "Christopher", "Watson", "35116", "Suriname" ],
+	[ "55", "Clementine", "Shelton", "98232", "Venezuela" ],
+	[ "56", "Basil", "Hood", "J9I 1R2", "Tonga" ],
+	[ "57", "Meghan", "Pacheco", "H5Z 6B1", "Dominican Republic" ],
+	[ "58", "Brennan", "Potts", "51743", "Turkey" ],
+	[ "59", "Lawrence", "Duran", "63266", "Uruguay" ],
+	[ "60", "Ina", "Head", "S8P 9J5", "Romania" ],
+	[ "61", "Castor", "Jacobson", "C9F 6C9", "Albania" ],
+	[ "62", "Daquan", "Holden", "38571", "Ireland" ],
+	[ "63", "Donna", "Valencia", "J7B 3I0", "Portugal" ],
+	[ "64", "Kessie", "Phelps", "61063", "Georgia" ],
+	[ "65", "Dillon", "Garcia", "13652", "Holy See (Vatican City State)" ],
+	[ "66", "Russell", "Sweeney", "T8P 2O6", "Saint Kitts and Nevis" ],
+	[ "67", "Zelda", "Berg", "84946", "Afghanistan" ],
+	[ "68", "Dexter", "Mann", "73596", "Thailand" ],
+	[ "69", "Maisie", "Miller", "X3M 6C1", "Seychelles" ],
+	[ "70", "Lynn", "Mitchell", "N5B 3Z9", "Wallis and Futuna" ],
+	[ "71", "Gay", "Medina", "66692", "Germany" ],
+	[ "72", "Olga", "Clark", "M6B 7B6", "Kuwait" ],
+	[ "73", "Brianna", "Obrien", "Z6Z 5R3", "Bahrain" ],
+	[ "74", "Daria", "Byers", "R9T 4N7", "Ghana" ],
+	[ "75", "Chiquita", "Barker", "28435", "Ireland" ],
+	[ "76", "Gray", "Salazar", "58618", "Chile" ],
+	[ "77", "Delilah", "Kirby", "42811", "Oman" ],
+	[ "78", "Xanthus", "Holland", "B8Q 9C4", "Antigua and Barbuda" ],
+	[ "79", "Reuben", "Brennan", "44693", "Czech Republic" ],
+	[ "80", "Alden", "Long", "94236", "Slovakia" ],
+	[ "81", "Blythe", "Bender", "04812", "Guam" ],
+	[ "82", "Aileen", "Burgess", "47942", "Djibouti" ],
+	[ "83", "Zeus", "Craig", "43002", "Nicaragua" ],
+	[ "84", "Jade", "Garza", "F2X 8F3", "New Zealand" ],
+	[ "85", "Noah", "Barrera", "K9C 8U0", "Malawi" ],
+	[ "86", "Quyn", "Robertson", "H3X 6J9", "Bosnia and Herzegovina" ],
+	[ "87", "Serena", "Cabrera", "83671", "Slovenia" ],
+	[ "88", "Charity", "Chase", "T9Q 7C4", "Solomon Islands" ],
+	[ "89", "Athena", "Grimes", "62801", "Aruba" ],
+	[ "90", "Mallory", "Middleton", "D2V 1M5", "Italy" ],
+	[ "91", "Xenos", "Jones", "46642", "Singapore" ],
+	[ "92", "Tate", "Gregory", "66538", "Zimbabwe" ],
+	[ "93", "Blaze", "Taylor", "70282", "Paraguay" ],
+	[ "94", "Jena", "Duncan", "63057", "Cambodia" ],
+	[ "95", "Thaddeus", "Chase", "66762", "Netherlands Antilles" ],
+	[ "96", "Guinevere", "Mcgee", "O9G 4S2", "Lebanon" ],
+	[ "97", "Kermit", "Ramsey", "41214", "Dominican Republic" ],
+	[ "98", "Josephine", "Gallagher", "04960", "French Southern Territories" ],
+	[ "99", "Amela", "Morales", "M9I 1X5", "Sudan" ],
+	[ "100", "Rina", "Yates", "G3T 7M9", "Dominica" ],
+	[ "101", "Orson", "Norris", "21660", "Sierra Leone" ],
+	[ "102", "Graiden", "Silva", "98191", "Saint Lucia" ],
+	[ "103", "Amaya", "Hood", "45779", "India" ],
+	[ "104", "Fatima", "Fitzpatrick", "I4R 9Q8", "Viet Nam" ],
+	[ "105", "Judith", "Stokes", "97596", "Sudan" ],
+	[ "106", "Jared", "Vaughn", "75521", "Benin" ],
+	[ "107", "Mira", "Morgan", "35169", "Martinique" ],
+	[ "108", "Walter", "Perkins", "28618", "San Marino" ],
+	[ "109", "Megan", "Maxwell", "K6X 3J4", "Oman" ],
+	[ "110", "Christine", "Christensen", "M7S 8G8", "Netherlands Antilles" ],
+	[ "111", "Tanner", "Guerra", "S3K 6Y5", "Finland" ],
+	[ "112", "Meghan", "Rowland", "K7U 3A1", "Rwanda" ],
+	[ "113", "Patrick", "Mitchell", "V3F 5C4", "Oman" ],
+	[ "114", "Jackson", "Sanders", "83229", "Greenland" ],
+	[ "115", "Omar", "Savage", "14082", "Korea" ],
+	[ "116", "Ulla", "Larsen", "Q2P 4L8", "French Southern Territories" ],
+	[ "117", "Hop", "Gates", "D9G 9J4", "Poland" ],
+	[ "118", "Astra", "Mendoza", "R3D 2H9", "Saint Vincent and The Grenadines" ],
+	[ "119", "Denise", "Cardenas", "73138", "Sao Tome and Principe" ],
+	[ "120", "Melodie", "Roberts", "L1G 4H2", "India" ],
+	[ "121", "Cedric", "Joseph", "M4V 8O9", "Korea, Republic of" ],
+	[ "122", "Linda", "Horn", "24465", "Bosnia and Herzegovina" ],
+	[ "123", "Mary", "Lyons", "22324", "Norfolk Island" ],
+	[ "124", "Ciara", "Mcknight", "30784", "Anguilla" ],
+	[ "125", "Vaughan", "Santiago", "65037", "Guyana" ],
+	[ "126", "Lamar", "Shepherd", "58040", "France" ],
+	[ "127", "Xavier", "Webster", "68321", "Afghanistan" ],
+	[ "128", "Ainsley", "Banks", "46902", "Pakistan" ],
+	[ "129", "Alika", "Love", "L5O 4B3", "Iran, Islamic Republic of" ],
+	[ "130", "Maite", "Dickson", "37405", "Saint Kitts and Nevis" ],
+	[ "131", "Kimberley", "Morrow", "F7C 7J0", "Lebanon" ],
+	[ "132", "Eugenia", "Stafford", "36282", "Nicaragua" ],
+	[ "133", "Mira", "Gill", "K1T 8U1", "Uruguay" ],
+	[ "134", "Herman", "Francis", "C2G 8G9", "Northern Mariana Islands" ],
+	[ "135", "Veronica", "Peters", "74146", "Cook Islands" ],
+	[ "136", "Axel", "Cochran", "32240", "Central African Republic" ],
+	[ "137", "Edan", "Howe", "51862", "Mali" ],
+	[ "138", "Ignacia", "Bruce", "Q8T 5Q1", "Sao Tome and Principe" ],
+	[ "139", "Jana", "Mcguire", "89412", "Czech Republic" ],
+	[ "140", "Alice", "Underwood", "74535", "Slovakia" ],
+	[ "141", "Tobias", "Kent", "33601", "South Georgia and The South Sandwich Islands" ],
+	[ "142", "Nasim", "Coleman", "19377", "United States Minor Outlying Islands" ],
+	[ "143", "Geoffrey", "Byers", "85753", "Netherlands Antilles" ],
+	[ "144", "Odette", "Sawyer", "55418", "Tunisia" ],
+	[ "145", "Chaney", "Flowers", "F4W 7O7", "Maldives" ],
+	[ "146", "Shelly", "Glover", "M5Y 4A6", "Taiwan, Province of China" ],
+	[ "147", "Uriel", "Thornton", "Z6Q 5B7", "Myanmar" ],
+	[ "148", "Clio", "Nicholson", "Y8S 7P2", "Martinique" ],
+	[ "149", "Jana", "Foley", "B1O 9J5", "United Arab Emirates" ],
+	[ "150", "Fulton", "Rasmussen", "39194", "Solomon Islands" ],
+	[ "151", "Lisandra", "Boyd", "J2Z 2V7", "French Guiana" ],
+	[ "152", "Brennan", "Lopez", "Q4M 7Y4", "Burkina Faso" ],
+	[ "153", "Martha", "Washington", "M7S 4U6", "Iran, Islamic Republic of" ],
+	[ "154", "Dara", "Ramos", "07799", "Portugal" ],
+	[ "155", "Virginia", "Harris", "01246", "Bermuda" ],
+	[ "156", "Maryam", "Patrick", "Y3J 4Y0", "Rwanda" ],
+	[ "157", "Shana", "Mullen", "61169", "Togo" ],
+	[ "158", "Rowan", "Hahn", "K6D 5T4", "Guinea-bissau" ],
+	[ "159", "Hermione", "Shepherd", "M4F 7T6", "Ireland" ],
+	[ "160", "Jada", "Bright", "P1Z 7E6", "French Southern Territories" ],
+	[ "161", "Scarlet", "Bray", "57161", "Austria" ],
+	[ "162", "Haviva", "Conner", "M4T 8O4", "Bermuda" ],
+	[ "163", "Myra", "Briggs", "Q4B 6L7", "Kenya" ],
+	[ "164", "Hall", "Floyd", "40411", "Bangladesh" ],
+	[ "165", "Kyle", "Marquez", "J4T 7C6", "Djibouti" ],
+	[ "166", "Claudia", "Long", "R7B 1T6", "Macedonia" ],
+	[ "167", "Hasad", "Clemons", "94009", "Bosnia and Herzegovina" ],
+	[ "168", "Kameko", "Reeves", "G4V 6D5", "Singapore" ],
+	[ "169", "Angelica", "Bailey", "Z3Y 7I0", "Micronesia" ],
+	[ "170", "Shelley", "Jennings", "O3A 9H0", "Christmas Island" ],
+	[ "171", "Rafael", "Randolph", "Y4L 8B5", "Germany" ],
+	[ "172", "Winter", "Kinney", "A3K 9A7", "Saint Lucia" ],
+	[ "173", "Brian", "Larsen", "53752", "Comoros" ],
+	[ "174", "Melvin", "Cooper", "72416", "Czech Republic" ],
+	[ "175", "Gil", "Valencia", "95798", "Uganda" ],
+	[ "176", "Uma", "Cummings", "84649", "Jordan" ],
+	[ "177", "Micah", "Shannon", "H9L 8R6", "Ghana" ],
+	[ "178", "Ahmed", "Weiss", "05291", "American Samoa" ],
+	[ "179", "Hop", "Foster", "W9C 7J7", "Panama" ],
+	[ "180", "Todd", "Barnett", "T9R 7J4", "Seychelles" ],
+	[ "181", "Byron", "Meyers", "J4G 9P2", "Congo" ],
+	[ "182", "Hadassah", "Barnett", "U1A 8V3", "Paraguay" ],
+	[ "183", "Hermione", "Luna", "L4G 2E5", "New Zealand" ],
+	[ "184", "Marsden", "Alvarado", "U1V 1Y4", "Aruba" ],
+	[ "185", "Britanni", "Gregory", "C8O 2T4", "Kazakhstan" ],
+	[ "186", "Brenda", "Oneil", "R9Q 9B7", "Gibraltar" ],
+	[ "187", "Reuben", "Hopkins", "C2D 9D0", "Bhutan" ],
+	[ "188", "Sonia", "Sandoval", "Y2G 5I0", "Guatemala" ],
+	[ "189", "Yasir", "Holcomb", "A1H 6Y3", "Angola" ],
+	[ "190", "Aristotle", "Rosa", "51870", "Indonesia" ],
+	[ "191", "Uriah", "Blair", "X8K 1B9", "Suriname" ],
+	[ "192", "Vaughan", "Sharp", "L2F 5N8", "Faroe Islands" ],
+	[ "193", "Cooper", "Beard", "80399", "United States Minor Outlying Islands" ],
+	[ "194", "Riley", "Greene", "44728", "Russian Federation" ],
+	[ "195", "Rashad", "Flowers", "L6N 8U7", "Mongolia" ],
+	[ "196", "Yvonne", "Wilson", "18599", "Svalbard and Jan Mayen" ],
+	[ "197", "Martena", "Ayers", "A8Z 5F7", "Oman" ],
+	[ "198", "Eagan", "Cline", "T9P 4L4", "Solomon Islands" ],
+	[ "199", "Dawn", "Carrillo", "T6O 6E5", "Malawi" ],
+	[ "200", "Ali", "Singleton", "G6F 3B4", "Italy" ],
+	[ "201", "Christopher", "Beach", "01655", "Palau" ],
+	[ "202", "Emma", "Cummings", "W1B 4R6", "Dominica" ],
+	[ "203", "Ishmael", "Gray", "76928", "Egypt" ],
+	[ "204", "Megan", "Hines", "F7X 2X5", "New Zealand" ],
+	[ "205", "Emmanuel", "Steele", "09729", "Netherlands" ],
+	[ "206", "Alea", "Burris", "08485", "Guatemala" ],
+	[ "207", "Martina", "Todd", "46863", "Christmas Island" ],
+	[ "208", "Len", "Valentine", "S6Z 5S8", "Slovenia" ],
+	[ "209", "Jorden", "Salazar", "U4D 8H6", "Austria" ],
+	[ "210", "Yvette", "Bradford", "17275", "Heard Island and Mcdonald Islands" ],
+	[ "211", "Elvis", "Mcmahon", "27586", "Marshall Islands" ],
+	[ "212", "Gray", "Bonner", "N4V 3U9", "Moldova" ],
+	[ "213", "Yoshi", "Singleton", "86603", "United Kingdom" ],
+	[ "214", "Amena", "Burks", "93820", "Reunion" ],
+	[ "215", "Ocean", "Maldonado", "72026", "Ireland" ],
+	[ "216", "Allen", "Foley", "75363", "Kiribati" ],
+	[ "217", "Duncan", "Jimenez", "H3H 3G6", "Oman" ],
+	[ "218", "Ira", "Maxwell", "53136", "French Polynesia" ],
+	[ "219", "Astra", "Moon", "D7W 8G2", "Dominican Republic" ],
+	[ "220", "Orson", "Myers", "06049", "Mali" ],
+	[ "221", "Brandon", "Estes", "D2B 7P2", "Kenya" ],
+	[ "222", "Halee", "Luna", "54733", "Moldova" ],
+	[ "223", "Jillian", "Gonzalez", "E8W 3L9", "Ecuador" ],
+	[ "224", "Julie", "Acosta", "X7M 1T2", "Equatorial Guinea" ],
+	[ "225", "Quemby", "Foster", "48596", "Eritrea" ],
+	[ "226", "Erich", "Chavez", "W4P 7G8", "Mayotte" ],
+	[ "227", "Roary", "Mcknight", "K9K 2K4", "Chile" ],
+	[ "228", "Mufutau", "Henderson", "81377", "Mayotte" ],
+	[ "229", "Herman", "Ferguson", "69405", "Japan" ],
+	[ "230", "Abdul", "Franks", "L1V 8X2", "Portugal" ],
+	[ "231", "Dominic", "Logan", "98770", "Saint Lucia" ],
+	[ "232", "Isadora", "Solis", "Y3A 6H5", "Portugal" ],
+	[ "233", "Lester", "Davis", "30339", "British Indian Ocean Territory" ],
+	[ "234", "Joel", "Rojas", "N8E 5T9", "Bahrain" ],
+	[ "235", "Quinlan", "Carroll", "55785", "Australia" ],
+	[ "236", "Guinevere", "Pickett", "A7Y 3V3", "Netherlands Antilles" ],
+	[ "237", "Nita", "Hopkins", "88370", "Albania" ],
+	[ "238", "Hayley", "Buckley", "F1V 7P5", "Togo" ],
+	[ "239", "Colorado", "Reyes", "18798", "Congo" ],
+	[ "240", "Tashya", "Bartlett", "48537", "Sierra Leone" ],
+	[ "241", "Isabella", "Keith", "48878", "Kiribati" ],
+	[ "242", "Jessica", "Noble", "D6C 9T9", "Svalbard and Jan Mayen" ],
+	[ "243", "Cairo", "Edwards", "40598", "Nepal" ],
+	[ "244", "Camille", "Bradley", "I4U 8F6", "Fiji" ],
+	[ "245", "Quin", "Mcgee", "O5D 2P0", "Poland" ],
+	[ "246", "Rina", "Guzman", "44940", "Bahrain" ],
+	[ "247", "Glenna", "Kirkland", "Z1L 4W2", "San Marino" ],
+	[ "248", "Tarik", "Todd", "77228", "Turks and Caicos Islands" ],
+	[ "249", "Yardley", "Burris", "M6U 9D7", "New Caledonia" ],
+	[ "250", "Hashim", "Casey", "17722", "Lesotho" ],
+	[ "251", "Maggie", "Raymond", "62540", "Uganda" ],
+	[ "252", "Christian", "Mcdonald", "R8K 2M1", "United Arab Emirates" ],
+	[ "253", "Colt", "Cobb", "75393", "Moldova" ],
+	[ "254", "Aline", "Graves", "I1C 9I6", "Holy See (Vatican City State)" ],
+	[ "255", "Farrah", "Cannon", "H5W 2Y0", "Bhutan" ],
+	[ "256", "Wynne", "Ayers", "B6X 6Y8", "Western Sahara" ],
+	[ "257", "Teegan", "Avery", "33643", "San Marino" ],
+	[ "258", "Shana", "Sloan", "K9P 9V7", "Gabon" ],
+	[ "259", "Britanney", "Cook", "Y5D 6K7", "Romania" ],
+	[ "260", "Kuame", "Schroeder", "12859", "Syrian Arab Republic" ],
+	[ "261", "Valentine", "Joseph", "P2S 6T6", "Mayotte" ],
+	[ "262", "Joelle", "Keller", "U6F 3T7", "Fiji" ],
+	[ "263", "Elaine", "Hickman", "28056", "Tuvalu" ],
+	[ "264", "Ivor", "Malone", "H2Z 5X5", "Virgin Islands, British" ],
+	[ "265", "Maris", "Jefferson", "12474", "Czech Republic" ],
+	[ "266", "Josephine", "Zimmerman", "Z5J 2I4", "Angola" ],
+	[ "267", "Baker", "Wooten", "X4K 2L8", "Austria" ],
+	[ "268", "Alyssa", "Mitchell", "97712", "Antarctica" ],
+	[ "269", "Carlos", "Pearson", "85838", "Gambia" ],
+	[ "270", "Luke", "Richardson", "73867", "Christmas Island" ],
+	[ "271", "Davis", "Gardner", "U2E 4D9", "Chile" ],
+	[ "272", "Thomas", "Conner", "92487", "Mozambique" ],
+	[ "273", "Kieran", "Baird", "X9G 6G1", "Iceland" ],
+	[ "274", "Cheyenne", "Morris", "F5V 4S2", "Greece" ],
+	[ "275", "Hillary", "Reeves", "89804", "Slovakia" ],
+	[ "276", "Ryder", "Long", "32725", "New Caledonia" ],
+	[ "277", "Ariel", "Colon", "50675", "Estonia" ],
+	[ "278", "Vanna", "Hess", "79057", "Saudi Arabia" ],
+	[ "279", "Hayley", "Cherry", "B5E 9X4", "United States Minor Outlying Islands" ],
+	[ "280", "Knox", "Blair", "75626", "Central African Republic" ],
+	[ "281", "Astra", "Mcdaniel", "24493", "Bermuda" ],
+	[ "282", "Teegan", "Ford", "A8U 1K9", "Iran, Islamic Republic of" ],
+	[ "283", "Harrison", "Jackson", "43519", "Marshall Islands" ],
+	[ "284", "Melyssa", "Lawson", "O7E 8E6", "Belize" ],
+	[ "285", "Shaine", "Francis", "Q5K 5I4", "India" ],
+	[ "286", "August", "Reed", "S9R 1O8", "Ghana" ],
+	[ "287", "Aphrodite", "Zimmerman", "28336", "Lesotho" ],
+	[ "288", "Declan", "Walters", "08662", "Rwanda" ],
+	[ "289", "Brody", "Pate", "G2G 9D9", "Serbia and Montenegro" ],
+	[ "290", "Bradley", "Odom", "L2R 6Z9", "Jordan" ],
+	[ "291", "Phillip", "Cleveland", "E4D 1B7", "Paraguay" ],
+	[ "292", "Silas", "Wiggins", "F9F 5X3", "Bahrain" ],
+	[ "293", "Keely", "Donaldson", "B5H 7F2", "Vanuatu" ],
+	[ "294", "Hammett", "Lancaster", "H2P 4E6", "Svalbard and Jan Mayen" ],
+	[ "295", "Kiara", "Clarke", "50885", "Thailand" ],
+	[ "296", "Ayanna", "Wiley", "20773", "Morocco" ],
+	[ "297", "Tashya", "Stanley", "F5J 5R9", "New Caledonia" ],
+	[ "298", "Margaret", "Barker", "J5A 9N8", "Marshall Islands" ],
+	[ "299", "Xandra", "English", "92299", "Korea, Republic of" ],
+	[ "300", "Jane", "Brock", "86140", "Yemen" ],
+	[ "301", "Lunea", "Garrett", "96730", "New Caledonia" ],
+	[ "302", "Slade", "Everett", "16105", "Malawi" ],
+	[ "303", "Scott", "Booker", "G8V 2R4", "Macedonia" ],
+	[ "304", "Candice", "Decker", "E5R 2D4", "China" ],
+	[ "305", "Armando", "Bridges", "87959", "Falkland Islands (Malvinas)" ],
+	[ "306", "Clayton", "Whitley", "Q6O 4M7", "British Indian Ocean Territory" ],
+	[ "307", "Driscoll", "Duncan", "M2J 9V5", "Argentina" ],
+	[ "308", "Devin", "Stafford", "L8F 2V7", "Svalbard and Jan Mayen" ],
+	[ "309", "Bell", "York", "E5B 7X5", "Lebanon" ],
+	[ "310", "Haley", "Becker", "19759", "Bhutan" ],
+	[ "311", "Chava", "Santiago", "04396", "Israel" ],
+	[ "312", "David", "Mccall", "62087", "Norfolk Island" ],
+	[ "313", "Clinton", "Jacobson", "06168", "Guam" ],
+	[ "314", "Melvin", "Kaufman", "C4E 9N6", "Gambia" ],
+	[ "315", "Dai", "Shepherd", "37490", "Saudi Arabia" ],
+	[ "316", "Zahir", "Chase", "44340", "Turkey" ],
+	[ "317", "Leilani", "Parrish", "62576", "Cocos (Keeling) Islands" ],
+	[ "318", "Oleg", "Wilkins", "Z7S 8Z4", "Latvia" ],
+	[ "319", "Pearl", "Pena", "82526", "Saudi Arabia" ],
+	[ "320", "Kelly", "Moody", "W7U 5Y3", "Burundi" ],
+	[ "321", "Marcia", "Kennedy", "85952", "Panama" ],
+	[ "322", "Cailin", "Burnett", "M2Z 3L5", "Guyana" ],
+	[ "323", "Ciara", "Small", "X6C 6M6", "Tanzania, United Republic of" ],
+	[ "324", "Lillian", "Massey", "Z8A 5U5", "Algeria" ],
+	[ "325", "Garrett", "Elliott", "R5P 6T0", "Canada" ],
+	[ "326", "Inga", "Daniels", "40156", "Cocos (Keeling) Islands" ],
+	[ "327", "Barry", "Pena", "03593", "Tonga" ],
+	[ "328", "Penelope", "Mcintyre", "29293", "Burkina Faso" ],
+	[ "329", "Dante", "Kirk", "74038", "Lesotho" ],
+	[ "330", "Owen", "Cole", "17968", "Rwanda" ],
+	[ "331", "Brittany", "Edwards", "24507", "Paraguay" ],
+	[ "332", "Zeph", "Bentley", "12000", "Guam" ],
+	[ "333", "Ruth", "Palmer", "E8V 9A5", "Ghana" ],
+	[ "334", "Driscoll", "Ellis", "X1X 2N5", "Angola" ],
+	[ "335", "Mohammad", "Guerra", "Y9N 3Y5", "Mongolia" ],
+	[ "336", "Clio", "Baldwin", "67557", "Morocco" ],
+	[ "337", "Virginia", "Duncan", "J8D 4T2", "Haiti" ],
+	[ "338", "Dieter", "Sanchez", "H7E 2H4", "Romania" ],
+	[ "339", "Quinn", "Hurst", "K4E 2X6", "Reunion" ],
+	[ "340", "Coby", "Kelly", "S1H 8N0", "Equatorial Guinea" ],
+	[ "341", "Raja", "Solis", "S5G 9T5", "Grenada" ],
+	[ "342", "Jordan", "Riddle", "J7M 5X3", "Svalbard and Jan Mayen" ],
+	[ "343", "Dora", "Knox", "25054", "Libyan Arab Jamahiriya" ],
+	[ "344", "Brendan", "Reilly", "U9U 3F7", "Armenia" ],
+	[ "345", "Melyssa", "Reyes", "11285", "Viet Nam" ],
+	[ "346", "Knox", "Rivera", "N8Z 7J0", "Nepal" ],
+	[ "347", "Quynn", "Irwin", "26524", "Chile" ],
+	[ "348", "Colin", "Coleman", "22833", "United Arab Emirates" ],
+	[ "349", "Sybil", "Delgado", "99947", "Belize" ],
+	[ "350", "Macaulay", "Salinas", "48521", "Heard Island and Mcdonald Islands" ],
+	[ "351", "Garrison", "Hogan", "68950", "India" ],
+	[ "352", "Ronan", "Guerra", "55445", "Angola" ],
+	[ "353", "Regina", "Andrews", "H3E 3T0", "Central African Republic" ],
+	[ "354", "Colorado", "Joyce", "V6X 5K8", "Anguilla" ],
+	[ "355", "Basia", "Banks", "85049", "Grenada" ],
+	[ "356", "Adena", "Berg", "04135", "New Caledonia" ],
+	[ "357", "Wade", "Richardson", "C8M 9J3", "Dominican Republic" ],
+	[ "358", "Cody", "Montoya", "22018", "Solomon Islands" ],
+	[ "359", "Faith", "Barnett", "61475", "China" ],
+	[ "360", "Cody", "Witt", "C8I 2Q8", "Congo" ],
+	[ "361", "Brenden", "Carlson", "74007", "Marshall Islands" ],
+	[ "362", "Gil", "Brooks", "U4S 5N1", "Saint Vincent and The Grenadines" ],
+	[ "363", "Kirestin", "Watts", "H8I 1D5", "Myanmar" ],
+	[ "364", "Amelia", "Gilliam", "11461", "Chile" ],
+	[ "365", "Noelani", "Rhodes", "83320", "Cuba" ],
+	[ "366", "Len", "Trevino", "W9F 2U5", "Armenia" ],
+	[ "367", "Galvin", "Middleton", "86707", "Thailand" ],
+	[ "368", "Germaine", "Bridges", "90283", "Japan" ],
+	[ "369", "Rose", "Hines", "W7L 7Q6", "Congo" ],
+	[ "370", "Hop", "Mueller", "I3E 2X8", "Angola" ],
+	[ "371", "Iliana", "Williamson", "56758", "Lebanon" ],
+	[ "372", "Raja", "Price", "49603", "Armenia" ],
+	[ "373", "Jeanette", "Hatfield", "E3K 5N5", "India" ],
+	[ "374", "Brittany", "Christensen", "04750", "Uruguay" ],
+	[ "375", "Inga", "Prince", "D4X 6J5", "Switzerland" ],
+	[ "376", "Cherokee", "Ballard", "U1O 1M0", "Rwanda" ],
+	[ "377", "Deirdre", "Watson", "46983", "Sri Lanka" ],
+	[ "378", "Amanda", "Parrish", "99838", "Hong Kong" ],
+	[ "379", "Leo", "Shannon", "L3N 3J0", "Brunei Darussalam" ],
+	[ "380", "Kimberly", "Clemons", "88734", "South Africa" ],
+	[ "381", "Seth", "Langley", "D6A 1Q9", "Guyana" ],
+	[ "382", "Carol", "Blankenship", "X5N 2A7", "Angola" ],
+	[ "383", "Dora", "Flores", "F8F 1O5", "Poland" ],
+	[ "384", "Chava", "Dickson", "P8B 6W6", "Comoros" ],
+	[ "385", "Trevor", "Mcdowell", "31382", "Solomon Islands" ],
+	[ "386", "Alec", "Valentine", "P2R 4K7", "Greenland" ],
+	[ "387", "Philip", "Jenkins", "Q7X 5U5", "Aruba" ],
+	[ "388", "Kim", "Bowen", "69873", "Saint Kitts and Nevis" ],
+	[ "389", "Allegra", "Oconnor", "X3Y 1X3", "Holy See (Vatican City State)" ],
+	[ "390", "Daria", "Briggs", "A7Z 7P4", "Serbia and Montenegro" ],
+	[ "391", "Amelia", "Wiley", "D4S 1G5", "Montserrat" ],
+	[ "392", "Erica", "Aguirre", "H5L 2O3", "Andorra" ],
+	[ "393", "Kibo", "Sawyer", "30638", "Guyana" ],
+	[ "394", "Jackson", "Meyers", "P4N 9D6", "Bangladesh" ],
+	[ "395", "Kirk", "Baxter", "F3M 7S6", "Estonia" ],
+	[ "396", "Sybil", "Christian", "B3Q 2X0", "South Georgia and The South Sandwich Islands" ],
+	[ "397", "Ina", "Mercer", "N4S 1K8", "Korea" ],
+	[ "398", "Kiara", "Whitehead", "86023", "Nicaragua" ],
+	[ "399", "Vielka", "Hays", "29845", "Malta" ],
+	[ "400", "Stacey", "Carlson", "53218", "Cook Islands" ],
+	[ "401", "Selma", "Lloyd", "78256", "Turkey" ],
+	[ "402", "Rhoda", "Mcintosh", "G8X 1C8", "Guatemala" ],
+	[ "403", "Teagan", "Ochoa", "99752", "Barbados" ],
+	[ "404", "Rebecca", "Carver", "82661", "Saint Kitts and Nevis" ],
+	[ "405", "Yael", "Woodward", "66095", "Niger" ],
+	[ "406", "Calvin", "Huffman", "82172", "Somalia" ],
+	[ "407", "Sopoline", "Walters", "K5L 3I7", "Spain" ],
+	[ "408", "Hollee", "Powell", "05572", "Samoa" ],
+	[ "409", "Fiona", "Frank", "74456", "Timor-leste" ],
+	[ "410", "Alana", "Hubbard", "76011", "Lithuania" ],
+	[ "411", "Lillian", "Garcia", "J5Z 2O5", "Sierra Leone" ],
+	[ "412", "Tad", "Mcleod", "B6A 8Z4", "Australia" ],
+	[ "413", "Hadassah", "Hall", "47417", "China" ],
+	[ "414", "Regan", "Summers", "X4L 4I6", "Honduras" ],
+	[ "415", "Herrod", "Erickson", "R8G 3V0", "Israel" ],
+	[ "416", "Autumn", "Rojas", "31205", "Cocos (Keeling) Islands" ],
+	[ "417", "Castor", "Mooney", "92737", "Grenada" ],
+	[ "418", "Wesley", "Holman", "57125", "Greenland" ],
+	[ "419", "Kitra", "Wooten", "Q6X 4Y0", "Mongolia" ],
+	[ "420", "Buckminster", "Rice", "U8B 7B8", "Tokelau" ],
+	[ "421", "Xavier", "Hardin", "18280", "Iran, Islamic Republic of" ],
+	[ "422", "Sopoline", "Fleming", "78437", "Singapore" ],
+	[ "423", "Sydney", "Salinas", "23801", "Cook Islands" ],
+	[ "424", "Bethany", "Rosales", "89650", "United States" ],
+	[ "425", "Deirdre", "Hensley", "F3X 1B7", "Micronesia" ],
+	[ "426", "Bernard", "Vargas", "S4D 9T0", "Uzbekistan" ],
+	[ "427", "Merrill", "Compton", "17713", "Suriname" ],
+	[ "428", "Carly", "Baird", "D3H 5G3", "United States Minor Outlying Islands" ],
+	[ "429", "Grace", "Phelps", "64695", "Nauru" ],
+	[ "430", "Kareem", "Stone", "65572", "Netherlands" ],
+	[ "431", "Susan", "Newton", "04627", "Anguilla" ],
+	[ "432", "Laura", "Miranda", "E1G 2R7", "Finland" ],
+	[ "433", "Madaline", "Pugh", "J9A 9M5", "Senegal" ],
+	[ "434", "Sophia", "Mendez", "33789", "Timor-leste" ],
+	[ "435", "Roary", "Greene", "61774", "Canada" ],
+	[ "436", "Amos", "Gilliam", "94933", "Sri Lanka" ],
+	[ "437", "Ivory", "Joyner", "15379", "San Marino" ],
+	[ "438", "Jorden", "Robbins", "43400", "Russian Federation" ],
+	[ "439", "Merritt", "Holcomb", "R1I 3C7", "Brazil" ],
+	[ "440", "Iliana", "Johnston", "U9W 8N2", "Trinidad and Tobago" ],
+	[ "441", "Ivana", "Patterson", "G5O 6A5", "Georgia" ],
+	[ "442", "Sydney", "Mccullough", "W9M 2H5", "American Samoa" ],
+	[ "443", "Alvin", "Fulton", "X8A 8R5", "Antigua and Barbuda" ],
+	[ "444", "Alfreda", "Lopez", "42499", "Montserrat" ],
+	[ "445", "Ethan", "Bird", "W9A 8M1", "British Indian Ocean Territory" ],
+	[ "446", "Zeus", "Logan", "01682", "San Marino" ],
+	[ "447", "Nehru", "Andrews", "W8J 3C8", "Dominican Republic" ],
+	[ "448", "Donna", "Booth", "64754", "Nepal" ],
+	[ "449", "Cruz", "Bruce", "17429", "Burundi" ],
+	[ "450", "Ronan", "Saunders", "69957", "South Africa" ],
+	[ "451", "Jordan", "Barnes", "D8K 9L8", "Dominica" ],
+	[ "452", "Carly", "Love", "D8Z 3P4", "Mauritania" ],
+	[ "453", "Mari", "George", "60260", "Japan" ],
+	[ "454", "Karly", "Hodges", "15790", "South Georgia and The South Sandwich Islands" ],
+	[ "455", "Rana", "Logan", "M1R 6Y6", "Bosnia and Herzegovina" ],
+	[ "456", "Theodore", "Sims", "C7A 8T2", "Barbados" ],
+	[ "457", "Quin", "Thompson", "26884", "Bouvet Island" ],
+	[ "458", "Kimberley", "Sloan", "S5T 8E3", "Costa Rica" ],
+	[ "459", "Upton", "Valenzuela", "Z6J 6Q1", "Macao" ],
+	[ "460", "Clinton", "Williams", "Z3O 7C4", "Germany" ],
+	[ "461", "Samson", "Mathis", "G1T 1V9", "Senegal" ],
+	[ "462", "Michelle", "Frost", "87113", "Serbia and Montenegro" ],
+	[ "463", "Tyrone", "Coffey", "80705", "Albania" ],
+	[ "464", "Alea", "Delaney", "E4S 4K4", "Guyana" ],
+	[ "465", "Dominique", "Schwartz", "81368", "Falkland Islands (Malvinas)" ],
+	[ "466", "Benedict", "Norton", "D1C 9C8", "Cyprus" ],
+	[ "467", "Vaughan", "Stein", "R7K 1L8", "Egypt" ],
+	[ "468", "Charles", "Foley", "20434", "Anguilla" ],
+	[ "469", "Arden", "Ramos", "54065", "Gibraltar" ],
+	[ "470", "Dillon", "Patel", "L6H 1H6", "Liberia" ],
+	[ "471", "Gretchen", "Davenport", "57188", "Equatorial Guinea" ],
+	[ "472", "Ivy", "Randall", "52617", "Costa Rica" ],
+	[ "473", "Brett", "Baird", "45791", "Hungary" ],
+	[ "474", "Wyoming", "Sparks", "11266", "Luxembourg" ],
+	[ "475", "Rashad", "Roy", "47012", "Guam" ],
+	[ "476", "Sopoline", "Le", "M1G 2P8", "United Arab Emirates" ],
+	[ "477", "Ursa", "Haynes", "53774", "British Indian Ocean Territory" ],
+	[ "478", "Maia", "Vincent", "26773", "New Caledonia" ],
+	[ "479", "Salvador", "Pace", "S9E 2C4", "Egypt" ],
+	[ "480", "Bethany", "Wilcox", "F2H 7N0", "Uzbekistan" ],
+	[ "481", "Sara", "Brooks", "08176", "Holy See (Vatican City State)" ],
+	[ "482", "Lillith", "Sampson", "75576", "British Indian Ocean Territory" ],
+	[ "483", "Brynne", "Browning", "N4K 7P6", "Peru" ],
+	[ "484", "Beck", "Tran", "06815", "Cambodia" ],
+	[ "485", "Peter", "Hurley", "05770", "Rwanda" ],
+	[ "486", "Buffy", "Sharpe", "H8F 8G6", "Georgia" ],
+	[ "487", "Harrison", "Cross", "Y1A 1R8", "United Kingdom" ],
+	[ "488", "Ursa", "Wolf", "J8C 9Q8", "French Polynesia" ],
+	[ "489", "Nayda", "Vasquez", "05523", "Taiwan, Province of China" ],
+	[ "490", "Gretchen", "Walters", "28628", "Seychelles" ],
+	[ "491", "Adrian", "Hickman", "17956", "El Salvador" ],
+	[ "492", "Laura", "Moon", "32103", "Myanmar" ],
+	[ "493", "Kellie", "Barnett", "L5Z 2U8", "Saint Helena" ],
+	[ "494", "Illana", "Stanton", "Z5D 2G0", "Australia" ],
+	[ "495", "Jescie", "Santiago", "D9L 4B5", "Cambodia" ],
+	[ "496", "Laura", "Hopkins", "X6V 9S5", "Netherlands Antilles" ],
+	[ "497", "Vielka", "Harding", "U6A 9T2", "Cambodia" ],
+	[ "498", "Walter", "Gentry", "L3X 9Q9", "Slovenia" ],
+	[ "499", "Sara", "Atkinson", "67146", "Guinea" ],
+	[ "500", "Yolanda", "Chambers", "Q8D 3W0", "Zimbabwe" ],
+	[ "501", "Josiah", "Villarreal", "I1V 6Y7", "Burkina Faso" ],
+	[ "502", "Hayfa", "Bowman", "77148", "Saudi Arabia" ],
+	[ "503", "Colette", "Conley", "41232", "Estonia" ],
+	[ "504", "Lana", "Doyle", "32962", "Cuba" ],
+	[ "505", "Keegan", "Goodwin", "M2P 1X3", "Cocos (Keeling) Islands" ],
+	[ "506", "Nina", "Cross", "49580", "Germany" ],
+	[ "507", "Xenos", "Cervantes", "K6X 7W8", "Mauritius" ],
+	[ "508", "Jared", "Hester", "30156", "Uzbekistan" ],
+	[ "509", "Damon", "Curry", "U2J 2D8", "Pitcairn" ],
+	[ "510", "Amery", "Savage", "O1S 2Z4", "Turkmenistan" ],
+	[ "511", "Brian", "Wilkinson", "J6O 4T0", "Luxembourg" ],
+	[ "512", "Ivory", "Mckinney", "L3E 8M2", "Lithuania" ],
+	[ "513", "Eric", "Dalton", "Y1L 6F4", "Ethiopia" ],
+	[ "514", "Brandon", "Callahan", "K6Q 9B4", "Haiti" ],
+	[ "515", "Phillip", "Mclean", "18836", "Ethiopia" ],
+	[ "516", "Carly", "Greer", "16811", "Mayotte" ],
+	[ "517", "Stone", "Ware", "58795", "Moldova" ],
+	[ "518", "Xena", "Hayden", "97158", "Chad" ],
+	[ "519", "Catherine", "Leonard", "77868", "Azerbaijan" ],
+	[ "520", "Bernard", "Horton", "04270", "Yemen" ],
+	[ "521", "Olga", "Richmond", "89169", "Lebanon" ],
+	[ "522", "Iris", "Cummings", "78836", "Falkland Islands (Malvinas)" ],
+	[ "523", "Beau", "Mccall", "78638", "Monaco" ],
+	[ "524", "Michael", "Humphrey", "Q1A 2W9", "Tokelau" ],
+	[ "525", "Oren", "Stevens", "F4V 9G7", "Heard Island and Mcdonald Islands" ],
+	[ "526", "Ima", "Shelton", "19295", "Mozambique" ],
+	[ "527", "Merritt", "Morrison", "K6W 5R0", "Georgia" ],
+	[ "528", "Vera", "Cherry", "54993", "Angola" ],
+	[ "529", "Grant", "Turner", "B4V 2J0", "Saint Helena" ],
+	[ "530", "Odette", "Snyder", "N9L 2V8", "Chad" ],
+	[ "531", "Uma", "Stewart", "E9A 6X9", "Bhutan" ],
+	[ "532", "Kylee", "Best", "11393", "Malaysia" ],
+	[ "533", "Nicholas", "Mercado", "85179", "Switzerland" ],
+	[ "534", "Nathaniel", "Stuart", "M1Q 6Z6", "Mongolia" ],
+	[ "535", "Ruth", "Conrad", "T7G 9V6", "Guadeloupe" ],
+	[ "536", "Deanna", "Dudley", "79721", "Kiribati" ],
+	[ "537", "David", "Thornton", "C6R 2G3", "Netherlands Antilles" ],
+	[ "538", "Jane", "Ashley", "48711", "Rwanda" ],
+	[ "539", "Nero", "Curry", "20590", "Denmark" ],
+	[ "540", "Kellie", "Poole", "46053", "Martinique" ],
+	[ "541", "Freya", "Burch", "W5R 8Y5", "Northern Mariana Islands" ],
+	[ "542", "Maxwell", "Mcbride", "D4W 4M3", "Paraguay" ],
+	[ "543", "Dawn", "Sargent", "85956", "Gibraltar" ],
+	[ "544", "Lilah", "Matthews", "J4D 8A9", "Montserrat" ],
+	[ "545", "Salvador", "Burns", "28067", "Bhutan" ],
+	[ "546", "Ezekiel", "Ayala", "67153", "Wallis and Futuna" ],
+	[ "547", "Evan", "Barker", "83026", "Puerto Rico" ],
+	[ "548", "Jemima", "Case", "U3S 7N6", "Georgia" ],
+	[ "549", "Belle", "Mcconnell", "H4S 9F8", "Angola" ],
+	[ "550", "Doris", "Mays", "57387", "Tonga" ],
+	[ "551", "Carson", "Buchanan", "20457", "Guatemala" ],
+	[ "552", "Calista", "Lamb", "26851", "Gibraltar" ],
+	[ "553", "Remedios", "Haley", "A9K 5M1", "Tokelau" ],
+	[ "554", "Odette", "Mccarty", "Y8B 3V4", "Marshall Islands" ],
+	[ "555", "Libby", "Pugh", "93261", "Netherlands" ],
+	[ "556", "Bo", "Maldonado", "C1H 1K7", "Oman" ],
+	[ "557", "Cameron", "Beasley", "41821", "Northern Mariana Islands" ],
+	[ "558", "Chadwick", "Crosby", "62855", "New Caledonia" ],
+	[ "559", "Steven", "Barrett", "92102", "Pakistan" ],
+	[ "560", "Jonas", "Valdez", "N3V 4R9", "Bulgaria" ],
+	[ "561", "Harlan", "Larsen", "Z8F 6A0", "Cayman Islands" ],
+	[ "562", "Iola", "Joyner", "D1J 4C3", "Italy" ],
+	[ "563", "Abra", "Medina", "Q9O 5J2", "Cambodia" ],
+	[ "564", "Solomon", "Davidson", "91317", "Turkmenistan" ],
+	[ "565", "Alisa", "Kim", "33036", "Austria" ],
+	[ "566", "Deacon", "Silva", "Z5L 6M0", "Djibouti" ],
+	[ "567", "Bree", "Landry", "43135", "Czech Republic" ],
+	[ "568", "Molly", "Leach", "71714", "Botswana" ],
+	[ "569", "Idona", "Cain", "A2J 1R8", "South Georgia and The South Sandwich Islands" ],
+	[ "570", "Aileen", "Salinas", "90344", "Uzbekistan" ],
+	[ "571", "Dominique", "Cooper", "31803", "Sao Tome and Principe" ],
+	[ "572", "Lunea", "Pollard", "S9R 7B0", "Sweden" ],
+	[ "573", "Leo", "Combs", "W7E 8T4", "Ukraine" ],
+	[ "574", "Illiana", "Donovan", "D8K 3R4", "Palau" ],
+	[ "575", "Orlando", "Vaughan", "Q4I 3E3", "Bosnia and Herzegovina" ],
+	[ "576", "Yuri", "Blake", "I9W 5U5", "Seychelles" ],
+	[ "577", "Amanda", "Baldwin", "19752", "Turkmenistan" ],
+	[ "578", "Hanna", "Emerson", "73316", "Antigua and Barbuda" ],
+	[ "579", "Xyla", "Atkins", "11151", "Uganda" ],
+	[ "580", "Nathaniel", "Patterson", "00391", "Portugal" ],
+	[ "581", "Naida", "Cote", "17484", "Mauritius" ],
+	[ "582", "Scarlett", "Little", "V8N 8A6", "Sao Tome and Principe" ],
+	[ "583", "Odessa", "Kerr", "56456", "Sweden" ],
+	[ "584", "Kamal", "Richardson", "F6S 4I1", "Algeria" ],
+	[ "585", "Griffith", "Morton", "I5H 2Z0", "Vanuatu" ],
+	[ "586", "Orli", "Santana", "48213", "Burundi" ],
+	[ "587", "Courtney", "Cook", "R3O 3A9", "Cape Verde" ],
+	[ "588", "Jolene", "Wallace", "F6Q 7W8", "Zambia" ],
+	[ "589", "Bert", "Sharp", "X7T 7Z8", "Paraguay" ],
+	[ "590", "Ila", "Carver", "E4M 7P4", "Paraguay" ],
+	[ "591", "Merrill", "Wall", "49416", "Fiji" ],
+	[ "592", "Hanae", "Espinoza", "Y6D 6K8", "Turkey" ],
+	[ "593", "Stephanie", "Bond", "Z1Q 3P3", "Algeria" ],
+	[ "594", "Lionel", "Leonard", "U8O 7G6", "Nauru" ],
+	[ "595", "Faith", "Ramirez", "75181", "Slovakia" ],
+	[ "596", "Fritz", "Glass", "62878", "El Salvador" ],
+	[ "597", "Raya", "Gardner", "L3E 2C7", "India" ],
+	[ "598", "Brynne", "Price", "W1S 6O9", "Lithuania" ],
+	[ "599", "Karen", "Gray", "O4X 8F6", "Albania" ],
+	[ "600", "Perry", "Goodwin", "44266", "Libyan Arab Jamahiriya" ],
+	[ "601", "Dylan", "Glover", "76573", "Estonia" ],
+	[ "602", "Melinda", "Holloway", "07861", "Grenada" ],
+	[ "603", "Rahim", "Robinson", "D7M 1E8", "Madagascar" ],
+	[ "604", "Ori", "Oconnor", "10386", "Antarctica" ],
+	[ "605", "Candace", "Preston", "03610", "Denmark" ],
+	[ "606", "Wing", "Howe", "E6U 3H2", "Burundi" ],
+	[ "607", "Lucy", "Eaton", "26436", "Guinea" ],
+	[ "608", "Ignatius", "Blevins", "93597", "Serbia and Montenegro" ],
+	[ "609", "Nadine", "Franco", "80096", "Tonga" ],
+	[ "610", "Shoshana", "Walters", "S4F 5O8", "Micronesia" ],
+	[ "611", "Remedios", "Buckner", "29213", "Antigua and Barbuda" ],
+	[ "612", "Adam", "Horne", "F8V 1V8", "Oman" ],
+	[ "613", "Kieran", "Saunders", "I7A 7Y5", "Japan" ],
+	[ "614", "Isabelle", "Fletcher", "K2K 3K5", "Norway" ],
+	[ "615", "Ryder", "Ballard", "38518", "Tanzania, United Republic of" ],
+	[ "616", "Nina", "Guerrero", "61142", "Saint Kitts and Nevis" ],
+	[ "617", "Sheila", "Poole", "E2H 6I6", "Denmark" ],
+	[ "618", "Melyssa", "Mcdaniel", "08247", "Netherlands Antilles" ],
+	[ "619", "Leila", "Vang", "Q5Z 3S1", "United States Minor Outlying Islands" ],
+	[ "620", "Grady", "Aguilar", "R1I 8I8", "Slovenia" ],
+	[ "621", "Plato", "Terrell", "23916", "Kuwait" ],
+	[ "622", "Rama", "Perkins", "56506", "Russian Federation" ],
+	[ "623", "Boris", "Chaney", "66737", "Antigua and Barbuda" ],
+	[ "624", "Edward", "Clarke", "30722", "Iraq" ],
+	[ "625", "Skyler", "Wise", "53248", "Taiwan, Province of China" ],
+	[ "626", "Uta", "Cox", "85242", "Malawi" ],
+	[ "627", "Lesley", "Watkins", "26710", "Estonia" ],
+	[ "628", "Gray", "Harrison", "C5L 9Y7", "Nepal" ],
+	[ "629", "Joan", "Flores", "J5Q 2B9", "Tajikistan" ],
+	[ "630", "Reece", "Lott", "85152", "Algeria" ],
+	[ "631", "Jerome", "Faulkner", "V1K 3N2", "Kiribati" ],
+	[ "632", "Jackson", "Hudson", "85932", "Botswana" ],
+	[ "633", "Uma", "Booker", "79755", "Senegal" ],
+	[ "634", "Katelyn", "Gillespie", "Q8P 4V9", "Eritrea" ],
+	[ "635", "Clio", "Tillman", "67552", "Liberia" ],
+	[ "636", "Anjolie", "Nixon", "36615", "Botswana" ],
+	[ "637", "Nell", "Lee", "T9S 4R3", "French Southern Territories" ],
+	[ "638", "Anthony", "Aguirre", "85443", "Morocco" ],
+	[ "639", "Aaron", "Green", "90326", "Faroe Islands" ],
+	[ "640", "Galvin", "Yang", "A4X 8H6", "Ukraine" ],
+	[ "641", "Yoshi", "Strickland", "52538", "Brazil" ],
+	[ "642", "Brenden", "Kirkland", "X7P 8V9", "Turks and Caicos Islands" ],
+	[ "643", "Bree", "Stone", "U4L 2H2", "Hong Kong" ],
+	[ "644", "Quin", "Tanner", "U4A 1X4", "Faroe Islands" ],
+	[ "645", "Camilla", "Heath", "91749", "Andorra" ],
+	[ "646", "Xaviera", "Bullock", "I4U 7W0", "Libyan Arab Jamahiriya" ],
+	[ "647", "Kay", "Rowe", "59689", "Iceland" ],
+	[ "648", "Lance", "Bond", "66558", "Spain" ],
+	[ "649", "Fredericka", "Langley", "48782", "Cayman Islands" ],
+	[ "650", "Charles", "Avila", "42037", "Papua New Guinea" ],
+	[ "651", "Ramona", "Rios", "T5M 3E1", "Argentina" ],
+	[ "652", "Ezekiel", "Young", "W8X 4S7", "French Polynesia" ],
+	[ "653", "Celeste", "Dodson", "19140", "Benin" ],
+	[ "654", "Frances", "Mcintosh", "91246", "Swaziland" ],
+	[ "655", "Deanna", "Hyde", "J8P 3T5", "Croatia" ],
+	[ "656", "Dahlia", "Blair", "45364", "Kazakhstan" ],
+	[ "657", "Jade", "Hayes", "I5Q 3S9", "Malawi" ],
+	[ "658", "Robin", "Bullock", "G9Q 2P8", "Ireland" ],
+	[ "659", "Nasim", "Bond", "I2V 8N4", "Macedonia" ],
+	[ "660", "Axel", "Pickett", "18370", "Saint Vincent and The Grenadines" ],
+	[ "661", "Pearl", "Lee", "G1R 3R8", "Poland" ],
+	[ "662", "Garth", "Meyers", "90308", "Georgia" ],
+	[ "663", "Ivory", "Rios", "S8F 8R5", "Mexico" ],
+	[ "664", "Jerome", "Lambert", "N1Q 6R8", "Saint Lucia" ],
+	[ "665", "Meredith", "Clark", "27720", "Cocos (Keeling) Islands" ],
+	[ "666", "Armando", "Holcomb", "M6D 4X0", "Oman" ],
+	[ "667", "Rowan", "Page", "00307", "Nauru" ],
+	[ "668", "Kyla", "Brown", "F4W 4C5", "Holy See (Vatican City State)" ],
+	[ "669", "Leigh", "Sosa", "28499", "Uruguay" ],
+	[ "670", "Shafira", "Forbes", "26526", "Honduras" ],
+	[ "671", "Maxine", "Mueller", "90923", "Kazakhstan" ],
+	[ "672", "Joy", "Sargent", "K6T 3W5", "Malawi" ],
+	[ "673", "Lamar", "Roberts", "R5F 9C8", "Poland" ],
+	[ "674", "Madonna", "Love", "15514", "Cyprus" ],
+	[ "675", "Uriel", "Ware", "Z6V 5J1", "Singapore" ],
+	[ "676", "Bevis", "Erickson", "M3X 9M8", "Brunei Darussalam" ],
+	[ "677", "Grant", "Velasquez", "96942", "Antarctica" ],
+	[ "678", "Lars", "Bullock", "14772", "Guyana" ],
+	[ "679", "Maryam", "Jones", "01854", "Togo" ],
+	[ "680", "Blythe", "Goodwin", "51731", "New Caledonia" ],
+	[ "681", "Kane", "Wiggins", "55727", "Kiribati" ],
+	[ "682", "Brian", "Rosales", "25896", "Cape Verde" ],
+	[ "683", "Blaze", "Leach", "P6J 3E5", "Northern Mariana Islands" ],
+	[ "684", "Cameron", "Neal", "82248", "Marshall Islands" ],
+	[ "685", "Lydia", "Cunningham", "Q1V 8P7", "San Marino" ],
+	[ "686", "Troy", "Cook", "32106", "British Indian Ocean Territory" ],
+	[ "687", "Alexander", "Valenzuela", "S8Z 6B2", "Guadeloupe" ],
+	[ "688", "Garth", "Beck", "46344", "Cook Islands" ],
+	[ "689", "Hillary", "Nunez", "29462", "Sri Lanka" ],
+	[ "690", "Hunter", "Sawyer", "W9M 6T4", "Saint Lucia" ],
+	[ "691", "Jaquelyn", "Everett", "T1X 2U2", "Guinea-bissau" ],
+	[ "692", "Indira", "Ortega", "43047", "Italy" ],
+	[ "693", "Josiah", "Hinton", "N5F 5Y8", "Andorra" ],
+	[ "694", "Bruno", "Gay", "E3U 3D9", "Palau" ],
+	[ "695", "Melissa", "Blackburn", "S4V 1K2", "Virgin Islands, U.S." ],
+	[ "696", "Zeus", "Dawson", "K5S 6Z6", "Belgium" ],
+	[ "697", "Castor", "Mcmahon", "H3R 1O8", "Cambodia" ],
+	[ "698", "Elizabeth", "Beasley", "98178", "Northern Mariana Islands" ],
+	[ "699", "Jescie", "Lee", "08056", "Eritrea" ],
+	[ "700", "Dennis", "Chapman", "T4O 1Q2", "Bangladesh" ],
+	[ "701", "Basia", "Wallace", "U3Y 7C1", "Pitcairn" ],
+	[ "702", "Dante", "Brewer", "53544", "Bosnia and Herzegovina" ],
+	[ "703", "Adrienne", "Glenn", "32378", "Austria" ],
+	[ "704", "Kellie", "Acevedo", "51723", "Italy" ],
+	[ "705", "Scarlet", "Mclaughlin", "43509", "Kiribati" ],
+	[ "706", "Lillith", "Mullins", "S6L 4Y6", "Kyrgyzstan" ],
+	[ "707", "Maxine", "Atkins", "Z5T 5R5", "Denmark" ],
+	[ "708", "Nicholas", "Rose", "40286", "Macedonia" ],
+	[ "709", "Zenia", "Pugh", "28682", "Venezuela" ],
+	[ "710", "Keely", "Turner", "34939", "New Zealand" ],
+	[ "711", "Maisie", "Walton", "S6M 5C5", "Cameroon" ],
+	[ "712", "Michelle", "Salinas", "T7A 9N6", "Nicaragua" ],
+	[ "713", "Reece", "Clements", "73923", "Austria" ],
+	[ "714", "Eliana", "Fox", "V3Y 5T4", "Denmark" ],
+	[ "715", "Kennedy", "Mullins", "43213", "Virgin Islands, British" ],
+	[ "716", "Alea", "Glover", "M6P 3Z5", "Turkmenistan" ],
+	[ "717", "Scarlett", "Hunt", "41461", "Montserrat" ],
+	[ "718", "Rooney", "Kane", "T8A 3E2", "Madagascar" ],
+	[ "719", "Cairo", "Ray", "L6M 1E7", "Canada" ],
+	[ "720", "Wendy", "Burks", "R8V 8F5", "Virgin Islands, U.S." ],
+	[ "721", "Christine", "Suarez", "67369", "Georgia" ],
+	[ "722", "Graiden", "Le", "K4M 9V5", "New Caledonia" ],
+	[ "723", "Zane", "Nunez", "60548", "Haiti" ],
+	[ "724", "Ali", "Bell", "U4Y 4C3", "Togo" ],
+	[ "725", "Marsden", "Leon", "39374", "Venezuela" ],
+	[ "726", "Holmes", "Kidd", "B6K 7Q9", "Iraq" ],
+	[ "727", "Cameron", "Gardner", "88627", "Brazil" ],
+	[ "728", "Ava", "George", "K1Z 7Y2", "Monaco" ],
+	[ "729", "Chantale", "Holland", "H1B 9L8", "Afghanistan" ],
+	[ "730", "Alika", "Middleton", "W8X 7O1", "Korea" ],
+	[ "731", "Cameran", "Zimmerman", "78576", "Benin" ],
+	[ "732", "Barrett", "Blair", "51161", "Virgin Islands, U.S." ],
+	[ "733", "Brielle", "Ballard", "59538", "Iceland" ],
+	[ "734", "Teagan", "Morales", "40107", "Kenya" ],
+	[ "735", "Lunea", "Cantu", "14690", "Oman" ],
+	[ "736", "Robin", "Gilmore", "17972", "Nauru" ],
+	[ "737", "Hall", "Mccarty", "86141", "China" ],
+	[ "738", "Olga", "Rasmussen", "58309", "Virgin Islands, British" ],
+	[ "739", "Mark", "Griffin", "51542", "Argentina" ],
+	[ "740", "Medge", "Carrillo", "23192", "Pitcairn" ],
+	[ "741", "Susan", "Mosley", "32128", "Turkmenistan" ],
+	[ "742", "Zelda", "Valdez", "46831", "New Caledonia" ],
+	[ "743", "Ruth", "Donaldson", "F9I 7G7", "Ukraine" ],
+	[ "744", "Kirby", "Workman", "36679", "Rwanda" ],
+	[ "745", "Alexa", "King", "66513", "Liberia" ],
+	[ "746", "Ronan", "Gross", "K2S 6D0", "Saint Lucia" ],
+	[ "747", "Kylee", "Dillon", "P7Y 1I5", "Faroe Islands" ],
+	[ "748", "Brenda", "Weaver", "99365", "Uzbekistan" ],
+	[ "749", "Aristotle", "Orr", "43451", "Canada" ],
+	[ "750", "Jaquelyn", "Tyler", "B9Q 7P5", "Brunei Darussalam" ],
+	[ "751", "Madeline", "Stewart", "D4D 2J4", "Zimbabwe" ],
+	[ "752", "Lacota", "Glass", "89124", "Israel" ],
+	[ "753", "Adrian", "Ashley", "N8M 4L1", "Sri Lanka" ],
+	[ "754", "Ignatius", "Waller", "12053", "Thailand" ],
+	[ "755", "Raven", "Stevens", "88768", "Estonia" ],
+	[ "756", "Carly", "Camacho", "27075", "Vanuatu" ],
+	[ "757", "Lee", "Calderon", "19501", "Pitcairn" ],
+	[ "758", "Amos", "Briggs", "I6A 3L8", "Saint Kitts and Nevis" ],
+	[ "759", "Cheryl", "Valencia", "90517", "Denmark" ],
+	[ "760", "Kenyon", "Franco", "B2S 2E2", "Western Sahara" ],
+	[ "761", "Damian", "Acosta", "A2S 6D0", "Bahamas" ],
+	[ "762", "Brenda", "Zamora", "T9E 7L3", "Finland" ],
+	[ "763", "Connor", "Atkinson", "03975", "Sierra Leone" ],
+	[ "764", "Kaseem", "Waters", "A2K 2X0", "China" ],
+	[ "765", "Zephania", "Whitfield", "A4Z 9P7", "Eritrea" ],
+	[ "766", "Emmanuel", "Ballard", "G1M 6Y2", "Finland" ],
+	[ "767", "Amos", "Walters", "43184", "Oman" ],
+	[ "768", "Urielle", "Browning", "19959", "Panama" ],
+	[ "769", "TaShya", "Summers", "B9V 3Y3", "Micronesia" ],
+	[ "770", "Jermaine", "Mcgee", "X8A 4E1", "Cape Verde" ],
+	[ "771", "Chaney", "Berry", "G2H 2C8", "Uganda" ],
+	[ "772", "Jaime", "May", "49723", "Eritrea" ],
+	[ "773", "Olga", "Cohen", "13403", "Macao" ],
+	[ "774", "Jacob", "Vaughn", "U7G 1V5", "Greece" ],
+	[ "775", "Kelly", "Mcdonald", "Z3B 5G7", "Kiribati" ],
+	[ "776", "Emi", "Gilbert", "W1L 2M4", "Nicaragua" ],
+	[ "777", "Francis", "Nunez", "K4U 6M5", "Lithuania" ],
+	[ "778", "Noel", "Nelson", "Z5T 1Y0", "Nauru" ],
+	[ "779", "Ora", "Ellison", "Y5I 4R8", "Burundi" ],
+	[ "780", "Kirby", "Glass", "J5X 2E3", "Argentina" ],
+	[ "781", "Hayley", "Tate", "V1T 6B6", "Greece" ],
+	[ "782", "Mohammad", "Leblanc", "E3S 5R3", "Oman" ],
+	[ "783", "Lionel", "Todd", "A1Z 9E1", "Macedonia" ],
+	[ "784", "Courtney", "Mckay", "D4I 8Z3", "Fiji" ],
+	[ "785", "Reagan", "West", "84159", "Equatorial Guinea" ],
+	[ "786", "Noel", "Strickland", "Q7K 6S3", "Mozambique" ],
+	[ "787", "Lara", "Porter", "49872", "Nigeria" ],
+	[ "788", "Kyra", "Haley", "I9E 2K3", "Dominican Republic" ],
+	[ "789", "Wynter", "Beasley", "66330", "Heard Island and Mcdonald Islands" ],
+	[ "790", "Vladimir", "Briggs", "99538", "Burkina Faso" ],
+	[ "791", "Rafael", "Campbell", "V8L 2S6", "Algeria" ],
+	[ "792", "Buffy", "Wilder", "N3U 2X0", "Bahrain" ],
+	[ "793", "Nyssa", "Dawson", "38434", "Spain" ],
+	[ "794", "Sylvia", "Swanson", "39714", "Azerbaijan" ],
+	[ "795", "Jolie", "Diaz", "A1J 5I1", "Cuba" ],
+	[ "796", "Rosalyn", "Mcdaniel", "F3T 6E2", "Benin" ],
+	[ "797", "Nelle", "Prince", "K1M 4U6", "Maldives" ],
+	[ "798", "Luke", "Knight", "05930", "Seychelles" ],
+	[ "799", "Macaulay", "Conway", "79707", "American Samoa" ],
+	[ "800", "Freya", "Webb", "U2H 2D7", "Ireland" ],
+	[ "801", "Clinton", "Meyers", "S9I 7N2", "Malta" ],
+	[ "802", "Rudyard", "Chandler", "40347", "Bahrain" ],
+	[ "803", "Courtney", "Hoover", "12325", "French Polynesia" ],
+	[ "804", "Melissa", "Davenport", "K7P 1S8", "Canada" ],
+	[ "805", "Noelle", "Nieves", "87427", "Martinique" ],
+	[ "806", "Myles", "Hart", "V6T 1W0", "Niue" ],
+	[ "807", "Jasper", "Campos", "78143", "Faroe Islands" ],
+	[ "808", "Ariana", "Valentine", "J4X 2D4", "Ecuador" ],
+	[ "809", "Vanna", "Fletcher", "M4Z 1F9", "Faroe Islands" ],
+	[ "810", "Elijah", "Harper", "Y1B 7E4", "New Zealand" ],
+	[ "811", "Leilani", "Nunez", "K9W 4F0", "United Arab Emirates" ],
+	[ "812", "Maia", "Huber", "V4L 8M6", "United Kingdom" ],
+	[ "813", "Richard", "Riddle", "U8C 8Q2", "Niue" ],
+	[ "814", "Harper", "Blanchard", "10904", "Cameroon" ],
+	[ "815", "Aurelia", "Trujillo", "01646", "Dominican Republic" ],
+	[ "816", "Anthony", "Owen", "J2I 2B4", "Palestinian Territory, Occupied" ],
+	[ "817", "Kelsie", "Roy", "M3J 6K3", "Maldives" ],
+	[ "818", "James", "Pearson", "94810", "Mexico" ],
+	[ "819", "Igor", "Marshall", "Y8M 2D6", "Palau" ],
+	[ "820", "Aquila", "Willis", "20354", "Samoa" ],
+	[ "821", "Randall", "Sheppard", "73577", "Sierra Leone" ],
+	[ "822", "Gray", "Myers", "53651", "Gibraltar" ],
+	[ "823", "Dana", "Camacho", "89571", "Reunion" ],
+	[ "824", "Berk", "Hopper", "17794", "Cook Islands" ],
+	[ "825", "Shannon", "Barry", "70536", "Bouvet Island" ],
+	[ "826", "Dahlia", "Herman", "F8L 1Q3", "Lesotho" ],
+	[ "827", "Gillian", "Hayes", "O2C 7X8", "Tajikistan" ],
+	[ "828", "Leo", "Bolton", "P6V 6E1", "Dominica" ],
+	[ "829", "Vivien", "Best", "E5E 6N8", "Cuba" ],
+	[ "830", "Clayton", "Bradley", "E7R 3M5", "Zimbabwe" ],
+	[ "831", "Lesley", "Collins", "16592", "Mali" ],
+	[ "832", "Holly", "Hensley", "49080", "Tunisia" ],
+	[ "833", "Larissa", "Velazquez", "41068", "Haiti" ],
+	[ "834", "Delilah", "Mejia", "A5I 9Q9", "Croatia" ],
+	[ "835", "Drew", "Roberson", "U7E 3R1", "Somalia" ],
+	[ "836", "Jenette", "Patel", "64084", "Denmark" ],
+	[ "837", "Gillian", "Cleveland", "05659", "Syrian Arab Republic" ],
+	[ "838", "Noelle", "Lara", "U1N 6V6", "Sri Lanka" ],
+	[ "839", "Celeste", "Rollins", "26590", "Mayotte" ],
+	[ "840", "Elvis", "Fletcher", "M8V 6J4", "Bahamas" ],
+	[ "841", "Caesar", "Hays", "E3D 3T7", "Malta" ],
+	[ "842", "Rama", "Weber", "25880", "Malta" ],
+	[ "843", "Lael", "Page", "57135", "Anguilla" ],
+	[ "844", "Omar", "Hammond", "90213", "Belarus" ],
+	[ "845", "Simone", "Mcintosh", "L5P 1S0", "Bhutan" ],
+	[ "846", "Gay", "Harper", "56404", "Virgin Islands, U.S." ],
+	[ "847", "Joel", "Holman", "C1F 1C4", "Saint Lucia" ],
+	[ "848", "Clayton", "Pennington", "57003", "Kazakhstan" ],
+	[ "849", "Susan", "Mckee", "I5U 8F2", "Taiwan, Province of China" ],
+	[ "850", "Jenna", "Stein", "P2K 6L4", "Reunion" ],
+	[ "851", "Madonna", "Joyner", "Q4Q 4K6", "Guadeloupe" ],
+	[ "852", "Deirdre", "Ingram", "N7U 3N9", "Monaco" ],
+	[ "853", "Juliet", "Hodges", "U2Q 2T0", "Uzbekistan" ],
+	[ "854", "Naomi", "Rice", "O6T 2Z1", "Nicaragua" ],
+	[ "855", "Leila", "Alvarado", "Z2V 7L3", "Suriname" ],
+	[ "856", "George", "Leon", "L6M 1V2", "Norway" ],
+	[ "857", "Rama", "Cruz", "Y2S 7K6", "Kenya" ],
+	[ "858", "Clarke", "Mckinney", "34622", "Viet Nam" ],
+	[ "859", "Savannah", "Bailey", "L3O 1U6", "Solomon Islands" ],
+	[ "860", "Maxwell", "Gibson", "R9K 9Q1", "Virgin Islands, British" ],
+	[ "861", "Devin", "Humphrey", "74821", "Costa Rica" ],
+	[ "862", "Kadeem", "Larsen", "43178", "Luxembourg" ],
+	[ "863", "Elvis", "Todd", "O3O 3G9", "Azerbaijan" ],
+	[ "864", "Levi", "Montoya", "G1Y 1N8", "Venezuela" ],
+	[ "865", "Risa", "Barnes", "86118", "Benin" ],
+	[ "866", "Dillon", "Riggs", "O3Y 8V2", "Greenland" ],
+	[ "867", "Stewart", "Marshall", "V8G 8S2", "Mexico" ],
+	[ "868", "Camden", "Goff", "N3W 2L0", "Bahrain" ],
+	[ "869", "Sheila", "Meadows", "T6K 7M2", "Yemen" ],
+	[ "870", "Hop", "Berger", "Q8B 9R7", "Germany" ],
+	[ "871", "Charissa", "Wilkerson", "08090", "Burundi" ],
+	[ "872", "Raphael", "Carey", "03667", "United Kingdom" ],
+	[ "873", "Micah", "Hood", "T9N 4T5", "Georgia" ],
+	[ "874", "Cathleen", "Mccall", "N6H 6N3", "Tanzania, United Republic of" ],
+	[ "875", "Lisandra", "Poole", "S7O 1J1", "Greece" ],
+	[ "876", "Stone", "Blackwell", "90654", "Serbia and Montenegro" ],
+	[ "877", "Serena", "Mann", "32305", "Trinidad and Tobago" ],
+	[ "878", "Scarlet", "Turner", "D7Y 8N4", "Oman" ],
+	[ "879", "Zenaida", "Carrillo", "60361", "Montserrat" ],
+	[ "880", "Jaime", "Dalton", "F4E 6R5", "Iraq" ],
+	[ "881", "Wesley", "Drake", "D8J 9U2", "Bulgaria" ],
+	[ "882", "Armand", "Chandler", "X8Z 9E6", "Saint Kitts and Nevis" ],
+	[ "883", "Inez", "Dillard", "59975", "Eritrea" ],
+	[ "884", "Roanna", "Floyd", "65958", "Bolivia" ],
+	[ "885", "Timon", "Dalton", "O3Q 5B5", "Colombia" ],
+	[ "886", "Ifeoma", "Lamb", "J9A 9X0", "Papua New Guinea" ],
+	[ "887", "Brody", "Cash", "75525", "Kazakhstan" ],
+	[ "888", "Dawn", "Wise", "G7X 5J3", "Samoa" ],
+	[ "889", "Chaney", "Bartlett", "11112", "Ecuador" ],
+	[ "890", "Galvin", "Merritt", "59635", "Bahrain" ],
+	[ "891", "Cynthia", "Nash", "U5P 1H4", "Switzerland" ],
+	[ "892", "Tara", "Austin", "Q6X 8U0", "Burundi" ],
+	[ "893", "Roanna", "Petty", "28524", "Northern Mariana Islands" ],
+	[ "894", "Palmer", "Mcdowell", "78234", "United States Minor Outlying Islands" ],
+	[ "895", "Sade", "Patton", "28984", "Czech Republic" ],
+	[ "896", "Yoko", "Compton", "62165", "Saint Kitts and Nevis" ],
+	[ "897", "Regan", "Mccarthy", "C5D 6G0", "Lebanon" ],
+	[ "898", "Norman", "Nixon", "E4C 4G0", "Virgin Islands, U.S." ],
+	[ "899", "Jocelyn", "Baldwin", "X9R 2B3", "Macedonia" ],
+	[ "900", "Jaquelyn", "Berg", "N6X 6E1", "Saint Lucia" ],
+	[ "901", "Zane", "Nelson", "G9P 4J8", "Macao" ],
+	[ "902", "Judith", "Elliott", "R4I 4O3", "Iraq" ],
+	[ "903", "Maia", "Ellis", "S9V 6P0", "Bahrain" ],
+	[ "904", "Mechelle", "Stevens", "43406", "Bouvet Island" ],
+	[ "905", "Sylvester", "Duran", "K5D 8W5", "Costa Rica" ],
+	[ "906", "Unity", "Cooke", "64362", "Ecuador" ],
+	[ "907", "Karly", "Velazquez", "43286", "Guam" ],
+	[ "908", "Damian", "Yates", "84910", "Thailand" ],
+	[ "909", "Linus", "Gross", "31808", "Israel" ],
+	[ "910", "Cooper", "Franco", "36700", "Yemen" ],
+	[ "911", "Gail", "Jones", "09157", "Turkey" ],
+	[ "912", "Hayfa", "Bennett", "59422", "France" ],
+	[ "913", "Hermione", "Barber", "I6W 8Z5", "Mozambique" ],
+	[ "914", "Hedy", "Stevens", "35535", "Cuba" ],
+	[ "915", "Galvin", "Frederick", "J2W 9A3", "Virgin Islands, British" ],
+	[ "916", "Lamar", "Rush", "P4O 3H4", "Austria" ],
+	[ "917", "Brenda", "Walter", "K8Q 9H9", "Tajikistan" ],
+	[ "918", "Ria", "Guy", "12801", "Gibraltar" ],
+	[ "919", "Bruno", "Lynch", "I6U 7D0", "Greenland" ],
+	[ "920", "Kirk", "Pearson", "66242", "Falkland Islands (Malvinas)" ],
+	[ "921", "Owen", "Sosa", "61483", "Martinique" ],
+	[ "922", "Rajah", "Mccarty", "G9K 6L2", "Faroe Islands" ],
+	[ "923", "Erasmus", "Malone", "D6H 7H5", "Sierra Leone" ],
+	[ "924", "Raja", "Hale", "85590", "Guadeloupe" ],
+	[ "925", "Logan", "Christensen", "Y6L 8Z0", "Guatemala" ],
+	[ "926", "Kirestin", "Griffith", "47900", "Micronesia" ],
+	[ "927", "Kato", "Reeves", "93779", "Uruguay" ],
+	[ "928", "Jonah", "Suarez", "13708", "Spain" ],
+	[ "929", "Adam", "Lynn", "E1P 1L3", "Indonesia" ],
+	[ "930", "Quinn", "Mckinney", "99683", "Faroe Islands" ],
+	[ "931", "Whilemina", "Macias", "32145", "Iceland" ],
+	[ "932", "Gillian", "Osborne", "L3L 6G0", "Italy" ],
+	[ "933", "Venus", "Zamora", "28318", "Comoros" ],
+	[ "934", "Allegra", "Eaton", "P5X 9S0", "Antarctica" ],
+	[ "935", "Driscoll", "Preston", "R3L 9R0", "Niue" ],
+	[ "936", "Joel", "Spencer", "12006", "Monaco" ],
+	[ "937", "Lucius", "Sharp", "B8V 6U7", "Dominica" ],
+	[ "938", "Curran", "Robinson", "82216", "Romania" ],
+	[ "939", "Kerry", "Espinoza", "N4B 7Q1", "Guatemala" ],
+	[ "940", "Isaac", "Kline", "85674", "Costa Rica" ],
+	[ "941", "Neil", "Harrison", "I5A 2S2", "Greenland" ],
+	[ "942", "Ezra", "Rodriguez", "D6P 5Q3", "Angola" ],
+	[ "943", "Galvin", "Jefferson", "D6H 7G0", "Macedonia" ],
+	[ "944", "Joseph", "Hahn", "Z8V 9B5", "Uganda" ],
+	[ "945", "Naida", "Hammond", "40105", "Philippines" ],
+	[ "946", "Brenna", "Everett", "41704", "Indonesia" ],
+	[ "947", "Rae", "Parks", "79077", "Sweden" ],
+	[ "948", "Jessica", "Richard", "Y3I 5R3", "Uganda" ],
+	[ "949", "Rachel", "Marks", "16157", "Cameroon" ],
+	[ "950", "Maxwell", "Ferguson", "V6A 6M0", "Ukraine" ],
+	[ "951", "Alyssa", "Beard", "13936", "Antarctica" ],
+	[ "952", "Camille", "Gill", "V9Q 9P7", "New Caledonia" ],
+	[ "953", "Cora", "Bond", "M9X 1A4", "Seychelles" ],
+	[ "954", "Peter", "Acosta", "07937", "Chile" ],
+	[ "955", "Ella", "Poole", "A3F 9Z1", "Panama" ],
+	[ "956", "Ashely", "Guerrero", "37436", "Central African Republic" ],
+	[ "957", "Mikayla", "Johnston", "L9W 5T8", "Cameroon" ],
+	[ "958", "Ora", "Weaver", "65897", "Turks and Caicos Islands" ],
+	[ "959", "Timon", "Barnes", "R6J 1J7", "Djibouti" ],
+	[ "960", "Jamalia", "Wade", "22211", "United States" ],
+	[ "961", "Bradley", "Haney", "K1H 1Q1", "Western Sahara" ],
+	[ "962", "Lance", "Le", "H4R 9T7", "Botswana" ],
+	[ "963", "Ethan", "Rich", "T8N 1C6", "Netherlands" ],
+	[ "964", "Jeanette", "Carver", "G1E 5C8", "Cook Islands" ],
+	[ "965", "Ocean", "Marquez", "15084", "Pakistan" ],
+	[ "966", "Ifeoma", "Cleveland", "R9D 6M1", "French Guiana" ],
+	[ "967", "Sylvia", "Herring", "U4R 8P1", "Thailand" ],
+	[ "968", "Clare", "Huffman", "Q5G 2Q0", "Niger" ],
+	[ "969", "Colton", "Leach", "V3F 9W6", "Syrian Arab Republic" ],
+	[ "970", "Maryam", "Hoover", "Y7U 6N3", "Slovakia" ],
+	[ "971", "Nola", "Snider", "54275", "Bosnia and Herzegovina" ],
+	[ "972", "Kameko", "Cote", "M3C 8N0", "Cambodia" ],
+	[ "973", "Julian", "Pugh", "B6E 7J7", "Mauritania" ],
+	[ "974", "Xena", "Lott", "52294", "Estonia" ],
+	[ "975", "Fuller", "Kirk", "65396", "Qatar" ],
+	[ "976", "Lance", "Knox", "78074", "Serbia and Montenegro" ],
+	[ "977", "Hedwig", "Beck", "T5P 4C8", "Dominican Republic" ],
+	[ "978", "Martena", "Diaz", "65420", "Saint Pierre and Miquelon" ],
+	[ "979", "Shafira", "David", "74843", "Senegal" ],
+	[ "980", "Shafira", "Clark", "T6F 5C7", "Mongolia" ],
+	[ "981", "Georgia", "Booth", "28183", "Japan" ],
+	[ "982", "Cameron", "Austin", "I2J 1R1", "Bahrain" ],
+	[ "983", "Vanna", "Hyde", "82434", "Croatia" ],
+	[ "984", "Deanna", "Park", "68486", "Zimbabwe" ],
+	[ "985", "Grady", "Freeman", "U4O 1Q9", "Belarus" ],
+	[ "986", "Sandra", "Knapp", "31413", "Sudan" ],
+	[ "987", "Dorian", "Joseph", "90768", "Lithuania" ],
+	[ "988", "Adria", "Bonner", "15899", "Mongolia" ],
+	[ "989", "Sebastian", "Guzman", "G9L 9G5", "Yemen" ],
+	[ "990", "Angelica", "Puckett", "W8D 8W8", "Virgin Islands, U.S." ],
+	[ "991", "Connor", "Parks", "26175", "Virgin Islands, U.S." ],
+	[ "992", "Yardley", "Griffith", "H3L 2U3", "Saint Pierre and Miquelon" ],
+	[ "993", "Charissa", "Beck", "30611", "Zambia" ],
+	[ "994", "Calvin", "Russo", "79906", "Chile" ],
+	[ "995", "Yoshi", "Durham", "N2J 8M8", "China" ],
+	[ "996", "Finn", "Buck", "Q9F 9Z8", "Iraq" ],
+	[ "997", "Kessie", "Holden", "C4A 1J0", "Syrian Arab Republic" ],
+	[ "998", "Chloe", "Richards", "63091", "Canada" ],
+	[ "999", "Uriel", "Snyder", "95487", "Pakistan" ],
+	[ "1000", "Maite", "Cash", "90705", "Syrian Arab Republic" ],
+	[ "1001", "Cameron", "Schwartz", "82778", "Taiwan, Province of China" ],
+	[ "1002", "Faith", "Jimenez", "J6K 2P9", "Saint Pierre and Miquelon" ],
+	[ "1003", "Otto", "Hancock", "34535", "Andorra" ],
+	[ "1004", "Harlan", "Blackwell", "N8Y 4E6", "Qatar" ],
+	[ "1005", "Fitzgerald", "Gilliam", "Y9J 6J5", "Burkina Faso" ],
+	[ "1006", "Lev", "Ballard", "01956", "American Samoa" ],
+	[ "1007", "Freya", "Brown", "01190", "Portugal" ],
+	[ "1008", "Harding", "Osborn", "14814", "San Marino" ],
+	[ "1009", "Alexander", "Howard", "81842", "Reunion" ],
+	[ "1010", "Ori", "Marsh", "77738", "Saint Helena" ],
+	[ "1011", "Brennan", "Rich", "18690", "Cambodia" ],
+	[ "1012", "Dawn", "Christensen", "Y8F 7R3", "Mali" ],
+	[ "1013", "Ahmed", "Pearson", "62230", "Sudan" ],
+	[ "1014", "Tanek", "Head", "25744", "Kiribati" ],
+	[ "1015", "Meredith", "Cantu", "E6X 2L1", "Kenya" ],
+	[ "1016", "Levi", "Fisher", "I9Y 9G2", "Djibouti" ],
+	[ "1017", "Katell", "Cameron", "10278", "Denmark" ],
+	[ "1018", "Ina", "Orr", "P7H 2O3", "Congo" ],
+	[ "1019", "Beck", "Hayden", "15115", "Saint Lucia" ],
+	[ "1020", "Cassady", "Wagner", "R9H 8C5", "Estonia" ],
+	[ "1021", "Amena", "Herrera", "13286", "Bahrain" ],
+	[ "1022", "Tarik", "Gross", "C3X 3W0", "Azerbaijan" ],
+	[ "1023", "Marshall", "Collier", "13416", "Dominica" ],
+	[ "1024", "Kirestin", "Callahan", "15429", "Micronesia" ],
+	[ "1025", "Sasha", "Rice", "O6H 6X2", "Denmark" ],
+	[ "1026", "Ross", "Gonzalez", "D3B 3R5", "Sudan" ],
+	[ "1027", "Veda", "Arnold", "56611", "Swaziland" ],
+	[ "1028", "Ferdinand", "Macias", "P1Q 3I2", "Colombia" ],
+	[ "1029", "Mohammad", "Reed", "74005", "Bhutan" ],
+	[ "1030", "Reagan", "Sandoval", "19275", "Pitcairn" ],
+	[ "1031", "Debra", "Nelson", "85945", "Ukraine" ],
+	[ "1032", "Cleo", "Robertson", "84072", "Guadeloupe" ],
+	[ "1033", "Tanya", "Vance", "C1F 7F1", "Romania" ],
+	[ "1034", "Desirae", "Wooten", "74659", "Mongolia" ],
+	[ "1035", "Hiram", "Estes", "Q5Z 5A0", "Namibia" ],
+	[ "1036", "Medge", "Weiss", "67079", "Azerbaijan" ],
+	[ "1037", "Hu", "Chase", "87562", "Cuba" ],
+	[ "1038", "Shafira", "Everett", "18983", "Georgia" ],
+	[ "1039", "Mannix", "Lamb", "45542", "Venezuela" ],
+	[ "1040", "Germaine", "Harvey", "I9G 1U0", "Falkland Islands (Malvinas)" ],
+	[ "1041", "Brenna", "Leonard", "55573", "New Zealand" ],
+	[ "1042", "Kylie", "Rivas", "U9J 3O9", "Djibouti" ],
+	[ "1043", "Alexandra", "Rich", "T4O 6S6", "Cuba" ],
+	[ "1044", "Dorian", "Spears", "00456", "Brazil" ],
+	[ "1045", "Laurel", "Abbott", "45449", "Switzerland" ],
+	[ "1046", "Gabriel", "Drake", "U1S 5O2", "Trinidad and Tobago" ],
+	[ "1047", "Priscilla", "Mercer", "01401", "Serbia and Montenegro" ],
+	[ "1048", "Darius", "Hoffman", "49694", "Greece" ],
+	[ "1049", "Caesar", "Patton", "42322", "Suriname" ],
+	[ "1050", "Susan", "Clayton", "W1G 5C3", "Maldives" ],
+	[ "1051", "Zane", "Dunlap", "73722", "Oman" ],
+	[ "1052", "Leah", "Fuentes", "60412", "Luxembourg" ],
+	[ "1053", "Yardley", "Hansen", "03194", "Mauritius" ],
+	[ "1054", "Ingrid", "Talley", "37315", "Solomon Islands" ],
+	[ "1055", "Demetria", "Evans", "30587", "Tajikistan" ],
+	[ "1056", "Ignacia", "Alford", "01282", "Bouvet Island" ],
+	[ "1057", "Destiny", "Wade", "L5R 3V3", "Uganda" ],
+	[ "1058", "Alden", "Mason", "V7D 2V6", "Dominican Republic" ],
+	[ "1059", "Pamela", "Wilcox", "L1I 6I1", "Canada" ],
+	[ "1060", "Melvin", "Buckley", "05478", "Hungary" ],
+	[ "1061", "Eve", "Holcomb", "B6B 8T1", "Cook Islands" ],
+	[ "1062", "Arthur", "Weeks", "R5P 7U2", "Bangladesh" ],
+	[ "1063", "Marah", "Levine", "10075", "Somalia" ],
+	[ "1064", "Keiko", "Freeman", "90950", "Faroe Islands" ],
+	[ "1065", "Dorian", "Rose", "T5M 4Z0", "Fiji" ],
+	[ "1066", "Desirae", "Velez", "T4E 8K2", "Afghanistan" ],
+	[ "1067", "Rebekah", "Lucas", "T9A 8V5", "Tunisia" ],
+	[ "1068", "Sylvester", "Copeland", "W6R 3B6", "Jamaica" ],
+	[ "1069", "Alea", "Preston", "31050", "Netherlands Antilles" ],
+	[ "1070", "Aphrodite", "Gordon", "T7C 6T8", "Sao Tome and Principe" ],
+	[ "1071", "Yael", "Delaney", "G9W 9P1", "Mexico" ],
+	[ "1072", "Sierra", "Perez", "R3O 8H0", "Slovenia" ],
+	[ "1073", "Avram", "Briggs", "05221", "Norfolk Island" ],
+	[ "1074", "Troy", "Poole", "W7Q 8O5", "Malta" ],
+	[ "1075", "Gavin", "Sandoval", "37352", "Greece" ],
+	[ "1076", "Nerea", "Stokes", "N2Q 6S9", "United States" ],
+	[ "1077", "Genevieve", "Ramirez", "53829", "Mali" ],
+	[ "1078", "Oliver", "Boone", "M1Q 8V9", "Bolivia" ],
+	[ "1079", "Lars", "Ramirez", "L2R 6V2", "Bosnia and Herzegovina" ],
+	[ "1080", "Abbot", "Horton", "R1R 1V8", "Netherlands Antilles" ],
+	[ "1081", "Abra", "Avila", "41608", "Congo" ],
+	[ "1082", "Candice", "Christian", "13930", "Faroe Islands" ],
+	[ "1083", "Flavia", "Miranda", "93964", "Estonia" ],
+	[ "1084", "Medge", "Drake", "Q7C 2E2", "Belize" ],
+	[ "1085", "Lee", "Montgomery", "H3T 4Q6", "Costa Rica" ],
+	[ "1086", "Aline", "Ratliff", "99839", "Macao" ],
+	[ "1087", "Shafira", "Fox", "A9S 7C8", "Palestinian Territory, Occupied" ],
+	[ "1088", "Orson", "Greene", "K9L 7R8", "Myanmar" ],
+	[ "1089", "Henry", "Joyner", "55853", "South Africa" ],
+	[ "1090", "Keely", "Boyer", "08996", "Liberia" ],
+	[ "1091", "Jerome", "Jones", "31770", "Saint Lucia" ],
+	[ "1092", "Hermione", "Dunlap", "U2R 7R2", "Moldova" ],
+	[ "1093", "Lenore", "Powers", "73772", "Tunisia" ],
+	[ "1094", "Alden", "Newman", "V4C 3O8", "Bhutan" ],
+	[ "1095", "Jasper", "Blevins", "K2H 5W0", "Paraguay" ],
+	[ "1096", "Robert", "Bender", "R5F 1H9", "Philippines" ],
+	[ "1097", "Bo", "Richard", "N5R 6T2", "Trinidad and Tobago" ],
+	[ "1098", "Iliana", "Mcpherson", "23758", "Bangladesh" ],
+	[ "1099", "Alfreda", "Camacho", "35387", "Saint Helena" ],
+	[ "1100", "Kirsten", "Giles", "14079", "Romania" ],
+	[ "1101", "Harlan", "Crawford", "84847", "French Polynesia" ],
+	[ "1102", "Wynne", "Bauer", "W9D 6F6", "Kazakhstan" ],
+	[ "1103", "Connor", "Melton", "E2F 4Q2", "Angola" ],
+	[ "1104", "Evelyn", "Barry", "I9H 8W7", "Turkmenistan" ],
+	[ "1105", "Barry", "Stephens", "07823", "Gibraltar" ],
+	[ "1106", "Ferris", "Farrell", "I7H 5Z6", "Saint Vincent and The Grenadines" ],
+	[ "1107", "Ursa", "Carr", "31124", "Chad" ],
+	[ "1108", "Laith", "Johnson", "10428", "Cyprus" ],
+	[ "1109", "Harlan", "Frank", "J6K 7I6", "Gambia" ],
+	[ "1110", "Gregory", "Ratliff", "P1C 8H2", "Chile" ],
+	[ "1111", "Rina", "Holloway", "Y7N 1E7", "Estonia" ],
+	[ "1112", "Maris", "Joyner", "T6R 2H9", "France" ],
+	[ "1113", "Galvin", "Webster", "V8E 9U4", "Croatia" ],
+	[ "1114", "Farrah", "Bean", "H2B 8E2", "Palestinian Territory, Occupied" ],
+	[ "1115", "Martha", "Schroeder", "14485", "Georgia" ],
+	[ "1116", "Mari", "Boone", "D4C 1Q0", "Comoros" ],
+	[ "1117", "Nadine", "Mercado", "35046", "Syrian Arab Republic" ],
+	[ "1118", "Isadora", "Keith", "R5H 8Y7", "Mayotte" ],
+	[ "1119", "Quinn", "William", "V8Q 3Y6", "India" ],
+	[ "1120", "Justina", "Gilbert", "11271", "Yemen" ],
+	[ "1121", "Jordan", "Hull", "F4Z 7R8", "Lesotho" ],
+	[ "1122", "Mechelle", "Davenport", "A9Z 8P2", "Bermuda" ],
+	[ "1123", "Isabelle", "Webster", "60972", "Zimbabwe" ],
+	[ "1124", "Armand", "Butler", "Y3F 4H9", "Nicaragua" ],
+	[ "1125", "Herman", "Beach", "Q8N 6V3", "Cape Verde" ],
+	[ "1126", "Brianna", "Love", "D9B 2W8", "Sierra Leone" ],
+	[ "1127", "Joy", "Brown", "O7V 7C1", "Djibouti" ],
+	[ "1128", "Amena", "Moss", "P8D 1L9", "Andorra" ],
+	[ "1129", "Zeph", "Whitehead", "01513", "Tanzania, United Republic of" ],
+	[ "1130", "Logan", "Matthews", "73541", "Finland" ],
+	[ "1131", "Amela", "Gregory", "65323", "Swaziland" ],
+	[ "1132", "Zoe", "Owen", "V5L 5O6", "Zambia" ],
+	[ "1133", "September", "Hewitt", "R8K 4G9", "Congo" ],
+	[ "1134", "Holly", "Walter", "S2E 3M4", "Serbia and Montenegro" ],
+	[ "1135", "Zeph", "Beach", "J6Z 8B5", "Ecuador" ],
+	[ "1136", "Morgan", "Decker", "M9H 8I5", "Uruguay" ],
+	[ "1137", "Malcolm", "Maldonado", "S6F 8X6", "Netherlands" ],
+	[ "1138", "Fay", "Day", "B9R 1U7", "Seychelles" ],
+	[ "1139", "Charles", "Juarez", "62791", "Virgin Islands, U.S." ],
+	[ "1140", "Amery", "Stout", "L9A 1F8", "Central African Republic" ],
+	[ "1141", "Irene", "Ferrell", "52649", "Norway" ],
+	[ "1142", "Dean", "Stout", "N5C 2S8", "Uruguay" ],
+	[ "1143", "Eric", "Baxter", "82082", "Chile" ],
+	[ "1144", "Shelley", "Larsen", "Y4T 4P3", "Antarctica" ],
+	[ "1145", "Rigel", "Ellis", "E3S 6K8", "Zimbabwe" ],
+	[ "1146", "Maite", "Rosa", "F6C 5Q9", "Zambia" ],
+	[ "1147", "Serena", "Blanchard", "99373", "Estonia" ],
+	[ "1148", "Melanie", "Berger", "C5P 4E2", "Mozambique" ],
+	[ "1149", "Noah", "Spence", "B8H 7X7", "Martinique" ],
+	[ "1150", "Elliott", "Pierce", "W5B 8V7", "Swaziland" ],
+	[ "1151", "Ahmed", "Chang", "E9X 7J0", "Bulgaria" ],
+	[ "1152", "Ross", "Figueroa", "22458", "China" ],
+	[ "1153", "Gary", "Calderon", "V3C 4J8", "Algeria" ],
+	[ "1154", "Montana", "Franklin", "94093", "Haiti" ],
+	[ "1155", "Rae", "Curry", "45477", "Morocco" ],
+	[ "1156", "Jillian", "Hogan", "N8L 4B5", "Iceland" ],
+	[ "1157", "Mia", "Kaufman", "54758", "Burkina Faso" ],
+	[ "1158", "Remedios", "Wilkerson", "75420", "Saint Vincent and The Grenadines" ],
+	[ "1159", "Xanthus", "Baldwin", "13961", "Congo" ],
+	[ "1160", "Madeline", "Gates", "76351", "Saint Helena" ],
+	[ "1161", "Leroy", "Craig", "12770", "Finland" ],
+	[ "1162", "Melanie", "Carpenter", "C3B 8L4", "Mayotte" ],
+	[ "1163", "Ashely", "Mcneil", "E7E 9K5", "French Southern Territories" ],
+	[ "1164", "Karina", "Mcneil", "39956", "United Arab Emirates" ],
+	[ "1165", "Nina", "Mills", "92913", "Saint Kitts and Nevis" ],
+	[ "1166", "Ashton", "Singleton", "73890", "Libyan Arab Jamahiriya" ],
+	[ "1167", "Meghan", "Black", "31814", "Armenia" ],
+	[ "1168", "Jolene", "Pope", "U6K 7O6", "Venezuela" ],
+	[ "1169", "Abel", "Boyd", "37110", "Botswana" ],
+	[ "1170", "Tiger", "Coffey", "Y6P 3S4", "Faroe Islands" ],
+	[ "1171", "Aileen", "Rowe", "F7G 8D9", "Netherlands Antilles" ],
+	[ "1172", "Bryar", "Forbes", "T2N 5H6", "Saint Vincent and The Grenadines" ],
+	[ "1173", "Vera", "Hoffman", "36299", "Guadeloupe" ],
+	[ "1174", "Hadassah", "Wright", "S8J 5B2", "Peru" ],
+	[ "1175", "Bruce", "Blair", "Q8E 7K6", "Cape Verde" ],
+	[ "1176", "Brianna", "Wolf", "V8S 5A6", "Bahamas" ],
+	[ "1177", "Kimberley", "Reed", "17652", "Tajikistan" ],
+	[ "1178", "Colin", "Phelps", "42334", "Brunei Darussalam" ],
+	[ "1179", "Gil", "Britt", "U3N 6C2", "Swaziland" ],
+	[ "1180", "Hasad", "Pena", "09526", "United States" ],
+	[ "1181", "Violet", "Dixon", "48691", "Micronesia" ],
+	[ "1182", "Uriel", "Bowen", "Z7F 7A7", "Uzbekistan" ],
+	[ "1183", "Madeline", "Keller", "18227", "Iran, Islamic Republic of" ],
+	[ "1184", "Buffy", "Mckee", "23861", "Ethiopia" ],
+	[ "1185", "Doris", "Martin", "V8N 8O7", "Liberia" ],
+	[ "1186", "Mia", "Burke", "64582", "Virgin Islands, British" ],
+	[ "1187", "William", "Kemp", "63587", "Tuvalu" ],
+	[ "1188", "Stacy", "Quinn", "01390", "Nauru" ],
+	[ "1189", "Halla", "Solomon", "31138", "Pakistan" ],
+	[ "1190", "Kasimir", "Rodriguez", "67823", "Costa Rica" ],
+	[ "1191", "Davis", "Lawrence", "27918", "Rwanda" ],
+	[ "1192", "Nigel", "Bryan", "L5U 2U9", "Seychelles" ],
+	[ "1193", "Ivana", "Stone", "94862", "Niue" ],
+	[ "1194", "Naomi", "Yang", "68985", "Haiti" ],
+	[ "1195", "Roanna", "Brown", "51196", "India" ],
+	[ "1196", "Colorado", "Chavez", "45634", "Brazil" ],
+	[ "1197", "Illana", "Levy", "V1A 7R8", "Jordan" ],
+	[ "1198", "Ali", "Lowe", "N8K 1Y5", "Hungary" ],
+	[ "1199", "Virginia", "Witt", "Y3O 5W8", "Azerbaijan" ],
+	[ "1200", "Howard", "Flores", "I9C 3Q7", "Fiji" ],
+	[ "1201", "Walter", "Odom", "78418", "Thailand" ],
+	[ "1202", "Thor", "Craig", "00935", "Jamaica" ],
+	[ "1203", "Petra", "Barry", "E5L 5K5", "Finland" ],
+	[ "1204", "Lev", "Ellison", "I6S 1K1", "Mongolia" ],
+	[ "1205", "Roth", "Osborne", "15014", "Swaziland" ],
+	[ "1206", "Lucius", "Baldwin", "12766", "China" ],
+	[ "1207", "Candice", "Hyde", "B5E 4B8", "Bahamas" ],
+	[ "1208", "Maggy", "Bailey", "76781", "Northern Mariana Islands" ],
+	[ "1209", "Beatrice", "Gregory", "S5S 8S4", "Rwanda" ],
+	[ "1210", "Adrian", "Bowman", "58500", "Vanuatu" ],
+	[ "1211", "Brenden", "Chandler", "50326", "Thailand" ],
+	[ "1212", "Jada", "Richmond", "15990", "Saint Vincent and The Grenadines" ],
+	[ "1213", "Sawyer", "Page", "G2W 7R7", "Somalia" ],
+	[ "1214", "Haley", "Jordan", "U7X 4U2", "Equatorial Guinea" ],
+	[ "1215", "Ruby", "Watson", "30990", "Romania" ],
+	[ "1216", "Jocelyn", "Knowles", "78987", "Lebanon" ],
+	[ "1217", "Preston", "Stevenson", "F3L 9B3", "Mali" ],
+	[ "1218", "Kimberly", "Merritt", "38779", "Venezuela" ],
+	[ "1219", "Herrod", "Burke", "56225", "French Guiana" ],
+	[ "1220", "Solomon", "Shannon", "67980", "Cape Verde" ],
+	[ "1221", "Bradley", "Stokes", "10213", "Botswana" ],
+	[ "1222", "Grace", "Kinney", "67923", "Montserrat" ],
+	[ "1223", "Celeste", "Clark", "S7M 6I2", "Guatemala" ],
+	[ "1224", "Patricia", "Frank", "05615", "Venezuela" ],
+	[ "1225", "Madonna", "Alford", "10878", "Brunei Darussalam" ],
+	[ "1226", "May", "Rios", "N7O 2L0", "Georgia" ],
+	[ "1227", "Driscoll", "Roach", "Y7F 9F8", "Palestinian Territory, Occupied" ],
+	[ "1228", "Idona", "Cruz", "T6Q 8L4", "Iraq" ],
+	[ "1229", "Sydney", "Delacruz", "69511", "United Arab Emirates" ],
+	[ "1230", "Gillian", "Huff", "52624", "French Southern Territories" ],
+	[ "1231", "Minerva", "Rosario", "29195", "Andorra" ],
+	[ "1232", "Kerry", "Alvarado", "L3Q 2V5", "Portugal" ],
+	[ "1233", "Amos", "Bass", "26389", "Holy See (Vatican City State)" ],
+	[ "1234", "Deanna", "Parks", "57376", "Estonia" ],
+	[ "1235", "Fitzgerald", "Green", "M3P 9N2", "Slovenia" ],
+	[ "1236", "Sade", "Hinton", "35561", "Barbados" ],
+	[ "1237", "Suki", "Parsons", "44591", "Syrian Arab Republic" ],
+	[ "1238", "Orli", "Weeks", "K2W 9L4", "Peru" ],
+	[ "1239", "Nicholas", "Copeland", "I5W 7A4", "French Guiana" ],
+	[ "1240", "Guy", "Vang", "22277", "Pitcairn" ],
+	[ "1241", "Hunter", "Goodman", "72290", "Malaysia" ],
+	[ "1242", "Noble", "Rich", "I3B 6T9", "Gibraltar" ],
+	[ "1243", "Delilah", "Zamora", "96328", "New Zealand" ],
+	[ "1244", "Sybil", "Mercer", "93665", "Namibia" ],
+	[ "1245", "Scarlett", "Brock", "Z2E 3J2", "Central African Republic" ],
+	[ "1246", "Channing", "Alexander", "W5V 8D2", "San Marino" ],
+	[ "1247", "Carolyn", "Boyle", "Q5Z 9E6", "Gabon" ],
+	[ "1248", "Irene", "Jennings", "F3H 4O6", "Saint Helena" ],
+	[ "1249", "Bianca", "Pratt", "66354", "Malaysia" ],
+	[ "1250", "Dexter", "Cole", "56106", "French Southern Territories" ],
+	[ "1251", "Berk", "Velez", "26759", "Lesotho" ],
+	[ "1252", "Barrett", "Richardson", "59446", "Cocos (Keeling) Islands" ],
+	[ "1253", "Scarlet", "Jacobs", "G9A 7L6", "Dominica" ],
+	[ "1254", "Aiko", "Brooks", "R6R 9E4", "Liberia" ],
+	[ "1255", "Jacob", "Moore", "P2Y 6P3", "Cambodia" ],
+	[ "1256", "Madeline", "Bishop", "D4I 2E7", "Dominican Republic" ],
+	[ "1257", "Jarrod", "Evans", "C9O 7V7", "Taiwan, Province of China" ],
+	[ "1258", "Beverly", "Witt", "64850", "Denmark" ],
+	[ "1259", "Karyn", "Rhodes", "D6G 5Z3", "Cape Verde" ],
+	[ "1260", "Imani", "Quinn", "01897", "Macao" ],
+	[ "1261", "Athena", "Eaton", "03568", "Syrian Arab Republic" ],
+	[ "1262", "Raymond", "Valdez", "21037", "Romania" ],
+	[ "1263", "Christopher", "Ferguson", "64945", "Indonesia" ],
+	[ "1264", "Latifah", "Harris", "91381", "Suriname" ],
+	[ "1265", "Dacey", "Wagner", "81483", "Qatar" ],
+	[ "1266", "Summer", "Myers", "H6A 1G5", "Angola" ],
+	[ "1267", "Jasmine", "Rivera", "Y4W 8P2", "Virgin Islands, British" ],
+	[ "1268", "Cairo", "Massey", "Q6Y 7A7", "Poland" ],
+	[ "1269", "Jena", "Hill", "89480", "United States Minor Outlying Islands" ],
+	[ "1270", "Ava", "Benson", "L9H 8V1", "Sri Lanka" ],
+	[ "1271", "Gillian", "Mercado", "A9W 6V5", "Norway" ],
+	[ "1272", "Peter", "Marquez", "I5B 3W9", "Guyana" ],
+	[ "1273", "Price", "Coleman", "X8G 2S0", "Burkina Faso" ],
+	[ "1274", "Shana", "Harper", "L2B 3U9", "Malaysia" ],
+	[ "1275", "Serina", "Matthews", "58061", "Lithuania" ],
+	[ "1276", "Aretha", "Bryant", "Y8J 7A5", "Tonga" ],
+	[ "1277", "Wesley", "Craig", "20141", "Australia" ],
+	[ "1278", "Martena", "Mercer", "P6X 2L9", "Sudan" ],
+	[ "1279", "Tamara", "Dennis", "D3H 9R0", "Mali" ],
+	[ "1280", "Phelan", "Pena", "D2H 2H7", "United States Minor Outlying Islands" ],
+	[ "1281", "Rebecca", "Kinney", "B5Z 9S4", "Antarctica" ],
+	[ "1282", "Josephine", "Delgado", "81010", "Algeria" ],
+	[ "1283", "Kieran", "Estes", "70093", "Bermuda" ],
+	[ "1284", "Tamara", "Williamson", "90905", "French Guiana" ],
+	[ "1285", "Dora", "Serrano", "W8K 6R5", "Nauru" ],
+	[ "1286", "Morgan", "Bass", "B6F 8R2", "Madagascar" ],
+	[ "1287", "Margaret", "Austin", "D2C 2C1", "Belgium" ],
+	[ "1288", "Nasim", "Berry", "J9X 7M5", "Heard Island and Mcdonald Islands" ],
+	[ "1289", "Jelani", "Rutledge", "34552", "Bolivia" ],
+	[ "1290", "Cassady", "Hardin", "I2K 4H6", "Hong Kong" ],
+	[ "1291", "Jenette", "Thornton", "44943", "Uganda" ],
+	[ "1292", "Alexandra", "Sims", "93937", "Australia" ],
+	[ "1293", "Ross", "Higgins", "61993", "Nicaragua" ],
+	[ "1294", "Penelope", "Henson", "90344", "Trinidad and Tobago" ],
+	[ "1295", "Yoshi", "Blackwell", "C8D 1T4", "Costa Rica" ],
+	[ "1296", "Daria", "Rodriquez", "X3C 6L0", "Iceland" ],
+	[ "1297", "Wesley", "Waller", "43947", "Myanmar" ],
+	[ "1298", "Adam", "Hayden", "88969", "Italy" ],
+	[ "1299", "Charity", "William", "46439", "Greece" ],
+	[ "1300", "Ronan", "Hopper", "51955", "Zambia" ],
+	[ "1301", "Geraldine", "Hatfield", "W9S 7T5", "Luxembourg" ],
+	[ "1302", "Barry", "Nicholson", "79625", "Liechtenstein" ],
+	[ "1303", "Donovan", "Ortiz", "68119", "Macao" ],
+	[ "1304", "Jeanette", "Cooper", "D5P 9L2", "Sri Lanka" ],
+	[ "1305", "Isadora", "Stephenson", "P4X 4H5", "Mauritania" ],
+	[ "1306", "Hall", "Hays", "J2Z 2H1", "Svalbard and Jan Mayen" ],
+	[ "1307", "Idola", "Roberson", "89249", "Niue" ],
+	[ "1308", "Olympia", "Dennis", "69498", "Guinea" ],
+	[ "1309", "Naida", "Palmer", "19840", "Gambia" ],
+	[ "1310", "Maxine", "Rollins", "87856", "Belize" ],
+	[ "1311", "Rooney", "Phelps", "48424", "Italy" ],
+	[ "1312", "Shelly", "Edwards", "O7O 1U4", "Mali" ],
+	[ "1313", "Cassidy", "Holcomb", "98785", "Colombia" ],
+	[ "1314", "Sybil", "Moran", "F3C 6E4", "Switzerland" ],
+	[ "1315", "Mufutau", "Larson", "00276", "British Indian Ocean Territory" ],
+	[ "1316", "Fiona", "Bryant", "U7Y 7N6", "Cocos (Keeling) Islands" ],
+	[ "1317", "Lenore", "Boyle", "H5G 6P9", "Sudan" ],
+	[ "1318", "Ignacia", "Avila", "Y5M 1S2", "Romania" ],
+	[ "1319", "Wendy", "Stein", "25422", "Taiwan, Province of China" ],
+	[ "1320", "Garrison", "Bass", "B9J 6D9", "Romania" ],
+	[ "1321", "Curran", "Roy", "X2F 4P2", "Taiwan, Province of China" ],
+	[ "1322", "Oliver", "Beach", "N6J 1C5", "Kazakhstan" ],
+	[ "1323", "Bo", "Duran", "D5C 5C2", "Eritrea" ],
+	[ "1324", "Tashya", "Morrow", "N2J 7O9", "Rwanda" ],
+	[ "1325", "Cheryl", "Powell", "72413", "Niger" ],
+	[ "1326", "Justin", "Roth", "18779", "Brunei Darussalam" ],
+	[ "1327", "Nathaniel", "Foster", "04955", "Bermuda" ],
+	[ "1328", "Candace", "Nunez", "G7Z 1N2", "Moldova" ],
+	[ "1329", "Nero", "West", "K3Q 6B3", "Myanmar" ],
+	[ "1330", "Brendan", "Mcintyre", "C4E 5H7", "Argentina" ],
+	[ "1331", "Chaney", "Stafford", "V3X 8J4", "Benin" ],
+	[ "1332", "Sylvia", "Velez", "95851", "Iraq" ],
+	[ "1333", "Azalia", "Castro", "55986", "Israel" ],
+	[ "1334", "Emily", "Hogan", "74667", "Botswana" ],
+	[ "1335", "Buckminster", "Hurst", "N9C 2X6", "Reunion" ],
+	[ "1336", "Rinah", "Rodriquez", "31896", "Guinea-bissau" ],
+	[ "1337", "Nash", "Barnett", "Y8X 7H5", "China" ],
+	[ "1338", "Xanthus", "Barker", "11212", "Trinidad and Tobago" ],
+	[ "1339", "Minerva", "Huber", "M6M 9U3", "Equatorial Guinea" ],
+	[ "1340", "Kaseem", "Tillman", "86565", "Bulgaria" ],
+	[ "1341", "Cassidy", "Dejesus", "93205", "Sierra Leone" ],
+	[ "1342", "Sheila", "Munoz", "26473", "Benin" ],
+	[ "1343", "Florence", "Yates", "M5O 1J1", "Russian Federation" ],
+	[ "1344", "Isadora", "Wagner", "88381", "Philippines" ],
+	[ "1345", "Hilel", "Kramer", "E5D 4F5", "Lebanon" ],
+	[ "1346", "Stewart", "Lawson", "67313", "Malaysia" ],
+	[ "1347", "Ira", "Duffy", "52841", "Greece" ],
+	[ "1348", "Ignatius", "Robinson", "10035", "Russian Federation" ],
+	[ "1349", "Baxter", "Carroll", "92288", "Albania" ],
+	[ "1350", "Palmer", "James", "N5X 5B1", "Germany" ],
+	[ "1351", "Ava", "Eaton", "76497", "Egypt" ],
+	[ "1352", "Kiona", "Smith", "09402", "Belize" ],
+	[ "1353", "Brian", "Barlow", "00156", "Panama" ],
+	[ "1354", "Nolan", "Rosa", "J2O 9W2", "Uruguay" ],
+	[ "1355", "Teegan", "Burnett", "02401", "Italy" ],
+	[ "1356", "Erin", "Knox", "95496", "Egypt" ],
+	[ "1357", "Amela", "Sanford", "59890", "Virgin Islands, U.S." ],
+	[ "1358", "Quemby", "Hensley", "17698", "Tuvalu" ],
+	[ "1359", "Ava", "York", "J1M 1A0", "Nigeria" ],
+	[ "1360", "Vivien", "Ware", "N9S 1W6", "Bahamas" ],
+	[ "1361", "Nyssa", "Lamb", "97964", "Estonia" ],
+	[ "1362", "Brenna", "Slater", "L4P 5V6", "British Indian Ocean Territory" ],
+	[ "1363", "Kennan", "Larsen", "M2A 4X0", "Angola" ],
+	[ "1364", "Linda", "Luna", "P8C 4S8", "Gambia" ],
+	[ "1365", "Boris", "Poole", "U7J 4G1", "Aruba" ],
+	[ "1366", "Lyle", "Cote", "F5J 3Y2", "Somalia" ],
+	[ "1367", "Oleg", "Knapp", "K4C 5T8", "Guinea" ],
+	[ "1368", "Hanae", "Brown", "51395", "Nepal" ],
+	[ "1369", "India", "Hyde", "E8P 7E8", "Belize" ],
+	[ "1370", "Madeson", "Hodge", "23265", "Gambia" ],
+	[ "1371", "Thaddeus", "Hester", "Y7S 5W1", "Saint Helena" ],
+	[ "1372", "Aaron", "Kemp", "A1Q 8R3", "Albania" ],
+	[ "1373", "Aurelia", "Thornton", "P8T 9D4", "Swaziland" ],
+	[ "1374", "Preston", "Sharpe", "97472", "Niue" ],
+	[ "1375", "Grace", "Gregory", "51767", "Burkina Faso" ],
+	[ "1376", "Nicole", "Hicks", "81040", "Burkina Faso" ],
+	[ "1377", "Hall", "Randall", "X1C 7A8", "Cambodia" ],
+	[ "1378", "Burke", "Silva", "57219", "Romania" ],
+	[ "1379", "Talon", "Kline", "28200", "Argentina" ],
+	[ "1380", "Cassady", "Duncan", "Y2M 8F5", "Kenya" ],
+	[ "1381", "Brielle", "Reed", "06254", "Greece" ],
+	[ "1382", "Claire", "Stein", "50289", "Viet Nam" ],
+	[ "1383", "Fleur", "Cabrera", "30131", "Indonesia" ],
+	[ "1384", "Ella", "Ellison", "Q7Q 4R2", "Netherlands Antilles" ],
+	[ "1385", "Zachery", "Wolf", "A9Q 6A8", "Jamaica" ],
+	[ "1386", "Emerson", "Brewer", "Y4R 9M9", "Bosnia and Herzegovina" ],
+	[ "1387", "Sarah", "Brooks", "27281", "Pitcairn" ],
+	[ "1388", "Kylan", "Garrison", "S8E 7L8", "Djibouti" ],
+	[ "1389", "Guinevere", "Mills", "75612", "Comoros" ],
+	[ "1390", "Claudia", "Stevenson", "73390", "Colombia" ],
+	[ "1391", "Valentine", "Burton", "Z9P 7R8", "Nauru" ],
+	[ "1392", "Raymond", "Mclean", "L8W 2K5", "Brunei Darussalam" ],
+	[ "1393", "Juliet", "Combs", "88712", "Samoa" ],
+	[ "1394", "Lawrence", "Williamson", "32528", "Netherlands Antilles" ],
+	[ "1395", "Inga", "Rivers", "12850", "Kuwait" ],
+	[ "1396", "Mira", "Zimmerman", "D1I 1W2", "Ireland" ],
+	[ "1397", "Hilda", "Stafford", "11054", "Cuba" ],
+	[ "1398", "Tanek", "Kim", "88590", "Cayman Islands" ],
+	[ "1399", "Bryar", "Mcintyre", "H6F 4S5", "Russian Federation" ],
+	[ "1400", "Sean", "Reed", "P2V 8J9", "Malta" ],
+	[ "1401", "Serena", "Henderson", "Z5C 8A0", "Madagascar" ],
+	[ "1402", "Hedley", "Parks", "L8S 6F4", "Angola" ],
+	[ "1403", "Alice", "Quinn", "06084", "Senegal" ],
+	[ "1404", "Linda", "Burgess", "H1E 7C0", "Turkmenistan" ],
+	[ "1405", "Hilda", "Burns", "Q9Q 4S2", "Kyrgyzstan" ],
+	[ "1406", "Griffith", "Watts", "D4J 7N2", "United States Minor Outlying Islands" ],
+	[ "1407", "Camden", "Glenn", "12939", "Russian Federation" ],
+	[ "1408", "Tallulah", "Rush", "G9V 3N2", "Turkey" ],
+	[ "1409", "Hasad", "Salinas", "H3F 7P9", "Cameroon" ],
+	[ "1410", "Violet", "Chavez", "T2H 9C6", "Virgin Islands, U.S." ],
+	[ "1411", "Declan", "Hurley", "32614", "Iran, Islamic Republic of" ],
+	[ "1412", "Robin", "Dean", "34266", "Northern Mariana Islands" ],
+	[ "1413", "Mariko", "Avila", "B8F 8Y5", "Burundi" ],
+	[ "1414", "Bradley", "Pugh", "11453", "Sri Lanka" ],
+	[ "1415", "Herman", "Hernandez", "F3C 6S2", "Chile" ],
+	[ "1416", "Montana", "Wynn", "B3M 8M2", "Aruba" ],
+	[ "1417", "Erin", "Melton", "17022", "France" ],
+	[ "1418", "Zachery", "Small", "L5O 7O1", "French Southern Territories" ],
+	[ "1419", "Melanie", "Rivera", "07922", "Korea" ],
+	[ "1420", "Blossom", "Chase", "75493", "Mauritius" ],
+	[ "1421", "Stephanie", "Taylor", "U8K 3I9", "Bahamas" ],
+	[ "1422", "Carter", "Fulton", "T4F 8D1", "Turks and Caicos Islands" ],
+	[ "1423", "Celeste", "Medina", "75629", "Lebanon" ],
+	[ "1424", "Katell", "Guzman", "15409", "United Arab Emirates" ],
+	[ "1425", "Howard", "Rowland", "29003", "Liberia" ],
+	[ "1426", "Reece", "Taylor", "W8G 7P7", "Samoa" ],
+	[ "1427", "Bradley", "Peterson", "52568", "Singapore" ],
+	[ "1428", "Ulric", "Hancock", "07437", "Bolivia" ],
+	[ "1429", "Francis", "Rogers", "15904", "Albania" ],
+	[ "1430", "Tatiana", "Mccray", "19604", "Belize" ],
+	[ "1431", "Merrill", "Rowe", "68539", "Ethiopia" ],
+	[ "1432", "Kiara", "Taylor", "F6D 8V7", "Burkina Faso" ],
+	[ "1433", "Buffy", "Shannon", "61880", "Kiribati" ],
+	[ "1434", "Amber", "Farmer", "K5F 1J7", "Barbados" ],
+	[ "1435", "Blake", "Wilkins", "O1L 2G2", "Virgin Islands, U.S." ],
+	[ "1436", "Aimee", "Fulton", "18626", "Chad" ],
+	[ "1437", "Kai", "Montgomery", "U6S 4W7", "Costa Rica" ],
+	[ "1438", "Latifah", "Bell", "74589", "Chad" ],
+	[ "1439", "Ronan", "Herring", "01710", "Palestinian Territory, Occupied" ],
+	[ "1440", "Macy", "Skinner", "78054", "Gibraltar" ],
+	[ "1441", "Ignatius", "Berg", "59756", "Liechtenstein" ],
+	[ "1442", "Prescott", "Pratt", "V6H 6P4", "Kuwait" ],
+	[ "1443", "Deborah", "Hebert", "11480", "Liberia" ],
+	[ "1444", "Quentin", "Jones", "G8W 8U6", "Slovenia" ],
+	[ "1445", "Duncan", "Parsons", "Z9F 5G8", "Cambodia" ],
+	[ "1446", "Sheila", "George", "18033", "Trinidad and Tobago" ],
+	[ "1447", "Alyssa", "Padilla", "V3O 6C3", "Qatar" ],
+	[ "1448", "Amelia", "Orr", "51943", "Canada" ],
+	[ "1449", "Bethany", "Thomas", "33451", "Liberia" ],
+	[ "1450", "Kellie", "Pitts", "G4S 1Q3", "Panama" ],
+	[ "1451", "Stone", "Stout", "L4C 9N0", "Latvia" ],
+	[ "1452", "Brynne", "Bailey", "B1M 4O0", "Ukraine" ],
+	[ "1453", "Aquila", "Hurley", "41312", "United Kingdom" ],
+	[ "1454", "David", "Bradshaw", "11152", "Denmark" ],
+	[ "1455", "Ryan", "Gates", "Z7O 1U0", "Austria" ],
+	[ "1456", "Kyle", "Weber", "39871", "Guyana" ],
+	[ "1457", "Declan", "Moore", "K3B 6L2", "Gibraltar" ],
+	[ "1458", "Theodore", "Hickman", "W8E 6K1", "Mauritius" ],
+	[ "1459", "Rebekah", "Merritt", "44042", "Mauritania" ],
+	[ "1460", "Meredith", "Powell", "98238", "Bhutan" ],
+	[ "1461", "Paki", "Simmons", "34122", "Norway" ],
+	[ "1462", "Carissa", "Ballard", "20095", "Antarctica" ],
+	[ "1463", "James", "Wilson", "96376", "Venezuela" ],
+	[ "1464", "Pamela", "Gamble", "U7F 7B6", "Turkmenistan" ],
+	[ "1465", "Rogan", "Davenport", "E6S 4R7", "French Polynesia" ],
+	[ "1466", "Daphne", "Pearson", "G2H 9M0", "American Samoa" ],
+	[ "1467", "Maxwell", "Nash", "87205", "Guadeloupe" ],
+	[ "1468", "Hayes", "Salazar", "55712", "American Samoa" ],
+	[ "1469", "Justin", "Conner", "03924", "United Kingdom" ],
+	[ "1470", "Blythe", "Joyner", "T6H 3M0", "Montserrat" ],
+	[ "1471", "Herrod", "Spears", "19474", "Philippines" ],
+	[ "1472", "Yvette", "Joyce", "R7Y 7B8", "Botswana" ],
+	[ "1473", "Chloe", "Reid", "K4Y 1R2", "Philippines" ],
+	[ "1474", "MacKensie", "Branch", "J5E 3X8", "Saint Kitts and Nevis" ],
+	[ "1475", "Nasim", "Buchanan", "M4E 4D2", "Portugal" ],
+	[ "1476", "Aileen", "Rasmussen", "H2V 3F4", "Dominica" ],
+	[ "1477", "Nicole", "Mullins", "U6Q 9X5", "New Caledonia" ],
+	[ "1478", "David", "Luna", "11935", "Svalbard and Jan Mayen" ],
+	[ "1479", "Germaine", "Massey", "G3N 4C7", "Colombia" ],
+	[ "1480", "Matthew", "Knowles", "V4D 4Z0", "Turkey" ],
+	[ "1481", "Timon", "Rowe", "14024", "Morocco" ],
+	[ "1482", "Gail", "Young", "68293", "Bhutan" ],
+	[ "1483", "Mariam", "Mejia", "O3P 4Q7", "Singapore" ],
+	[ "1484", "Carla", "Norris", "D7A 3F1", "Liberia" ],
+	[ "1485", "Ainsley", "Donaldson", "H4Z 1Q8", "Tanzania, United Republic of" ],
+	[ "1486", "Avye", "Raymond", "44808", "Namibia" ],
+	[ "1487", "Amanda", "Sargent", "O7F 3S4", "Afghanistan" ],
+	[ "1488", "Tiger", "Chambers", "I3K 7H4", "United States" ],
+	[ "1489", "Dylan", "Ford", "04043", "Solomon Islands" ],
+	[ "1490", "Kaitlin", "Franklin", "99451", "Namibia" ],
+	[ "1491", "Hayes", "Craft", "D6H 4Y6", "Christmas Island" ],
+	[ "1492", "Nolan", "Sullivan", "31246", "United States Minor Outlying Islands" ],
+	[ "1493", "Jennifer", "Romero", "E7I 1R7", "Latvia" ],
+	[ "1494", "Deanna", "Wall", "36109", "Nepal" ],
+	[ "1495", "Dara", "Valenzuela", "18359", "Martinique" ],
+	[ "1496", "Iris", "Blanchard", "84392", "Turks and Caicos Islands" ],
+	[ "1497", "Rhea", "Burgess", "T7Y 7C5", "Liberia" ],
+	[ "1498", "Karina", "Small", "B2F 2X5", "Bermuda" ],
+	[ "1499", "Victor", "Case", "49492", "Vanuatu" ],
+	[ "1500", "Rose", "Terry", "B4G 8I0", "Timor-leste" ],
+	[ "1501", "Wyatt", "Berg", "K3B 5N2", "Vanuatu" ],
+	[ "1502", "Zephania", "Herrera", "E6R 2A5", "Romania" ],
+	[ "1503", "Felix", "Johns", "X8U 2P1", "Angola" ],
+	[ "1504", "Melyssa", "George", "M4J 5X8", "Uzbekistan" ],
+	[ "1505", "Robert", "Spears", "61322", "Papua New Guinea" ],
+	[ "1506", "Myra", "Wood", "50638", "Afghanistan" ],
+	[ "1507", "Sean", "Kerr", "40094", "Guadeloupe" ],
+	[ "1508", "Wesley", "Mcclain", "H7F 1H3", "Mongolia" ],
+	[ "1509", "Ishmael", "Hoover", "42503", "Czech Republic" ],
+	[ "1510", "Ocean", "Parker", "L3Z 8G0", "Guyana" ],
+	[ "1511", "Berk", "Clay", "B6Q 7V7", "Botswana" ],
+	[ "1512", "Daquan", "Harrison", "78004", "Niger" ],
+	[ "1513", "Ramona", "Burris", "66986", "Palau" ],
+	[ "1514", "Jaden", "Miranda", "80086", "Madagascar" ],
+	[ "1515", "Solomon", "Kirk", "R7M 3M3", "Slovenia" ],
+	[ "1516", "Tanek", "Rosales", "X5B 5D0", "Tonga" ],
+	[ "1517", "Jack", "Cooke", "46356", "French Southern Territories" ],
+	[ "1518", "Naomi", "Sykes", "76541", "Marshall Islands" ],
+	[ "1519", "Moana", "Vinson", "K4R 3U7", "Saint Pierre and Miquelon" ],
+	[ "1520", "Kaye", "Sweet", "S6S 2G0", "Dominican Republic" ],
+	[ "1521", "Bruno", "Beard", "20686", "Israel" ],
+	[ "1522", "Helen", "Richards", "66393", "Argentina" ],
+	[ "1523", "Gisela", "Owens", "S8Q 4L3", "Haiti" ],
+	[ "1524", "Ivy", "Garrett", "P6G 8S8", "United Arab Emirates" ],
+	[ "1525", "Malik", "Osborne", "78332", "Tajikistan" ],
+	[ "1526", "Whoopi", "Franco", "T3T 5Y1", "Serbia and Montenegro" ],
+	[ "1527", "Basil", "Baker", "61233", "Cuba" ],
+	[ "1528", "Linda", "King", "31410", "Falkland Islands (Malvinas)" ],
+	[ "1529", "Allegra", "Hobbs", "F2C 9M8", "Andorra" ],
+	[ "1530", "Kirsten", "Elliott", "T8C 4X3", "Haiti" ],
+	[ "1531", "Joseph", "Ortiz", "40165", "Falkland Islands (Malvinas)" ],
+	[ "1532", "Pearl", "Mccormick", "93914", "Falkland Islands (Malvinas)" ],
+	[ "1533", "Fritz", "Austin", "A3S 7C8", "Canada" ],
+	[ "1534", "Lunea", "Hickman", "25676", "Cameroon" ],
+	[ "1535", "Inga", "Cortez", "14707", "Comoros" ],
+	[ "1536", "Claudia", "Long", "74877", "Tokelau" ],
+	[ "1537", "Judah", "Williamson", "S9N 6F0", "Paraguay" ],
+	[ "1538", "Eve", "Beasley", "K8Z 5H7", "Honduras" ],
+	[ "1539", "Tad", "Lang", "29577", "Equatorial Guinea" ],
+	[ "1540", "Jack", "Lawson", "46631", "Costa Rica" ],
+	[ "1541", "Vaughan", "Barron", "N9L 9T4", "Chile" ],
+	[ "1542", "Solomon", "Bowman", "05734", "Cocos (Keeling) Islands" ],
+	[ "1543", "Nash", "Giles", "64600", "Denmark" ],
+	[ "1544", "Xander", "Eaton", "84933", "Bosnia and Herzegovina" ],
+	[ "1545", "Hanna", "Hull", "61062", "Namibia" ],
+	[ "1546", "Lee", "Gaines", "V7H 6H7", "Suriname" ],
+	[ "1547", "Brian", "Sutton", "60055", "Timor-leste" ],
+	[ "1548", "Azalia", "Henson", "D9J 8E4", "Antarctica" ],
+	[ "1549", "Russell", "Avila", "01774", "China" ],
+	[ "1550", "Marsden", "Leblanc", "30201", "New Caledonia" ],
+	[ "1551", "Tad", "Nichols", "K5V 6N1", "Monaco" ],
+	[ "1552", "Eliana", "Savage", "06807", "Central African Republic" ],
+	[ "1553", "Madeline", "Conway", "83513", "Latvia" ],
+	[ "1554", "Kai", "Caldwell", "S1K 2Q2", "Indonesia" ],
+	[ "1555", "Wynne", "Goodman", "U9Y 8P7", "Gibraltar" ],
+	[ "1556", "Nora", "Dudley", "52688", "Netherlands Antilles" ],
+	[ "1557", "Anastasia", "Gates", "T7T 8C8", "Morocco" ],
+	[ "1558", "Lester", "Good", "76376", "Heard Island and Mcdonald Islands" ],
+	[ "1559", "Craig", "Skinner", "S7B 3Z6", "Madagascar" ],
+	[ "1560", "Kibo", "Craft", "M5C 2I9", "Hong Kong" ],
+	[ "1561", "Carlos", "Buck", "89343", "Northern Mariana Islands" ],
+	[ "1562", "Ivor", "Mooney", "M9D 2Y3", "Korea" ],
+	[ "1563", "Armand", "Shields", "E8O 7X6", "Uzbekistan" ],
+	[ "1564", "Grace", "Weeks", "G5B 3W5", "Nicaragua" ],
+	[ "1565", "Reagan", "Mann", "J2E 5I1", "San Marino" ],
+	[ "1566", "Quin", "Nolan", "Q9E 2Q0", "Turkey" ],
+	[ "1567", "Kareem", "Jefferson", "91393", "Zambia" ],
+	[ "1568", "Erica", "Mccoy", "C3P 3L0", "Viet Nam" ],
+	[ "1569", "Sybill", "Larsen", "J3U 3L9", "Sierra Leone" ],
+	[ "1570", "Angela", "Weber", "46559", "Croatia" ],
+	[ "1571", "Mannix", "Noel", "94029", "Belgium" ],
+	[ "1572", "Martina", "Travis", "20063", "Solomon Islands" ],
+	[ "1573", "Dominic", "Whitehead", "83547", "Gibraltar" ],
+	[ "1574", "Vladimir", "Hunter", "L3I 4G7", "Reunion" ],
+	[ "1575", "Farrah", "Alexander", "18538", "Croatia" ],
+	[ "1576", "Hop", "Burns", "X1C 7J6", "Saint Lucia" ],
+	[ "1577", "Zelda", "Trevino", "L8P 7E9", "Guinea" ],
+	[ "1578", "Nehru", "Decker", "Q1P 4Q9", "Western Sahara" ],
+	[ "1579", "Shay", "Goff", "68576", "Sweden" ],
+	[ "1580", "Dominic", "Martin", "C1M 9P2", "Denmark" ],
+	[ "1581", "Heather", "Doyle", "Y7R 9H1", "Iran, Islamic Republic of" ],
+	[ "1582", "Honorato", "Rojas", "29414", "India" ],
+	[ "1583", "Florence", "England", "64669", "China" ],
+	[ "1584", "Zane", "Reyes", "84771", "Heard Island and Mcdonald Islands" ],
+	[ "1585", "Scarlett", "Poole", "36928", "Algeria" ],
+	[ "1586", "Dieter", "Brennan", "Y8V 5L2", "Colombia" ],
+	[ "1587", "Jamal", "Whitney", "33428", "Turkey" ],
+	[ "1588", "Evan", "Guy", "72119", "Slovakia" ],
+	[ "1589", "Candace", "Bauer", "C8L 1P2", "Macedonia" ],
+	[ "1590", "Naomi", "Pennington", "17350", "Tonga" ],
+	[ "1591", "Celeste", "Banks", "R8R 4C8", "Anguilla" ],
+	[ "1592", "Basil", "Elliott", "80065", "Singapore" ],
+	[ "1593", "Darryl", "Wise", "33140", "Brunei Darussalam" ],
+	[ "1594", "Marny", "Walls", "S1K 4V1", "Western Sahara" ],
+	[ "1595", "Anastasia", "Meyer", "Z1F 8C2", "El Salvador" ],
+	[ "1596", "Brynne", "Rivera", "48070", "Mexico" ],
+	[ "1597", "Macey", "Johnston", "X9E 9J5", "Guadeloupe" ],
+	[ "1598", "Bethany", "Marks", "46648", "Bhutan" ],
+	[ "1599", "Kiayada", "Glass", "13661", "Christmas Island" ],
+	[ "1600", "Veda", "Bowers", "D7S 1S9", "Korea" ],
+	[ "1601", "Dante", "Kirk", "58404", "Guinea" ],
+	[ "1602", "Judah", "Sloan", "04528", "Andorra" ],
+	[ "1603", "Serena", "Giles", "12139", "Papua New Guinea" ],
+	[ "1604", "Chase", "Hull", "27203", "Guinea-bissau" ],
+	[ "1605", "Wallace", "Poole", "58919", "Christmas Island" ],
+	[ "1606", "Deacon", "Lynn", "Z1H 9G4", "Kenya" ],
+	[ "1607", "Igor", "Duncan", "X2V 2X1", "Christmas Island" ],
+	[ "1608", "Walker", "Hopkins", "67256", "Bosnia and Herzegovina" ],
+	[ "1609", "Serena", "Burnett", "Q4C 7Q0", "Canada" ],
+	[ "1610", "Hedwig", "Burgess", "O2J 7A5", "Rwanda" ],
+	[ "1611", "Amal", "Richmond", "34506", "Australia" ],
+	[ "1612", "Rhona", "Gomez", "W2C 3I7", "Oman" ],
+	[ "1613", "Kai", "Acosta", "N2O 7M2", "Uganda" ],
+	[ "1614", "Henry", "Roman", "78113", "Guadeloupe" ],
+	[ "1615", "Chester", "Good", "88809", "Norway" ],
+	[ "1616", "Cleo", "Tanner", "73924", "Uganda" ],
+	[ "1617", "Emi", "Lloyd", "59746", "South Africa" ],
+	[ "1618", "Christopher", "Lopez", "76264", "Libyan Arab Jamahiriya" ],
+	[ "1619", "Yvonne", "Mathews", "68655", "Saint Lucia" ],
+	[ "1620", "Kimberly", "Mullen", "D6J 9G3", "Virgin Islands, British" ],
+	[ "1621", "Hanna", "Slater", "F8F 9K5", "Montserrat" ],
+	[ "1622", "Laura", "Dennis", "J6U 2G3", "Viet Nam" ],
+	[ "1623", "Rogan", "Richards", "R1D 1B3", "Argentina" ],
+	[ "1624", "Mira", "Rodriquez", "C3D 3E5", "Guinea" ],
+	[ "1625", "Ezra", "Myers", "Y7Z 7X2", "Kuwait" ],
+	[ "1626", "Jocelyn", "Martin", "E2F 3F2", "Algeria" ],
+	[ "1627", "Denton", "Lee", "80903", "Congo" ],
+	[ "1628", "Grace", "Leach", "86865", "Spain" ],
+	[ "1629", "Clark", "Morrow", "12834", "Northern Mariana Islands" ],
+	[ "1630", "Armando", "Calhoun", "I3I 1D4", "Spain" ],
+	[ "1631", "George", "Decker", "R1B 6Q9", "Mali" ],
+	[ "1632", "Jerome", "Salazar", "03831", "Faroe Islands" ],
+	[ "1633", "Logan", "Santiago", "46269", "Hungary" ],
+	[ "1634", "Gavin", "Tate", "Y3L 6G5", "Italy" ],
+	[ "1635", "Chloe", "Jennings", "D9B 2H9", "Cambodia" ],
+	[ "1636", "Rashad", "Knox", "T1V 4G5", "Germany" ],
+	[ "1637", "Jin", "Roberts", "82928", "Azerbaijan" ],
+	[ "1638", "Amity", "Guerrero", "F4G 2L4", "Viet Nam" ],
+	[ "1639", "Carter", "Roberson", "53651", "Niue" ],
+	[ "1640", "Slade", "Carson", "H9E 1G1", "Guyana" ],
+	[ "1641", "Buckminster", "Christensen", "F5J 6T5", "Algeria" ],
+	[ "1642", "Fallon", "Peters", "D9Y 5Q4", "Ethiopia" ],
+	[ "1643", "Amy", "Barry", "D6F 3R4", "New Caledonia" ],
+	[ "1644", "Calvin", "Buck", "18354", "Macedonia" ],
+	[ "1645", "Kaye", "Haynes", "D9K 1X8", "Italy" ],
+	[ "1646", "Shea", "Hammond", "R7P 3X8", "Guam" ],
+	[ "1647", "Kiara", "Franks", "01185", "Mozambique" ],
+	[ "1648", "Armando", "Oneil", "88972", "Bahrain" ],
+	[ "1649", "Lesley", "Allen", "05171", "Belgium" ],
+	[ "1650", "Ignatius", "Barrett", "94084", "Georgia" ],
+	[ "1651", "Graham", "Maldonado", "76354", "Dominican Republic" ],
+	[ "1652", "Briar", "Roman", "P9M 3A9", "Cayman Islands" ],
+	[ "1653", "Germane", "Colon", "U3X 7S9", "Brazil" ],
+	[ "1654", "Alvin", "Mcpherson", "58411", "Guinea" ],
+	[ "1655", "Belle", "Sandoval", "87172", "Cyprus" ],
+	[ "1656", "Eric", "Caldwell", "63246", "Guinea" ],
+	[ "1657", "Nadine", "Dale", "T6E 4B0", "Denmark" ],
+	[ "1658", "Dora", "Jimenez", "85463", "Nauru" ],
+	[ "1659", "Mohammad", "Strickland", "H8B 9G2", "Japan" ],
+	[ "1660", "Reagan", "Preston", "G5E 8S5", "Honduras" ],
+	[ "1661", "Tamekah", "Daniel", "Z3X 6Q6", "Belarus" ],
+	[ "1662", "Halee", "Mills", "23332", "Mayotte" ],
+	[ "1663", "Courtney", "England", "09751", "Saint Kitts and Nevis" ],
+	[ "1664", "Dai", "Arnold", "A2N 9J4", "Argentina" ],
+	[ "1665", "Priscilla", "Reyes", "G2B 5M4", "Azerbaijan" ],
+	[ "1666", "Brenda", "Stanley", "I6O 3I1", "Hungary" ],
+	[ "1667", "Kasper", "Washington", "H4K 8K7", "Serbia and Montenegro" ],
+	[ "1668", "Suki", "Hendricks", "L1K 5O9", "Norway" ],
+	[ "1669", "Rebekah", "Mccormick", "89543", "Slovenia" ],
+	[ "1670", "Oprah", "Rodriquez", "90034", "Costa Rica" ],
+	[ "1671", "Ivory", "Matthews", "T9J 2A7", "Panama" ],
+	[ "1672", "Ferris", "Garner", "93583", "Niue" ],
+	[ "1673", "Melvin", "White", "X5U 9N8", "Nigeria" ],
+	[ "1674", "Henry", "Swanson", "E7V 2C9", "Northern Mariana Islands" ],
+	[ "1675", "Hadassah", "Eaton", "52798", "Albania" ],
+	[ "1676", "Lisandra", "Sykes", "90838", "Namibia" ],
+	[ "1677", "Honorato", "Bradshaw", "W3D 1Z9", "United States" ],
+	[ "1678", "Aurelia", "Paul", "Z6E 6W9", "Malaysia" ],
+	[ "1679", "Arthur", "Mann", "74673", "Bhutan" ],
+	[ "1680", "Melissa", "Hernandez", "11742", "Dominican Republic" ],
+	[ "1681", "Bert", "Mosley", "N2K 5U5", "Kuwait" ],
+	[ "1682", "Sigourney", "Sharpe", "30204", "South Africa" ],
+	[ "1683", "Ifeoma", "Woods", "39850", "Haiti" ],
+	[ "1684", "Tyler", "Medina", "K6L 9V8", "Indonesia" ],
+	[ "1685", "Karleigh", "Griffin", "G8Z 6W2", "Canada" ],
+	[ "1686", "Brianna", "Collins", "11919", "New Caledonia" ],
+	[ "1687", "Allistair", "Hampton", "O1X 2N7", "Cocos (Keeling) Islands" ],
+	[ "1688", "Carla", "Manning", "76866", "Svalbard and Jan Mayen" ],
+	[ "1689", "Jakeem", "Brewer", "Y1T 1D7", "Comoros" ],
+	[ "1690", "Price", "Guerrero", "S7Z 8O1", "Christmas Island" ],
+	[ "1691", "Harlan", "Sandoval", "58527", "Czech Republic" ],
+	[ "1692", "Marcia", "Robinson", "64662", "Uganda" ],
+	[ "1693", "Sylvester", "Hewitt", "81468", "Honduras" ],
+	[ "1694", "Dawn", "Wood", "77743", "Malawi" ],
+	[ "1695", "Farrah", "Nielsen", "E4N 9A9", "Christmas Island" ],
+	[ "1696", "Tanisha", "Benjamin", "L2J 3G7", "Cape Verde" ],
+	[ "1697", "Cherokee", "Atkins", "L7D 2L5", "Moldova" ],
+	[ "1698", "Madaline", "Elliott", "H7K 8R4", "Barbados" ],
+	[ "1699", "Odysseus", "Roy", "65008", "Slovakia" ],
+	[ "1700", "Eaton", "Stein", "Z2V 7H0", "Moldova" ],
+	[ "1701", "Rachel", "Hurley", "L6L 2B2", "Antigua and Barbuda" ],
+	[ "1702", "Stacey", "Hardin", "O9U 1B7", "Montserrat" ],
+	[ "1703", "Grady", "Montgomery", "75852", "Guinea-bissau" ],
+	[ "1704", "Serena", "Douglas", "F5M 8Z6", "Mauritius" ],
+	[ "1705", "Ralph", "Duke", "H7X 3M9", "Tunisia" ],
+	[ "1706", "Charles", "Moody", "86445", "Pitcairn" ],
+	[ "1707", "Mariam", "Lara", "07952", "United Kingdom" ],
+	[ "1708", "Whitney", "Garza", "74001", "Norfolk Island" ],
+	[ "1709", "Beverly", "Thornton", "69847", "Canada" ],
+	[ "1710", "Helen", "Gentry", "Z8S 7U4", "Reunion" ],
+	[ "1711", "Janna", "Gould", "W6C 6E1", "Burundi" ],
+	[ "1712", "Jana", "Hooper", "A1R 9Y0", "Yemen" ],
+	[ "1713", "Zachary", "Nicholson", "49616", "Gabon" ],
+	[ "1714", "Julian", "Davis", "37608", "Anguilla" ],
+	[ "1715", "Gay", "Knox", "51952", "Croatia" ],
+	[ "1716", "Iola", "Moses", "16601", "French Polynesia" ],
+	[ "1717", "Allegra", "Holder", "C9R 8J3", "Dominican Republic" ],
+	[ "1718", "Cecilia", "Shannon", "62624", "Reunion" ],
+	[ "1719", "Cora", "Peterson", "I9V 5P5", "Chad" ],
+	[ "1720", "Stewart", "Mathews", "A5H 1E1", "Mexico" ],
+	[ "1721", "Kathleen", "Lynn", "82408", "Honduras" ],
+	[ "1722", "William", "Schneider", "25823", "Tajikistan" ],
+	[ "1723", "Alice", "Mcconnell", "50155", "Russian Federation" ],
+	[ "1724", "Timon", "Dillon", "93171", "Croatia" ],
+	[ "1725", "Tanek", "Ellison", "Y7Q 5B1", "Malawi" ],
+	[ "1726", "Tamekah", "Cummings", "03764", "Afghanistan" ],
+	[ "1727", "Charlotte", "Chaney", "U7Y 7B0", "Kyrgyzstan" ],
+	[ "1728", "Jason", "Conway", "37713", "Martinique" ],
+	[ "1729", "Graiden", "Combs", "40454", "Turkmenistan" ],
+	[ "1730", "Virginia", "Ortiz", "K9N 2Q4", "Malta" ],
+	[ "1731", "Thomas", "Cannon", "W1H 3T9", "Cuba" ],
+	[ "1732", "Galena", "Dominguez", "68072", "India" ],
+	[ "1733", "Vaughan", "Petty", "15200", "Lesotho" ],
+	[ "1734", "Buffy", "Saunders", "K1W 3B1", "Burkina Faso" ],
+	[ "1735", "Chava", "Hill", "93461", "Iran, Islamic Republic of" ],
+	[ "1736", "Sage", "Hampton", "R8Y 8J1", "Malta" ],
+	[ "1737", "Nathaniel", "Whitney", "89097", "Ukraine" ],
+	[ "1738", "Hector", "Hayden", "70774", "Netherlands" ],
+	[ "1739", "Mercedes", "Freeman", "80848", "Croatia" ],
+	[ "1740", "Vance", "Spencer", "25484", "Guyana" ],
+	[ "1741", "Josephine", "Stevens", "E4D 9D1", "Netherlands Antilles" ],
+	[ "1742", "Barbara", "Mcclure", "22602", "Cambodia" ],
+	[ "1743", "Sydney", "Holder", "X4G 1Z7", "British Indian Ocean Territory" ],
+	[ "1744", "Velma", "Evans", "83914", "New Zealand" ],
+	[ "1745", "Francis", "Lane", "12545", "Serbia and Montenegro" ],
+	[ "1746", "Garrison", "Brock", "19993", "Eritrea" ],
+	[ "1747", "Quentin", "Santiago", "07085", "Norfolk Island" ],
+	[ "1748", "Ivory", "Wilkerson", "79440", "Libyan Arab Jamahiriya" ],
+	[ "1749", "Karyn", "Buckner", "D1Y 7D8", "Cocos (Keeling) Islands" ],
+	[ "1750", "Mari", "Bright", "24721", "Pakistan" ],
+	[ "1751", "Dexter", "Garrison", "X3X 7G3", "Western Sahara" ],
+	[ "1752", "Venus", "Acevedo", "V2F 8C0", "Poland" ],
+	[ "1753", "Nayda", "Camacho", "F6H 6J5", "Northern Mariana Islands" ],
+	[ "1754", "Avye", "Hartman", "G6V 2H0", "Hong Kong" ],
+	[ "1755", "Kerry", "Baird", "M3Q 7B7", "Russian Federation" ],
+	[ "1756", "Uma", "Herman", "C9A 4P3", "Libyan Arab Jamahiriya" ],
+	[ "1757", "Amaya", "Roman", "97179", "Iceland" ],
+	[ "1758", "Bruce", "Joyce", "18344", "Denmark" ],
+	[ "1759", "Jarrod", "Alvarez", "59269", "Liberia" ],
+	[ "1760", "Olivia", "Reilly", "99058", "Malaysia" ],
+	[ "1761", "Benedict", "Hensley", "23105", "Uganda" ],
+	[ "1762", "Lavinia", "Hunter", "44729", "Maldives" ],
+	[ "1763", "Bradley", "Gomez", "65125", "Belize" ],
+	[ "1764", "Keely", "Burris", "18390", "Brunei Darussalam" ],
+	[ "1765", "Autumn", "England", "E5D 7A5", "Kyrgyzstan" ],
+	[ "1766", "Jane", "Blair", "S1W 4O0", "Bangladesh" ],
+	[ "1767", "Chancellor", "Barrett", "E9F 1I1", "Fiji" ],
+	[ "1768", "Whitney", "Morin", "G5T 4E7", "Aruba" ],
+	[ "1769", "Madeline", "Sparks", "W7L 7E0", "Belize" ],
+	[ "1770", "Dale", "Estes", "82712", "Guam" ],
+	[ "1771", "Hakeem", "Buck", "O6K 1I8", "Singapore" ],
+	[ "1772", "Alexandra", "Burns", "12697", "Portugal" ],
+	[ "1773", "Winifred", "Gill", "Z8B 8B8", "Uruguay" ],
+	[ "1774", "Gail", "Gomez", "S1V 3N8", "American Samoa" ],
+	[ "1775", "Moana", "Brady", "18835", "Wallis and Futuna" ],
+	[ "1776", "Martha", "Oliver", "81962", "Bolivia" ],
+	[ "1777", "Nayda", "Wooten", "00071", "Palau" ],
+	[ "1778", "Bryar", "Collier", "50631", "Mexico" ],
+	[ "1779", "Penelope", "Bradshaw", "A6A 9M2", "Lebanon" ],
+	[ "1780", "Wyatt", "Lara", "75486", "Slovenia" ],
+	[ "1781", "Wang", "Odonnell", "N5X 1N5", "Bahamas" ],
+	[ "1782", "Chiquita", "Harrell", "21691", "Guadeloupe" ],
+	[ "1783", "Byron", "Blankenship", "M8A 3L4", "Syrian Arab Republic" ],
+	[ "1784", "Holmes", "Stokes", "81039", "Mauritania" ],
+	[ "1785", "Naomi", "Phillips", "56287", "Switzerland" ],
+	[ "1786", "Quyn", "Johnson", "D2T 6B7", "Czech Republic" ],
+	[ "1787", "Gillian", "Sanders", "50542", "Colombia" ],
+	[ "1788", "Hope", "Benjamin", "67423", "Bolivia" ],
+	[ "1789", "Bryar", "Dean", "U9V 9E5", "Guatemala" ],
+	[ "1790", "Karyn", "Swanson", "S6H 3R8", "Israel" ],
+	[ "1791", "Amena", "David", "02286", "French Polynesia" ],
+	[ "1792", "Ira", "Joyner", "37335", "Cayman Islands" ],
+	[ "1793", "Tanek", "Oneil", "75041", "Slovenia" ],
+	[ "1794", "Dolan", "Miles", "K7Q 9U8", "Maldives" ],
+	[ "1795", "Wang", "Keith", "88116", "Congo" ],
+	[ "1796", "Wylie", "Bryant", "93369", "Andorra" ],
+	[ "1797", "Heather", "Bryant", "78015", "French Polynesia" ],
+	[ "1798", "Regina", "Wagner", "29087", "Virgin Islands, British" ],
+	[ "1799", "Nathan", "Bush", "J5S 9L0", "Viet Nam" ],
+	[ "1800", "Charity", "Dawson", "29508", "Greece" ],
+	[ "1801", "Ulric", "Guzman", "I6R 6P6", "Micronesia" ],
+	[ "1802", "Keefe", "Scott", "J1R 8T6", "Uzbekistan" ],
+	[ "1803", "Florence", "Price", "U7P 8F6", "Taiwan, Province of China" ],
+	[ "1804", "Griffith", "England", "92557", "China" ],
+	[ "1805", "Kay", "Nielsen", "85991", "Suriname" ],
+	[ "1806", "Tamekah", "Blackburn", "47324", "Panama" ],
+	[ "1807", "Indira", "Crosby", "64463", "Trinidad and Tobago" ],
+	[ "1808", "Pamela", "Vasquez", "K2Q 9A1", "Ghana" ],
+	[ "1809", "Patricia", "Haley", "51509", "Jordan" ],
+	[ "1810", "Nevada", "Prince", "41315", "Tokelau" ],
+	[ "1811", "Martin", "Wilkerson", "Y8X 4Y5", "Palestinian Territory, Occupied" ],
+	[ "1812", "Deirdre", "Castaneda", "X1S 5E2", "Bahrain" ],
+	[ "1813", "Cara", "Flynn", "68372", "Azerbaijan" ],
+	[ "1814", "Sylvia", "Alexander", "E5F 9M5", "Svalbard and Jan Mayen" ],
+	[ "1815", "Macon", "Suarez", "69866", "Tunisia" ],
+	[ "1816", "Hammett", "Haney", "09768", "Bangladesh" ],
+	[ "1817", "Geoffrey", "Simmons", "61986", "Burundi" ],
+	[ "1818", "Danielle", "Kelly", "71568", "Mali" ],
+	[ "1819", "Wing", "Brown", "U4D 6L1", "Uzbekistan" ],
+	[ "1820", "Len", "Barber", "40311", "Suriname" ],
+	[ "1821", "Richard", "Wilson", "W9E 6D7", "Finland" ],
+	[ "1822", "Keaton", "Hayes", "55696", "Slovakia" ],
+	[ "1823", "Dora", "Chaney", "57297", "United States Minor Outlying Islands" ],
+	[ "1824", "Alexandra", "Pruitt", "17207", "Turkmenistan" ],
+	[ "1825", "Deanna", "Gomez", "C9M 9K0", "Paraguay" ],
+	[ "1826", "Laura", "Downs", "74422", "Antigua and Barbuda" ],
+	[ "1827", "Jolene", "Lucas", "K9E 6U4", "Tokelau" ],
+	[ "1828", "Lucy", "Marquez", "L1N 4O4", "Argentina" ],
+	[ "1829", "Abbot", "Bishop", "G8W 7I1", "Guinea-bissau" ],
+	[ "1830", "Aaron", "Bowman", "K8A 5K7", "Greece" ],
+	[ "1831", "Candace", "Lee", "58901", "Turks and Caicos Islands" ],
+	[ "1832", "Larissa", "Allen", "O1I 4X0", "Belgium" ],
+	[ "1833", "Linda", "Malone", "31211", "United Arab Emirates" ],
+	[ "1834", "Grace", "Daugherty", "62610", "Cyprus" ],
+	[ "1835", "Kyra", "Berry", "T2F 3E5", "Netherlands Antilles" ],
+	[ "1836", "Hadassah", "Willis", "C7H 5V4", "El Salvador" ],
+	[ "1837", "Kyle", "Fitzgerald", "X1V 2R9", "Croatia" ],
+	[ "1838", "Graiden", "Atkinson", "L9Q 6H8", "Thailand" ],
+	[ "1839", "Raymond", "Fletcher", "59574", "Argentina" ],
+	[ "1840", "Keaton", "Barnett", "O2G 6B4", "Papua New Guinea" ],
+	[ "1841", "Farrah", "Kramer", "21928", "Netherlands Antilles" ],
+	[ "1842", "Christian", "Sellers", "55504", "Timor-leste" ],
+	[ "1843", "Keith", "Cohen", "D9T 7D0", "Italy" ],
+	[ "1844", "Karleigh", "Bruce", "F2A 5H9", "Montserrat" ],
+	[ "1845", "Julie", "Avery", "T4T 3Y7", "Nepal" ],
+	[ "1846", "Hollee", "Deleon", "47524", "Oman" ],
+	[ "1847", "Charity", "Booker", "61071", "Cocos (Keeling) Islands" ],
+	[ "1848", "Flynn", "Bond", "E8L 9D2", "Afghanistan" ],
+	[ "1849", "Sybill", "Roth", "16453", "Saudi Arabia" ],
+	[ "1850", "Alyssa", "Juarez", "04466", "Singapore" ],
+	[ "1851", "Jennifer", "Odonnell", "59277", "Tuvalu" ],
+	[ "1852", "Carissa", "Byrd", "80861", "Palau" ],
+	[ "1853", "Coby", "Barrett", "04665", "Congo" ],
+	[ "1854", "Bertha", "Paul", "46442", "Andorra" ],
+	[ "1855", "Hayden", "Dennis", "K7E 3O1", "France" ],
+	[ "1856", "Kadeem", "Berry", "39544", "Vanuatu" ],
+	[ "1857", "Clayton", "Burns", "C2A 6W5", "Andorra" ],
+	[ "1858", "Breanna", "Hardy", "12284", "Norway" ],
+	[ "1859", "Yael", "Hester", "69399", "Hong Kong" ],
+	[ "1860", "Hunter", "Harding", "M4O 6N5", "Bosnia and Herzegovina" ],
+	[ "1861", "Breanna", "Sutton", "N2C 6K3", "Singapore" ],
+	[ "1862", "Bo", "Huffman", "54558", "Taiwan, Province of China" ],
+	[ "1863", "Zena", "Potts", "80326", "Czech Republic" ],
+	[ "1864", "Lucian", "Sykes", "D4M 6M5", "Trinidad and Tobago" ],
+	[ "1865", "Gabriel", "Shepherd", "77631", "Bahrain" ],
+	[ "1866", "Vivian", "Gould", "29510", "Norway" ],
+	[ "1867", "Ina", "Sherman", "08122", "Portugal" ],
+	[ "1868", "Constance", "Parsons", "D6E 9J8", "Armenia" ],
+	[ "1869", "Tallulah", "Woodard", "51380", "Bahamas" ],
+	[ "1870", "Amos", "Morris", "37846", "Switzerland" ],
+	[ "1871", "Charles", "Kinney", "45961", "Marshall Islands" ],
+	[ "1872", "Colby", "Camacho", "02978", "Niger" ],
+	[ "1873", "Ora", "Hays", "B6F 9Z9", "Martinique" ],
+	[ "1874", "Ariel", "Cannon", "04559", "Burundi" ],
+	[ "1875", "Beatrice", "Hull", "66569", "Saint Pierre and Miquelon" ],
+	[ "1876", "Stacey", "Morrow", "53760", "Zimbabwe" ],
+	[ "1877", "Naida", "Thomas", "43434", "Virgin Islands, U.S." ],
+	[ "1878", "Holly", "Holcomb", "31997", "Kazakhstan" ],
+	[ "1879", "Lee", "Davenport", "99355", "Central African Republic" ],
+	[ "1880", "Gary", "Higgins", "18703", "Norway" ],
+	[ "1881", "Kay", "Wolf", "25509", "Switzerland" ],
+	[ "1882", "Destiny", "Patel", "Q3X 2F8", "Ghana" ],
+	[ "1883", "Clayton", "Middleton", "Y5C 1I8", "Antigua and Barbuda" ],
+	[ "1884", "May", "Rivers", "26782", "Uzbekistan" ],
+	[ "1885", "Hadassah", "Caldwell", "64493", "Chile" ],
+	[ "1886", "Penelope", "Gentry", "V5N 7A6", "Kyrgyzstan" ],
+	[ "1887", "James", "Boyle", "95421", "Indonesia" ],
+	[ "1888", "Yuli", "Cardenas", "W4U 5U1", "Solomon Islands" ],
+	[ "1889", "George", "Simpson", "30385", "Brazil" ],
+	[ "1890", "Thaddeus", "Ferrell", "E6Z 2D4", "Norfolk Island" ],
+	[ "1891", "Piper", "Morrow", "S6I 1L8", "Estonia" ],
+	[ "1892", "Xaviera", "Heath", "L8I 5G1", "Afghanistan" ],
+	[ "1893", "Odette", "Patton", "L2S 4I8", "Bosnia and Herzegovina" ],
+	[ "1894", "Stewart", "Phillips", "E8E 5W6", "El Salvador" ],
+	[ "1895", "Kellie", "Cooper", "77401", "Cape Verde" ],
+	[ "1896", "Kathleen", "Salinas", "F3O 4Z9", "Sierra Leone" ],
+	[ "1897", "Fallon", "Bennett", "X3P 7L1", "Macedonia" ],
+	[ "1898", "Jesse", "Guerrero", "I2B 1Q0", "Finland" ],
+	[ "1899", "Zenaida", "Mcguire", "M5R 1X6", "Kenya" ],
+	[ "1900", "Carolyn", "Richards", "03060", "Paraguay" ],
+	[ "1901", "Ulla", "Bruce", "20940", "Cambodia" ],
+	[ "1902", "Adrian", "Shaffer", "M5O 9Y2", "Thailand" ],
+	[ "1903", "Callum", "Russo", "L3U 5S8", "Holy See (Vatican City State)" ],
+	[ "1904", "Echo", "Mathews", "49158", "Spain" ],
+	[ "1905", "Driscoll", "Buckner", "70115", "Solomon Islands" ],
+	[ "1906", "Nayda", "Phillips", "Y7D 4A9", "Singapore" ],
+	[ "1907", "Piper", "Livingston", "51701", "Anguilla" ],
+	[ "1908", "Zoe", "Hoover", "C8D 8W2", "Iraq" ],
+	[ "1909", "Veronica", "Montoya", "G6B 9S4", "Egypt" ],
+	[ "1910", "Kato", "Richmond", "41268", "Saint Helena" ],
+	[ "1911", "Kevyn", "Lancaster", "71863", "Montserrat" ],
+	[ "1912", "Rowan", "Carr", "90825", "Ethiopia" ],
+	[ "1913", "Alec", "Wells", "C9P 8I7", "Netherlands" ],
+	[ "1914", "Graham", "Shields", "S4B 5O9", "Norfolk Island" ],
+	[ "1915", "Pearl", "Austin", "43642", "Bermuda" ],
+	[ "1916", "Dana", "Pugh", "H4C 2A9", "Tuvalu" ],
+	[ "1917", "Lucy", "Ellis", "31272", "Cameroon" ],
+	[ "1918", "Logan", "Wright", "18651", "Honduras" ],
+	[ "1919", "Chantale", "Velasquez", "A5D 3X2", "Burundi" ],
+	[ "1920", "Linda", "Ingram", "R1P 1G8", "Myanmar" ],
+	[ "1921", "Ginger", "Howell", "Q5D 4E6", "Pakistan" ],
+	[ "1922", "Unity", "Lester", "P7M 7A4", "Gibraltar" ],
+	[ "1923", "Brett", "Rutledge", "Q1E 2B4", "Thailand" ],
+	[ "1924", "Stewart", "Morrow", "84299", "Mali" ],
+	[ "1925", "Declan", "Aguilar", "35400", "Kenya" ],
+	[ "1926", "Shad", "Simpson", "N8E 2U3", "Saint Pierre and Miquelon" ],
+	[ "1927", "Alma", "Benton", "Q6C 5D2", "Pakistan" ],
+	[ "1928", "Herman", "Bailey", "P5K 2X4", "Ireland" ],
+	[ "1929", "Keegan", "Mendez", "19421", "Lesotho" ],
+	[ "1930", "Erasmus", "Foreman", "J9T 1A2", "Panama" ],
+	[ "1931", "Tarik", "Meyers", "Z8V 5F9", "Cape Verde" ],
+	[ "1932", "Donovan", "Knox", "B8N 1G7", "Iceland" ],
+	[ "1933", "Chloe", "Mccray", "67537", "United Arab Emirates" ],
+	[ "1934", "Marvin", "Edwards", "21809", "Ukraine" ],
+	[ "1935", "Freya", "Watkins", "80099", "Central African Republic" ],
+	[ "1936", "Jerry", "Morgan", "C7U 7H5", "Guinea" ],
+	[ "1937", "Yardley", "Marsh", "23654", "India" ],
+	[ "1938", "Ava", "Mueller", "83374", "Greece" ],
+	[ "1939", "Silas", "Joseph", "P5M 7F2", "Sweden" ],
+	[ "1940", "Winifred", "Solis", "12335", "Viet Nam" ],
+	[ "1941", "Virginia", "Cantu", "K4C 3S5", "Yemen" ],
+	[ "1942", "Sade", "Cole", "40295", "Spain" ],
+	[ "1943", "Ethan", "Hodges", "R7W 8X2", "Congo" ],
+	[ "1944", "Barbara", "Day", "K6L 7S6", "Nigeria" ],
+	[ "1945", "Conan", "Simon", "22124", "Guyana" ],
+	[ "1946", "Lars", "Puckett", "R6Y 4N7", "Trinidad and Tobago" ],
+	[ "1947", "Quin", "Ewing", "99053", "American Samoa" ],
+	[ "1948", "Ali", "Haynes", "N6Z 7X0", "China" ],
+	[ "1949", "Sara", "Wagner", "74544", "Chad" ],
+	[ "1950", "Griffith", "Fuentes", "R1W 6Z9", "Slovenia" ],
+	[ "1951", "Sharon", "Crane", "I2Z 9D6", "Philippines" ],
+	[ "1952", "Marsden", "Acosta", "K6C 8C5", "Jordan" ],
+	[ "1953", "Whoopi", "Villarreal", "E2O 1T5", "Svalbard and Jan Mayen" ],
+	[ "1954", "Bruno", "Ball", "31931", "Barbados" ],
+	[ "1955", "Ulric", "Young", "T4R 3M5", "Solomon Islands" ],
+	[ "1956", "Noah", "Gonzalez", "L3O 6V5", "Mayotte" ],
+	[ "1957", "Cheryl", "Gilliam", "F4Q 4H9", "Albania" ],
+	[ "1958", "Bo", "Rowe", "67020", "Jamaica" ],
+	[ "1959", "Kelly", "Alexander", "P8Y 9K5", "Somalia" ],
+	[ "1960", "Hop", "Navarro", "O1G 9R6", "Cayman Islands" ],
+	[ "1961", "Zachery", "Howard", "67147", "Fiji" ],
+	[ "1962", "Elvis", "Daugherty", "X8V 7S7", "Jordan" ],
+	[ "1963", "Mallory", "Hensley", "A5S 1U6", "Swaziland" ],
+	[ "1964", "Fulton", "Williams", "P4C 4O5", "Viet Nam" ],
+	[ "1965", "Madison", "Pittman", "F8G 1P9", "Chile" ],
+	[ "1966", "Kermit", "Bradford", "W2T 6I5", "Uganda" ],
+	[ "1967", "Gabriel", "Ballard", "N5M 6W0", "Andorra" ],
+	[ "1968", "Jasmine", "Barber", "M2Z 7G5", "French Guiana" ],
+	[ "1969", "Thane", "Koch", "21097", "Armenia" ],
+	[ "1970", "Montana", "Oneal", "L2A 9Q6", "South Africa" ],
+	[ "1971", "Brett", "Coleman", "79399", "Luxembourg" ],
+	[ "1972", "Ivy", "Jimenez", "28549", "Senegal" ],
+	[ "1973", "Shad", "Melton", "Z8N 4Z5", "Cook Islands" ],
+	[ "1974", "Suki", "Vance", "H1A 1Z3", "Ireland" ],
+	[ "1975", "Jin", "Hodges", "L2I 3T8", "France" ],
+	[ "1976", "Diana", "Booth", "M3V 1S8", "Iran, Islamic Republic of" ],
+	[ "1977", "Martha", "Nunez", "27837", "Northern Mariana Islands" ],
+	[ "1978", "Silas", "Ayers", "17121", "United States" ],
+	[ "1979", "Ainsley", "Whitaker", "42695", "Dominica" ],
+	[ "1980", "Dillon", "Tucker", "N3R 3P3", "Botswana" ],
+	[ "1981", "Lillian", "West", "57665", "Palau" ],
+	[ "1982", "Talon", "Hart", "Z6T 4W3", "Serbia and Montenegro" ],
+	[ "1983", "Desiree", "Booth", "Q1W 9S1", "Gambia" ],
+	[ "1984", "Chastity", "Merrill", "F3B 9W7", "Puerto Rico" ],
+	[ "1985", "Nichole", "Leon", "T7V 5D6", "Belize" ],
+	[ "1986", "Rafael", "Washington", "87676", "Eritrea" ],
+	[ "1987", "Samson", "Mathews", "G7Q 5V6", "Burkina Faso" ],
+	[ "1988", "Jasper", "Campbell", "23791", "Thailand" ],
+	[ "1989", "Mason", "Harrington", "R9R 5S3", "Nigeria" ],
+	[ "1990", "Jameson", "Frederick", "R1N 4S0", "Guyana" ],
+	[ "1991", "Cadman", "Woodard", "43080", "Gambia" ],
+	[ "1992", "Catherine", "Gill", "W4W 8A4", "Philippines" ],
+	[ "1993", "Yael", "Richards", "99504", "Kenya" ],
+	[ "1994", "Porter", "Finley", "C8Z 5E0", "Brunei Darussalam" ],
+	[ "1995", "Alden", "Merritt", "P4E 9F0", "Mali" ],
+	[ "1996", "Kaye", "Andrews", "I5I 3A4", "Cayman Islands" ],
+	[ "1997", "Luke", "Bryant", "F3Z 2U1", "Kuwait" ],
+	[ "1998", "Heather", "Blackburn", "L1T 6B9", "Mongolia" ],
+	[ "1999", "Gage", "Sykes", "L9Q 7E6", "Palestinian Territory, Occupied" ],
+	[ "2000", "Kaseem", "Harris", "B9O 1C3", "Korea" ],
+	[ "2001", "Quail", "Leonard", "88755", "Burkina Faso" ],
+	[ "2002", "Dennis", "Craft", "13309", "Namibia" ],
+	[ "2003", "Ivor", "Forbes", "C3P 2E1", "Malta" ],
+	[ "2004", "Cade", "Herman", "R1E 5X9", "Sri Lanka" ],
+	[ "2005", "Larissa", "Santiago", "57781", "Dominica" ],
+	[ "2006", "Hyatt", "Tillman", "45071", "Ghana" ],
+	[ "2007", "Timothy", "Rodgers", "F8W 9W0", "Andorra" ],
+	[ "2008", "Hanae", "Powell", "F8B 7P7", "Luxembourg" ],
+	[ "2009", "Ima", "Pennington", "Z5W 5N5", "Latvia" ],
+	[ "2010", "Laurel", "Bell", "16805", "Venezuela" ],
+	[ "2011", "Avye", "Long", "04794", "Dominica" ],
+	[ "2012", "Lysandra", "Pierce", "H7O 3F4", "Zimbabwe" ],
+	[ "2013", "Eve", "Pollard", "L5K 6E2", "Algeria" ],
+	[ "2014", "Ina", "Mcdowell", "65712", "Saint Lucia" ],
+	[ "2015", "Meredith", "Serrano", "V8M 6K7", "Libyan Arab Jamahiriya" ],
+	[ "2016", "Daphne", "Irwin", "89933", "Mongolia" ],
+	[ "2017", "Adam", "Henson", "F6U 9D5", "Chile" ],
+	[ "2018", "Amery", "Hoover", "13408", "Mongolia" ],
+	[ "2019", "Quamar", "Hendricks", "20310", "Gambia" ],
+	[ "2020", "Ori", "Wheeler", "89005", "Nigeria" ],
+	[ "2021", "Zena", "Douglas", "Z1O 6F9", "Serbia and Montenegro" ],
+	[ "2022", "Buckminster", "Huffman", "R4V 9L2", "Mali" ],
+	[ "2023", "Harlan", "Gamble", "U4I 7M4", "Guyana" ],
+	[ "2024", "Dalton", "Cline", "63829", "Tonga" ],
+	[ "2025", "Martha", "Weber", "Z9B 4T0", "Bangladesh" ],
+	[ "2026", "Vernon", "Francis", "M5A 9X7", "Tokelau" ],
+	[ "2027", "Janna", "Velazquez", "67406", "Qatar" ],
+	[ "2028", "Fuller", "Keller", "80871", "Burkina Faso" ],
+	[ "2029", "Jamal", "Spears", "42197", "Norfolk Island" ],
+	[ "2030", "Christen", "Holcomb", "29806", "Norway" ],
+	[ "2031", "Mary", "Carter", "C6W 9K9", "Belgium" ],
+	[ "2032", "Colorado", "Austin", "62904", "Cook Islands" ],
+	[ "2033", "Fritz", "Hunt", "X8G 2V0", "Morocco" ],
+	[ "2034", "Isabella", "Bush", "17676", "Monaco" ],
+	[ "2035", "Adam", "Gilliam", "H7K 9X3", "Indonesia" ],
+	[ "2036", "John", "Austin", "O7X 4Z0", "Czech Republic" ],
+	[ "2037", "Cassady", "Yates", "68835", "Christmas Island" ],
+	[ "2038", "Ori", "Cantrell", "56920", "Guinea" ],
+	[ "2039", "May", "Horn", "47805", "Kuwait" ],
+	[ "2040", "Skyler", "Clarke", "64131", "Lebanon" ],
+	[ "2041", "Levi", "Foster", "S5Q 4B2", "Germany" ],
+	[ "2042", "Veda", "Wilkinson", "L7Z 9M8", "Niger" ],
+	[ "2043", "Brendan", "Levine", "L5B 9P4", "Nepal" ],
+	[ "2044", "Carson", "Sullivan", "93066", "United Arab Emirates" ],
+	[ "2045", "Steven", "Spencer", "F1V 9A7", "Pitcairn" ],
+	[ "2046", "Halla", "Michael", "N1U 1E7", "Seychelles" ],
+	[ "2047", "Jamal", "Hobbs", "G3D 6J7", "New Caledonia" ],
+	[ "2048", "Steel", "Bush", "U8F 6T2", "Belize" ],
+	[ "2049", "Ahmed", "Dennis", "M6E 3P3", "Afghanistan" ],
+	[ "2050", "Aspen", "Estes", "32157", "American Samoa" ],
+	[ "2051", "Peter", "Kelly", "91773", "Morocco" ],
+	[ "2052", "Xandra", "Grimes", "66702", "Tokelau" ],
+	[ "2053", "Michael", "Battle", "J2J 2N5", "Honduras" ],
+	[ "2054", "Steel", "Wiggins", "34625", "United States Minor Outlying Islands" ],
+	[ "2055", "Holmes", "Christian", "45402", "Liechtenstein" ],
+	[ "2056", "Charles", "Barrett", "O4N 9N8", "Lebanon" ],
+	[ "2057", "Hermione", "Soto", "C8E 4H8", "Congo" ],
+	[ "2058", "Elton", "Maxwell", "89033", "Madagascar" ],
+	[ "2059", "Zelda", "Burks", "B7W 5G7", "Sweden" ],
+	[ "2060", "Lynn", "David", "P3D 5K5", "Chad" ],
+	[ "2061", "Margaret", "Neal", "47438", "Western Sahara" ],
+	[ "2062", "David", "Vaughan", "E3L 8D9", "Tokelau" ],
+	[ "2063", "Vladimir", "Mcfarland", "U9V 1B3", "Belgium" ],
+	[ "2064", "Uriah", "Harrington", "77051", "United Arab Emirates" ],
+	[ "2065", "Noel", "Merritt", "J3G 7S1", "Dominican Republic" ],
+	[ "2066", "Christine", "Key", "54543", "Niger" ],
+	[ "2067", "Illana", "Hendricks", "07584", "Montserrat" ],
+	[ "2068", "Pearl", "Lewis", "U5D 2V3", "Libyan Arab Jamahiriya" ],
+	[ "2069", "Victoria", "Bullock", "17462", "Mauritania" ],
+	[ "2070", "Benedict", "Marsh", "61479", "Guyana" ],
+	[ "2071", "Quemby", "Washington", "99774", "French Polynesia" ],
+	[ "2072", "Shelley", "Noble", "U8S 5Z4", "Philippines" ],
+	[ "2073", "Olivia", "Britt", "72344", "Holy See (Vatican City State)" ],
+	[ "2074", "Oleg", "Hendrix", "67567", "Cuba" ],
+	[ "2075", "Hermione", "Gutierrez", "J5K 2J1", "Mozambique" ],
+	[ "2076", "Myra", "Dean", "03485", "Andorra" ],
+	[ "2077", "Deacon", "Moore", "34501", "Tunisia" ],
+	[ "2078", "Dai", "Baird", "B2P 4R0", "Cambodia" ],
+	[ "2079", "Levi", "Melton", "K7T 4B1", "Zimbabwe" ],
+	[ "2080", "Ocean", "Dalton", "66801", "Gabon" ],
+	[ "2081", "Selma", "Harding", "D7N 3J9", "Kyrgyzstan" ],
+	[ "2082", "Maisie", "Gill", "56324", "Morocco" ],
+	[ "2083", "Hillary", "Horne", "Y6O 6G3", "Cyprus" ],
+	[ "2084", "Joel", "Stokes", "77952", "Burundi" ],
+	[ "2085", "Channing", "Patterson", "G6B 8H4", "China" ],
+	[ "2086", "Elliott", "Cleveland", "H3J 9U9", "Namibia" ],
+	[ "2087", "Petra", "Gay", "44314", "Palestinian Territory, Occupied" ],
+	[ "2088", "May", "Hatfield", "48918", "Faroe Islands" ],
+	[ "2089", "Jemima", "Francis", "14347", "Libyan Arab Jamahiriya" ],
+	[ "2090", "Kyla", "Hale", "46200", "Cocos (Keeling) Islands" ],
+	[ "2091", "Veda", "Bruce", "F5W 9A6", "Mauritania" ],
+	[ "2092", "Sybill", "Avila", "58663", "Angola" ],
+	[ "2093", "Charissa", "Salazar", "35271", "Faroe Islands" ],
+	[ "2094", "Steven", "Allison", "E5L 4A3", "Wallis and Futuna" ],
+	[ "2095", "Kane", "Parks", "D5C 6K7", "Norfolk Island" ],
+	[ "2096", "Alika", "Bishop", "S3P 3O3", "China" ],
+	[ "2097", "James", "Bonner", "33277", "Canada" ],
+	[ "2098", "Yoko", "Foster", "B5J 6P9", "Croatia" ],
+	[ "2099", "Ivy", "Riggs", "94420", "Kiribati" ],
+	[ "2100", "Urielle", "Rosa", "V6W 2A0", "Falkland Islands (Malvinas)" ],
+	[ "2101", "Armando", "Shepherd", "Y5C 5W6", "Panama" ],
+	[ "2102", "Haley", "Ingram", "B4H 5U5", "Fiji" ],
+	[ "2103", "Brielle", "Dyer", "P2S 4H7", "Malawi" ],
+	[ "2104", "Francis", "Brady", "24239", "Uruguay" ],
+	[ "2105", "Fiona", "Webster", "72015", "Belize" ],
+	[ "2106", "Aiko", "Santos", "K4H 1N0", "Saint Vincent and The Grenadines" ],
+	[ "2107", "Amir", "Rivas", "02737", "Papua New Guinea" ],
+	[ "2108", "Mira", "Kerr", "W6E 6Y2", "Sri Lanka" ],
+	[ "2109", "Harrison", "Jensen", "50193", "Heard Island and Mcdonald Islands" ],
+	[ "2110", "Merrill", "Randall", "21534", "Colombia" ],
+	[ "2111", "Benjamin", "Howe", "N8M 4N6", "Turkmenistan" ],
+	[ "2112", "Melyssa", "Kidd", "97657", "Cameroon" ],
+	[ "2113", "Henry", "Moore", "95626", "Botswana" ],
+	[ "2114", "Nash", "Peters", "K3V 9F3", "Wallis and Futuna" ],
+	[ "2115", "Iliana", "Holt", "E9F 2Q8", "Netherlands Antilles" ],
+	[ "2116", "Naomi", "Hood", "P6D 2G3", "Anguilla" ],
+	[ "2117", "Ainsley", "Barron", "94273", "New Caledonia" ],
+	[ "2118", "Daphne", "Acevedo", "A9I 9E4", "Bermuda" ],
+	[ "2119", "Kiona", "Keith", "62523", "Saint Lucia" ],
+	[ "2120", "Kirsten", "Mcgee", "97481", "Macedonia" ],
+	[ "2121", "Emerald", "Franklin", "Q2I 6D6", "Botswana" ],
+	[ "2122", "Hall", "Schroeder", "I2D 9L7", "Kenya" ],
+	[ "2123", "Amaya", "Lynch", "50534", "Costa Rica" ],
+	[ "2124", "Randall", "Hanson", "B4R 2S3", "United Arab Emirates" ],
+	[ "2125", "Sasha", "Clarke", "50972", "United States Minor Outlying Islands" ],
+	[ "2126", "Susan", "Sutton", "Z4T 6K3", "Solomon Islands" ],
+	[ "2127", "Hiram", "Torres", "C8O 5O7", "Botswana" ],
+	[ "2128", "Melanie", "Calhoun", "87097", "New Zealand" ],
+	[ "2129", "Courtney", "Sutton", "07944", "Spain" ],
+	[ "2130", "Reuben", "Beard", "U6Z 8N5", "Faroe Islands" ],
+	[ "2131", "Jarrod", "Payne", "94171", "Turkey" ],
+	[ "2132", "Vincent", "Potts", "V5Z 9G9", "Madagascar" ],
+	[ "2133", "Kaye", "Kent", "O1B 2Z9", "Fiji" ],
+	[ "2134", "Carol", "Green", "78719", "Comoros" ],
+	[ "2135", "Cairo", "Combs", "G3C 8F0", "Indonesia" ],
+	[ "2136", "Ebony", "Parker", "77377", "Portugal" ],
+	[ "2137", "Gary", "Shaffer", "F1B 9W7", "French Guiana" ],
+	[ "2138", "Gay", "Jimenez", "05726", "Nepal" ],
+	[ "2139", "Patience", "Bryan", "60437", "Macao" ],
+	[ "2140", "Zenaida", "Bowen", "V3S 1G7", "Mauritania" ],
+	[ "2141", "Isaac", "Aguirre", "X8S 9K4", "Bermuda" ],
+	[ "2142", "Lacy", "Harrell", "67362", "Bhutan" ],
+	[ "2143", "Jael", "Grimes", "95612", "Anguilla" ],
+	[ "2144", "Catherine", "Galloway", "45834", "Suriname" ],
+	[ "2145", "Donna", "Burt", "N8C 2M8", "Burkina Faso" ],
+	[ "2146", "Colleen", "Ball", "N3E 4U8", "Libyan Arab Jamahiriya" ],
+	[ "2147", "Lael", "Brady", "01369", "Macedonia" ],
+	[ "2148", "Kermit", "Logan", "Y5P 8Q8", "Honduras" ],
+	[ "2149", "Katelyn", "Orr", "R7X 9W3", "Switzerland" ],
+	[ "2150", "Alisa", "Glenn", "17831", "Timor-leste" ],
+	[ "2151", "Lee", "Bean", "89445", "Guam" ],
+	[ "2152", "Maryam", "Cotton", "57924", "Gambia" ],
+	[ "2153", "Amena", "Love", "X1Z 6F7", "Thailand" ],
+	[ "2154", "Tallulah", "Case", "87477", "Ecuador" ],
+	[ "2155", "Carlos", "Sanford", "F6S 8J6", "Iraq" ],
+	[ "2156", "Quamar", "David", "D5F 2M8", "Gabon" ],
+	[ "2157", "Cassady", "Mays", "12786", "Netherlands" ],
+	[ "2158", "Jenna", "Rowland", "88845", "China" ],
+	[ "2159", "Justin", "Tanner", "66071", "Nepal" ],
+	[ "2160", "Riley", "Santiago", "F8K 2Y6", "Gabon" ],
+	[ "2161", "Iris", "Gallegos", "K9C 3T9", "Niue" ],
+	[ "2162", "Kato", "Osborn", "N4C 2L8", "Puerto Rico" ],
+	[ "2163", "Imogene", "Schroeder", "79710", "United States Minor Outlying Islands" ],
+	[ "2164", "Olympia", "Hebert", "D4W 1L0", "Saint Lucia" ],
+	[ "2165", "Skyler", "Burnett", "B2R 5H7", "Antarctica" ],
+	[ "2166", "Faith", "Sims", "88476", "Egypt" ],
+	[ "2167", "Emily", "Odom", "U7O 2P6", "Kuwait" ],
+	[ "2168", "Carly", "Washington", "46063", "Benin" ],
+	[ "2169", "Jolene", "Meyer", "B2B 9A4", "Australia" ],
+	[ "2170", "Ayanna", "Conrad", "84360", "Northern Mariana Islands" ],
+	[ "2171", "Violet", "Blankenship", "W2B 3U1", "New Caledonia" ],
+	[ "2172", "Rhona", "Gallegos", "10931", "Montserrat" ],
+	[ "2173", "Alice", "Hodges", "96181", "Burkina Faso" ],
+	[ "2174", "Brody", "Sandoval", "68959", "Pitcairn" ],
+	[ "2175", "Isabella", "Dunlap", "U8U 7Y8", "Afghanistan" ],
+	[ "2176", "Jordan", "Golden", "55152", "Guam" ],
+	[ "2177", "Gillian", "Thomas", "75633", "Djibouti" ],
+	[ "2178", "Hollee", "Clay", "79847", "Panama" ],
+	[ "2179", "Dane", "Knapp", "89535", "Armenia" ],
+	[ "2180", "Avram", "Martin", "T4S 4E2", "Madagascar" ],
+	[ "2181", "Fuller", "Newman", "47317", "Jamaica" ],
+	[ "2182", "Nina", "Berry", "81360", "Mongolia" ],
+	[ "2183", "Akeem", "Pratt", "56230", "Colombia" ],
+	[ "2184", "Lacy", "Hayes", "U7T 4F5", "Cyprus" ],
+	[ "2185", "Alfonso", "Mcclure", "06797", "Swaziland" ],
+	[ "2186", "Cedric", "Love", "64720", "Bermuda" ],
+	[ "2187", "Astra", "Fernandez", "H3I 1B0", "Mongolia" ],
+	[ "2188", "Iliana", "Durham", "R8C 7M8", "Spain" ],
+	[ "2189", "Gwendolyn", "Livingston", "C7X 5L1", "Northern Mariana Islands" ],
+	[ "2190", "Caldwell", "Anderson", "69099", "Kuwait" ],
+	[ "2191", "Risa", "Mejia", "P7A 4U7", "Israel" ],
+	[ "2192", "Dora", "Navarro", "L6G 2O8", "Ireland" ],
+	[ "2193", "Kirk", "Dean", "I2T 3E6", "Pitcairn" ],
+	[ "2194", "Jackson", "Harvey", "53467", "Myanmar" ],
+	[ "2195", "Thane", "Ballard", "87240", "Solomon Islands" ],
+	[ "2196", "Nadine", "Estes", "62003", "Malta" ],
+	[ "2197", "Candace", "Nunez", "57223", "Virgin Islands, British" ],
+	[ "2198", "Zelda", "Odom", "X4V 7F5", "Mongolia" ],
+	[ "2199", "Wylie", "Ayala", "S4I 4Q4", "Djibouti" ],
+	[ "2200", "Azalia", "Page", "57239", "Korea, Republic of" ],
+	[ "2201", "Joshua", "Burch", "R7B 1N7", "Samoa" ],
+	[ "2202", "Basil", "Ramos", "71614", "Tunisia" ],
+	[ "2203", "Jessica", "Shields", "U2D 4X3", "Syrian Arab Republic" ],
+	[ "2204", "Clio", "Singleton", "I1B 1B0", "Ghana" ],
+	[ "2205", "Astra", "Dotson", "62378", "Turks and Caicos Islands" ],
+	[ "2206", "Hamish", "Tucker", "E4Z 3N3", "Anguilla" ],
+	[ "2207", "Rachel", "Matthews", "U4I 8M3", "Trinidad and Tobago" ],
+	[ "2208", "Clayton", "Ball", "95319", "India" ],
+	[ "2209", "Quinn", "Wilkinson", "Y6M 3Q7", "Virgin Islands, U.S." ],
+	[ "2210", "Phelan", "Talley", "00543", "Philippines" ],
+	[ "2211", "Carol", "Brock", "M6X 4E2", "Gibraltar" ],
+	[ "2212", "Nomlanga", "Robles", "56511", "Viet Nam" ],
+	[ "2213", "Adrian", "Clay", "79479", "France" ],
+	[ "2214", "Sara", "Riley", "B9N 5P4", "Peru" ],
+	[ "2215", "Christine", "Sweeney", "W1Z 4S4", "French Polynesia" ],
+	[ "2216", "Leilani", "Johnston", "W1C 8M8", "American Samoa" ],
+	[ "2217", "Melyssa", "Lambert", "V1B 4P6", "Iraq" ],
+	[ "2218", "Talon", "Delacruz", "Y3N 9R2", "Bulgaria" ],
+	[ "2219", "Garth", "Jennings", "59667", "Malta" ],
+	[ "2220", "Naida", "Coleman", "45456", "Finland" ],
+	[ "2221", "Indigo", "Lopez", "77160", "Pitcairn" ],
+	[ "2222", "Asher", "French", "99064", "British Indian Ocean Territory" ],
+	[ "2223", "Vivian", "Mcgowan", "46310", "Oman" ],
+	[ "2224", "Gwendolyn", "Cervantes", "48905", "Cocos (Keeling) Islands" ],
+	[ "2225", "Logan", "Reid", "87376", "Ethiopia" ],
+	[ "2226", "Bryar", "Wolfe", "75860", "Comoros" ],
+	[ "2227", "Demetrius", "Hutchinson", "97252", "Dominican Republic" ],
+	[ "2228", "Freya", "Becker", "04872", "United States" ],
+	[ "2229", "Abel", "Brooks", "I7O 1M1", "Comoros" ],
+	[ "2230", "Silas", "Mcguire", "04101", "Indonesia" ],
+	[ "2231", "Quinn", "Fletcher", "B6E 2B0", "Niger" ],
+	[ "2232", "Rooney", "Holden", "29294", "Micronesia" ],
+	[ "2233", "Iris", "Hale", "N7W 6E9", "Greenland" ],
+	[ "2234", "Candace", "Barry", "U8I 5A4", "Germany" ],
+	[ "2235", "Yetta", "Ball", "62055", "Switzerland" ],
+	[ "2236", "Dai", "Bentley", "P2Y 4C5", "Dominica" ],
+	[ "2237", "Gannon", "Dunlap", "45728", "Fiji" ],
+	[ "2238", "Chelsea", "Mays", "36498", "Guinea" ],
+	[ "2239", "Ruth", "Mcguire", "62924", "Maldives" ],
+	[ "2240", "Melissa", "Durham", "D6S 1A2", "Armenia" ],
+	[ "2241", "Eaton", "Salinas", "53689", "Somalia" ],
+	[ "2242", "Driscoll", "Cunningham", "31194", "Sweden" ],
+	[ "2243", "Bevis", "Acosta", "V4M 9Z2", "Jamaica" ],
+	[ "2244", "Anastasia", "Mcknight", "24878", "Sao Tome and Principe" ],
+	[ "2245", "Anika", "Rowland", "45287", "Chile" ],
+	[ "2246", "Dexter", "Rollins", "00684", "Iran, Islamic Republic of" ],
+	[ "2247", "Brielle", "Irwin", "V4U 7R2", "Belgium" ],
+	[ "2248", "Ocean", "Fields", "08544", "Croatia" ],
+	[ "2249", "Sonia", "Solis", "C4X 1L5", "Niue" ],
+	[ "2250", "Joseph", "Haney", "29567", "Argentina" ],
+	[ "2251", "Lamar", "Heath", "81699", "Italy" ],
+	[ "2252", "Raya", "Jordan", "R6K 7B3", "Spain" ],
+	[ "2253", "Brody", "Frost", "34564", "Dominican Republic" ],
+	[ "2254", "Ann", "Hawkins", "S3A 5K7", "Yemen" ],
+	[ "2255", "Phillip", "Lindsay", "80544", "Sierra Leone" ],
+	[ "2256", "Willa", "Maynard", "A6A 4C5", "Mexico" ],
+	[ "2257", "Carolyn", "Mercer", "V8Z 1X5", "Zimbabwe" ],
+	[ "2258", "Justin", "Cole", "68764", "Saint Vincent and The Grenadines" ],
+	[ "2259", "Emmanuel", "Parks", "99769", "Latvia" ],
+	[ "2260", "Isaiah", "Salazar", "H1K 1X3", "Turks and Caicos Islands" ],
+	[ "2261", "Vance", "Porter", "49607", "Costa Rica" ],
+	[ "2262", "Igor", "Kim", "99489", "Turkmenistan" ],
+	[ "2263", "Emi", "Graves", "F4M 5L8", "El Salvador" ],
+	[ "2264", "Griffith", "Monroe", "11550", "Tanzania, United Republic of" ],
+	[ "2265", "Iliana", "Coffey", "30220", "Albania" ],
+	[ "2266", "Jemima", "Guthrie", "69283", "Saint Pierre and Miquelon" ],
+	[ "2267", "Zenia", "Farrell", "91872", "Tanzania, United Republic of" ],
+	[ "2268", "Lucas", "Chambers", "L5Z 1W0", "Bouvet Island" ],
+	[ "2269", "Zenaida", "Valenzuela", "31700", "Guam" ],
+	[ "2270", "Bradley", "Wynn", "21222", "Lithuania" ],
+	[ "2271", "Maite", "Richard", "H4D 7X0", "Cameroon" ],
+	[ "2272", "Moses", "House", "Y3Z 3K7", "Saint Vincent and The Grenadines" ],
+	[ "2273", "Erich", "Petersen", "U4N 9R7", "Rwanda" ],
+	[ "2274", "Stephanie", "Zimmerman", "70097", "Malawi" ],
+	[ "2275", "Rylee", "Schneider", "15645", "Gibraltar" ],
+	[ "2276", "Zia", "Craig", "H1K 1N9", "Norway" ],
+	[ "2277", "Fiona", "Chaney", "Y4U 7K8", "San Marino" ],
+	[ "2278", "Gil", "Sherman", "64720", "Wallis and Futuna" ],
+	[ "2279", "Raja", "Sandoval", "11225", "Lithuania" ],
+	[ "2280", "Illana", "Wyatt", "A2M 9O2", "Brazil" ],
+	[ "2281", "Declan", "Howell", "E9V 8J5", "San Marino" ],
+	[ "2282", "Warren", "Cooper", "47160", "Guyana" ],
+	[ "2283", "Alyssa", "Juarez", "S7G 8F2", "Sweden" ],
+	[ "2284", "Quynn", "Long", "P1P 5Y4", "Mexico" ],
+	[ "2285", "Dalton", "Booker", "I5T 1R3", "Mauritius" ],
+	[ "2286", "Lunea", "Mclaughlin", "I3F 6D4", "Togo" ],
+	[ "2287", "Irene", "Brock", "04760", "Tajikistan" ],
+	[ "2288", "Raven", "Floyd", "R2N 2Y5", "Philippines" ],
+	[ "2289", "Nichole", "Farmer", "81213", "Seychelles" ],
+	[ "2290", "Sophia", "Mcdonald", "86291", "Chile" ],
+	[ "2291", "Nehru", "Matthews", "60732", "Central African Republic" ],
+	[ "2292", "Marah", "Nelson", "44533", "Kenya" ],
+	[ "2293", "Marvin", "Lyons", "M7Y 1Q6", "Somalia" ],
+	[ "2294", "Ian", "Fernandez", "D9U 8B6", "Turkey" ],
+	[ "2295", "Gretchen", "Dotson", "48294", "China" ],
+	[ "2296", "Brady", "Weaver", "S4U 4I8", "Burundi" ],
+	[ "2297", "Ella", "Salas", "73771", "Sao Tome and Principe" ],
+	[ "2298", "Martha", "Irwin", "06554", "Timor-leste" ],
+	[ "2299", "Penelope", "Pratt", "S1R 4L4", "Gabon" ],
+	[ "2300", "Kenyon", "Dale", "64548", "Zimbabwe" ],
+	[ "2301", "Henry", "Myers", "07614", "United Arab Emirates" ],
+	[ "2302", "Chaney", "Dunlap", "18388", "French Southern Territories" ],
+	[ "2303", "Palmer", "Le", "10807", "Colombia" ],
+	[ "2304", "Kaseem", "Madden", "U4E 6L9", "Guyana" ],
+	[ "2305", "Grant", "Anthony", "F3K 4D8", "Trinidad and Tobago" ],
+	[ "2306", "Denton", "Moore", "I5O 4I5", "Belize" ],
+	[ "2307", "Regan", "Pittman", "U8T 9M1", "Romania" ],
+	[ "2308", "Valentine", "Hunt", "E9O 6H6", "Poland" ],
+	[ "2309", "Abraham", "Love", "X1T 4K0", "Philippines" ],
+	[ "2310", "Maggie", "Gaines", "W5Z 6L4", "Chad" ],
+	[ "2311", "Kylynn", "Sears", "53419", "Ghana" ],
+	[ "2312", "Abel", "Hudson", "O6C 6K5", "Malaysia" ],
+	[ "2313", "Aladdin", "Brady", "16465", "Antarctica" ],
+	[ "2314", "Laurel", "Bush", "42295", "Kyrgyzstan" ],
+	[ "2315", "Cameron", "Shepherd", "Y8R 5L7", "Finland" ],
+	[ "2316", "Colin", "Barker", "H8Q 5L0", "Aruba" ],
+	[ "2317", "Nichole", "Stephens", "B8P 3D5", "Qatar" ],
+	[ "2318", "Mary", "Dorsey", "J7D 1E5", "Iceland" ],
+	[ "2319", "Yetta", "Dillon", "I7X 9D3", "Hong Kong" ],
+	[ "2320", "Hope", "May", "L5W 1T9", "Taiwan, Province of China" ],
+	[ "2321", "Daphne", "Barr", "W2B 9G2", "Korea, Republic of" ],
+	[ "2322", "Melissa", "Hartman", "17607", "Reunion" ],
+	[ "2323", "Acton", "Merritt", "U7M 3Q5", "Cape Verde" ],
+	[ "2324", "Alika", "Weeks", "45475", "Singapore" ],
+	[ "2325", "Fitzgerald", "Rowe", "Z3Z 2B6", "Israel" ],
+	[ "2326", "Frances", "Valentine", "54329", "Kyrgyzstan" ],
+	[ "2327", "Hollee", "Poole", "56101", "Saint Kitts and Nevis" ],
+	[ "2328", "Melissa", "Stafford", "R5C 7V0", "Philippines" ],
+	[ "2329", "Patience", "Jones", "61516", "Mauritius" ],
+	[ "2330", "Uta", "Sloan", "K1B 9R2", "Timor-leste" ],
+	[ "2331", "Brent", "West", "69310", "Burundi" ],
+	[ "2332", "Otto", "Olsen", "88849", "Monaco" ],
+	[ "2333", "Blossom", "Soto", "E2Q 6E6", "Ukraine" ],
+	[ "2334", "Anastasia", "Stanton", "S8D 3U5", "Mexico" ],
+	[ "2335", "Nyssa", "Massey", "A4G 8G7", "Ireland" ],
+	[ "2336", "Brian", "Moreno", "T6O 4D7", "Myanmar" ],
+	[ "2337", "Fiona", "Price", "03826", "Benin" ],
+	[ "2338", "Wyoming", "Knowles", "I5M 7T3", "Chad" ],
+	[ "2339", "Iola", "Noble", "95251", "Tunisia" ],
+	[ "2340", "Cameran", "Montgomery", "35748", "Korea" ],
+	[ "2341", "Wesley", "Sims", "J6O 7C0", "Hungary" ],
+	[ "2342", "Mona", "Gates", "J6Y 3E2", "Tokelau" ],
+	[ "2343", "Dominique", "Sellers", "G6U 7I2", "Sudan" ],
+	[ "2344", "Destiny", "Frazier", "Y2P 5X6", "Madagascar" ],
+	[ "2345", "Kelsie", "Stokes", "78561", "Yemen" ],
+	[ "2346", "Julie", "Jordan", "U5H 4H0", "Myanmar" ],
+	[ "2347", "Xaviera", "Hodge", "36452", "Turkey" ],
+	[ "2348", "Cain", "Boyd", "74543", "Lebanon" ],
+	[ "2349", "Devin", "Burch", "94879", "Cyprus" ],
+	[ "2350", "Michelle", "Manning", "V7T 4A3", "New Zealand" ],
+	[ "2351", "Quintessa", "Chapman", "95379", "Faroe Islands" ],
+	[ "2352", "Danielle", "Wells", "27722", "Colombia" ],
+	[ "2353", "Faith", "Decker", "04881", "Canada" ],
+	[ "2354", "Gannon", "Chapman", "07687", "Israel" ],
+	[ "2355", "Jayme", "Black", "A6L 9W1", "Jordan" ],
+	[ "2356", "Zenia", "Cooley", "A6X 1B7", "Greenland" ],
+	[ "2357", "Maris", "Burton", "J4G 1Y0", "Ecuador" ],
+	[ "2358", "Rina", "Vazquez", "G3V 7G6", "Russian Federation" ],
+	[ "2359", "Nina", "Stanton", "E7Z 1W0", "Dominica" ],
+	[ "2360", "Alexandra", "Jenkins", "C6N 4R4", "Morocco" ],
+	[ "2361", "Jerome", "Chen", "68955", "Israel" ],
+	[ "2362", "Clementine", "Robbins", "X7I 7T3", "Croatia" ],
+	[ "2363", "Nigel", "Guthrie", "A4N 6X8", "French Southern Territories" ],
+	[ "2364", "Xaviera", "Griffith", "90489", "Cuba" ],
+	[ "2365", "Marsden", "Best", "U4B 5R7", "Estonia" ],
+	[ "2366", "Ebony", "Benson", "H7C 7F7", "Anguilla" ],
+	[ "2367", "Kylie", "Hansen", "38932", "Eritrea" ],
+	[ "2368", "Iola", "Copeland", "P4X 9M4", "Rwanda" ],
+	[ "2369", "Jorden", "Green", "48018", "Namibia" ],
+	[ "2370", "Hamish", "Porter", "L6F 8L1", "Taiwan, Province of China" ],
+	[ "2371", "Ezra", "Taylor", "09148", "French Southern Territories" ],
+	[ "2372", "Dara", "Pratt", "00558", "Saint Kitts and Nevis" ],
+	[ "2373", "Oliver", "Holt", "C4N 5Z7", "Thailand" ],
+	[ "2374", "Kato", "Mcgee", "17017", "Micronesia" ],
+	[ "2375", "Fuller", "Rogers", "M8F 6Y7", "French Polynesia" ],
+	[ "2376", "Carol", "Stuart", "55980", "Sudan" ],
+	[ "2377", "Wayne", "Nichols", "37344", "Chile" ],
+	[ "2378", "Lars", "Gilbert", "27076", "Micronesia" ],
+	[ "2379", "Todd", "Rollins", "M4I 4X8", "Virgin Islands, U.S." ],
+	[ "2380", "Colorado", "Justice", "68795", "Yemen" ],
+	[ "2381", "Jordan", "Chang", "11149", "Mayotte" ],
+	[ "2382", "Troy", "Haynes", "N2N 1N8", "Reunion" ],
+	[ "2383", "Amity", "Snyder", "17785", "Argentina" ],
+	[ "2384", "Kennan", "Turner", "30041", "Brazil" ],
+	[ "2385", "Dorothy", "Gates", "B7Z 6V4", "Ghana" ],
+	[ "2386", "Ariana", "Rojas", "70797", "Eritrea" ],
+	[ "2387", "Desirae", "Joyner", "63493", "Maldives" ],
+	[ "2388", "Marsden", "Barton", "36343", "Chile" ],
+	[ "2389", "Graham", "Greer", "65152", "Cayman Islands" ],
+	[ "2390", "Cameron", "Edwards", "89276", "Montserrat" ],
+	[ "2391", "Bradley", "White", "80364", "United Kingdom" ],
+	[ "2392", "Finn", "Cote", "G9P 1P0", "Ghana" ],
+	[ "2393", "Geoffrey", "Becker", "O5G 4L4", "Wallis and Futuna" ],
+	[ "2394", "Hayden", "Estes", "Q8G 7F9", "Togo" ],
+	[ "2395", "Quinlan", "Garrett", "R2C 3E7", "Uganda" ],
+	[ "2396", "Haviva", "Harrington", "64198", "Bahamas" ],
+	[ "2397", "Brennan", "Hodge", "35327", "Paraguay" ],
+	[ "2398", "Halee", "Sykes", "S6J 4S4", "Costa Rica" ],
+	[ "2399", "Mikayla", "Ruiz", "21686", "Malaysia" ],
+	[ "2400", "Macy", "Stanley", "F6D 6C4", "Luxembourg" ],
+	[ "2401", "Petra", "Miles", "O7X 2D2", "Tokelau" ],
+	[ "2402", "Oprah", "Mendez", "88994", "France" ],
+	[ "2403", "Upton", "Silva", "17878", "French Southern Territories" ],
+	[ "2404", "Wade", "Pennington", "S8J 3P2", "Malaysia" ],
+	[ "2405", "Gannon", "Riddle", "I4A 2H9", "Somalia" ],
+	[ "2406", "Jana", "Myers", "04982", "Philippines" ],
+	[ "2407", "Brooke", "Hale", "98272", "Lithuania" ],
+	[ "2408", "Hashim", "Mendez", "00144", "Saint Helena" ],
+	[ "2409", "Blythe", "Hanson", "U5Z 6P4", "Saint Helena" ],
+	[ "2410", "Michelle", "Madden", "B4R 1I9", "Ireland" ],
+	[ "2411", "Deirdre", "Patton", "B4H 1N7", "Georgia" ],
+	[ "2412", "Nathaniel", "Chandler", "W1V 8R4", "Sierra Leone" ],
+	[ "2413", "Tamekah", "Murray", "I8M 1W8", "Guatemala" ],
+	[ "2414", "Naida", "Boyle", "V4S 2N2", "United Arab Emirates" ],
+	[ "2415", "Hiroko", "Winters", "K8G 3R9", "Barbados" ],
+	[ "2416", "Palmer", "Guy", "A4H 5L1", "Saudi Arabia" ],
+	[ "2417", "Hermione", "Nicholson", "76147", "Marshall Islands" ],
+	[ "2418", "Russell", "Boyd", "66149", "Switzerland" ],
+	[ "2419", "Gretchen", "Robles", "B9L 1J7", "Spain" ],
+	[ "2420", "Leah", "Gibbs", "16682", "Vanuatu" ],
+	[ "2421", "Amir", "Carlson", "A5C 6F2", "Myanmar" ],
+	[ "2422", "Merrill", "Ratliff", "A6E 9B2", "Tonga" ],
+	[ "2423", "Wyatt", "David", "P8G 2M1", "Kiribati" ],
+	[ "2424", "Violet", "Boyle", "P5X 7B0", "Denmark" ],
+	[ "2425", "Jared", "Myers", "22131", "Kyrgyzstan" ],
+	[ "2426", "Lavinia", "Stephenson", "55537", "Turks and Caicos Islands" ],
+	[ "2427", "Zachary", "Tyson", "C4O 7V4", "Macedonia" ],
+	[ "2428", "Emma", "Clark", "A7Z 2Z1", "Guam" ],
+	[ "2429", "Aaron", "Montoya", "Q3U 2X1", "Bahrain" ],
+	[ "2430", "Dylan", "Roach", "81238", "French Guiana" ],
+	[ "2431", "Baxter", "Rosario", "H7B 1R2", "Suriname" ],
+	[ "2432", "Shad", "Bolton", "D1W 5X0", "Barbados" ],
+	[ "2433", "Hasad", "Hines", "D9U 3H1", "Ukraine" ],
+	[ "2434", "Maggy", "French", "M3E 5H8", "Nicaragua" ],
+	[ "2435", "Evangeline", "Jenkins", "57732", "Nigeria" ],
+	[ "2436", "Eaton", "Shannon", "56854", "Namibia" ],
+	[ "2437", "Keaton", "Barber", "G5V 7T0", "Svalbard and Jan Mayen" ],
+	[ "2438", "Lester", "Love", "J5Q 8H3", "United Kingdom" ],
+	[ "2439", "Olivia", "Foley", "16284", "Mayotte" ],
+	[ "2440", "Inez", "Craig", "98947", "Poland" ],
+	[ "2441", "Desirae", "Jacobson", "25950", "French Polynesia" ],
+	[ "2442", "Amethyst", "Robertson", "78840", "Timor-leste" ],
+	[ "2443", "Rahim", "Day", "61420", "Maldives" ],
+	[ "2444", "Kevyn", "Mccarty", "X7T 8Z3", "Guam" ],
+	[ "2445", "Logan", "Malone", "B6F 8N0", "Madagascar" ],
+	[ "2446", "Kathleen", "Cote", "L4R 6W9", "Congo" ],
+	[ "2447", "Porter", "Mclean", "G1Z 1W9", "Mauritius" ],
+	[ "2448", "Reagan", "Chapman", "86314", "Palestinian Territory, Occupied" ],
+	[ "2449", "Veda", "Harrington", "R7W 1K4", "Congo" ],
+	[ "2450", "Dominique", "Hewitt", "P5K 7L4", "San Marino" ],
+	[ "2451", "Zelda", "Orr", "Z5B 6V1", "Greenland" ],
+	[ "2452", "Natalie", "Kane", "10491", "Belgium" ],
+	[ "2453", "Elizabeth", "Bright", "R3V 2R4", "Bangladesh" ],
+	[ "2454", "Evan", "Knapp", "W3Z 3I5", "Mauritius" ],
+	[ "2455", "Unity", "Armstrong", "82986", "Kiribati" ],
+	[ "2456", "Arden", "Winters", "C7D 4M2", "Sweden" ],
+	[ "2457", "Hayfa", "Henderson", "B8Z 3V3", "Latvia" ],
+	[ "2458", "Ocean", "Delacruz", "Z3Z 2H8", "Tonga" ],
+	[ "2459", "Carter", "Harding", "R1Z 8J4", "Ireland" ],
+	[ "2460", "Harriet", "Simmons", "54757", "Indonesia" ],
+	[ "2461", "Sopoline", "Hicks", "I5A 6O2", "Argentina" ],
+	[ "2462", "Jenette", "Ramos", "I4V 3H6", "Portugal" ],
+	[ "2463", "Abigail", "Berg", "E6P 6L0", "United States" ],
+	[ "2464", "Sybill", "Fox", "02319", "Svalbard and Jan Mayen" ],
+	[ "2465", "Wyoming", "Jarvis", "I1R 7V9", "Palestinian Territory, Occupied" ],
+	[ "2466", "Cynthia", "English", "17983", "Israel" ],
+	[ "2467", "Jerry", "Little", "33846", "Mauritius" ],
+	[ "2468", "Quintessa", "Donaldson", "V4N 2K1", "China" ],
+	[ "2469", "Anne", "Potter", "78596", "United States Minor Outlying Islands" ],
+	[ "2470", "Madonna", "Hart", "A4A 4T8", "Bahrain" ],
+	[ "2471", "Madeline", "Walls", "Y3D 4T3", "Comoros" ],
+	[ "2472", "Fleur", "Blevins", "D1T 9P6", "Guinea-bissau" ],
+	[ "2473", "Jaden", "Webb", "13917", "Lesotho" ],
+	[ "2474", "Abdul", "Fleming", "A8A 3Y3", "Canada" ],
+	[ "2475", "Blaze", "Carroll", "41059", "Marshall Islands" ],
+	[ "2476", "David", "Hoover", "29132", "Algeria" ],
+	[ "2477", "Renee", "Nieves", "35843", "Egypt" ],
+	[ "2478", "Jaime", "Mcclure", "R5K 6B5", "Liechtenstein" ],
+	[ "2479", "Deborah", "Fletcher", "70399", "Equatorial Guinea" ],
+	[ "2480", "Otto", "Lopez", "72417", "Belarus" ],
+	[ "2481", "Bo", "Walls", "F4M 8X8", "Latvia" ],
+	[ "2482", "Jamal", "Adams", "N9X 3A2", "Spain" ],
+	[ "2483", "Silas", "Gardner", "25259", "French Guiana" ],
+	[ "2484", "Aladdin", "Morin", "45179", "Sweden" ],
+	[ "2485", "Dawn", "Grant", "53613", "Grenada" ],
+	[ "2486", "Forrest", "Gay", "53606", "Cayman Islands" ],
+	[ "2487", "Lavinia", "Murphy", "S5L 6X9", "Turkey" ],
+	[ "2488", "Sylvia", "Wolfe", "37280", "Indonesia" ],
+	[ "2489", "Wynter", "Adkins", "37391", "Russian Federation" ],
+	[ "2490", "Iola", "Frank", "I9H 1K7", "Nigeria" ],
+	[ "2491", "Emmanuel", "Hester", "Z6E 3I4", "Guinea" ],
+	[ "2492", "Karina", "Christian", "V8M 6F3", "Honduras" ],
+	[ "2493", "Malcolm", "Holden", "I7J 6U7", "Austria" ],
+	[ "2494", "Moana", "Holmes", "80402", "Israel" ],
+	[ "2495", "Ramona", "Hewitt", "U6B 7A6", "Guadeloupe" ],
+	[ "2496", "Nicholas", "Terry", "V8J 5D9", "Costa Rica" ],
+	[ "2497", "Erica", "Dunlap", "91596", "Kazakhstan" ],
+	[ "2498", "Logan", "Harper", "R7V 3T5", "Guinea-bissau" ],
+	[ "2499", "Bert", "Ortega", "74557", "Paraguay" ],
+	[ "2500", "Cameron", "Ortiz", "P9C 5B6", "Eritrea" ]
+] }
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Scroller/examples/data/ssp.php b/public/admin/js/DataTables/extensions/Scroller/examples/data/ssp.php
new file mode 100644
index 0000000000000000000000000000000000000000..71057e9e9a267509f8b1532b282c57a72db485ab
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/examples/data/ssp.php
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ * DataTables example server-side processing script.
+ *
+ * Please note that this script is intentionally extremely simply to show how
+ * server-side processing can be implemented, and probably shouldn't be used as
+ * the basis for a large complex system. It is suitable for simple use cases as
+ * for learning.
+ *
+ * See http://datatables.net/usage/server-side for full details on the server-
+ * side processing requirements of DataTables.
+ *
+ * @license MIT - http://datatables.net/license_mit
+ */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Easy set variables
+ */
+
+// DB table to use
+$table = 'massive';
+
+// Table's primary key
+$primaryKey = 'id';
+
+// Array of database columns which should be read and sent back to DataTables.
+// The `db` parameter represents the column name in the database, while the `dt`
+// parameter represents the DataTables column identifier. In this case simple
+// indexes
+$columns = array(
+	array( 'db' => 'id',         'dt' => 0 ),
+	array( 'db' => 'firstname',  'dt' => 1 ),
+	array( 'db' => 'surname',    'dt' => 2 ),
+	array( 'db' => 'zip',        'dt' => 3 ),
+	array( 'db' => 'country',    'dt' => 4 )
+);
+
+// SQL server connection information
+$sql_details = array(
+	'user' => '',
+	'pass' => '',
+	'db'   => '',
+	'host' => ''
+);
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * If you just want to use the basic configuration for DataTables with PHP
+ * server-side, there is no need to edit below this line.
+ */
+
+require( '../../../../examples/server_side/scripts/ssp.class.php' );
+
+echo json_encode(
+	SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
+);
+
diff --git a/public/admin/js/DataTables/extensions/Scroller/examples/index.html b/public/admin/js/DataTables/extensions/Scroller/examples/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..f0b5bcb6f743611e846bb15da34a2acec58238a4
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/examples/index.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+
+	<title>Scroller examples - Scroller examples</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Scroller example <span>Scroller examples</span></h1>
+
+			<div class="info">
+				<p>Scroller is a virtual rendering plug-in for DataTables which allows large datasets to be drawn on
+				screen every quickly. What the virtual rendering means is that only the visible portion of the table
+				(and a bit to either side to make the scrolling smooth) is drawn, while the scrolling container gives
+				the visual impression that the whole table is visible. This is done by making use of the pagination
+				abilities of DataTables and moving the table around in the scrolling container DataTables adds to the
+				page. The scrolling container is forced to the height it would be for the full table display using an
+				extra element.</p>
+
+				<p>Scroller is initialised by simply including the letter <code>S</code> in the <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> for the table you want to have this
+				feature enabled on. Note that the <code>S</code> must come after the <code>t</code> parameter in
+				<a href="//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a>.</p>
+
+				<p>Key features include:</p>
+
+				<ul class="markdown">
+					<li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li>
+					<li>Full compatibility with DataTables' deferred rendering for maximum speed</li>
+					<li>Integration with state saving in DataTables (scrolling position is saved)</li>
+					<li>Easy to use</li>
+				</ul>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./state_saving.html">State saving</a></li>
+							<li><a href="./large_js_source.html">Client-side data source (50,000 rows)</a></li>
+							<li><a href="./server-side_processing.html">Server-side processing (5,000,000
+							rows)</a></li>
+							<li><a href="./api_scrolling.html">API</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Scroller/examples/large_js_source.html b/public/admin/js/DataTables/extensions/Scroller/examples/large_js_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..9d39ffafe8bbfdd70b4f27338f311538c92c4560
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/examples/large_js_source.html
@@ -0,0 +1,182 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Scroller example - Client-side data source (50,000 rows)</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.scroller.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.scroller.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+	$(document).ready(function() {
+		var data = [];
+		for ( var i=0 ; i<50000 ; i++ ) {
+			data.push( [ i, i, i, i, i ] );
+		}
+		
+		var oTable = $('#example').dataTable( {
+			data:           data,
+			deferRender:    true,
+			dom:            "frtiS",
+			scrollY:        200,
+			scrollCollapse: true
+		} );
+	} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Scroller example <span>Client-side data source (50,000 rows)</span></h1>
+
+			<div class="info">
+				<p>This example is completely artificial in that the data generated is created on the client-side by
+				just looping around a Javascript array and then passing that to DataTables. However, it does show quite
+				nicely that DataTables and Scroller can cope with large amounts of data on the client-side quite
+				nicely. Typically data such as this would be Ajax sourced and server-side processing should be
+				considered.</p>
+
+				<p>Please be aware that the performance of this page will depend on your browser as the array of data
+				is generated - for example IE6 will crawl!</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>ID</th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>ZIP / Post code</th>
+						<th>Country</th>
+					</tr>
+				</thead>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+		var data = [];
+		for ( var i=0 ; i&lt;50000 ; i++ ) {
+			data.push( [ i, i, i, i, i ] );
+		}
+		
+		var oTable = $('#example').dataTable( {
+			data:           data,
+			deferRender:    true,
+			dom:            &quot;frtiS&quot;,
+			scrollY:        200,
+			scrollCollapse: true
+		} );
+	} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.scroller.js">../js/dataTables.scroller.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.scroller.css">../css/dataTables.scroller.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./state_saving.html">State saving</a></li>
+							<li class="active"><a href="./large_js_source.html">Client-side data source (50,000
+							rows)</a></li>
+							<li><a href="./server-side_processing.html">Server-side processing (5,000,000
+							rows)</a></li>
+							<li><a href="./api_scrolling.html">API</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Scroller/examples/server-side_processing.html b/public/admin/js/DataTables/extensions/Scroller/examples/server-side_processing.html
new file mode 100644
index 0000000000000000000000000000000000000000..b1650a990c531091e9a5ee38535b3f92a0de9217
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/examples/server-side_processing.html
@@ -0,0 +1,220 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Scroller example - Server-side processing (5,000,000 rows)</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.scroller.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.scroller.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		serverSide: true,
+		ordering: false,
+		searching: false,
+		ajax: function ( data, callback, settings ) {
+			var out = [];
+
+			for ( var i=data.start, ien=data.start+data.length ; i<ien ; i++ ) {
+				out.push( [ i+'-1', i+'-2', i+'-3', i+'-4', i+'-5' ] );
+			}
+
+			setTimeout( function () {
+				callback( {
+					draw: data.draw,
+					data: out,
+					recordsTotal: 5000000,
+					recordsFiltered: 5000000
+				} );
+			}, 50 );
+		},
+		dom: "rtiS",
+		scrollY: 200,
+		scroller: {
+			loadingIndicator: true
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Scroller example <span>Server-side processing (5,000,000 rows)</span></h1>
+
+			<div class="info">
+				<p>DataTables' server-side processing mode is a feature that naturally fits in with Scroller perfectly.
+				Server-side processing can be used to show large data sets, with the server being used to do the data
+				processing, and Scroller optimising the display of the data in a scrolling viewport.</p>
+
+				<p>When using server-side processing, Scroller will wait a small amount of time to allow the scrolling
+				to finish before requesting more data from the server (200mS by default). This prevents you from DoSing
+				your own server!</p>
+
+				<p>This example shows Scroller using server-side processing mode and 5 million rows.
+				<strong>Important</strong> This particular example uses <a href=
+				"//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> as a function to 'fake' the data to
+				show Scroller's ability to show large data sets. It does not have a real database behind it! You would
+				normally not use <a href="//datatables.net/reference/option/ajax"><code class="option" title=
+				"DataTables initialisation option">ajax<span>DT</span></code></a> as a function to generate data, but
+				rather as a url for where to fetch the real data!</p>
+
+				<p>In this example we also enable the <code>loadingIndicator</code> option of Scroller to show the end
+				user what is happening when they scroll passed the currently loaded data.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>ID</th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>ZIP / Post code</th>
+						<th>Country</th>
+					</tr>
+				</thead>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		serverSide: true,
+		ordering: false,
+		searching: false,
+		ajax: function ( data, callback, settings ) {
+			var out = [];
+
+			for ( var i=data.start, ien=data.start+data.length ; i&lt;ien ; i++ ) {
+				out.push( [ i+'-1', i+'-2', i+'-3', i+'-4', i+'-5' ] );
+			}
+
+			setTimeout( function () {
+				callback( {
+					draw: data.draw,
+					data: out,
+					recordsTotal: 5000000,
+					recordsFiltered: 5000000
+				} );
+			}, 50 );
+		},
+		dom: &quot;rtiS&quot;,
+		scrollY: 200,
+		scroller: {
+			loadingIndicator: true
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.scroller.js">../js/dataTables.scroller.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.scroller.css">../css/dataTables.scroller.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./state_saving.html">State saving</a></li>
+							<li><a href="./large_js_source.html">Client-side data source (50,000 rows)</a></li>
+							<li class="active"><a href="./server-side_processing.html">Server-side processing
+							(5,000,000 rows)</a></li>
+							<li><a href="./api_scrolling.html">API</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Scroller/examples/simple.html b/public/admin/js/DataTables/extensions/Scroller/examples/simple.html
new file mode 100644
index 0000000000000000000000000000000000000000..6d54a6c7e62ef45b4fccd2cc79cea008db49b7e1
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/examples/simple.html
@@ -0,0 +1,175 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Scroller example - Basic initialisation</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.scroller.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.scroller.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		ajax:           "data/2500.txt",
+		deferRender:    true,
+		dom:            "frtiS",
+		scrollY:        200,
+		scrollCollapse: true
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Scroller example <span>Basic initialisation</span></h1>
+
+			<div class="info">
+				<p>Scroller is a plug-in for DataTables which enhances DataTables' built-in scrolling features to allow
+				large amounts of data to be rendered on page very quickly. This is done by Scroller through the use of
+				a virtual rendering technique that will render only the part of the table that is actually required for
+				the current view.</p>
+
+				<p>Note that Scroller assumes that all rows are of the same height (in order to preform the required
+				calculations. You can use <code>td { white-space: nowrap; }</code> in your CSS to ensure that text in
+				rows does not wrap.</p>
+
+				<p>This example shows how Scroller for DataTables can be initialised by simply including the character
+				<code>S</code> in sDom (note that the <code>S</code> must come after the <code>t</code> in sDom).
+				Deferred rendering an and Ajax data source are also used in this example.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>ID</th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>ZIP / Post code</th>
+						<th>Country</th>
+					</tr>
+				</thead>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		ajax:           &quot;data/2500.txt&quot;,
+		deferRender:    true,
+		dom:            &quot;frtiS&quot;,
+		scrollY:        200,
+		scrollCollapse: true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.scroller.js">../js/dataTables.scroller.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.scroller.css">../css/dataTables.scroller.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./state_saving.html">State saving</a></li>
+							<li><a href="./large_js_source.html">Client-side data source (50,000 rows)</a></li>
+							<li><a href="./server-side_processing.html">Server-side processing (5,000,000
+							rows)</a></li>
+							<li><a href="./api_scrolling.html">API</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Scroller/examples/state_saving.html b/public/admin/js/DataTables/extensions/Scroller/examples/state_saving.html
new file mode 100644
index 0000000000000000000000000000000000000000..3dc8c3decd5b80f01e0cd75621c8b22a21b7ec7c
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/examples/state_saving.html
@@ -0,0 +1,170 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Scroller example - State saving</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.scroller.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.scroller.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		ajax:           "data/2500.txt",
+		deferRender:    true,
+		dom:            "frtiS",
+		scrollY:        200,
+		scrollCollapse: true,
+		stateSave:      true
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Scroller example <span>State saving</span></h1>
+
+			<div class="info">
+				<p>Scroller will automatically integrate with DataTables in order to save the scrolling position of the
+				table, if state saving is enabled in the DataTable (<a href=
+				"//datatables.net/reference/option/stateSave"><code class="option" title=
+				"DataTables initialisation option">stateSave<span>DT</span></code></a>). This example shows that in
+				practice - to demonstrate, scroll the table and then reload the page.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>ID</th>
+						<th>First name</th>
+						<th>Last name</th>
+						<th>ZIP / Post code</th>
+						<th>Country</th>
+					</tr>
+				</thead>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		ajax:           &quot;data/2500.txt&quot;,
+		deferRender:    true,
+		dom:            &quot;frtiS&quot;,
+		scrollY:        200,
+		scrollCollapse: true,
+		stateSave:      true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.scroller.js">../js/dataTables.scroller.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.scroller.css">../css/dataTables.scroller.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li class="active"><a href="./state_saving.html">State saving</a></li>
+							<li><a href="./large_js_source.html">Client-side data source (50,000 rows)</a></li>
+							<li><a href="./server-side_processing.html">Server-side processing (5,000,000
+							rows)</a></li>
+							<li><a href="./api_scrolling.html">API</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/Scroller/images/loading-background.png b/public/admin/js/DataTables/extensions/Scroller/images/loading-background.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d815070cb6ba554d18bcc36f1eebb5a2010a095
Binary files /dev/null and b/public/admin/js/DataTables/extensions/Scroller/images/loading-background.png differ
diff --git a/public/admin/js/DataTables/extensions/Scroller/js/dataTables.scroller.js b/public/admin/js/DataTables/extensions/Scroller/js/dataTables.scroller.js
new file mode 100644
index 0000000000000000000000000000000000000000..2beecdbdb8b3aa5fa1b6b09bca1eedeae5aaae55
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/js/dataTables.scroller.js
@@ -0,0 +1,1262 @@
+/*! Scroller 1.2.2
+ * ©2011-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     Scroller
+ * @description Virtual rendering for DataTables
+ * @version     1.2.2
+ * @file        dataTables.scroller.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2011-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function(window, document, undefined){
+
+
+var factory = function( $, DataTable ) {
+"use strict";
+
+/**
+ * Scroller is a virtual rendering plug-in for DataTables which allows large
+ * datasets to be drawn on screen every quickly. What the virtual rendering means
+ * is that only the visible portion of the table (and a bit to either side to make
+ * the scrolling smooth) is drawn, while the scrolling container gives the
+ * visual impression that the whole table is visible. This is done by making use
+ * of the pagination abilities of DataTables and moving the table around in the
+ * scrolling container DataTables adds to the page. The scrolling container is
+ * forced to the height it would be for the full table display using an extra
+ * element.
+ *
+ * Note that rows in the table MUST all be the same height. Information in a cell
+ * which expands on to multiple lines will cause some odd behaviour in the scrolling.
+ *
+ * Scroller is initialised by simply including the letter 'S' in the sDom for the
+ * table you want to have this feature enabled on. Note that the 'S' must come
+ * AFTER the 't' parameter in `dom`.
+ *
+ * Key features include:
+ *   <ul class="limit_length">
+ *     <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li>
+ *     <li>Full compatibility with deferred rendering in DataTables 1.9 for maximum speed</li>
+ *     <li>Display millions of rows</li>
+ *     <li>Integration with state saving in DataTables (scrolling position is saved)</li>
+ *     <li>Easy to use</li>
+ *   </ul>
+ *
+ *  @class
+ *  @constructor
+ *  @global
+ *  @param {object} oDT DataTables settings object
+ *  @param {object} [oOpts={}] Configuration object for FixedColumns. Options 
+ *    are defined by {@link Scroller.defaults}
+ *
+ *  @requires jQuery 1.7+
+ *  @requires DataTables 1.9.0+
+ *
+ *  @example
+ *    $(document).ready(function() {
+ *        $('#example').dataTable( {
+ *            "sScrollY": "200px",
+ *            "sAjaxSource": "media/dataset/large.txt",
+ *            "sDom": "frtiS",
+ *            "bDeferRender": true
+ *        } );
+ *    } );
+ */
+var Scroller = function ( oDTSettings, oOpts ) {
+	/* Sanity check - you just know it will happen */
+	if ( ! this instanceof Scroller )
+	{
+		alert( "Scroller warning: Scroller must be initialised with the 'new' keyword." );
+		return;
+	}
+
+	if ( typeof oOpts == 'undefined' )
+	{
+		oOpts = {};
+	}
+
+	/**
+	 * Settings object which contains customisable information for the Scroller instance
+	 * @namespace
+	 * @private
+	 * @extends Scroller.defaults
+	 */
+	this.s = {
+		/**
+		 * DataTables settings object
+		 *  @type     object
+		 *  @default  Passed in as first parameter to constructor
+		 */
+		"dt": oDTSettings,
+
+		/**
+		 * Pixel location of the top of the drawn table in the viewport
+		 *  @type     int
+		 *  @default  0
+		 */
+		"tableTop": 0,
+
+		/**
+		 * Pixel location of the bottom of the drawn table in the viewport
+		 *  @type     int
+		 *  @default  0
+		 */
+		"tableBottom": 0,
+
+		/**
+		 * Pixel location of the boundary for when the next data set should be loaded and drawn
+		 * when scrolling up the way.
+		 *  @type     int
+		 *  @default  0
+		 *  @private
+		 */
+		"redrawTop": 0,
+
+		/**
+		 * Pixel location of the boundary for when the next data set should be loaded and drawn
+		 * when scrolling down the way. Note that this is actually calculated as the offset from
+		 * the top.
+		 *  @type     int
+		 *  @default  0
+		 *  @private
+		 */
+		"redrawBottom": 0,
+
+		/**
+		 * Auto row height or not indicator
+		 *  @type     bool
+		 *  @default  0
+		 */
+		"autoHeight": true,
+
+		/**
+		 * Number of rows calculated as visible in the visible viewport
+		 *  @type     int
+		 *  @default  0
+		 */
+		"viewportRows": 0,
+
+		/**
+		 * setTimeout reference for state saving, used when state saving is enabled in the DataTable
+		 * and when the user scrolls the viewport in order to stop the cookie set taking too much
+		 * CPU!
+		 *  @type     int
+		 *  @default  0
+		 */
+		"stateTO": null,
+
+		/**
+		 * setTimeout reference for the redraw, used when server-side processing is enabled in the
+		 * DataTables in order to prevent DoSing the server
+		 *  @type     int
+		 *  @default  null
+		 */
+		"drawTO": null,
+
+		heights: {
+			jump: null,
+			page: null,
+			virtual: null,
+			scroll: null,
+
+			/**
+			 * Height of rows in the table
+			 *  @type     int
+			 *  @default  0
+			 */
+			row: null,
+
+			/**
+			 * Pixel height of the viewport
+			 *  @type     int
+			 *  @default  0
+			 */
+			viewport: null
+		},
+
+		topRowFloat: 0,
+		scrollDrawDiff: null,
+		loaderVisible: false
+	};
+
+	// @todo The defaults should extend a `c` property and the internal settings
+	// only held in the `s` property. At the moment they are mixed
+	this.s = $.extend( this.s, Scroller.oDefaults, oOpts );
+
+	// Workaround for row height being read from height object (see above comment)
+	this.s.heights.row = this.s.rowHeight;
+
+	/**
+	 * DOM elements used by the class instance
+	 * @private
+	 * @namespace
+	 *
+	 */
+	this.dom = {
+		"force":    document.createElement('div'),
+		"scroller": null,
+		"table":    null,
+		"loader":   null
+	};
+
+	/* Attach the instance to the DataTables instance so it can be accessed */
+	this.s.dt.oScroller = this;
+
+	/* Let's do it */
+	this._fnConstruct();
+};
+
+
+
+Scroller.prototype = /** @lends Scroller.prototype */{
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Calculate the pixel position from the top of the scrolling container for
+	 * a given row
+	 *  @param {int} iRow Row number to calculate the position of
+	 *  @returns {int} Pixels
+	 *  @example
+	 *    $(document).ready(function() {
+	 *      $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sAjaxSource": "media/dataset/large.txt",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "fnInitComplete": function (o) {
+	 *          // Find where row 25 is
+	 *          alert( o.oScroller.fnRowToPixels( 25 ) );
+	 *        }
+	 *      } );
+	 *    } );
+	 */
+	"fnRowToPixels": function ( rowIdx, intParse, virtual )
+	{
+		var pixels;
+
+		if ( virtual ) {
+			pixels = this._domain( 'virtualToPhysical', rowIdx * this.s.heights.row );
+		}
+		else {
+			var diff = rowIdx - this.s.baseRowTop;
+			pixels = this.s.baseScrollTop + (diff * this.s.heights.row);
+		}
+
+		return intParse || intParse === undefined ?
+			parseInt( pixels, 10 ) :
+			pixels;
+	},
+
+
+	/**
+	 * Calculate the row number that will be found at the given pixel position
+	 * (y-scroll).
+	 *
+	 * Please note that when the height of the full table exceeds 1 million
+	 * pixels, Scroller switches into a non-linear mode for the scrollbar to fit
+	 * all of the records into a finite area, but this function returns a linear
+	 * value (relative to the last non-linear positioning).
+	 *  @param {int} iPixels Offset from top to calculate the row number of
+	 *  @param {int} [intParse=true] If an integer value should be returned
+	 *  @param {int} [virtual=false] Perform the calculations in the virtual domain
+	 *  @returns {int} Row index
+	 *  @example
+	 *    $(document).ready(function() {
+	 *      $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sAjaxSource": "media/dataset/large.txt",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "fnInitComplete": function (o) {
+	 *          // Find what row number is at 500px
+	 *          alert( o.oScroller.fnPixelsToRow( 500 ) );
+	 *        }
+	 *      } );
+	 *    } );
+	 */
+	"fnPixelsToRow": function ( pixels, intParse, virtual )
+	{
+		var diff = pixels - this.s.baseScrollTop;
+		var row = virtual ?
+			this._domain( 'physicalToVirtual', pixels ) / this.s.heights.row :
+			( diff / this.s.heights.row ) + this.s.baseRowTop;
+
+		return intParse || intParse === undefined ?
+			parseInt( row, 10 ) :
+			row;
+	},
+
+
+	/**
+	 * Calculate the row number that will be found at the given pixel position (y-scroll)
+	 *  @param {int} iRow Row index to scroll to
+	 *  @param {bool} [bAnimate=true] Animate the transition or not
+	 *  @returns {void}
+	 *  @example
+	 *    $(document).ready(function() {
+	 *      $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sAjaxSource": "media/dataset/large.txt",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "fnInitComplete": function (o) {
+	 *          // Immediately scroll to row 1000
+	 *          o.oScroller.fnScrollToRow( 1000 );
+	 *        }
+	 *      } );
+	 *     
+	 *      // Sometime later on use the following to scroll to row 500...
+	 *          var oSettings = $('#example').dataTable().fnSettings();
+	 *      oSettings.oScroller.fnScrollToRow( 500 );
+	 *    } );
+	 */
+	"fnScrollToRow": function ( iRow, bAnimate )
+	{
+		var that = this;
+		var ani = false;
+		var px = this.fnRowToPixels( iRow );
+
+		// We need to know if the table will redraw or not before doing the
+		// scroll. If it will not redraw, then we need to use the currently
+		// displayed table, and scroll with the physical pixels. Otherwise, we
+		// need to calculate the table's new position from the virtual
+		// transform.
+		var preRows = ((this.s.displayBuffer-1)/2) * this.s.viewportRows;
+		var drawRow = iRow - preRows;
+		if ( drawRow < 0 ) {
+			drawRow = 0;
+		}
+
+		if ( (px > this.s.redrawBottom || px < this.s.redrawTop) && this.s.dt._iDisplayStart !== drawRow ) {
+			ani = true;
+			px = this.fnRowToPixels( iRow, false, true );
+		}
+
+		if ( typeof bAnimate == 'undefined' || bAnimate )
+		{
+			this.s.ani = ani;
+			$(this.dom.scroller).animate( {
+				"scrollTop": px
+			}, function () {
+				// This needs to happen after the animation has completed and
+				// the final scroll event fired
+				setTimeout( function () {
+					that.s.ani = false;
+				}, 25 );
+			} );
+		}
+		else
+		{
+			$(this.dom.scroller).scrollTop( px );
+		}
+	},
+
+
+	/**
+	 * Calculate and store information about how many rows are to be displayed
+	 * in the scrolling viewport, based on current dimensions in the browser's
+	 * rendering. This can be particularly useful if the table is initially
+	 * drawn in a hidden element - for example in a tab.
+	 *  @param {bool} [bRedraw=true] Redraw the table automatically after the recalculation, with
+	 *    the new dimensions forming the basis for the draw.
+	 *  @returns {void}
+	 *  @example
+	 *    $(document).ready(function() {
+	 *      // Make the example container hidden to throw off the browser's sizing
+	 *      document.getElementById('container').style.display = "none";
+	 *      var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sAjaxSource": "media/dataset/large.txt",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "fnInitComplete": function (o) {
+	 *          // Immediately scroll to row 1000
+	 *          o.oScroller.fnScrollToRow( 1000 );
+	 *        }
+	 *      } );
+	 *     
+	 *      setTimeout( function () {
+	 *        // Make the example container visible and recalculate the scroller sizes
+	 *        document.getElementById('container').style.display = "block";
+	 *        oTable.fnSettings().oScroller.fnMeasure();
+	 *      }, 3000 );
+	 */
+	"fnMeasure": function ( bRedraw )
+	{
+		if ( this.s.autoHeight )
+		{
+			this._fnCalcRowHeight();
+		}
+
+		var heights = this.s.heights;
+
+		heights.viewport = $(this.dom.scroller).height();
+		this.s.viewportRows = parseInt( heights.viewport / heights.row, 10 )+1;
+		this.s.dt._iDisplayLength = this.s.viewportRows * this.s.displayBuffer;
+
+		if ( bRedraw === undefined || bRedraw )
+		{
+			this.s.dt.oInstance.fnDraw();
+		}
+	},
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods (they are of course public in JS, but recommended as private)
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Initialisation for Scroller
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnConstruct": function ()
+	{
+		var that = this;
+
+		/* Sanity check */
+		if ( !this.s.dt.oFeatures.bPaginate ) {
+			this.s.dt.oApi._fnLog( this.s.dt, 0, 'Pagination must be enabled for Scroller' );
+			return;
+		}
+
+		/* Insert a div element that we can use to force the DT scrolling container to
+		 * the height that would be required if the whole table was being displayed
+		 */
+		this.dom.force.style.position = "absolute";
+		this.dom.force.style.top = "0px";
+		this.dom.force.style.left = "0px";
+		this.dom.force.style.width = "1px";
+
+		this.dom.scroller = $('div.'+this.s.dt.oClasses.sScrollBody, this.s.dt.nTableWrapper)[0];
+		this.dom.scroller.appendChild( this.dom.force );
+		this.dom.scroller.style.position = "relative";
+
+		this.dom.table = $('>table', this.dom.scroller)[0];
+		this.dom.table.style.position = "absolute";
+		this.dom.table.style.top = "0px";
+		this.dom.table.style.left = "0px";
+
+		// Add class to 'announce' that we are a Scroller table
+		$(this.s.dt.nTableWrapper).addClass('DTS');
+
+		// Add a 'loading' indicator
+		if ( this.s.loadingIndicator )
+		{
+			this.dom.loader = $('<div class="DTS_Loading">'+this.s.dt.oLanguage.sLoadingRecords+'</div>')
+				.css('display', 'none');
+
+			$(this.dom.scroller.parentNode)
+				.css('position', 'relative')
+				.append( this.dom.loader );
+		}
+
+		/* Initial size calculations */
+		if ( this.s.heights.row && this.s.heights.row != 'auto' )
+		{
+			this.s.autoHeight = false;
+		}
+		this.fnMeasure( false );
+
+		/* Scrolling callback to see if a page change is needed - use a throttled
+		 * function for the save save callback so we aren't hitting it on every
+		 * scroll
+		 */
+		this.s.ingnoreScroll = true;
+		this.s.stateSaveThrottle = this.s.dt.oApi._fnThrottle( function () {
+			that.s.dt.oApi._fnSaveState( that.s.dt );
+		}, 500 );
+		$(this.dom.scroller).on( 'scroll.DTS', function (e) {
+			that._fnScroll.call( that );
+		} );
+
+		/* In iOS we catch the touchstart event in case the user tries to scroll
+		 * while the display is already scrolling
+		 */
+		$(this.dom.scroller).on('touchstart.DTS', function () {
+			that._fnScroll.call( that );
+		} );
+
+		/* Update the scroller when the DataTable is redrawn */
+		this.s.dt.aoDrawCallback.push( {
+			"fn": function () {
+				if ( that.s.dt.bInitialised ) {
+					that._fnDrawCallback.call( that );
+				}
+			},
+			"sName": "Scroller"
+		} );
+
+		/* On resize, update the information element, since the number of rows shown might change */
+		$(window).on( 'resize.DTS', function () {
+			that.fnMeasure( false );
+			that._fnInfo();
+		} );
+
+		/* Add a state saving parameter to the DT state saving so we can restore the exact
+		 * position of the scrolling
+		 */
+		var initialStateSave = true;
+		this.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) {
+			/* Set iScroller to saved scroll position on initialization.
+			 */
+			if(initialStateSave && that.s.dt.oLoadedState){
+				oData.iScroller = that.s.dt.oLoadedState.iScroller;
+				oData.iScrollerTopRow = that.s.dt.oLoadedState.iScrollerTopRow;
+				initialStateSave = false;
+			} else {
+				oData.iScroller = that.dom.scroller.scrollTop;
+				oData.iScrollerTopRow = that.s.topRowFloat;
+			}
+		}, "Scroller_State" );
+
+		if ( this.s.dt.oLoadedState ) {
+			this.s.topRowFloat = this.s.dt.oLoadedState.iScrollerTopRow || 0;
+		}
+
+		/* Destructor */
+		this.s.dt.aoDestroyCallback.push( {
+			"sName": "Scroller",
+			"fn": function () {
+				$(window).off( 'resize.DTS' );
+				$(that.dom.scroller).off('touchstart.DTS scroll.DTS');
+				$(that.s.dt.nTableWrapper).removeClass('DTS');
+				$('div.DTS_Loading', that.dom.scroller.parentNode).remove();
+
+				that.dom.table.style.position = "";
+				that.dom.table.style.top = "";
+				that.dom.table.style.left = "";
+			}
+		} );
+	},
+
+
+	/**
+	 * Scrolling function - fired whenever the scrolling position is changed.
+	 * This method needs to use the stored values to see if the table should be
+	 * redrawn as we are moving towards the end of the information that is
+	 * currently drawn or not. If needed, then it will redraw the table based on
+	 * the new position.
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnScroll": function ()
+	{
+		var
+			that = this,
+			heights = this.s.heights,
+			iScrollTop = this.dom.scroller.scrollTop,
+			iTopRow;
+
+		if ( this.s.skip ) {
+			return;
+		}
+
+		if ( this.s.ingnoreScroll ) {
+			return;
+		}
+
+		/* If the table has been sorted or filtered, then we use the redraw that
+		 * DataTables as done, rather than performing our own
+		 */
+		if ( this.s.dt.bFiltered || this.s.dt.bSorted ) {
+			this.s.lastScrollTop = 0;
+			return;
+		}
+
+		/* Update the table's information display for what is now in the viewport */
+		this._fnInfo();
+
+		/* We don't want to state save on every scroll event - that's heavy
+		 * handed, so use a timeout to update the state saving only when the
+		 * scrolling has finished
+		 */
+		clearTimeout( this.s.stateTO );
+		this.s.stateTO = setTimeout( function () {
+			that.s.dt.oApi._fnSaveState( that.s.dt );
+		}, 250 );
+
+		/* Check if the scroll point is outside the trigger boundary which would required
+		 * a DataTables redraw
+		 */
+		if ( iScrollTop < this.s.redrawTop || iScrollTop > this.s.redrawBottom ) {
+			var preRows = Math.ceil( ((this.s.displayBuffer-1)/2) * this.s.viewportRows );
+
+			if ( Math.abs( iScrollTop - this.s.lastScrollTop ) > heights.viewport || this.s.ani ) {
+				iTopRow = parseInt(this._domain( 'physicalToVirtual', iScrollTop ) / heights.row, 10) - preRows;
+				this.s.topRowFloat = (this._domain( 'physicalToVirtual', iScrollTop ) / heights.row);
+			}
+			else {
+				iTopRow = this.fnPixelsToRow( iScrollTop ) - preRows;
+				this.s.topRowFloat = this.fnPixelsToRow( iScrollTop, false );
+			}
+
+			if ( iTopRow <= 0 ) {
+				/* At the start of the table */
+				iTopRow = 0;
+			}
+			else if ( iTopRow + this.s.dt._iDisplayLength > this.s.dt.fnRecordsDisplay() ) {
+				/* At the end of the table */
+				iTopRow = this.s.dt.fnRecordsDisplay() - this.s.dt._iDisplayLength;
+				if ( iTopRow < 0 ) {
+					iTopRow = 0;
+				}
+			}
+			else if ( iTopRow % 2 !== 0 ) {
+				// For the row-striping classes (odd/even) we want only to start
+				// on evens otherwise the stripes will change between draws and
+				// look rubbish
+				iTopRow++;
+			}
+
+			if ( iTopRow != this.s.dt._iDisplayStart ) {
+				/* Cache the new table position for quick lookups */
+				this.s.tableTop = $(this.s.dt.nTable).offset().top;
+				this.s.tableBottom = $(this.s.dt.nTable).height() + this.s.tableTop;
+
+				var draw =  function () {
+					if ( that.s.scrollDrawReq === null ) {
+						that.s.scrollDrawReq = iScrollTop;
+					}
+
+					that.s.dt._iDisplayStart = iTopRow;
+					if ( that.s.dt.oApi._fnCalculateEnd ) { // Removed in 1.10
+						that.s.dt.oApi._fnCalculateEnd( that.s.dt );
+					}
+					that.s.dt.oApi._fnDraw( that.s.dt );
+				};
+
+				/* Do the DataTables redraw based on the calculated start point - note that when
+				 * using server-side processing we introduce a small delay to not DoS the server...
+				 */
+				if ( this.s.dt.oFeatures.bServerSide ) {
+					clearTimeout( this.s.drawTO );
+					this.s.drawTO = setTimeout( draw, this.s.serverWait );
+				}
+				else {
+					draw();
+				}
+
+				if ( this.dom.loader && ! this.s.loaderVisible ) {
+					this.dom.loader.css( 'display', 'block' );
+					this.s.loaderVisible = true;
+				}
+			}
+		}
+
+		this.s.lastScrollTop = iScrollTop;
+		this.s.stateSaveThrottle();
+	},
+
+
+	/**
+	 * Convert from one domain to another. The physical domain is the actual
+	 * pixel count on the screen, while the virtual is if we had browsers which
+	 * had scrolling containers of infinite height (i.e. the absolute value)
+	 *
+	 *  @param {string} dir Domain transform direction, `virtualToPhysical` or
+	 *    `physicalToVirtual` 
+	 *  @returns {number} Calculated transform
+	 *  @private
+	 */
+	_domain: function ( dir, val )
+	{
+		var heights = this.s.heights;
+		var coeff;
+
+		// If the virtual and physical height match, then we use a linear
+		// transform between the two, allowing the scrollbar to be linear
+		if ( heights.virtual === heights.scroll ) {
+			coeff = (heights.virtual-heights.viewport) / (heights.scroll-heights.viewport);
+
+			if ( dir === 'virtualToPhysical' ) {
+				return val / coeff;
+			}
+			else if ( dir === 'physicalToVirtual' ) {
+				return val * coeff;
+			}
+		}
+
+		// Otherwise, we want a non-linear scrollbar to take account of the
+		// redrawing regions at the start and end of the table, otherwise these
+		// can stutter badly - on large tables 30px (for example) scroll might
+		// be hundreds of rows, so the table would be redrawing every few px at
+		// the start and end. Use a simple quadratic to stop this. It does mean
+		// the scrollbar is non-linear, but with such massive data sets, the
+		// scrollbar is going to be a best guess anyway
+		var xMax = (heights.scroll - heights.viewport) / 2;
+		var yMax = (heights.virtual - heights.viewport) / 2;
+
+		coeff = yMax / ( xMax * xMax );
+
+		if ( dir === 'virtualToPhysical' ) {
+			if ( val < yMax ) {
+				return Math.pow(val / coeff, 0.5);
+			}
+			else {
+				val = (yMax*2) - val;
+				return val < 0 ?
+					heights.scroll :
+					(xMax*2) - Math.pow(val / coeff, 0.5);
+			}
+		}
+		else if ( dir === 'physicalToVirtual' ) {
+			if ( val < xMax ) {
+				return val * val * coeff;
+			}
+			else {
+				val = (xMax*2) - val;
+				return val < 0 ?
+					heights.virtual :
+					(yMax*2) - (val * val * coeff);
+			}
+		}
+	},
+
+
+	/**
+	 * Draw callback function which is fired when the DataTable is redrawn. The main function of
+	 * this method is to position the drawn table correctly the scrolling container for the rows
+	 * that is displays as a result of the scrolling position.
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnDrawCallback": function ()
+	{
+		var
+			that = this,
+			heights = this.s.heights,
+			iScrollTop = this.dom.scroller.scrollTop,
+			iActualScrollTop = iScrollTop,
+			iScrollBottom = iScrollTop + heights.viewport,
+			iTableHeight = $(this.s.dt.nTable).height(),
+			displayStart = this.s.dt._iDisplayStart,
+			displayLen = this.s.dt._iDisplayLength,
+			displayEnd = this.s.dt.fnRecordsDisplay();
+
+		// Disable the scroll event listener while we are updating the DOM
+		this.s.skip = true;
+
+		// Resize the scroll forcing element
+		this._fnScrollForce();
+
+		// Reposition the scrolling for the updated virtual position if needed
+		if ( displayStart === 0 ) {
+			// Linear calculation at the top of the table
+			iScrollTop = this.s.topRowFloat * heights.row;
+		}
+		else if ( displayStart + displayLen >= displayEnd ) {
+			// Linear calculation that the bottom as well
+			iScrollTop = heights.scroll - ((displayEnd - this.s.topRowFloat) * heights.row);
+		}
+		else {
+			// Domain scaled in the middle
+			iScrollTop = this._domain( 'virtualToPhysical', this.s.topRowFloat * heights.row );
+		}
+
+		this.dom.scroller.scrollTop = iScrollTop;
+
+		// Store positional information so positional calculations can be based
+		// upon the current table draw position
+		this.s.baseScrollTop = iScrollTop;
+		this.s.baseRowTop = this.s.topRowFloat;
+
+		// Position the table in the virtual scroller
+		var tableTop = iScrollTop - ((this.s.topRowFloat - displayStart) * heights.row);
+		if ( displayStart === 0 ) {
+			tableTop = 0;
+		}
+		else if ( displayStart + displayLen >= displayEnd ) {
+			tableTop = heights.scroll - iTableHeight;
+		}
+
+		this.dom.table.style.top = tableTop+'px';
+
+		/* Cache some information for the scroller */
+		this.s.tableTop = tableTop;
+		this.s.tableBottom = iTableHeight + this.s.tableTop;
+
+		// Calculate the boundaries for where a redraw will be triggered by the
+		// scroll event listener
+		var boundaryPx = (iScrollTop - this.s.tableTop) * this.s.boundaryScale;
+		this.s.redrawTop = iScrollTop - boundaryPx;
+		this.s.redrawBottom = iScrollTop + boundaryPx;
+
+		this.s.skip = false;
+
+		// Restore the scrolling position that was saved by DataTable's state
+		// saving Note that this is done on the second draw when data is Ajax
+		// sourced, and the first draw when DOM soured
+		if ( this.s.dt.oFeatures.bStateSave && this.s.dt.oLoadedState !== null &&
+			 typeof this.s.dt.oLoadedState.iScroller != 'undefined' )
+		{
+			// A quirk of DataTables is that the draw callback will occur on an
+			// empty set if Ajax sourced, but not if server-side processing.
+			var ajaxSourced = (this.s.dt.sAjaxSource || that.s.dt.ajax) && ! this.s.dt.oFeatures.bServerSide ?
+				true :
+				false;
+
+			if ( ( ajaxSourced && this.s.dt.iDraw == 2) ||
+			     (!ajaxSourced && this.s.dt.iDraw == 1) )
+			{
+				setTimeout( function () {
+					$(that.dom.scroller).scrollTop( that.s.dt.oLoadedState.iScroller );
+					that.s.redrawTop = that.s.dt.oLoadedState.iScroller - (heights.viewport/2);
+
+					// In order to prevent layout thrashing we need another
+					// small delay
+					setTimeout( function () {
+						that.s.ingnoreScroll = false;
+					}, 0 );
+				}, 0 );
+			}
+		}
+		else {
+			that.s.ingnoreScroll = false;
+		}
+
+		// Because of the order of the DT callbacks, the info update will
+		// take precedence over the one we want here. So a 'thread' break is
+		// needed
+		setTimeout( function () {
+			that._fnInfo.call( that );
+		}, 0 );
+
+		// Hide the loading indicator
+		if ( this.dom.loader && this.s.loaderVisible ) {
+			this.dom.loader.css( 'display', 'none' );
+			this.s.loaderVisible = false;
+		}
+	},
+
+
+	/**
+	 * Force the scrolling container to have height beyond that of just the
+	 * table that has been drawn so the user can scroll the whole data set.
+	 *
+	 * Note that if the calculated required scrolling height exceeds a maximum
+	 * value (1 million pixels - hard-coded) the forcing element will be set
+	 * only to that maximum value and virtual / physical domain transforms will
+	 * be used to allow Scroller to display tables of any number of records.
+	 *  @returns {void}
+	 *  @private
+	 */
+	_fnScrollForce: function ()
+	{
+		var heights = this.s.heights;
+		var max = 1000000;
+
+		heights.virtual = heights.row * this.s.dt.fnRecordsDisplay();
+		heights.scroll = heights.virtual;
+
+		if ( heights.scroll > max ) {
+			heights.scroll = max;
+		}
+
+		this.dom.force.style.height = heights.scroll+"px";
+	},
+
+
+	/**
+	 * Automatic calculation of table row height. This is just a little tricky here as using
+	 * initialisation DataTables has tale the table out of the document, so we need to create
+	 * a new table and insert it into the document, calculate the row height and then whip the
+	 * table out.
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnCalcRowHeight": function ()
+	{
+		var dt = this.s.dt;
+		var origTable = dt.nTable;
+		var nTable = origTable.cloneNode( false );
+		var tbody = $('<tbody/>').appendTo( nTable );
+		var container = $(
+			'<div class="'+dt.oClasses.sWrapper+' DTS">'+
+				'<div class="'+dt.oClasses.sScrollWrapper+'">'+
+					'<div class="'+dt.oClasses.sScrollBody+'"></div>'+
+				'</div>'+
+			'</div>'
+		);
+
+		// Want 3 rows in the sizing table so :first-child and :last-child
+		// CSS styles don't come into play - take the size of the middle row
+		$('tbody tr:lt(4)', origTable).clone().appendTo( tbody );
+		while( $('tr', tbody).length < 3 ) {
+			tbody.append( '<tr><td>&nbsp;</td></tr>' );
+		}
+
+		$('div.'+dt.oClasses.sScrollBody, container).append( nTable );
+
+		var appendTo;
+		if (dt._bInitComplete) {
+			appendTo = origTable.parentNode;
+		} else {
+			if (!this.s.dt.nHolding) {
+				this.s.dt.nHolding = $( '<div></div>' ).insertBefore( this.s.dt.nTable );
+			}
+			appendTo = this.s.dt.nHolding;
+		}
+
+		container.appendTo( appendTo );
+		this.s.heights.row = $('tr', tbody).eq(1).outerHeight();
+		container.remove();
+	},
+
+
+	/**
+	 * Update any information elements that are controlled by the DataTable based on the scrolling
+	 * viewport and what rows are visible in it. This function basically acts in the same way as
+	 * _fnUpdateInfo in DataTables, and effectively replaces that function.
+	 *  @returns {void}
+	 *  @private
+	 */
+	"_fnInfo": function ()
+	{
+		if ( !this.s.dt.oFeatures.bInfo )
+		{
+			return;
+		}
+
+		var
+			dt = this.s.dt,
+			language = dt.oLanguage,
+			iScrollTop = this.dom.scroller.scrollTop,
+			iStart = Math.floor( this.fnPixelsToRow(iScrollTop, false, this.s.ani)+1 ),
+			iMax = dt.fnRecordsTotal(),
+			iTotal = dt.fnRecordsDisplay(),
+			iPossibleEnd = Math.ceil( this.fnPixelsToRow(iScrollTop+this.s.heights.viewport, false, this.s.ani) ),
+			iEnd = iTotal < iPossibleEnd ? iTotal : iPossibleEnd,
+			sStart = dt.fnFormatNumber( iStart ),
+			sEnd = dt.fnFormatNumber( iEnd ),
+			sMax = dt.fnFormatNumber( iMax ),
+			sTotal = dt.fnFormatNumber( iTotal ),
+			sOut;
+
+		if ( dt.fnRecordsDisplay() === 0 &&
+			   dt.fnRecordsDisplay() == dt.fnRecordsTotal() )
+		{
+			/* Empty record set */
+			sOut = language.sInfoEmpty+ language.sInfoPostFix;
+		}
+		else if ( dt.fnRecordsDisplay() === 0 )
+		{
+			/* Empty record set after filtering */
+			sOut = language.sInfoEmpty +' '+
+				language.sInfoFiltered.replace('_MAX_', sMax)+
+					language.sInfoPostFix;
+		}
+		else if ( dt.fnRecordsDisplay() == dt.fnRecordsTotal() )
+		{
+			/* Normal record set */
+			sOut = language.sInfo.
+					replace('_START_', sStart).
+					replace('_END_',   sEnd).
+					replace('_MAX_',   sMax).
+					replace('_TOTAL_', sTotal)+
+				language.sInfoPostFix;
+		}
+		else
+		{
+			/* Record set after filtering */
+			sOut = language.sInfo.
+					replace('_START_', sStart).
+					replace('_END_',   sEnd).
+					replace('_MAX_',   sMax).
+					replace('_TOTAL_', sTotal) +' '+
+				language.sInfoFiltered.replace(
+					'_MAX_',
+					dt.fnFormatNumber(dt.fnRecordsTotal())
+				)+
+				language.sInfoPostFix;
+		}
+
+		var callback = language.fnInfoCallback;
+		if ( callback ) {
+			sOut = callback.call( dt.oInstance,
+				dt, iStart, iEnd, iMax, iTotal, sOut
+			);
+		}
+
+		var n = dt.aanFeatures.i;
+		if ( typeof n != 'undefined' )
+		{
+			for ( var i=0, iLen=n.length ; i<iLen ; i++ )
+			{
+				$(n[i]).html( sOut );
+			}
+		}
+	}
+};
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Statics
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * Scroller default settings for initialisation
+ *  @namespace
+ *  @name Scroller.defaults
+ *  @static
+ */
+Scroller.defaults = /** @lends Scroller.defaults */{
+	/**
+	 * Indicate if Scroller show show trace information on the console or not. This can be
+	 * useful when debugging Scroller or if just curious as to what it is doing, but should
+	 * be turned off for production.
+	 *  @type     bool
+	 *  @default  false
+	 *  @static
+	 *  @example
+	 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "trace": true
+	 *        }
+	 *    } );
+	 */
+	"trace": false,
+
+	/**
+	 * Scroller will attempt to automatically calculate the height of rows for it's internal
+	 * calculations. However the height that is used can be overridden using this parameter.
+	 *  @type     int|string
+	 *  @default  auto
+	 *  @static
+	 *  @example
+	 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "rowHeight": 30
+	 *        }
+	 *    } );
+	 */
+	"rowHeight": "auto",
+
+	/**
+	 * When using server-side processing, Scroller will wait a small amount of time to allow
+	 * the scrolling to finish before requesting more data from the server. This prevents
+	 * you from DoSing your own server! The wait time can be configured by this parameter.
+	 *  @type     int
+	 *  @default  200
+	 *  @static
+	 *  @example
+	 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "serverWait": 100
+	 *        }
+	 *    } );
+	 */
+	"serverWait": 200,
+
+	/**
+	 * The display buffer is what Scroller uses to calculate how many rows it should pre-fetch
+	 * for scrolling. Scroller automatically adjusts DataTables' display length to pre-fetch
+	 * rows that will be shown in "near scrolling" (i.e. just beyond the current display area).
+	 * The value is based upon the number of rows that can be displayed in the viewport (i.e.
+	 * a value of 1), and will apply the display range to records before before and after the
+	 * current viewport - i.e. a factor of 3 will allow Scroller to pre-fetch 1 viewport's worth
+	 * of rows before the current viewport, the current viewport's rows and 1 viewport's worth
+	 * of rows after the current viewport. Adjusting this value can be useful for ensuring
+	 * smooth scrolling based on your data set.
+	 *  @type     int
+	 *  @default  7
+	 *  @static
+	 *  @example
+	 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "displayBuffer": 10
+	 *        }
+	 *    } );
+	 */
+	"displayBuffer": 9,
+
+	/**
+	 * Scroller uses the boundary scaling factor to decide when to redraw the table - which it
+	 * typically does before you reach the end of the currently loaded data set (in order to
+	 * allow the data to look continuous to a user scrolling through the data). If given as 0
+	 * then the table will be redrawn whenever the viewport is scrolled, while 1 would not
+	 * redraw the table until the currently loaded data has all been shown. You will want
+	 * something in the middle - the default factor of 0.5 is usually suitable.
+	 *  @type     float
+	 *  @default  0.5
+	 *  @static
+	 *  @example
+	 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "boundaryScale": 0.75
+	 *        }
+	 *    } );
+	 */
+	"boundaryScale": 0.5,
+
+	/**
+	 * Show (or not) the loading element in the background of the table. Note that you should
+	 * include the dataTables.scroller.css file for this to be displayed correctly.
+	 *  @type     boolean
+	 *  @default  false
+	 *  @static
+	 *  @example
+	 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "loadingIndicator": true
+	 *        }
+	 *    } );
+	 */
+	"loadingIndicator": false
+};
+
+Scroller.oDefaults = Scroller.defaults;
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * Scroller version
+ *  @type      String
+ *  @default   See code
+ *  @name      Scroller.version
+ *  @static
+ */
+Scroller.version = "1.2.2";
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Initialisation
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * Register a new feature with DataTables
+ */
+if ( typeof $.fn.dataTable == "function" &&
+     typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+     $.fn.dataTableExt.fnVersionCheck('1.9.0') )
+{
+	$.fn.dataTableExt.aoFeatures.push( {
+		"fnInit": function( oDTSettings ) {
+			var init = oDTSettings.oInit;
+			var opts = init.scroller || init.oScroller || {};
+			var oScroller = new Scroller( oDTSettings, opts );
+			return oScroller.dom.wrapper;
+		},
+		"cFeature": "S",
+		"sFeature": "Scroller"
+	} );
+}
+else
+{
+	alert( "Warning: Scroller requires DataTables 1.9.0 or greater - www.datatables.net/download");
+}
+
+
+// Attach Scroller to DataTables so it can be accessed as an 'extra'
+$.fn.dataTable.Scroller = Scroller;
+$.fn.DataTable.Scroller = Scroller;
+
+
+// DataTables 1.10 API method aliases
+if ( $.fn.dataTable.Api ) {
+	var Api = $.fn.dataTable.Api;
+
+	Api.register( 'scroller()', function () {
+		return this;
+	} );
+
+	Api.register( 'scroller().rowToPixels()', function ( rowIdx, intParse, virtual ) {
+		var ctx = this.context;
+
+		if ( ctx.length && ctx[0].oScroller ) {
+			return ctx[0].oScroller.fnRowToPixels( rowIdx, intParse, virtual );
+		}
+		// undefined
+	} );
+
+	Api.register( 'scroller().pixelsToRow()', function ( pixels, intParse, virtual ) {
+		var ctx = this.context;
+
+		if ( ctx.length && ctx[0].oScroller ) {
+			return ctx[0].oScroller.fnPixelsToRow( pixels, intParse, virtual );
+		}
+		// undefined
+	} );
+
+	Api.register( 'scroller().scrollToRow()', function ( row, ani ) {
+		this.iterator( 'table', function ( ctx ) {
+			if ( ctx.oScroller ) {
+				ctx.oScroller.fnScrollToRow( row, ani );
+			}
+		} );
+
+		return this;
+	} );
+
+	Api.register( 'scroller().measure()', function ( redraw ) {
+		this.iterator( 'table', function ( ctx ) {
+			if ( ctx.oScroller ) {
+				ctx.oScroller.fnMeasure( redraw );
+			}
+		} );
+
+		return this;
+	} );
+}
+
+
+return Scroller;
+}; // /factory
+
+
+// Define as an AMD module if possible
+if ( typeof define === 'function' && define.amd ) {
+	define( ['jquery', 'datatables'], factory );
+}
+else if ( typeof exports === 'object' ) {
+    // Node/CommonJS
+    factory( require('jquery'), require('datatables') );
+}
+else if ( jQuery && !jQuery.fn.dataTable.Scroller ) {
+	// Otherwise simply initialise as normal, stopping multiple evaluation
+	factory( jQuery, jQuery.fn.dataTable );
+}
+
+
+})(window, document);
+
diff --git a/public/admin/js/DataTables/extensions/Scroller/js/dataTables.scroller.min.js b/public/admin/js/DataTables/extensions/Scroller/js/dataTables.scroller.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..d7aad08b48150486d087793948ff3755eccc5415
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/Scroller/js/dataTables.scroller.min.js
@@ -0,0 +1,25 @@
+/*!
+ Scroller 1.2.2
+ ©2011-2014 SpryMedia Ltd - datatables.net/license
+*/
+(function(m,n,k){var l=function(e){var g=function(a,b){!this instanceof g?alert("Scroller warning: Scroller must be initialised with the 'new' keyword."):("undefined"==typeof b&&(b={}),this.s={dt:a,tableTop:0,tableBottom:0,redrawTop:0,redrawBottom:0,autoHeight:!0,viewportRows:0,stateTO:null,drawTO:null,heights:{jump:null,page:null,virtual:null,scroll:null,row:null,viewport:null},topRowFloat:0,scrollDrawDiff:null,loaderVisible:!1},this.s=e.extend(this.s,g.oDefaults,b),this.s.heights.row=this.s.rowHeight,
+this.dom={force:n.createElement("div"),scroller:null,table:null,loader:null},this.s.dt.oScroller=this,this._fnConstruct())};g.prototype={fnRowToPixels:function(a,b,c){a=c?this._domain("virtualToPhysical",a*this.s.heights.row):this.s.baseScrollTop+(a-this.s.baseRowTop)*this.s.heights.row;return b||b===k?parseInt(a,10):a},fnPixelsToRow:function(a,b,c){var d=a-this.s.baseScrollTop,a=c?this._domain("physicalToVirtual",a)/this.s.heights.row:d/this.s.heights.row+this.s.baseRowTop;return b||b===k?parseInt(a,
+10):a},fnScrollToRow:function(a,b){var c=this,d=!1,f=this.fnRowToPixels(a),h=a-(this.s.displayBuffer-1)/2*this.s.viewportRows;0>h&&(h=0);if((f>this.s.redrawBottom||f<this.s.redrawTop)&&this.s.dt._iDisplayStart!==h)d=!0,f=this.fnRowToPixels(a,!1,!0);"undefined"==typeof b||b?(this.s.ani=d,e(this.dom.scroller).animate({scrollTop:f},function(){setTimeout(function(){c.s.ani=!1},25)})):e(this.dom.scroller).scrollTop(f)},fnMeasure:function(a){this.s.autoHeight&&this._fnCalcRowHeight();var b=this.s.heights;
+b.viewport=e(this.dom.scroller).height();this.s.viewportRows=parseInt(b.viewport/b.row,10)+1;this.s.dt._iDisplayLength=this.s.viewportRows*this.s.displayBuffer;(a===k||a)&&this.s.dt.oInstance.fnDraw()},_fnConstruct:function(){var a=this;if(this.s.dt.oFeatures.bPaginate){this.dom.force.style.position="absolute";this.dom.force.style.top="0px";this.dom.force.style.left="0px";this.dom.force.style.width="1px";this.dom.scroller=e("div."+this.s.dt.oClasses.sScrollBody,this.s.dt.nTableWrapper)[0];this.dom.scroller.appendChild(this.dom.force);
+this.dom.scroller.style.position="relative";this.dom.table=e(">table",this.dom.scroller)[0];this.dom.table.style.position="absolute";this.dom.table.style.top="0px";this.dom.table.style.left="0px";e(this.s.dt.nTableWrapper).addClass("DTS");this.s.loadingIndicator&&(this.dom.loader=e('<div class="DTS_Loading">'+this.s.dt.oLanguage.sLoadingRecords+"</div>").css("display","none"),e(this.dom.scroller.parentNode).css("position","relative").append(this.dom.loader));this.s.heights.row&&"auto"!=this.s.heights.row&&
+(this.s.autoHeight=!1);this.fnMeasure(!1);this.s.ingnoreScroll=!0;this.s.stateSaveThrottle=this.s.dt.oApi._fnThrottle(function(){a.s.dt.oApi._fnSaveState(a.s.dt)},500);e(this.dom.scroller).on("scroll.DTS",function(){a._fnScroll.call(a)});e(this.dom.scroller).on("touchstart.DTS",function(){a._fnScroll.call(a)});this.s.dt.aoDrawCallback.push({fn:function(){a.s.dt.bInitialised&&a._fnDrawCallback.call(a)},sName:"Scroller"});e(m).on("resize.DTS",function(){a.fnMeasure(false);a._fnInfo()});var b=!0;this.s.dt.oApi._fnCallbackReg(this.s.dt,
+"aoStateSaveParams",function(c,d){if(b&&a.s.dt.oLoadedState){d.iScroller=a.s.dt.oLoadedState.iScroller;d.iScrollerTopRow=a.s.dt.oLoadedState.iScrollerTopRow;b=false}else{d.iScroller=a.dom.scroller.scrollTop;d.iScrollerTopRow=a.s.topRowFloat}},"Scroller_State");this.s.dt.oLoadedState&&(this.s.topRowFloat=this.s.dt.oLoadedState.iScrollerTopRow||0);this.s.dt.aoDestroyCallback.push({sName:"Scroller",fn:function(){e(m).off("resize.DTS");e(a.dom.scroller).off("touchstart.DTS scroll.DTS");e(a.s.dt.nTableWrapper).removeClass("DTS");
+e("div.DTS_Loading",a.dom.scroller.parentNode).remove();a.dom.table.style.position="";a.dom.table.style.top="";a.dom.table.style.left=""}})}else this.s.dt.oApi._fnLog(this.s.dt,0,"Pagination must be enabled for Scroller")},_fnScroll:function(){var a=this,b=this.s.heights,c=this.dom.scroller.scrollTop,d;if(!this.s.skip&&!this.s.ingnoreScroll)if(this.s.dt.bFiltered||this.s.dt.bSorted)this.s.lastScrollTop=0;else{this._fnInfo();clearTimeout(this.s.stateTO);this.s.stateTO=setTimeout(function(){a.s.dt.oApi._fnSaveState(a.s.dt)},
+250);if(c<this.s.redrawTop||c>this.s.redrawBottom){var f=Math.ceil((this.s.displayBuffer-1)/2*this.s.viewportRows);Math.abs(c-this.s.lastScrollTop)>b.viewport||this.s.ani?(d=parseInt(this._domain("physicalToVirtual",c)/b.row,10)-f,this.s.topRowFloat=this._domain("physicalToVirtual",c)/b.row):(d=this.fnPixelsToRow(c)-f,this.s.topRowFloat=this.fnPixelsToRow(c,!1));0>=d?d=0:d+this.s.dt._iDisplayLength>this.s.dt.fnRecordsDisplay()?(d=this.s.dt.fnRecordsDisplay()-this.s.dt._iDisplayLength,0>d&&(d=0)):
+0!==d%2&&d++;if(d!=this.s.dt._iDisplayStart&&(this.s.tableTop=e(this.s.dt.nTable).offset().top,this.s.tableBottom=e(this.s.dt.nTable).height()+this.s.tableTop,b=function(){if(a.s.scrollDrawReq===null)a.s.scrollDrawReq=c;a.s.dt._iDisplayStart=d;a.s.dt.oApi._fnCalculateEnd&&a.s.dt.oApi._fnCalculateEnd(a.s.dt);a.s.dt.oApi._fnDraw(a.s.dt)},this.s.dt.oFeatures.bServerSide?(clearTimeout(this.s.drawTO),this.s.drawTO=setTimeout(b,this.s.serverWait)):b(),this.dom.loader&&!this.s.loaderVisible))this.dom.loader.css("display",
+"block"),this.s.loaderVisible=!0}this.s.lastScrollTop=c;this.s.stateSaveThrottle()}},_domain:function(a,b){var c=this.s.heights,d;if(c.virtual===c.scroll){d=(c.virtual-c.viewport)/(c.scroll-c.viewport);if("virtualToPhysical"===a)return b/d;if("physicalToVirtual"===a)return b*d}var e=(c.scroll-c.viewport)/2,h=(c.virtual-c.viewport)/2;d=h/(e*e);if("virtualToPhysical"===a){if(b<h)return Math.pow(b/d,0.5);b=2*h-b;return 0>b?c.scroll:2*e-Math.pow(b/d,0.5)}if("physicalToVirtual"===a){if(b<e)return b*b*
+d;b=2*e-b;return 0>b?c.virtual:2*h-b*b*d}},_fnDrawCallback:function(){var a=this,b=this.s.heights,c=this.dom.scroller.scrollTop,d=e(this.s.dt.nTable).height(),f=this.s.dt._iDisplayStart,h=this.s.dt._iDisplayLength,g=this.s.dt.fnRecordsDisplay();this.s.skip=!0;this._fnScrollForce();c=0===f?this.s.topRowFloat*b.row:f+h>=g?b.scroll-(g-this.s.topRowFloat)*b.row:this._domain("virtualToPhysical",this.s.topRowFloat*b.row);this.dom.scroller.scrollTop=c;this.s.baseScrollTop=c;this.s.baseRowTop=this.s.topRowFloat;
+var j=c-(this.s.topRowFloat-f)*b.row;0===f?j=0:f+h>=g&&(j=b.scroll-d);this.dom.table.style.top=j+"px";this.s.tableTop=j;this.s.tableBottom=d+this.s.tableTop;d=(c-this.s.tableTop)*this.s.boundaryScale;this.s.redrawTop=c-d;this.s.redrawBottom=c+d;this.s.skip=!1;this.s.dt.oFeatures.bStateSave&&null!==this.s.dt.oLoadedState&&"undefined"!=typeof this.s.dt.oLoadedState.iScroller?((c=(this.s.dt.sAjaxSource||a.s.dt.ajax)&&!this.s.dt.oFeatures.bServerSide?!0:!1)&&2==this.s.dt.iDraw||!c&&1==this.s.dt.iDraw)&&
+setTimeout(function(){e(a.dom.scroller).scrollTop(a.s.dt.oLoadedState.iScroller);a.s.redrawTop=a.s.dt.oLoadedState.iScroller-b.viewport/2;setTimeout(function(){a.s.ingnoreScroll=!1},0)},0):a.s.ingnoreScroll=!1;setTimeout(function(){a._fnInfo.call(a)},0);this.dom.loader&&this.s.loaderVisible&&(this.dom.loader.css("display","none"),this.s.loaderVisible=!1)},_fnScrollForce:function(){var a=this.s.heights;a.virtual=a.row*this.s.dt.fnRecordsDisplay();a.scroll=a.virtual;1E6<a.scroll&&(a.scroll=1E6);this.dom.force.style.height=
+a.scroll+"px"},_fnCalcRowHeight:function(){var a=this.s.dt,b=a.nTable,c=b.cloneNode(!1),d=e("<tbody/>").appendTo(c),f=e('<div class="'+a.oClasses.sWrapper+' DTS"><div class="'+a.oClasses.sScrollWrapper+'"><div class="'+a.oClasses.sScrollBody+'"></div></div></div>');for(e("tbody tr:lt(4)",b).clone().appendTo(d);3>e("tr",d).length;)d.append("<tr><td>&nbsp;</td></tr>");e("div."+a.oClasses.sScrollBody,f).append(c);a._bInitComplete?a=b.parentNode:(this.s.dt.nHolding||(this.s.dt.nHolding=e("<div></div>").insertBefore(this.s.dt.nTable)),
+a=this.s.dt.nHolding);f.appendTo(a);this.s.heights.row=e("tr",d).eq(1).outerHeight();f.remove()},_fnInfo:function(){if(this.s.dt.oFeatures.bInfo){var a=this.s.dt,b=a.oLanguage,c=this.dom.scroller.scrollTop,d=Math.floor(this.fnPixelsToRow(c,!1,this.s.ani)+1),f=a.fnRecordsTotal(),h=a.fnRecordsDisplay(),c=Math.ceil(this.fnPixelsToRow(c+this.s.heights.viewport,!1,this.s.ani)),c=h<c?h:c,g=a.fnFormatNumber(d),j=a.fnFormatNumber(c),i=a.fnFormatNumber(f),k=a.fnFormatNumber(h),g=0===a.fnRecordsDisplay()&&
+a.fnRecordsDisplay()==a.fnRecordsTotal()?b.sInfoEmpty+b.sInfoPostFix:0===a.fnRecordsDisplay()?b.sInfoEmpty+" "+b.sInfoFiltered.replace("_MAX_",i)+b.sInfoPostFix:a.fnRecordsDisplay()==a.fnRecordsTotal()?b.sInfo.replace("_START_",g).replace("_END_",j).replace("_MAX_",i).replace("_TOTAL_",k)+b.sInfoPostFix:b.sInfo.replace("_START_",g).replace("_END_",j).replace("_MAX_",i).replace("_TOTAL_",k)+" "+b.sInfoFiltered.replace("_MAX_",a.fnFormatNumber(a.fnRecordsTotal()))+b.sInfoPostFix;(b=b.fnInfoCallback)&&
+(g=b.call(a.oInstance,a,d,c,f,h,g));a=a.aanFeatures.i;if("undefined"!=typeof a){d=0;for(f=a.length;d<f;d++)e(a[d]).html(g)}}}};g.defaults={trace:!1,rowHeight:"auto",serverWait:200,displayBuffer:9,boundaryScale:0.5,loadingIndicator:!1};g.oDefaults=g.defaults;g.version="1.2.2";"function"==typeof e.fn.dataTable&&"function"==typeof e.fn.dataTableExt.fnVersionCheck&&e.fn.dataTableExt.fnVersionCheck("1.9.0")?e.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInit;return(new g(a,b.scroller||
+b.oScroller||{})).dom.wrapper},cFeature:"S",sFeature:"Scroller"}):alert("Warning: Scroller requires DataTables 1.9.0 or greater - www.datatables.net/download");e.fn.dataTable.Scroller=g;e.fn.DataTable.Scroller=g;if(e.fn.dataTable.Api){var i=e.fn.dataTable.Api;i.register("scroller()",function(){return this});i.register("scroller().rowToPixels()",function(a,b,c){var d=this.context;if(d.length&&d[0].oScroller)return d[0].oScroller.fnRowToPixels(a,b,c)});i.register("scroller().pixelsToRow()",function(a,
+b,c){var d=this.context;if(d.length&&d[0].oScroller)return d[0].oScroller.fnPixelsToRow(a,b,c)});i.register("scroller().scrollToRow()",function(a,b){this.iterator("table",function(c){c.oScroller&&c.oScroller.fnScrollToRow(a,b)});return this});i.register("scroller().measure()",function(a){this.iterator("table",function(b){b.oScroller&&b.oScroller.fnMeasure(a)});return this})}return g};"function"===typeof define&&define.amd?define(["jquery","datatables"],l):"object"===typeof exports?l(require("jquery"),
+require("datatables")):jQuery&&!jQuery.fn.dataTable.Scroller&&l(jQuery,jQuery.fn.dataTable)})(window,document);
diff --git a/public/admin/js/DataTables/extensions/TableTools/Readme.txt b/public/admin/js/DataTables/extensions/TableTools/Readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..66eb26eb0f91de05de79ce37ad45740041425a48
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/Readme.txt
@@ -0,0 +1,41 @@
+# TableTools
+
+TableTools is a plug-in for the DataTables HTML table enhancer, which adds a highly customisable button toolbar to a DataTable. Key features include:
+
+* Copy to clipboard
+* Save table data as CSV, XLS or PDF files
+* Print view for clean printing
+* Row selection options
+* Easy use predefined buttons
+* Simple customisation of buttons
+* Well defined API for advanced control
+
+
+# Installation
+
+To use TableTools, first download DataTables ( http://datatables.net/download ) and place the unzipped TableTools package into a `extensions` directory in the DataTables package (in DataTables 1.9- use the `extras` directory). This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
+
+
+# Basic usage
+
+TableTools is initialised using the `T` option that it adds to DataTables' `dom` option. For example:
+
+```js
+$(document).ready( function () {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip'
+	} );
+} );
+```
+
+
+# Documentation / support
+
+* Documentation: http://datatables.net/extensions/TableTools/
+* DataTables support forums: http://datatables.net/forums
+
+
+# GitHub
+
+If you fancy getting involved with the development of TableTools and help make it better, please refer to its GitHub repo: https://github.com/DataTables/TableTools
+
diff --git a/public/admin/js/DataTables/extensions/TableTools/css/dataTables.tableTools.css b/public/admin/js/DataTables/extensions/TableTools/css/dataTables.tableTools.css
new file mode 100755
index 0000000000000000000000000000000000000000..727e1501a4f32f3d01e7469e2b9e8cdd78df02ce
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/css/dataTables.tableTools.css
@@ -0,0 +1,337 @@
+/*
+ * File:        TableTools.css
+ * Description: Styles for TableTools 2
+ * Author:      Allan Jardine (www.sprymedia.co.uk)
+ * Language:    Javascript
+ * License:     GPL v2 / 3 point BSD
+ * Project:     DataTables
+ * 
+ * Copyright 2009-2012 Allan Jardine, all rights reserved.
+ *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * CSS name space:
+ *   DTTT                  DataTables TableTools
+ *
+ * Style sheet provides:
+ *   CONTAINER             TableTools container element and styles applying to all components
+ *   BUTTON_STYLES         Action specific button styles
+ *   SELECTING             Row selection styles
+ *   COLLECTIONS           Drop down list (collection) styles
+ *   PRINTING              Print display styles
+ */
+
+
+/*
+ * CONTAINER
+ * TableTools container element and styles applying to all components
+ */
+div.DTTT_container {
+	position: relative;
+	float: right;
+	margin-bottom: 1em;
+}
+
+@media screen and (max-width: 640px) {
+	div.DTTT_container {
+		float: none !important;
+		text-align: center;
+	}
+
+	div.DTTT_container:after {
+		visibility: hidden;
+		display: block;
+		content: "";
+		clear: both;
+		height: 0;
+	}
+}
+
+
+button.DTTT_button,
+div.DTTT_button,
+a.DTTT_button {
+	position: relative;
+	display: inline-block;
+	margin-right: 3px;
+	padding: 5px 8px;
+	border: 1px solid #999;
+	cursor: pointer;
+	*cursor: hand;
+	font-size: 0.88em;
+	color: black !important;
+
+	-webkit-border-radius: 2px;
+	   -moz-border-radius: 2px;
+	    -ms-border-radius: 2px;
+	     -o-border-radius: 2px;
+	        border-radius: 2px;
+
+	-webkit-box-shadow: 1px 1px 3px #ccc;
+	   -moz-box-shadow: 1px 1px 3px #ccc;
+	    -ms-box-shadow: 1px 1px 3px #ccc;
+	     -o-box-shadow: 1px 1px 3px #ccc;
+	        box-shadow: 1px 1px 3px #ccc;
+
+	/* Generated by http://www.colorzilla.com/gradient-editor/ */
+	background: #ffffff; /* Old browsers */
+	background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
+	background:    -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
+	background:     -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
+	background:      -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
+	background:         linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
+}
+
+
+/* Buttons are cunning border-box sizing - we can't just use that for A and DIV due to IE6/7 */
+button.DTTT_button {
+	height: 30px;
+	padding: 3px 8px;
+}
+
+.DTTT_button embed { 
+	outline: none;
+}
+
+button.DTTT_button:hover,
+div.DTTT_button:hover,
+a.DTTT_button:hover {
+	border: 1px solid #666;
+	text-decoration: none !important;
+
+	-webkit-box-shadow: 1px 1px 3px #999;
+	   -moz-box-shadow: 1px 1px 3px #999;
+	    -ms-box-shadow: 1px 1px 3px #999;
+	     -o-box-shadow: 1px 1px 3px #999;
+	        box-shadow: 1px 1px 3px #999;
+
+	background: #f3f3f3; /* Old browsers */
+	background: -webkit-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Chrome10+,Safari5.1+ */
+	background:    -moz-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* FF3.6+ */
+	background:     -ms-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* IE10+ */
+	background:      -o-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Opera 11.10+ */
+	background:         linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 ); /* IE6-9 */
+}
+
+button.DTTT_disabled,
+div.DTTT_disabled,
+a.DTTT_disabled {
+	color: #999;
+	border: 1px solid #d0d0d0;
+	
+	background: #ffffff; /* Old browsers */
+	background: -webkit-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* Chrome10+,Safari5.1+ */
+	background:    -moz-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* FF3.6+ */
+	background:     -ms-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* IE10+ */
+	background:      -o-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* Opera 11.10+ */
+	background:         linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fafafa',GradientType=0 ); /* IE6-9 */
+}
+
+
+
+/*
+ * BUTTON_STYLES
+ * Action specific button styles
+ * If you want images - comment this back in
+
+a.DTTT_button_csv,
+a.DTTT_button_xls,
+a.DTTT_button_copy,
+a.DTTT_button_pdf,
+a.DTTT_button_print {
+	padding-right: 0px;
+}
+
+a.DTTT_button_csv span,
+a.DTTT_button_xls span,
+a.DTTT_button_copy span,
+a.DTTT_button_pdf span,
+a.DTTT_button_print span {
+	display: inline-block;
+	height: 24px;
+	line-height: 24px;
+	padding-right: 30px;
+}
+
+
+a.DTTT_button_csv span { background: url(../images/csv.png) no-repeat bottom right; }
+a.DTTT_button_csv:hover span { background: url(../images/csv_hover.png) no-repeat center right; }
+
+a.DTTT_button_xls span { background: url(../images/xls.png) no-repeat center right; }
+a.DTTT_button_xls:hover span { background: #f0f0f0 url(../images/xls_hover.png) no-repeat center right; }
+
+a.DTTT_button_copy span { background: url(../images/copy.png) no-repeat center right; }
+a.DTTT_button_copy:hover span { background: #f0f0f0 url(../images/copy_hover.png) no-repeat center right; }
+
+a.DTTT_button_pdf span { background: url(../images/pdf.png) no-repeat center right; }
+a.DTTT_button_pdf:hover span { background: #f0f0f0 url(../images/pdf_hover.png) no-repeat center right; }
+
+a.DTTT_button_print span { background: url(../images/print.png) no-repeat center right; }
+a.DTTT_button_print:hover span { background: #f0f0f0 url(../images/print_hover.png) no-repeat center right; }
+
+ */
+
+button.DTTT_button_collection span {
+	padding-right: 17px;
+	background: url(../images/collection.png) no-repeat center right;
+}
+
+button.DTTT_button_collection:hover span {
+	padding-right: 17px;
+	background: #f0f0f0 url(../images/collection_hover.png) no-repeat center right;
+}
+
+
+/*
+ * SELECTING
+ * Row selection styles
+ */
+table.DTTT_selectable tbody tr {
+	cursor: pointer;
+	*cursor: hand;
+}
+
+table.dataTable tr.DTTT_selected.odd {
+	background-color: #9FAFD1;
+}
+
+table.dataTable tr.DTTT_selected.odd td.sorting_1 {
+	background-color: #9FAFD1;
+}
+
+table.dataTable tr.DTTT_selected.odd td.sorting_2 {
+	background-color: #9FAFD1;
+}
+
+table.dataTable tr.DTTT_selected.odd td.sorting_3 {
+	background-color: #9FAFD1;
+}
+
+
+table.dataTable tr.DTTT_selected.even {
+	background-color: #B0BED9;
+}
+
+table.dataTable tr.DTTT_selected.even td.sorting_1 {
+	background-color: #B0BED9;
+}
+
+table.dataTable tr.DTTT_selected.even td.sorting_2 {
+	background-color: #B0BED9;
+}
+
+table.dataTable tr.DTTT_selected.even td.sorting_3 {
+	background-color: #B0BED9;
+}
+
+
+/*
+ * COLLECTIONS
+ * Drop down list (collection) styles
+ */
+
+div.DTTT_collection {
+	width: 150px;
+	padding: 8px 8px 4px 8px;
+	border: 1px solid #ccc;
+	border: 1px solid rgba( 0, 0, 0, 0.4 );
+	background-color: #f3f3f3;
+	background-color: rgba( 255, 255, 255, 0.3 );
+	overflow: hidden;
+	z-index: 2002;
+
+	-webkit-border-radius: 5px;
+	   -moz-border-radius: 5px;
+	    -ms-border-radius: 5px;
+	     -o-border-radius: 5px;
+	        border-radius: 5px;
+	
+	-webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+	   -moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+	    -ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+	     -o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+	        box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+}
+
+div.DTTT_collection_background {
+	background: transparent url(../images/background.png) repeat top left;
+	z-index: 2001;
+}
+
+div.DTTT_collection button.DTTT_button,
+div.DTTT_collection div.DTTT_button,
+div.DTTT_collection a.DTTT_button {
+	position: relative;
+	left: 0;
+	right: 0;
+
+	display: block;
+	float: none;
+	margin-bottom: 4px;
+	
+	-webkit-box-shadow: 1px 1px 3px #999;
+	   -moz-box-shadow: 1px 1px 3px #999;
+	    -ms-box-shadow: 1px 1px 3px #999;
+	     -o-box-shadow: 1px 1px 3px #999;
+	        box-shadow: 1px 1px 3px #999;
+}
+
+
+/*
+ * PRINTING
+ * Print display styles
+ */
+
+.DTTT_print_info {
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	width: 400px;
+	height: 150px;
+	margin-left: -200px;
+	margin-top: -75px;
+	text-align: center;
+	color: #333;
+	padding: 10px 30px;
+
+	background: #ffffff; /* Old browsers */
+	background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
+	background:    -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
+	background:     -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
+	background:      -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
+	background:         linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
+	
+	opacity: 0.95;
+
+	border: 1px solid black;
+	border: 1px solid rgba(0, 0, 0, 0.5);
+	
+	-webkit-border-radius: 6px;
+	   -moz-border-radius: 6px;
+	    -ms-border-radius: 6px;
+	     -o-border-radius: 6px;
+	        border-radius: 6px;
+	
+	-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+	   -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+	    -ms-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+	     -o-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+	        box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+}
+
+.DTTT_print_info h6 {
+	font-weight: normal;
+	font-size: 28px;
+	line-height: 28px;
+	margin: 1em;
+}
+
+.DTTT_print_info p {
+	font-size: 14px;
+	line-height: 20px;
+}
+
diff --git a/public/admin/js/DataTables/extensions/TableTools/css/dataTables.tableTools.min.css b/public/admin/js/DataTables/extensions/TableTools/css/dataTables.tableTools.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..6a6496aa49b1b36cd4814e682e656fe3b62f8194
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/css/dataTables.tableTools.min.css
@@ -0,0 +1 @@
+div.DTTT_container{position:relative;float:right;margin-bottom:1em}@media screen and (max-width: 640px){div.DTTT_container{float:none !important;text-align:center}div.DTTT_container:after{visibility:hidden;display:block;content:"";clear:both;height:0}}button.DTTT_button,div.DTTT_button,a.DTTT_button{position:relative;display:inline-block;margin-right:3px;padding:5px 8px;border:1px solid #999;cursor:pointer;*cursor:hand;font-size:0.88em;color:black !important;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;-ms-box-shadow:1px 1px 3px #ccc;-o-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-moz-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-ms-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-o-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 )}button.DTTT_button{height:30px;padding:3px 8px}.DTTT_button embed{outline:none}button.DTTT_button:hover,div.DTTT_button:hover,a.DTTT_button:hover{border:1px solid #666;text-decoration:none !important;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background:#f3f3f3;background:-webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 )}button.DTTT_disabled,div.DTTT_disabled,a.DTTT_disabled{color:#999;border:1px solid #d0d0d0;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:-moz-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:-ms-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:-o-linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);background:linear-gradient(top, #fff 0%, #f9f9f9 89%, #fafafa 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fafafa',GradientType=0 )}button.DTTT_button_collection span{padding-right:17px;background:url(../images/collection.png) no-repeat center right}button.DTTT_button_collection:hover span{padding-right:17px;background:#f0f0f0 url(../images/collection_hover.png) no-repeat center right}table.DTTT_selectable tbody tr{cursor:pointer;*cursor:hand}table.dataTable tr.DTTT_selected.odd{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_1{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_2{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.odd td.sorting_3{background-color:#9FAFD1}table.dataTable tr.DTTT_selected.even{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_1{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_2{background-color:#B0BED9}table.dataTable tr.DTTT_selected.even td.sorting_3{background-color:#B0BED9}div.DTTT_collection{width:150px;padding:8px 8px 4px 8px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.4);background-color:#f3f3f3;background-color:rgba(255,255,255,0.3);overflow:hidden;z-index:2002;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-moz-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-ms-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-o-box-shadow:3px 3px 5px rgba(0,0,0,0.3);box-shadow:3px 3px 5px rgba(0,0,0,0.3)}div.DTTT_collection_background{background:transparent url(../images/background.png) repeat top left;z-index:2001}div.DTTT_collection button.DTTT_button,div.DTTT_collection div.DTTT_button,div.DTTT_collection a.DTTT_button{position:relative;left:0;right:0;display:block;float:none;margin-bottom:4px;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999}.DTTT_print_info{position:fixed;top:50%;left:50%;width:400px;height:150px;margin-left:-200px;margin-top:-75px;text-align:center;color:#333;padding:10px 30px;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-moz-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-ms-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-o-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 );opacity:0.95;border:1px solid black;border:1px solid rgba(0,0,0,0.5);-webkit-border-radius:6px;-moz-border-radius:6px;-ms-border-radius:6px;-o-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.5);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.5);-ms-box-shadow:0 3px 7px rgba(0,0,0,0.5);-o-box-shadow:0 3px 7px rgba(0,0,0,0.5);box-shadow:0 3px 7px rgba(0,0,0,0.5)}.DTTT_print_info h6{font-weight:normal;font-size:28px;line-height:28px;margin:1em}.DTTT_print_info p{font-size:14px;line-height:20px}
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/ajax.html b/public/admin/js/DataTables/extensions/TableTools/examples/ajax.html
new file mode 100644
index 0000000000000000000000000000000000000000..362ce8f9c71adb018f6048c5463b791ced1cc40e
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/ajax.html
@@ -0,0 +1,202 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Ajax loaded data</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip',
+		"ajax": "../../../../examples/ajax/data/objects.txt",
+		"columns": [
+			{ "data": "name" },
+			{ "data": "position" },
+			{ "data": "office" },
+			{ "data": "extn" },
+			{ "data": "start_date" },
+			{ "data": "salary" }
+		],
+		deferRender: true
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Ajax loaded data</span></h1>
+
+			<div class="info">
+				<p>This TableTools example shows DataTables using its ability to <a href=
+				"//datatables.net/manual/data#Objects">Ajax load object based data</a> and operate in exactly the same
+				manner as when the data is read directly from the document.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip',
+		&quot;ajax&quot;: &quot;../../../../examples/ajax/data/objects.txt&quot;,
+		&quot;columns&quot;: [
+			{ &quot;data&quot;: &quot;name&quot; },
+			{ &quot;data&quot;: &quot;position&quot; },
+			{ &quot;data&quot;: &quot;office&quot; },
+			{ &quot;data&quot;: &quot;extn&quot; },
+			{ &quot;data&quot;: &quot;start_date&quot; },
+			{ &quot;data&quot;: &quot;salary&quot; }
+		],
+		deferRender: true
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li class="active"><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/alter_buttons.html b/public/admin/js/DataTables/extensions/TableTools/examples/alter_buttons.html
new file mode 100644
index 0000000000000000000000000000000000000000..4ad2961577b9abbedba70bd68778bfff74727431
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/alter_buttons.html
@@ -0,0 +1,650 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Button arrangement</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip',
+		tableTools: {
+			"aButtons": [ "copy", "print" ]
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Button arrangement</span></h1>
+
+			<div class="info">
+				<p>TableTools makes it very simple to arrange the buttons in the toolbar as you see fit. Using the
+				<code>aButtons</code> parameter you can use any of the <a href=
+				"http://datatables.net/extensions/tabletools/buttons">predefined buttons</a> or <a href=
+				"http://datatables.net/extensions/tabletools/button_options">customised buttons</a>. The example below
+				shows how TableTools can be initialised to provide only the 'copy-to-clipboard' and 'print view'
+				options (i.e. no save to local file option is available).</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip',
+		tableTools: {
+			&quot;aButtons&quot;: [ &quot;copy&quot;, &quot;print&quot; ]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li class="active"><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/bootstrap.html b/public/admin/js/DataTables/extensions/TableTools/examples/bootstrap.html
new file mode 100644
index 0000000000000000000000000000000000000000..3754c40012f1f9e8d38c06661886a07658fa7e89
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/bootstrap.html
@@ -0,0 +1,663 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Bootstrap styling</title>
+	<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
+	<link rel="stylesheet" type="text/css" href="../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	body { font-size: 140%; }
+	div.DTTT { margin-bottom: 0.5em; float: right; }
+	div.dataTables_wrapper { clear: both; }
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src=
+	"../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+	var tt = new $.fn.dataTable.TableTools( table );
+
+	$( tt.fnContainer() ).insertBefore('div.dataTables_wrapper');
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Bootstrap styling</span></h1>
+
+			<div class="info">
+				<p><a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a> is a very powerful design
+				framework for allowing you to very quickly create applications with a unified look and feel. <a href=
+				"http://datatables.net/manual/styling/bootstrap">DataTables integrates well</a> with Bootstrap, and so
+				does TableTools.</p>
+
+				<p>This example shows the default Bootstrap theme being used with a Bootstrap styled DataTable. The
+				<a href="new_init.html"><code>new</code></a> form of initialising TableTools is used here, as the
+				Bootstrap integration uses a complex <a href="//datatables.net/reference/option/dom"><code class=
+				"option" title="DataTables initialisation option">dom<span>DT</span></code></a> option (it is possible
+				to provide a custom <a href="//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> option if you want to, this is just
+				for simplicity!).</p>
+			</div>
+
+			<table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+	var tt = new $.fn.dataTable.TableTools( table );
+
+	$( tt.fnContainer() ).insertBefore('div.dataTables_wrapper');
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+						<li><a href=
+						"../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js">../../Plugins/integration/bootstrap/3/dataTables.bootstrap.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">body { font-size: 140%; }
+	div.DTTT { margin-bottom: 0.5em; float: right; }
+	div.dataTables_wrapper { clear: both; }</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css</a></li>
+						<li><a href=
+						"../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css">../../Plugins/integration/bootstrap/3/dataTables.bootstrap.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li class="active"><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/button_text.html b/public/admin/js/DataTables/extensions/TableTools/examples/button_text.html
new file mode 100644
index 0000000000000000000000000000000000000000..7518b5f60cc8f33350b37b493f1bdfe230f05f59
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/button_text.html
@@ -0,0 +1,683 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Custom button text</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		"dom": 'T<"clear">lfrtip',
+		"tableTools": {
+			"aButtons": [
+				{
+					"sExtends": "copy",
+					"sButtonText": "Copy to clipboard"
+				},
+				{
+					"sExtends": "csv",
+					"sButtonText": "Save to CSV"
+				},
+				{
+					"sExtends": "xls",
+					"oSelectorOpts": {
+						page: 'current'
+					}
+				}
+			]
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Custom button text</span></h1>
+
+			<div class="info">
+				<p>You may wish to set your own text for the buttons in the TableTools toolbar, rather than relying on
+				the default built-in text. This is done by overriding the <code>sButtonText</code> parameter of
+				whatever button you wish to alter. The way TableTools allows you to alter a predefined button is by
+				'extending' it (using the <code>sExtends</code> parameter) and then setting the overriding
+				parameter.</p>
+
+				<p>A full list of the parameters which can be used is <a href=
+				"http://datatables.net/extensions/tabletools/button_options">available on the DataTables.net
+				web-site</a>. This example shows how to set the button text as required.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		&quot;dom&quot;: 'T&lt;&quot;clear&quot;&gt;lfrtip',
+		&quot;tableTools&quot;: {
+			&quot;aButtons&quot;: [
+				{
+					&quot;sExtends&quot;: &quot;copy&quot;,
+					&quot;sButtonText&quot;: &quot;Copy to clipboard&quot;
+				},
+				{
+					&quot;sExtends&quot;: &quot;csv&quot;,
+					&quot;sButtonText&quot;: &quot;Save to CSV&quot;
+				},
+				{
+					&quot;sExtends&quot;: &quot;xls&quot;,
+					&quot;oSelectorOpts&quot;: {
+						page: 'current'
+					}
+				}
+			]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li class="active"><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/collection.html b/public/admin/js/DataTables/extensions/TableTools/examples/collection.html
new file mode 100644
index 0000000000000000000000000000000000000000..b59613d226c931d155618c4e28ae87e2790272e3
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/collection.html
@@ -0,0 +1,667 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Button collections</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		"dom": 'T<"clear">lfrtip',
+		"tableTools": {
+			"aButtons": [
+				"copy",
+				"print",
+				{
+					"sExtends":    "collection",
+					"sButtonText": "Save",
+					"aButtons":    [ "csv", "xls", "pdf" ]
+				}
+			]
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Button collections</span></h1>
+
+			<div class="info">
+				<p>TableTools provides the ability to group buttons into a hidden drop down list, which is activated by
+				clicking on a top-level button. This is achieved by extending the 'collection' predefined button type
+				and setting it's <code>aButtons</code> parameter with the same options as the top level buttons (note
+				that you cannot currently use a collection within a collection).</p>
+
+				<p>The example below shows the file save buttons grouped into a collection, while the copy and print
+				buttons are left on the top level.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		&quot;dom&quot;: 'T&lt;&quot;clear&quot;&gt;lfrtip',
+		&quot;tableTools&quot;: {
+			&quot;aButtons&quot;: [
+				&quot;copy&quot;,
+				&quot;print&quot;,
+				{
+					&quot;sExtends&quot;:    &quot;collection&quot;,
+					&quot;sButtonText&quot;: &quot;Save&quot;,
+					&quot;aButtons&quot;:    [ &quot;csv&quot;, &quot;xls&quot;, &quot;pdf&quot; ]
+				}
+			]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li class="active"><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/defaults.html b/public/admin/js/DataTables/extensions/TableTools/examples/defaults.html
new file mode 100644
index 0000000000000000000000000000000000000000..b1f7559724ac3285acfe4b19832508d952108ebc
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/defaults.html
@@ -0,0 +1,646 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Defaults</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$.fn.dataTable.TableTools.defaults.aButtons = [ "copy", "csv", "xls" ];
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip'
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Defaults</span></h1>
+
+			<div class="info">
+				<p>TableTools provides the ability to override the default initialisation parameters that are used when
+				creating a new instance. This this particularly useful if you have multiple tables which you want to
+				have the same TableTools behaviour - rather than declaring the structure multiple times, you can just
+				set the defaults once. This example shows how to alter the default buttons.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$.fn.dataTable.TableTools.defaults.aButtons = [ &quot;copy&quot;, &quot;csv&quot;, &quot;xls&quot; ];
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li class="active"><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/index.html b/public/admin/js/DataTables/extensions/TableTools/examples/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..d478861965664bcc9e5c20bfdb9077e145265d97
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/index.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+
+	<title>TableTools examples - TableTools examples</title>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>TableTools examples</span></h1>
+
+			<div class="info">
+				<p>TableTools is a plug-in for the DataTables HTML table enhancer, which adds a highly customisable
+				button toolbar to a DataTable. Key features include:</p>
+
+				<ul class="markdown">
+					<li>Copy to clipboard</li>
+					<li>Save table data as CSV, XLS or PDF files</li>
+					<li>Print view for clean printing</li>
+					<li>Row selection options</li>
+					<li>Easy use predefined buttons</li>
+					<li>Simple customisation of buttons</li>
+					<li>Well defined API for advanced control</li>
+				</ul>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/jqueryui.html b/public/admin/js/DataTables/extensions/TableTools/examples/jqueryui.html
new file mode 100644
index 0000000000000000000000000000000000000000..055502bc5e6ad762c7e8ea4402e27e4350f2eec6
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/jqueryui.html
@@ -0,0 +1,652 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - jQuery UI styling</title>
+	<link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
+	<link rel="stylesheet" type="text/css" href="../../Plugins/integration/jqueryui/dataTables.jqueryui.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src=
+	"../../Plugins/integration/jqueryui/dataTables.jqueryui.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		lengthChange: false
+	} );
+
+	var tt = new $.fn.dataTable.TableTools( table );
+	$( tt.fnContainer() ).insertBefore('div.dataTables_filter');
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>jQuery UI styling</span></h1>
+
+			<div class="info">
+				<p>This example shows the TableTools buttons being styled by jQuery UI ThemeRoller. This allows the
+				TableTools buttons to have the same look-and-feel as other buttons on your site if you are already
+				using jQuery UI.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable( {
+		lengthChange: false
+	} );
+
+	var tt = new $.fn.dataTable.TableTools( table );
+	$( tt.fnContainer() ).insertBefore('div.dataTables_filter');
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+						<li><a href=
+						"../../Plugins/integration/jqueryui/dataTables.jqueryui.js">../../Plugins/integration/jqueryui/dataTables.jqueryui.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css</a></li>
+						<li><a href=
+						"../../Plugins/integration/jqueryui/dataTables.jqueryui.css">../../Plugins/integration/jqueryui/dataTables.jqueryui.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li class="active"><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/multi_instance.html b/public/admin/js/DataTables/extensions/TableTools/examples/multi_instance.html
new file mode 100644
index 0000000000000000000000000000000000000000..4674ebddecf1bdf36e3d2521e6b49ed7984138f2
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/multi_instance.html
@@ -0,0 +1,651 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Multiple toolbars</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip<"clear spacer">T',
+		tableTools: {
+			"aButtons": [ "copy", "print" ]
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Multiple toolbars</span></h1>
+
+			<div class="info">
+				<p>Like all DataTables control elements, TableTools can have multiple instances specified in the
+				<a href="//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> parameter of DataTables. This will
+				create two TableTools toolbars next to the table, providing the same functions.</p>
+
+				<p>An example of when this might be useful is to show the toolbar both above and below the table - as
+				is done in this example.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip&lt;&quot;clear spacer&quot;&gt;T',
+		tableTools: {
+			&quot;aButtons&quot;: [ &quot;copy&quot;, &quot;print&quot; ]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li class="active"><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/multiple_tables.html b/public/admin/js/DataTables/extensions/TableTools/examples/multiple_tables.html
new file mode 100644
index 0000000000000000000000000000000000000000..a2880ff335ae48e42b8317014a4576baf55c946e
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/multiple_tables.html
@@ -0,0 +1,355 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Multiple tables</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip'
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Multiple tables</span></h1>
+
+			<div class="info">
+				<p>This example shows how multiple tables can be initialised with DataTables and TableTools in a single
+				call to the <code>$().DataTable()</code> function. Basically it works as you would expect - no special
+				considerations need be made!</p>
+			</div>
+
+			<table id="" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>$183,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<table id="" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>$103,500</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li class="active"><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/new_init.html b/public/admin/js/DataTables/extensions/TableTools/examples/new_init.html
new file mode 100644
index 0000000000000000000000000000000000000000..44c780abf24264afb3284a52165740f76550d682
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/new_init.html
@@ -0,0 +1,649 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Initialisation with `new`</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	var table = $('#example').DataTable();
+	var tt = new $.fn.dataTable.TableTools( table );
+
+	$( tt.fnContainer() ).insertAfter('div.info');
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Initialisation with `new`</span></h1>
+
+			<div class="info">
+				<p>Typically when working with TableTools, the initialisation and insertion into the DOM will be done
+				automatically by DataTables, through the use of the <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> parameter. However, it is also
+				possible to initialise TableTools manually as shown in the example below using <code>new
+				$.fn.dataTable.TableTools();</code>.</p>
+
+				<p>Once initialised you can insert the TableTools tool bar node anywhere you wish into the DOM using
+				the <code>fnContainer()</code> API method to get the node.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	var table = $('#example').DataTable();
+	var tt = new $.fn.dataTable.TableTools( table );
+
+	$( tt.fnContainer() ).insertAfter('div.info');
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li class="active"><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/pdf_message.html b/public/admin/js/DataTables/extensions/TableTools/examples/pdf_message.html
new file mode 100644
index 0000000000000000000000000000000000000000..de7cad6e9a479daa3c271a033bd5f4493b7a01f7
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/pdf_message.html
@@ -0,0 +1,667 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - PDF message</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip',
+		tableTools: {
+			"aButtons": [
+				"copy",
+				"csv",
+				"xls",
+				{
+					"sExtends": "pdf",
+					"sPdfOrientation": "landscape",
+					"sPdfMessage": "Your custom message would go here."
+				},
+				"print"
+			]
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>PDF message</span></h1>
+
+			<div class="info">
+				<p>This example shows how you can add a message to the saved PDF using the <code>sPdfMessage</code>
+				parameter. It also shows that the orientation of the output PDF can be changed to landscape which is
+				useful if you have a lot of columns.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip',
+		tableTools: {
+			&quot;aButtons&quot;: [
+				&quot;copy&quot;,
+				&quot;csv&quot;,
+				&quot;xls&quot;,
+				{
+					&quot;sExtends&quot;: &quot;pdf&quot;,
+					&quot;sPdfOrientation&quot;: &quot;landscape&quot;,
+					&quot;sPdfMessage&quot;: &quot;Your custom message would go here.&quot;
+				},
+				&quot;print&quot;
+			]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li class="active"><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/plug-in.html b/public/admin/js/DataTables/extensions/TableTools/examples/plug-in.html
new file mode 100644
index 0000000000000000000000000000000000000000..3661ed1ea90fb11b457271b4e4480ed5be5929fb
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/plug-in.html
@@ -0,0 +1,692 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Plug-in button types</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$.fn.dataTable.TableTools.buttons.copy_to_div = $.extend(
+	true,
+	$.fn.dataTable.TableTools.buttonBase,
+	{
+		"sNewLine":    "<br>",
+		"sButtonText": "Copy to element",
+		"target":      "",
+		"fnClick": function( button, conf ) {
+			$(conf.target).html( this.fnGetTableData(conf) );
+		}
+	}
+);
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip',
+		tableTools: {
+			"aButtons": [ {
+				"sExtends":    "copy_to_div",
+				"sButtonText": "Copy to div",
+				"target":      "#copy"
+			} ]
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Plug-in button types</span></h1>
+
+			<div class="info">
+				<p>This example shows now a plug-in button type can be created for TableTools. Button types are
+				attached to the <code>$.fn.dataTable.TableTools.buttons</code> object and extend
+				<code>$.fn.dataTable.TableTools.buttonBase</code>. All of the <a href=
+				"//datatables.net/extensions/tabletools/button_options">button options defined in the documentation</a>
+				are available and can be overridden as required. Finally to use the button simply include its name in
+				the <code>aButtons</code> array or use it as a button extender (<code>sExtends</code>).</p>
+
+				<p>This example shows a button which will simply get the data contents of a table and set that as the
+				contents of another element.</p>
+			</div>
+
+			<div id="copy" class="box" style="height: 100px; overflow: auto">
+				Copy output will go here
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$.fn.dataTable.TableTools.buttons.copy_to_div = $.extend(
+	true,
+	$.fn.dataTable.TableTools.buttonBase,
+	{
+		&quot;sNewLine&quot;:    &quot;&lt;br&gt;&quot;,
+		&quot;sButtonText&quot;: &quot;Copy to element&quot;,
+		&quot;target&quot;:      &quot;&quot;,
+		&quot;fnClick&quot;: function( button, conf ) {
+			$(conf.target).html( this.fnGetTableData(conf) );
+		}
+	}
+);
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip',
+		tableTools: {
+			&quot;aButtons&quot;: [ {
+				&quot;sExtends&quot;:    &quot;copy_to_div&quot;,
+				&quot;sButtonText&quot;: &quot;Copy to div&quot;,
+				&quot;target&quot;:      &quot;#copy&quot;
+			} ]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li class="active"><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/select_column.html b/public/admin/js/DataTables/extensions/TableTools/examples/select_column.html
new file mode 100644
index 0000000000000000000000000000000000000000..2fc4066b6025adbbe9143d15e04ecc230d131ccb
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/select_column.html
@@ -0,0 +1,244 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Row selection - row selector on specific cells</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href=
+	"//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	tr td:first-child {
+		text-align: center;
+	}
+
+	tr td:first-child:before {
+		content: "\f096"; /* fa-square-o */
+		font-family: FontAwesome;
+	}
+
+	tr.selected td:first-child:before {
+		content: "\f046"; /* fa-check-square-o */
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		ajax: "../../../examples/ajax/data/objects.txt",
+		columns: [
+			{ data: null, defaultContent: '', orderable: false },
+			{ data: 'name' },
+			{ data: 'position' },
+			{ data: 'office' },
+			{ data: 'extn' },
+			{ data: 'start_date' },
+			{ data: 'salary' }
+		],
+		order: [ 1, 'asc' ],
+		dom: 'T<"clear">lfrtip',
+		tableTools: {
+			sRowSelect:   'os',
+			sRowSelector: 'td:first-child',
+			aButtons:     [ 'select_all', 'select_none' ]
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Row selection - row selector on specific cells</span></h1>
+
+			<div class="info">
+				<p>By default, TableTools' row selector option will register a row selection click on any part of the
+				row. Although this is often desirable, you might wish at times to limit the row selection to just a
+				single column, or other elements in the row. This might be useful, for example, with <a href=
+				"//editor.datatables.net">Editor's</a> inline editing, so you don't select the row on click of a cell
+				that is to be edited.</p>
+
+				<p>The <code>sRowSelector</code> method provides this ability, allowing a custom jQuery selector to be
+				passed in. TableTools will use the parent row of any element that is selected by the end user.</p>
+
+				<p>In this case, the row selector is attached to the cells in the first column of the table, and
+				<a href="http://fortawesome.github.io/Font-Awesome">Font Awesome</a> is used to display a checkbox
+				indicating the selection state of the row, in addition to the row background colouring.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>
+
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		ajax: &quot;../../../examples/ajax/data/objects.txt&quot;,
+		columns: [
+			{ data: null, defaultContent: '', orderable: false },
+			{ data: 'name' },
+			{ data: 'position' },
+			{ data: 'office' },
+			{ data: 'extn' },
+			{ data: 'start_date' },
+			{ data: 'salary' }
+		],
+		order: [ 1, 'asc' ],
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip',
+		tableTools: {
+			sRowSelect:   'os',
+			sRowSelector: 'td:first-child',
+			aButtons:     [ 'select_all', 'select_none' ]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;">tr td:first-child {
+		text-align: center;
+	}
+
+	tr td:first-child:before {
+		content: &quot;\f096&quot;; /* fa-square-o */
+		font-family: FontAwesome;
+	}
+
+	tr.selected td:first-child:before {
+		content: &quot;\f046&quot;; /* fa-check-square-o */
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+						<li><a href=
+						"//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.css">//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li class="active"><a href="./select_column.html">Row selection - row selector on specific
+							cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/select_multi.html b/public/admin/js/DataTables/extensions/TableTools/examples/select_multi.html
new file mode 100644
index 0000000000000000000000000000000000000000..f68fc66f2e1547ce16920d6ac0e864de09f44555
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/select_multi.html
@@ -0,0 +1,661 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Row selection - multi-row select</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip',
+		tableTools: {
+			"sRowSelect": "multi",
+			"aButtons": [ "select_all", "select_none" ]
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Row selection - multi-row select</span></h1>
+
+			<div class="info">
+				<p>As well as providing a button toolbar, TableTools provides everything needed to have selectable rows
+				in the table. TableTools has four row selection modes of operation:</p>
+
+				<ul class="markdown">
+					<li><code>none</code> - Default, where no user row selection options are available</li>
+					<li><code>single</code> - A single row can be selected</li>
+					<li><code>multi</code> - Multiple rows can be selected simply by clicking on the rows</li>
+					<li><code>os</code> - Operating System like selection where you can use the shift and ctrl / cmd
+					keys on your keyboard to add / remove rows from the selection.</li>
+				</ul>
+
+				<p>This example shows the <code>multi</code> select option. There are also a number of <a href=
+				"http://datatables.net/extras/tabletools/buttons">pre-defined buttons</a> to provide functions such as
+				select-all and select-none, as shown in this example.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip',
+		tableTools: {
+			&quot;sRowSelect&quot;: &quot;multi&quot;,
+			&quot;aButtons&quot;: [ &quot;select_all&quot;, &quot;select_none&quot; ]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li class="active"><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/select_os.html b/public/admin/js/DataTables/extensions/TableTools/examples/select_os.html
new file mode 100644
index 0000000000000000000000000000000000000000..f345a27d55b374022512a2015e25c1202f8013f2
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/select_os.html
@@ -0,0 +1,662 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Row selection - operating system style</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip',
+		tableTools: {
+			"sRowSelect": "os",
+			"aButtons": [ "select_all", "select_none" ]
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Row selection - operating system style</span></h1>
+
+			<div class="info">
+				<p>As well as providing a button toolbar, TableTools provides everything needed to have selectable rows
+				in the table. TableTools has four row selection modes of operation:</p>
+
+				<ul class="markdown">
+					<li><code>none</code> - Default, where no user row selection options are available</li>
+					<li><code>single</code> - A single row can be selected</li>
+					<li><code>multi</code> - Multiple rows can be selected simply by clicking on the rows</li>
+					<li><code>os</code> - Operating System like selection where you can use the shift and ctrl / cmd
+					keys on your keyboard to add / remove rows from the selection.</li>
+				</ul>
+
+				<p>This example shows the <code>os</code> select option. Without keyboard interaction a single row can
+				be selected at a time, but multiple rows can be selected in a range using the shift key, while rows can
+				be added and removed from the selection using the ctrl / cmd key.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip',
+		tableTools: {
+			&quot;sRowSelect&quot;: &quot;os&quot;,
+			&quot;aButtons&quot;: [ &quot;select_all&quot;, &quot;select_none&quot; ]
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li class="active"><a href="./select_os.html">Row selection - operating system
+							style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/select_single.html b/public/admin/js/DataTables/extensions/TableTools/examples/select_single.html
new file mode 100644
index 0000000000000000000000000000000000000000..4f5a5e56ea6050b6cad1f4263fb88a91b6edfce8
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/select_single.html
@@ -0,0 +1,658 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Row selection - single row select</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip',
+		tableTools: {
+			"sRowSelect": "single"
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Row selection - single row select</span></h1>
+
+			<div class="info">
+				<p>As well as providing a button toolbar, TableTools provides everything needed to have selectable rows
+				in the table. TableTools has four row selection modes of operation:</p>
+
+				<ul class="markdown">
+					<li><code>none</code> - Default, where no user row selection options are available</li>
+					<li><code>single</code> - A single row can be selected</li>
+					<li><code>multi</code> - Multiple rows can be selected simply by clicking on the rows</li>
+					<li><code>os</code> - Operating System like selection where you can use the shift and ctrl / cmd
+					keys on your keyboard to add / remove rows from the selection.</li>
+				</ul>
+
+				<p>This example shows the <code>single</code> select option.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip',
+		tableTools: {
+			&quot;sRowSelect&quot;: &quot;single&quot;
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li class="active"><a href="./select_single.html">Row selection - single row
+							select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/simple.html b/public/admin/js/DataTables/extensions/TableTools/examples/simple.html
new file mode 100644
index 0000000000000000000000000000000000000000..6c46e7a4a507dbfb89b7d1a2c315b76d37b1226b
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/simple.html
@@ -0,0 +1,647 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Basic initialisation</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip'
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Basic initialisation</span></h1>
+
+			<div class="info">
+				<p>This example shows the basic initialisation of TableTools by simply including the <code class=
+				"string" title="String">T</code> option in DataTables' <a href=
+				"//datatables.net/reference/option/dom"><code class="option" title=
+				"DataTables initialisation option">dom<span>DT</span></code></a> parameter. This tell DataTables to
+				insert the TableTools toolbar in that location. Remember to include the Javascript and CSS source files
+				as well!</p>
+
+				<p>It is worth noting that you might need to <a href="swf_path.html">set the <code>sSwfPath</code>
+				parameter</a> to tell TableTools where to find the SWF file for copy and file save.</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip'
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li class="active"><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/examples/swf_path.html b/public/admin/js/DataTables/extensions/TableTools/examples/swf_path.html
new file mode 100644
index 0000000000000000000000000000000000000000..1833fe730e784173528c852ece86c8bb10423f32
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/examples/swf_path.html
@@ -0,0 +1,652 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>TableTools example - Setting the SWF path</title>
+	<link rel="stylesheet" type="text/css" href="../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../css/dataTables.tableTools.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../js/dataTables.tableTools.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T<"clear">lfrtip',
+		tableTools: {
+			"sSwfPath": "../swf/copy_csv_xls_pdf.swf"
+		}
+	} );
+} );
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>TableTools example <span>Setting the SWF path</span></h1>
+
+			<div class="info">
+				<p>TableTools uses a Flash SWF file to provide the ability to copy text to the system clipboard and
+				save files locally. TableTools must be able to load the SWF file in order to provide these facilities.
+				If you aren't using the same directory structure as the TableTools package, you will need to set the
+				<code>sSwfPath</code> TableTools parameter, as shown in this example.</p>
+
+				<p>Note that TableTools ships with two different SWF files - the only difference between them is that
+				one of them provides the ability to save PDF files while the other doesn't. The trade off is that the
+				PDF capable file is significantly larger in size (56K v 2K).</p>
+			</div>
+
+			<table id="example" class="display" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Office</th>
+						<th>Age</th>
+						<th>Start date</th>
+						<th>Salary</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>Edinburgh</td>
+						<td>61</td>
+						<td>2011/04/25</td>
+						<td>$320,800</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>63</td>
+						<td>2011/07/25</td>
+						<td>$170,750</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>San Francisco</td>
+						<td>66</td>
+						<td>2009/01/12</td>
+						<td>$86,000</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2012/03/29</td>
+						<td>$433,060</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>Tokyo</td>
+						<td>33</td>
+						<td>2008/11/28</td>
+						<td>$162,700</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2012/12/02</td>
+						<td>$372,000</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>San Francisco</td>
+						<td>59</td>
+						<td>2012/08/06</td>
+						<td>$137,500</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>Tokyo</td>
+						<td>55</td>
+						<td>2010/10/14</td>
+						<td>$327,900</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>San Francisco</td>
+						<td>39</td>
+						<td>2009/09/15</td>
+						<td>$205,500</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>Edinburgh</td>
+						<td>23</td>
+						<td>2008/12/13</td>
+						<td>$103,600</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>30</td>
+						<td>2008/12/19</td>
+						<td>$90,560</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>Edinburgh</td>
+						<td>22</td>
+						<td>2013/03/03</td>
+						<td>$342,000</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>San Francisco</td>
+						<td>36</td>
+						<td>2008/10/16</td>
+						<td>$470,600</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>London</td>
+						<td>43</td>
+						<td>2012/12/18</td>
+						<td>$313,500</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>19</td>
+						<td>2010/03/17</td>
+						<td>$385,750</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>London</td>
+						<td>66</td>
+						<td>2012/11/27</td>
+						<td>$198,500</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>New York</td>
+						<td>64</td>
+						<td>2010/06/09</td>
+						<td>$725,000</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>New York</td>
+						<td>59</td>
+						<td>2009/04/10</td>
+						<td>$237,500</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>41</td>
+						<td>2012/10/13</td>
+						<td>$132,000</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>Edinburgh</td>
+						<td>35</td>
+						<td>2012/09/26</td>
+						<td>$217,500</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>New York</td>
+						<td>30</td>
+						<td>2011/09/03</td>
+						<td>$345,000</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>New York</td>
+						<td>40</td>
+						<td>2009/06/25</td>
+						<td>$675,000</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>New York</td>
+						<td>21</td>
+						<td>2011/12/12</td>
+						<td>$106,450</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>Sidney</td>
+						<td>23</td>
+						<td>2010/09/20</td>
+						<td>$85,600</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2009/10/09</td>
+						<td>$1,200,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>Edinburgh</td>
+						<td>42</td>
+						<td>2010/12/22</td>
+						<td>$92,575</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>Singapore</td>
+						<td>28</td>
+						<td>2010/11/14</td>
+						<td>$357,650</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>28</td>
+						<td>2011/06/07</td>
+						<td>$206,850</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>San Francisco</td>
+						<td>48</td>
+						<td>2010/03/11</td>
+						<td>$850,000</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>Tokyo</td>
+						<td>20</td>
+						<td>2011/08/14</td>
+						<td>$163,000</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>Sidney</td>
+						<td>37</td>
+						<td>2011/06/02</td>
+						<td>$95,400</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>London</td>
+						<td>53</td>
+						<td>2009/10/22</td>
+						<td>$114,500</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>London</td>
+						<td>27</td>
+						<td>2011/05/07</td>
+						<td>$145,000</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>San Francisco</td>
+						<td>22</td>
+						<td>2008/10/26</td>
+						<td>$235,500</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>Edinburgh</td>
+						<td>46</td>
+						<td>2011/03/09</td>
+						<td>$324,050</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/12/09</td>
+						<td>$85,675</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>San Francisco</td>
+						<td>51</td>
+						<td>2008/12/16</td>
+						<td>$164,500</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>San Francisco</td>
+						<td>41</td>
+						<td>2010/02/12</td>
+						<td>$109,850</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>San Francisco</td>
+						<td>62</td>
+						<td>2009/02/14</td>
+						<td>$452,500</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>London</td>
+						<td>37</td>
+						<td>2008/12/11</td>
+						<td>$136,200</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>New York</td>
+						<td>65</td>
+						<td>2008/09/26</td>
+						<td>$645,750</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2011/02/03</td>
+						<td>$234,500</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>London</td>
+						<td>38</td>
+						<td>2011/05/03</td>
+						<td>$163,500</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>Tokyo</td>
+						<td>37</td>
+						<td>2009/08/19</td>
+						<td>$139,575</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>New York</td>
+						<td>61</td>
+						<td>2013/08/11</td>
+						<td>$98,540</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>San Francisco</td>
+						<td>47</td>
+						<td>2009/07/07</td>
+						<td>$87,500</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>Singapore</td>
+						<td>64</td>
+						<td>2012/04/09</td>
+						<td>$138,575</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>New York</td>
+						<td>63</td>
+						<td>2010/01/04</td>
+						<td>$125,250</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>San Francisco</td>
+						<td>56</td>
+						<td>2012/06/01</td>
+						<td>$115,000</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>Edinburgh</td>
+						<td>43</td>
+						<td>2013/02/01</td>
+						<td>$75,650</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>New York</td>
+						<td>46</td>
+						<td>2011/12/06</td>
+						<td>$145,600</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>London</td>
+						<td>47</td>
+						<td>2011/03/21</td>
+						<td>$356,250</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>London</td>
+						<td>21</td>
+						<td>2009/02/27</td>
+						<td>$103,500</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>San Francisco</td>
+						<td>30</td>
+						<td>2010/07/14</td>
+						<td>$86,500</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>Edinburgh</td>
+						<td>51</td>
+						<td>2008/11/13</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>Singapore</td>
+						<td>29</td>
+						<td>2011/06/27</td>
+						<td>$183,000</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>New York</td>
+						<td>27</td>
+						<td>2011/01/25</td>
+						<td>$112,000</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this
+					example:</p><code class="multiline brush: js;">$(document).ready(function() {
+	$('#example').DataTable( {
+		dom: 'T&lt;&quot;clear&quot;&gt;lfrtip',
+		tableTools: {
+			&quot;sSwfPath&quot;: &quot;../swf/copy_csv_xls_pdf.swf&quot;
+		}
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this
+					example:</p>
+
+					<ul>
+						<li><a href="../../../media/js/jquery.js">../../../media/js/jquery.js</a></li>
+						<li><a href=
+						"../../../media/js/jquery.dataTables.js">../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../js/dataTables.tableTools.js">../js/dataTables.tableTools.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by
+					DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library
+						files (below), in order to correctly display the table. The additional CSS used is shown
+						below:</p><code class="multiline brush: js;"></code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the
+					table:</p>
+
+					<ul>
+						<li><a href=
+						"../../../media/css/jquery.dataTables.css">../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../css/dataTables.tableTools.css">../css/dataTables.tableTools.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data
+					will update automatically as any additional data is loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note
+					that this is just an example script using PHP. Server-side processing scripts can be written in any
+					language, using <a href="//datatables.net/manual/server-side">the protocol described in the
+					DataTables documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="./index.html">Examples</a></h3>
+						<ul class="toc active">
+							<li><a href="./simple.html">Basic initialisation</a></li>
+							<li><a href="./plug-in.html">Plug-in button types</a></li>
+							<li><a href="./bootstrap.html">Bootstrap styling</a></li>
+							<li class="active"><a href="./swf_path.html">Setting the SWF path</a></li>
+							<li><a href="./new_init.html">Initialisation with `new`</a></li>
+							<li><a href="./defaults.html">Defaults</a></li>
+							<li><a href="./select_single.html">Row selection - single row select</a></li>
+							<li><a href="./select_multi.html">Row selection - multi-row select</a></li>
+							<li><a href="./select_os.html">Row selection - operating system style</a></li>
+							<li><a href="./select_column.html">Row selection - row selector on specific cells</a></li>
+							<li><a href="./multiple_tables.html">Multiple tables</a></li>
+							<li><a href="./multi_instance.html">Multiple toolbars</a></li>
+							<li><a href="./collection.html">Button collections</a></li>
+							<li><a href="./button_text.html">Custom button text</a></li>
+							<li><a href="./alter_buttons.html">Button arrangement</a></li>
+							<li><a href="./ajax.html">Ajax loaded data</a></li>
+							<li><a href="./pdf_message.html">PDF message</a></li>
+							<li><a href="./jqueryui.html">jQuery UI styling</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full
+					information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and
+					<a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of
+					DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href=
+					"http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2014<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>
\ No newline at end of file
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/background.png b/public/admin/js/DataTables/extensions/TableTools/images/background.png
new file mode 100644
index 0000000000000000000000000000000000000000..915efba6890c2035afba9c61626cd4038434b797
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/background.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/collection.png b/public/admin/js/DataTables/extensions/TableTools/images/collection.png
new file mode 100644
index 0000000000000000000000000000000000000000..5dd4dfdf697d1f0025bb8f101cf4acc777d0000e
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/collection.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/collection_hover.png b/public/admin/js/DataTables/extensions/TableTools/images/collection_hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..7b37b1e963e66e44905431be927cd78d82726899
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/collection_hover.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/copy.png b/public/admin/js/DataTables/extensions/TableTools/images/copy.png
new file mode 100755
index 0000000000000000000000000000000000000000..5b01ab165a9d1adeee1142b4ea5a0c47278c0689
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/copy.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/copy_hover.png b/public/admin/js/DataTables/extensions/TableTools/images/copy_hover.png
new file mode 100755
index 0000000000000000000000000000000000000000..039a7fc32b9bc90580f3c1c56471710e915cdf58
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/copy_hover.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/csv.png b/public/admin/js/DataTables/extensions/TableTools/images/csv.png
new file mode 100755
index 0000000000000000000000000000000000000000..43df1559f7cf9546065ef4864e605a834df47b51
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/csv.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/csv_hover.png b/public/admin/js/DataTables/extensions/TableTools/images/csv_hover.png
new file mode 100755
index 0000000000000000000000000000000000000000..10b34d3b90b3f7712f6de998fbc98a051b38a661
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/csv_hover.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/pdf.png b/public/admin/js/DataTables/extensions/TableTools/images/pdf.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b038d0884524f887d32a4d293b868802903992a
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/pdf.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/pdf_hover.png b/public/admin/js/DataTables/extensions/TableTools/images/pdf_hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb06855f4fc6bb57036cf61324149e3f8e27c902
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/pdf_hover.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/print.png b/public/admin/js/DataTables/extensions/TableTools/images/print.png
new file mode 100755
index 0000000000000000000000000000000000000000..2db08242a0c9a9085b274d8a02462e2c743f53da
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/print.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/print_hover.png b/public/admin/js/DataTables/extensions/TableTools/images/print_hover.png
new file mode 100755
index 0000000000000000000000000000000000000000..9808a9cc9c59c3968494faea0399864448fdb3f4
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/print_hover.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/psd/collection.psd b/public/admin/js/DataTables/extensions/TableTools/images/psd/collection.psd
new file mode 100644
index 0000000000000000000000000000000000000000..7eb7caf2cc5c98e1d9ac04de50b2009b344bbe85
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/psd/collection.psd differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/psd/copy document.psd b/public/admin/js/DataTables/extensions/TableTools/images/psd/copy document.psd
new file mode 100755
index 0000000000000000000000000000000000000000..ca207adc608751b51eb5265bda2b7392889305a3
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/psd/copy document.psd differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/psd/file_types.psd b/public/admin/js/DataTables/extensions/TableTools/images/psd/file_types.psd
new file mode 100755
index 0000000000000000000000000000000000000000..0f280ad520ae61fc8bf3f6d0781d878c28e62a73
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/psd/file_types.psd differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/psd/printer.psd b/public/admin/js/DataTables/extensions/TableTools/images/psd/printer.psd
new file mode 100755
index 0000000000000000000000000000000000000000..8c33f7aaadcb2e4932ec714f29a6717f05de2bd6
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/psd/printer.psd differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/xls.png b/public/admin/js/DataTables/extensions/TableTools/images/xls.png
new file mode 100755
index 0000000000000000000000000000000000000000..5aaf40d0e3ebe984398903d89d11cf9bc21385c0
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/xls.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/images/xls_hover.png b/public/admin/js/DataTables/extensions/TableTools/images/xls_hover.png
new file mode 100755
index 0000000000000000000000000000000000000000..5b1930afd86e7ef439026ee89e75520c086471f5
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/images/xls_hover.png differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/js/dataTables.tableTools.js b/public/admin/js/DataTables/extensions/TableTools/js/dataTables.tableTools.js
new file mode 100755
index 0000000000000000000000000000000000000000..5d3ed6fe414abae2bf5c1ee1e4e57cfe5224c5a6
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/js/dataTables.tableTools.js
@@ -0,0 +1,3165 @@
+/*! TableTools 2.2.2
+ * 2009-2014 SpryMedia Ltd - datatables.net/license
+ *
+ * ZeroClipboard 1.0.4
+ * Author: Joseph Huckaby - MIT licensed
+ */
+
+/**
+ * @summary     TableTools
+ * @description Tools and buttons for DataTables
+ * @version     2.2.2
+ * @file        dataTables.tableTools.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2009-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source file 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+
+/* Global scope for TableTools for backwards compatibility.
+ * Will be removed in 2.3
+ */
+var TableTools;
+
+(function(window, document, undefined) {
+
+
+var factory = function( $, DataTable ) {
+"use strict";
+
+
+//include ZeroClipboard.js
+/* ZeroClipboard 1.0.4
+ * Author: Joseph Huckaby
+ */
+
+var ZeroClipboard_TableTools = {
+
+	version: "1.0.4-TableTools2",
+	clients: {}, // registered upload clients on page, indexed by id
+	moviePath: '', // URL to movie
+	nextId: 1, // ID of next movie
+
+	$: function(thingy) {
+		// simple DOM lookup utility function
+		if (typeof(thingy) == 'string') {
+			thingy = document.getElementById(thingy);
+		}
+		if (!thingy.addClass) {
+			// extend element with a few useful methods
+			thingy.hide = function() { this.style.display = 'none'; };
+			thingy.show = function() { this.style.display = ''; };
+			thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
+			thingy.removeClass = function(name) {
+				this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, '');
+			};
+			thingy.hasClass = function(name) {
+				return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
+			};
+		}
+		return thingy;
+	},
+
+	setMoviePath: function(path) {
+		// set path to ZeroClipboard.swf
+		this.moviePath = path;
+	},
+
+	dispatch: function(id, eventName, args) {
+		// receive event from flash movie, send to client
+		var client = this.clients[id];
+		if (client) {
+			client.receiveEvent(eventName, args);
+		}
+	},
+
+	register: function(id, client) {
+		// register new client to receive events
+		this.clients[id] = client;
+	},
+
+	getDOMObjectPosition: function(obj) {
+		// get absolute coordinates for dom element
+		var info = {
+			left: 0,
+			top: 0,
+			width: obj.width ? obj.width : obj.offsetWidth,
+			height: obj.height ? obj.height : obj.offsetHeight
+		};
+
+		if ( obj.style.width !== "" ) {
+			info.width = obj.style.width.replace("px","");
+		}
+
+		if ( obj.style.height !== "" ) {
+			info.height = obj.style.height.replace("px","");
+		}
+
+		while (obj) {
+			info.left += obj.offsetLeft;
+			info.top += obj.offsetTop;
+			obj = obj.offsetParent;
+		}
+
+		return info;
+	},
+
+	Client: function(elem) {
+		// constructor for new simple upload client
+		this.handlers = {};
+
+		// unique ID
+		this.id = ZeroClipboard_TableTools.nextId++;
+		this.movieId = 'ZeroClipboard_TableToolsMovie_' + this.id;
+
+		// register client with singleton to receive flash events
+		ZeroClipboard_TableTools.register(this.id, this);
+
+		// create movie
+		if (elem) {
+			this.glue(elem);
+		}
+	}
+};
+
+ZeroClipboard_TableTools.Client.prototype = {
+
+	id: 0, // unique ID for us
+	ready: false, // whether movie is ready to receive events or not
+	movie: null, // reference to movie object
+	clipText: '', // text to copy to clipboard
+	fileName: '', // default file save name
+	action: 'copy', // action to perform
+	handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
+	cssEffects: true, // enable CSS mouse effects on dom container
+	handlers: null, // user event handlers
+	sized: false,
+
+	glue: function(elem, title) {
+		// glue to DOM element
+		// elem can be ID or actual DOM element object
+		this.domElement = ZeroClipboard_TableTools.$(elem);
+
+		// float just above object, or zIndex 99 if dom element isn't set
+		var zIndex = 99;
+		if (this.domElement.style.zIndex) {
+			zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
+		}
+
+		// find X/Y position of domElement
+		var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+
+		// create floating DIV above element
+		this.div = document.createElement('div');
+		var style = this.div.style;
+		style.position = 'absolute';
+		style.left = '0px';
+		style.top = '0px';
+		style.width = (box.width) + 'px';
+		style.height = box.height + 'px';
+		style.zIndex = zIndex;
+
+		if ( typeof title != "undefined" && title !== "" ) {
+			this.div.title = title;
+		}
+		if ( box.width !== 0 && box.height !== 0 ) {
+			this.sized = true;
+		}
+
+		// style.backgroundColor = '#f00'; // debug
+		if ( this.domElement ) {
+			this.domElement.appendChild(this.div);
+			this.div.innerHTML = this.getHTML( box.width, box.height ).replace(/&/g, '&amp;');
+		}
+	},
+
+	positionElement: function() {
+		var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+		var style = this.div.style;
+
+		style.position = 'absolute';
+		//style.left = (this.domElement.offsetLeft)+'px';
+		//style.top = this.domElement.offsetTop+'px';
+		style.width = box.width + 'px';
+		style.height = box.height + 'px';
+
+		if ( box.width !== 0 && box.height !== 0 ) {
+			this.sized = true;
+		} else {
+			return;
+		}
+
+		var flash = this.div.childNodes[0];
+		flash.width = box.width;
+		flash.height = box.height;
+	},
+
+	getHTML: function(width, height) {
+		// return HTML for movie
+		var html = '';
+		var flashvars = 'id=' + this.id +
+			'&width=' + width +
+			'&height=' + height;
+
+		if (navigator.userAgent.match(/MSIE/)) {
+			// IE gets an OBJECT tag
+			var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
+			html += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard_TableTools.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
+		}
+		else {
+			// all other browsers get an EMBED tag
+			html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard_TableTools.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
+		}
+		return html;
+	},
+
+	hide: function() {
+		// temporarily hide floater offscreen
+		if (this.div) {
+			this.div.style.left = '-2000px';
+		}
+	},
+
+	show: function() {
+		// show ourselves after a call to hide()
+		this.reposition();
+	},
+
+	destroy: function() {
+		// destroy control and floater
+		if (this.domElement && this.div) {
+			this.hide();
+			this.div.innerHTML = '';
+
+			var body = document.getElementsByTagName('body')[0];
+			try { body.removeChild( this.div ); } catch(e) {}
+
+			this.domElement = null;
+			this.div = null;
+		}
+	},
+
+	reposition: function(elem) {
+		// reposition our floating div, optionally to new container
+		// warning: container CANNOT change size, only position
+		if (elem) {
+			this.domElement = ZeroClipboard_TableTools.$(elem);
+			if (!this.domElement) {
+				this.hide();
+			}
+		}
+
+		if (this.domElement && this.div) {
+			var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+			var style = this.div.style;
+			style.left = '' + box.left + 'px';
+			style.top = '' + box.top + 'px';
+		}
+	},
+
+	clearText: function() {
+		// clear the text to be copy / saved
+		this.clipText = '';
+		if (this.ready) {
+			this.movie.clearText();
+		}
+	},
+
+	appendText: function(newText) {
+		// append text to that which is to be copied / saved
+		this.clipText += newText;
+		if (this.ready) { this.movie.appendText(newText) ;}
+	},
+
+	setText: function(newText) {
+		// set text to be copied to be copied / saved
+		this.clipText = newText;
+		if (this.ready) { this.movie.setText(newText) ;}
+	},
+
+	setCharSet: function(charSet) {
+		// set the character set (UTF16LE or UTF8)
+		this.charSet = charSet;
+		if (this.ready) { this.movie.setCharSet(charSet) ;}
+	},
+
+	setBomInc: function(bomInc) {
+		// set if the BOM should be included or not
+		this.incBom = bomInc;
+		if (this.ready) { this.movie.setBomInc(bomInc) ;}
+	},
+
+	setFileName: function(newText) {
+		// set the file name
+		this.fileName = newText;
+		if (this.ready) {
+			this.movie.setFileName(newText);
+		}
+	},
+
+	setAction: function(newText) {
+		// set action (save or copy)
+		this.action = newText;
+		if (this.ready) {
+			this.movie.setAction(newText);
+		}
+	},
+
+	addEventListener: function(eventName, func) {
+		// add user event listener for event
+		// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
+		eventName = eventName.toString().toLowerCase().replace(/^on/, '');
+		if (!this.handlers[eventName]) {
+			this.handlers[eventName] = [];
+		}
+		this.handlers[eventName].push(func);
+	},
+
+	setHandCursor: function(enabled) {
+		// enable hand cursor (true), or default arrow cursor (false)
+		this.handCursorEnabled = enabled;
+		if (this.ready) {
+			this.movie.setHandCursor(enabled);
+		}
+	},
+
+	setCSSEffects: function(enabled) {
+		// enable or disable CSS effects on DOM container
+		this.cssEffects = !!enabled;
+	},
+
+	receiveEvent: function(eventName, args) {
+		var self;
+
+		// receive event from flash
+		eventName = eventName.toString().toLowerCase().replace(/^on/, '');
+
+		// special behavior for certain events
+		switch (eventName) {
+			case 'load':
+				// movie claims it is ready, but in IE this isn't always the case...
+				// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
+				this.movie = document.getElementById(this.movieId);
+				if (!this.movie) {
+					self = this;
+					setTimeout( function() { self.receiveEvent('load', null); }, 1 );
+					return;
+				}
+
+				// firefox on pc needs a "kick" in order to set these in certain cases
+				if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
+					self = this;
+					setTimeout( function() { self.receiveEvent('load', null); }, 100 );
+					this.ready = true;
+					return;
+				}
+
+				this.ready = true;
+				this.movie.clearText();
+				this.movie.appendText( this.clipText );
+				this.movie.setFileName( this.fileName );
+				this.movie.setAction( this.action );
+				this.movie.setCharSet( this.charSet );
+				this.movie.setBomInc( this.incBom );
+				this.movie.setHandCursor( this.handCursorEnabled );
+				break;
+
+			case 'mouseover':
+				if (this.domElement && this.cssEffects) {
+					//this.domElement.addClass('hover');
+					if (this.recoverActive) {
+						this.domElement.addClass('active');
+					}
+				}
+				break;
+
+			case 'mouseout':
+				if (this.domElement && this.cssEffects) {
+					this.recoverActive = false;
+					if (this.domElement.hasClass('active')) {
+						this.domElement.removeClass('active');
+						this.recoverActive = true;
+					}
+					//this.domElement.removeClass('hover');
+				}
+				break;
+
+			case 'mousedown':
+				if (this.domElement && this.cssEffects) {
+					this.domElement.addClass('active');
+				}
+				break;
+
+			case 'mouseup':
+				if (this.domElement && this.cssEffects) {
+					this.domElement.removeClass('active');
+					this.recoverActive = false;
+				}
+				break;
+		} // switch eventName
+
+		if (this.handlers[eventName]) {
+			for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
+				var func = this.handlers[eventName][idx];
+
+				if (typeof(func) == 'function') {
+					// actual function reference
+					func(this, args);
+				}
+				else if ((typeof(func) == 'object') && (func.length == 2)) {
+					// PHP style object + method, i.e. [myObject, 'myMethod']
+					func[0][ func[1] ](this, args);
+				}
+				else if (typeof(func) == 'string') {
+					// name of function
+					window[func](this, args);
+				}
+			} // foreach event handler defined
+		} // user defined handler for event
+	}
+
+};
+
+// For the Flash binding to work, ZeroClipboard_TableTools must be on the global
+// object list
+window.ZeroClipboard_TableTools = ZeroClipboard_TableTools;
+//include TableTools.js
+/* TableTools
+ * 2009-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/*globals TableTools,ZeroClipboard_TableTools*/
+
+
+(function($, window, document) {
+
+/** 
+ * TableTools provides flexible buttons and other tools for a DataTables enhanced table
+ * @class TableTools
+ * @constructor
+ * @param {Object} oDT DataTables instance. When using DataTables 1.10 this can
+ *   also be a jQuery collection, jQuery selector, table node, DataTables API
+ *   instance or DataTables settings object.
+ * @param {Object} oOpts TableTools options
+ * @param {String} oOpts.sSwfPath ZeroClipboard SWF path
+ * @param {String} oOpts.sRowSelect Row selection options - 'none', 'single', 'multi' or 'os'
+ * @param {Function} oOpts.fnPreRowSelect Callback function just prior to row selection
+ * @param {Function} oOpts.fnRowSelected Callback function just after row selection
+ * @param {Function} oOpts.fnRowDeselected Callback function when row is deselected
+ * @param {Array} oOpts.aButtons List of buttons to be used
+ */
+TableTools = function( oDT, oOpts )
+{
+	/* Santiy check that we are a new instance */
+	if ( ! this instanceof TableTools )
+	{
+		alert( "Warning: TableTools must be initialised with the keyword 'new'" );
+	}
+
+	// In 1.10 we can use the API to get the settings object from a number of
+	// sources
+	var dtSettings = $.fn.dataTable.Api ?
+		new $.fn.dataTable.Api( oDT ).settings()[0] :
+		oDT.fnSettings();
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public class variables
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * @namespace Settings object which contains customisable information for TableTools instance
+	 */
+	this.s = {
+		/**
+		 * Store 'this' so the instance can be retrieved from the settings object
+		 * @property that
+		 * @type	 object
+		 * @default  this
+		 */
+		"that": this,
+
+		/** 
+		 * DataTables settings objects
+		 * @property dt
+		 * @type	 object
+		 * @default  <i>From the oDT init option</i>
+		 */
+		"dt": dtSettings,
+
+		/**
+		 * @namespace Print specific information
+		 */
+		"print": {
+			/** 
+			 * DataTables draw 'start' point before the printing display was shown
+			 *  @property saveStart
+			 *  @type	 int
+			 *  @default  -1
+			 */
+			"saveStart": -1,
+
+			/** 
+			 * DataTables draw 'length' point before the printing display was shown
+			 *  @property saveLength
+			 *  @type	 int
+			 *  @default  -1
+			 */
+			"saveLength": -1,
+
+			/** 
+			 * Page scrolling point before the printing display was shown so it can be restored
+			 *  @property saveScroll
+			 *  @type	 int
+			 *  @default  -1
+			 */
+			"saveScroll": -1,
+
+			/** 
+			 * Wrapped function to end the print display (to maintain scope)
+			 *  @property funcEnd
+			 *  @type	 Function
+			 *  @default  function () {}
+			 */
+			"funcEnd": function () {}
+		},
+
+		/**
+		 * A unique ID is assigned to each button in each instance
+		 * @property buttonCounter
+		 *  @type	 int
+		 * @default  0
+		 */
+		"buttonCounter": 0,
+
+		/**
+		 * @namespace Select rows specific information
+		 */
+		"select": {
+			/**
+			 * Select type - can be 'none', 'single' or 'multi'
+			 * @property type
+			 *  @type	 string
+			 * @default  ""
+			 */
+			"type": "",
+
+			/**
+			 * Array of nodes which are currently selected
+			 *  @property selected
+			 *  @type	 array
+			 *  @default  []
+			 */
+			"selected": [],
+
+			/**
+			 * Function to run before the selection can take place. Will cancel the select if the
+			 * function returns false
+			 *  @property preRowSelect
+			 *  @type	 Function
+			 *  @default  null
+			 */
+			"preRowSelect": null,
+
+			/**
+			 * Function to run when a row is selected
+			 *  @property postSelected
+			 *  @type	 Function
+			 *  @default  null
+			 */
+			"postSelected": null,
+
+			/**
+			 * Function to run when a row is deselected
+			 *  @property postDeselected
+			 *  @type	 Function
+			 *  @default  null
+			 */
+			"postDeselected": null,
+
+			/**
+			 * Indicate if all rows are selected (needed for server-side processing)
+			 *  @property all
+			 *  @type	 boolean
+			 *  @default  false
+			 */
+			"all": false,
+
+			/**
+			 * Class name to add to selected TR nodes
+			 *  @property selectedClass
+			 *  @type	 String
+			 *  @default  ""
+			 */
+			"selectedClass": ""
+		},
+
+		/**
+		 * Store of the user input customisation object
+		 *  @property custom
+		 *  @type	 object
+		 *  @default  {}
+		 */
+		"custom": {},
+
+		/**
+		 * SWF movie path
+		 *  @property swfPath
+		 *  @type	 string
+		 *  @default  ""
+		 */
+		"swfPath": "",
+
+		/**
+		 * Default button set
+		 *  @property buttonSet
+		 *  @type	 array
+		 *  @default  []
+		 */
+		"buttonSet": [],
+
+		/**
+		 * When there is more than one TableTools instance for a DataTable, there must be a 
+		 * master which controls events (row selection etc)
+		 *  @property master
+		 *  @type	 boolean
+		 *  @default  false
+		 */
+		"master": false,
+
+		/**
+		 * Tag names that are used for creating collections and buttons
+		 *  @namesapce
+		 */
+		"tags": {}
+	};
+
+
+	/**
+	 * @namespace Common and useful DOM elements for the class instance
+	 */
+	this.dom = {
+		/**
+		 * DIV element that is create and all TableTools buttons (and their children) put into
+		 *  @property container
+		 *  @type	 node
+		 *  @default  null
+		 */
+		"container": null,
+
+		/**
+		 * The table node to which TableTools will be applied
+		 *  @property table
+		 *  @type	 node
+		 *  @default  null
+		 */
+		"table": null,
+
+		/**
+		 * @namespace Nodes used for the print display
+		 */
+		"print": {
+			/**
+			 * Nodes which have been removed from the display by setting them to display none
+			 *  @property hidden
+			 *  @type	 array
+			 *  @default  []
+			 */
+			"hidden": [],
+
+			/**
+			 * The information display saying telling the user about the print display
+			 *  @property message
+			 *  @type	 node
+			 *  @default  null
+			 */
+			"message": null
+	  },
+
+		/**
+		 * @namespace Nodes used for a collection display. This contains the currently used collection
+		 */
+		"collection": {
+			/**
+			 * The div wrapper containing the buttons in the collection (i.e. the menu)
+			 *  @property collection
+			 *  @type	 node
+			 *  @default  null
+			 */
+			"collection": null,
+
+			/**
+			 * Background display to provide focus and capture events
+			 *  @property background
+			 *  @type	 node
+			 *  @default  null
+			 */
+			"background": null
+		}
+	};
+
+	/**
+	 * @namespace Name space for the classes that this TableTools instance will use
+	 * @extends TableTools.classes
+	 */
+	this.classes = $.extend( true, {}, TableTools.classes );
+	if ( this.s.dt.bJUI )
+	{
+		$.extend( true, this.classes, TableTools.classes_themeroller );
+	}
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public class methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Retreieve the settings object from an instance
+	 *  @method fnSettings
+	 *  @returns {object} TableTools settings object
+	 */
+	this.fnSettings = function () {
+		return this.s;
+	};
+
+
+	/* Constructor logic */
+	if ( typeof oOpts == 'undefined' )
+	{
+		oOpts = {};
+	}
+
+
+	TableTools._aInstances.push( this );
+	this._fnConstruct( oOpts );
+
+	return this;
+};
+
+
+
+TableTools.prototype = {
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Public methods
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Retreieve the settings object from an instance
+	 *  @returns {array} List of TR nodes which are currently selected
+	 *  @param {boolean} [filtered=false] Get only selected rows which are  
+	 *    available given the filtering applied to the table. By default
+	 *    this is false -  i.e. all rows, regardless of filtering are 
+	      selected.
+	 */
+	"fnGetSelected": function ( filtered )
+	{
+		var
+			out = [],
+			data = this.s.dt.aoData,
+			displayed = this.s.dt.aiDisplay,
+			i, iLen;
+
+		if ( filtered )
+		{
+			// Only consider filtered rows
+			for ( i=0, iLen=displayed.length ; i<iLen ; i++ )
+			{
+				if ( data[ displayed[i] ]._DTTT_selected )
+				{
+					out.push( data[ displayed[i] ].nTr );
+				}
+			}
+		}
+		else
+		{
+			// Use all rows
+			for ( i=0, iLen=data.length ; i<iLen ; i++ )
+			{
+				if ( data[i]._DTTT_selected )
+				{
+					out.push( data[i].nTr );
+				}
+			}
+		}
+
+		return out;
+	},
+
+
+	/**
+	 * Get the data source objects/arrays from DataTables for the selected rows (same as
+	 * fnGetSelected followed by fnGetData on each row from the table)
+	 *  @returns {array} Data from the TR nodes which are currently selected
+	 */
+	"fnGetSelectedData": function ()
+	{
+		var out = [];
+		var data=this.s.dt.aoData;
+		var i, iLen;
+
+		for ( i=0, iLen=data.length ; i<iLen ; i++ )
+		{
+			if ( data[i]._DTTT_selected )
+			{
+				out.push( this.s.dt.oInstance.fnGetData(i) );
+			}
+		}
+
+		return out;
+	},
+
+
+	/**
+	 * Get the indexes of the selected rows
+	 *  @returns {array} List of row indexes
+	 *  @param {boolean} [filtered=false] Get only selected rows which are  
+	 *    available given the filtering applied to the table. By default
+	 *    this is false -  i.e. all rows, regardless of filtering are 
+	      selected.
+	 */
+	"fnGetSelectedIndexes": function ( filtered )
+	{
+		var
+			out = [],
+			data = this.s.dt.aoData,
+			displayed = this.s.dt.aiDisplay,
+			i, iLen;
+
+		if ( filtered )
+		{
+			// Only consider filtered rows
+			for ( i=0, iLen=displayed.length ; i<iLen ; i++ )
+			{
+				if ( data[ displayed[i] ]._DTTT_selected )
+				{
+					out.push( displayed[i] );
+				}
+			}
+		}
+		else
+		{
+			// Use all rows
+			for ( i=0, iLen=data.length ; i<iLen ; i++ )
+			{
+				if ( data[i]._DTTT_selected )
+				{
+					out.push( i );
+				}
+			}
+		}
+
+		return out;
+	},
+
+
+	/**
+	 * Check to see if a current row is selected or not
+	 *  @param {Node} n TR node to check if it is currently selected or not
+	 *  @returns {Boolean} true if select, false otherwise
+	 */
+	"fnIsSelected": function ( n )
+	{
+		var pos = this.s.dt.oInstance.fnGetPosition( n );
+		return (this.s.dt.aoData[pos]._DTTT_selected===true) ? true : false;
+	},
+
+
+	/**
+	 * Select all rows in the table
+	 *  @param {boolean} [filtered=false] Select only rows which are available 
+	 *    given the filtering applied to the table. By default this is false - 
+	 *    i.e. all rows, regardless of filtering are selected.
+	 */
+	"fnSelectAll": function ( filtered )
+	{
+		this._fnRowSelect( filtered ?
+			this.s.dt.aiDisplay :
+			this.s.dt.aoData
+		);
+	},
+
+
+	/**
+	 * Deselect all rows in the table
+	 *  @param {boolean} [filtered=false] Deselect only rows which are available 
+	 *    given the filtering applied to the table. By default this is false - 
+	 *    i.e. all rows, regardless of filtering are deselected.
+	 */
+	"fnSelectNone": function ( filtered )
+	{
+		this._fnRowDeselect( this.fnGetSelectedIndexes(filtered) );
+	},
+
+
+	/**
+	 * Select row(s)
+	 *  @param {node|object|array} n The row(s) to select. Can be a single DOM
+	 *    TR node, an array of TR nodes or a jQuery object.
+	 */
+	"fnSelect": function ( n )
+	{
+		if ( this.s.select.type == "single" )
+		{
+			this.fnSelectNone();
+			this._fnRowSelect( n );
+		}
+		else
+		{
+			this._fnRowSelect( n );
+		}
+	},
+
+
+	/**
+	 * Deselect row(s)
+	 *  @param {node|object|array} n The row(s) to deselect. Can be a single DOM
+	 *    TR node, an array of TR nodes or a jQuery object.
+	 */
+	"fnDeselect": function ( n )
+	{
+		this._fnRowDeselect( n );
+	},
+
+
+	/**
+	 * Get the title of the document - useful for file names. The title is retrieved from either
+	 * the configuration object's 'title' parameter, or the HTML document title
+	 *  @param   {Object} oConfig Button configuration object
+	 *  @returns {String} Button title
+	 */
+	"fnGetTitle": function( oConfig )
+	{
+		var sTitle = "";
+		if ( typeof oConfig.sTitle != 'undefined' && oConfig.sTitle !== "" ) {
+			sTitle = oConfig.sTitle;
+		} else {
+			var anTitle = document.getElementsByTagName('title');
+			if ( anTitle.length > 0 )
+			{
+				sTitle = anTitle[0].innerHTML;
+			}
+		}
+
+		/* Strip characters which the OS will object to - checking for UTF8 support in the scripting
+		 * engine
+		 */
+		if ( "\u00A1".toString().length < 4 ) {
+			return sTitle.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, "");
+		} else {
+			return sTitle.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g, "");
+		}
+	},
+
+
+	/**
+	 * Calculate a unity array with the column width by proportion for a set of columns to be
+	 * included for a button. This is particularly useful for PDF creation, where we can use the
+	 * column widths calculated by the browser to size the columns in the PDF.
+	 *  @param   {Object} oConfig Button configuration object
+	 *  @returns {Array} Unity array of column ratios
+	 */
+	"fnCalcColRatios": function ( oConfig )
+	{
+		var
+			aoCols = this.s.dt.aoColumns,
+			aColumnsInc = this._fnColumnTargets( oConfig.mColumns ),
+			aColWidths = [],
+			iWidth = 0, iTotal = 0, i, iLen;
+
+		for ( i=0, iLen=aColumnsInc.length ; i<iLen ; i++ )
+		{
+			if ( aColumnsInc[i] )
+			{
+				iWidth = aoCols[i].nTh.offsetWidth;
+				iTotal += iWidth;
+				aColWidths.push( iWidth );
+			}
+		}
+
+		for ( i=0, iLen=aColWidths.length ; i<iLen ; i++ )
+		{
+			aColWidths[i] = aColWidths[i] / iTotal;
+		}
+
+		return aColWidths.join('\t');
+	},
+
+
+	/**
+	 * Get the information contained in a table as a string
+	 *  @param   {Object} oConfig Button configuration object
+	 *  @returns {String} Table data as a string
+	 */
+	"fnGetTableData": function ( oConfig )
+	{
+		/* In future this could be used to get data from a plain HTML source as well as DataTables */
+		if ( this.s.dt )
+		{
+			return this._fnGetDataTablesData( oConfig );
+		}
+	},
+
+
+	/**
+	 * Pass text to a flash button instance, which will be used on the button's click handler
+	 *  @param   {Object} clip Flash button object
+	 *  @param   {String} text Text to set
+	 */
+	"fnSetText": function ( clip, text )
+	{
+		this._fnFlashSetText( clip, text );
+	},
+
+
+	/**
+	 * Resize the flash elements of the buttons attached to this TableTools instance - this is
+	 * useful for when initialising TableTools when it is hidden (display:none) since sizes can't
+	 * be calculated at that time.
+	 */
+	"fnResizeButtons": function ()
+	{
+		for ( var cli in ZeroClipboard_TableTools.clients )
+		{
+			if ( cli )
+			{
+				var client = ZeroClipboard_TableTools.clients[cli];
+				if ( typeof client.domElement != 'undefined' &&
+					 client.domElement.parentNode )
+				{
+					client.positionElement();
+				}
+			}
+		}
+	},
+
+
+	/**
+	 * Check to see if any of the ZeroClipboard client's attached need to be resized
+	 */
+	"fnResizeRequired": function ()
+	{
+		for ( var cli in ZeroClipboard_TableTools.clients )
+		{
+			if ( cli )
+			{
+				var client = ZeroClipboard_TableTools.clients[cli];
+				if ( typeof client.domElement != 'undefined' &&
+					 client.domElement.parentNode == this.dom.container &&
+					 client.sized === false )
+				{
+					return true;
+				}
+			}
+		}
+		return false;
+	},
+
+
+	/**
+	 * Programmatically enable or disable the print view
+	 *  @param {boolean} [bView=true] Show the print view if true or not given. If false, then
+	 *    terminate the print view and return to normal.
+	 *  @param {object} [oConfig={}] Configuration for the print view
+	 *  @param {boolean} [oConfig.bShowAll=false] Show all rows in the table if true
+	 *  @param {string} [oConfig.sInfo] Information message, displayed as an overlay to the
+	 *    user to let them know what the print view is.
+	 *  @param {string} [oConfig.sMessage] HTML string to show at the top of the document - will
+	 *    be included in the printed document.
+	 */
+	"fnPrint": function ( bView, oConfig )
+	{
+		if ( oConfig === undefined )
+		{
+			oConfig = {};
+		}
+
+		if ( bView === undefined || bView )
+		{
+			this._fnPrintStart( oConfig );
+		}
+		else
+		{
+			this._fnPrintEnd();
+		}
+	},
+
+
+	/**
+	 * Show a message to the end user which is nicely styled
+	 *  @param {string} message The HTML string to show to the user
+	 *  @param {int} time The duration the message is to be shown on screen for (mS)
+	 */
+	"fnInfo": function ( message, time ) {
+		var info = $('<div/>')
+			.addClass( this.classes.print.info )
+			.html( message )
+			.appendTo( 'body' );
+
+		setTimeout( function() {
+			info.fadeOut( "normal", function() {
+				info.remove();
+			} );
+		}, time );
+	},
+
+
+
+	/**
+	 * Get the container element of the instance for attaching to the DOM
+	 *   @returns {node} DOM node
+	 */
+	"fnContainer": function () {
+		return this.dom.container;
+	},
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Private methods (they are of course public in JS, but recommended as private)
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+	/**
+	 * Constructor logic
+	 *  @method  _fnConstruct
+	 *  @param   {Object} oOpts Same as TableTools constructor
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnConstruct": function ( oOpts )
+	{
+		var that = this;
+
+		this._fnCustomiseSettings( oOpts );
+
+		/* Container element */
+		this.dom.container = document.createElement( this.s.tags.container );
+		this.dom.container.className = this.classes.container;
+
+		/* Row selection config */
+		if ( this.s.select.type != 'none' )
+		{
+			this._fnRowSelectConfig();
+		}
+
+		/* Buttons */
+		this._fnButtonDefinations( this.s.buttonSet, this.dom.container );
+
+		/* Destructor */
+		this.s.dt.aoDestroyCallback.push( {
+			"sName": "TableTools",
+			"fn": function () {
+				$(that.s.dt.nTBody).off( 'click.DTTT_Select', 'tr' );
+				$(that.dom.container).empty();
+
+				// Remove the instance
+				var idx = $.inArray( that, TableTools._aInstances );
+				if ( idx !== -1 ) {
+					TableTools._aInstances.splice( idx, 1 );
+				}
+			}
+		} );
+	},
+
+
+	/**
+	 * Take the user defined settings and the default settings and combine them.
+	 *  @method  _fnCustomiseSettings
+	 *  @param   {Object} oOpts Same as TableTools constructor
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnCustomiseSettings": function ( oOpts )
+	{
+		/* Is this the master control instance or not? */
+		if ( typeof this.s.dt._TableToolsInit == 'undefined' )
+		{
+			this.s.master = true;
+			this.s.dt._TableToolsInit = true;
+		}
+
+		/* We can use the table node from comparisons to group controls */
+		this.dom.table = this.s.dt.nTable;
+
+		/* Clone the defaults and then the user options */
+		this.s.custom = $.extend( {}, TableTools.DEFAULTS, oOpts );
+
+		/* Flash file location */
+		this.s.swfPath = this.s.custom.sSwfPath;
+		if ( typeof ZeroClipboard_TableTools != 'undefined' )
+		{
+			ZeroClipboard_TableTools.moviePath = this.s.swfPath;
+		}
+
+		/* Table row selecting */
+		this.s.select.type = this.s.custom.sRowSelect;
+		this.s.select.preRowSelect = this.s.custom.fnPreRowSelect;
+		this.s.select.postSelected = this.s.custom.fnRowSelected;
+		this.s.select.postDeselected = this.s.custom.fnRowDeselected;
+
+		// Backwards compatibility - allow the user to specify a custom class in the initialiser
+		if ( this.s.custom.sSelectedClass )
+		{
+			this.classes.select.row = this.s.custom.sSelectedClass;
+		}
+
+		this.s.tags = this.s.custom.oTags;
+
+		/* Button set */
+		this.s.buttonSet = this.s.custom.aButtons;
+	},
+
+
+	/**
+	 * Take the user input arrays and expand them to be fully defined, and then add them to a given
+	 * DOM element
+	 *  @method  _fnButtonDefinations
+	 *  @param {array} buttonSet Set of user defined buttons
+	 *  @param {node} wrapper Node to add the created buttons to
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnButtonDefinations": function ( buttonSet, wrapper )
+	{
+		var buttonDef;
+
+		for ( var i=0, iLen=buttonSet.length ; i<iLen ; i++ )
+		{
+			if ( typeof buttonSet[i] == "string" )
+			{
+				if ( typeof TableTools.BUTTONS[ buttonSet[i] ] == 'undefined' )
+				{
+					alert( "TableTools: Warning - unknown button type: "+buttonSet[i] );
+					continue;
+				}
+				buttonDef = $.extend( {}, TableTools.BUTTONS[ buttonSet[i] ], true );
+			}
+			else
+			{
+				if ( typeof TableTools.BUTTONS[ buttonSet[i].sExtends ] == 'undefined' )
+				{
+					alert( "TableTools: Warning - unknown button type: "+buttonSet[i].sExtends );
+					continue;
+				}
+				var o = $.extend( {}, TableTools.BUTTONS[ buttonSet[i].sExtends ], true );
+				buttonDef = $.extend( o, buttonSet[i], true );
+			}
+
+			var button = this._fnCreateButton(
+				buttonDef,
+				$(wrapper).hasClass(this.classes.collection.container)
+			);
+
+			if ( button ) {
+				wrapper.appendChild( button );
+			}
+		}
+	},
+
+
+	/**
+	 * Create and configure a TableTools button
+	 *  @method  _fnCreateButton
+	 *  @param   {Object} oConfig Button configuration object
+	 *  @returns {Node} Button element
+	 *  @private 
+	 */
+	"_fnCreateButton": function ( oConfig, bCollectionButton )
+	{
+	  var nButton = this._fnButtonBase( oConfig, bCollectionButton );
+
+		if ( oConfig.sAction.match(/flash/) )
+		{
+			if ( ! this._fnHasFlash() ) {
+				return false;
+			}
+
+			this._fnFlashConfig( nButton, oConfig );
+		}
+		else if ( oConfig.sAction == "text" )
+		{
+			this._fnTextConfig( nButton, oConfig );
+		}
+		else if ( oConfig.sAction == "div" )
+		{
+			this._fnTextConfig( nButton, oConfig );
+		}
+		else if ( oConfig.sAction == "collection" )
+		{
+			this._fnTextConfig( nButton, oConfig );
+			this._fnCollectionConfig( nButton, oConfig );
+		}
+
+		return nButton;
+	},
+
+
+	/**
+	 * Create the DOM needed for the button and apply some base properties. All buttons start here
+	 *  @method  _fnButtonBase
+	 *  @param   {o} oConfig Button configuration object
+	 *  @returns {Node} DIV element for the button
+	 *  @private
+	 */
+	"_fnButtonBase": function ( o, bCollectionButton )
+	{
+		var sTag, sLiner, sClass;
+
+		if ( bCollectionButton )
+		{
+			sTag = o.sTag && o.sTag !== "default" ? o.sTag : this.s.tags.collection.button;
+			sLiner = o.sLinerTag && o.sLinerTag !== "default" ? o.sLiner : this.s.tags.collection.liner;
+			sClass = this.classes.collection.buttons.normal;
+		}
+		else
+		{
+			sTag = o.sTag && o.sTag !== "default" ? o.sTag : this.s.tags.button;
+			sLiner = o.sLinerTag && o.sLinerTag !== "default" ? o.sLiner : this.s.tags.liner;
+			sClass = this.classes.buttons.normal;
+		}
+
+		var
+		  nButton = document.createElement( sTag ),
+		  nSpan = document.createElement( sLiner ),
+		  masterS = this._fnGetMasterSettings();
+
+		nButton.className = sClass+" "+o.sButtonClass;
+		nButton.setAttribute('id', "ToolTables_"+this.s.dt.sInstance+"_"+masterS.buttonCounter );
+		nButton.appendChild( nSpan );
+		nSpan.innerHTML = o.sButtonText;
+
+		masterS.buttonCounter++;
+
+		return nButton;
+	},
+
+
+	/**
+	 * Get the settings object for the master instance. When more than one TableTools instance is
+	 * assigned to a DataTable, only one of them can be the 'master' (for the select rows). As such,
+	 * we will typically want to interact with that master for global properties.
+	 *  @method  _fnGetMasterSettings
+	 *  @returns {Object} TableTools settings object
+	 *  @private 
+	 */
+	"_fnGetMasterSettings": function ()
+	{
+		if ( this.s.master )
+		{
+			return this.s;
+		}
+		else
+		{
+			/* Look for the master which has the same DT as this one */
+			var instances = TableTools._aInstances;
+			for ( var i=0, iLen=instances.length ; i<iLen ; i++ )
+			{
+				if ( this.dom.table == instances[i].s.dt.nTable )
+				{
+					return instances[i].s;
+				}
+			}
+		}
+	},
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Button collection functions
+	 */
+
+	/**
+	 * Create a collection button, when activated will present a drop down list of other buttons
+	 *  @param   {Node} nButton Button to use for the collection activation
+	 *  @param   {Object} oConfig Button configuration object
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnCollectionConfig": function ( nButton, oConfig )
+	{
+		var nHidden = document.createElement( this.s.tags.collection.container );
+		nHidden.style.display = "none";
+		nHidden.className = this.classes.collection.container;
+		oConfig._collection = nHidden;
+		document.body.appendChild( nHidden );
+
+		this._fnButtonDefinations( oConfig.aButtons, nHidden );
+	},
+
+
+	/**
+	 * Show a button collection
+	 *  @param   {Node} nButton Button to use for the collection
+	 *  @param   {Object} oConfig Button configuration object
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnCollectionShow": function ( nButton, oConfig )
+	{
+		var
+			that = this,
+			oPos = $(nButton).offset(),
+			nHidden = oConfig._collection,
+			iDivX = oPos.left,
+			iDivY = oPos.top + $(nButton).outerHeight(),
+			iWinHeight = $(window).height(), iDocHeight = $(document).height(),
+			iWinWidth = $(window).width(), iDocWidth = $(document).width();
+
+		nHidden.style.position = "absolute";
+		nHidden.style.left = iDivX+"px";
+		nHidden.style.top = iDivY+"px";
+		nHidden.style.display = "block";
+		$(nHidden).css('opacity',0);
+
+		var nBackground = document.createElement('div');
+		nBackground.style.position = "absolute";
+		nBackground.style.left = "0px";
+		nBackground.style.top = "0px";
+		nBackground.style.height = ((iWinHeight>iDocHeight)? iWinHeight : iDocHeight) +"px";
+		nBackground.style.width = ((iWinWidth>iDocWidth)? iWinWidth : iDocWidth) +"px";
+		nBackground.className = this.classes.collection.background;
+		$(nBackground).css('opacity',0);
+
+		document.body.appendChild( nBackground );
+		document.body.appendChild( nHidden );
+
+		/* Visual corrections to try and keep the collection visible */
+		var iDivWidth = $(nHidden).outerWidth();
+		var iDivHeight = $(nHidden).outerHeight();
+
+		if ( iDivX + iDivWidth > iDocWidth )
+		{
+			nHidden.style.left = (iDocWidth-iDivWidth)+"px";
+		}
+
+		if ( iDivY + iDivHeight > iDocHeight )
+		{
+			nHidden.style.top = (iDivY-iDivHeight-$(nButton).outerHeight())+"px";
+		}
+
+		this.dom.collection.collection = nHidden;
+		this.dom.collection.background = nBackground;
+
+		/* This results in a very small delay for the end user but it allows the animation to be
+		 * much smoother. If you don't want the animation, then the setTimeout can be removed
+		 */
+		setTimeout( function () {
+			$(nHidden).animate({"opacity": 1}, 500);
+			$(nBackground).animate({"opacity": 0.25}, 500);
+		}, 10 );
+
+		/* Resize the buttons to the Flash contents fit */
+		this.fnResizeButtons();
+
+		/* Event handler to remove the collection display */
+		$(nBackground).click( function () {
+			that._fnCollectionHide.call( that, null, null );
+		} );
+	},
+
+
+	/**
+	 * Hide a button collection
+	 *  @param   {Node} nButton Button to use for the collection
+	 *  @param   {Object} oConfig Button configuration object
+	 *  @returns void
+	 *  @private
+	 */
+	"_fnCollectionHide": function ( nButton, oConfig )
+	{
+		if ( oConfig !== null && oConfig.sExtends == 'collection' )
+		{
+			return;
+		}
+
+		if ( this.dom.collection.collection !== null )
+		{
+			$(this.dom.collection.collection).animate({"opacity": 0}, 500, function (e) {
+				this.style.display = "none";
+			} );
+
+			$(this.dom.collection.background).animate({"opacity": 0}, 500, function (e) {
+				this.parentNode.removeChild( this );
+			} );
+
+			this.dom.collection.collection = null;
+			this.dom.collection.background = null;
+		}
+	},
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Row selection functions
+	 */
+
+	/**
+	 * Add event handlers to a table to allow for row selection
+	 *  @method  _fnRowSelectConfig
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnRowSelectConfig": function ()
+	{
+		if ( this.s.master )
+		{
+			var
+				that = this,
+				i, iLen,
+				dt = this.s.dt,
+				aoOpenRows = this.s.dt.aoOpenRows;
+
+			$(dt.nTable).addClass( this.classes.select.table );
+
+			// When using OS style selection, we want to cancel the shift text
+			// selection, but only when the shift key is used (so you can
+			// actually still select text in the table)
+			if ( this.s.select.type === 'os' ) {
+				$(dt.nTBody).on( 'mousedown.DTTT_Select', 'tr', function(e) {
+					if ( e.shiftKey ) {
+
+						$(dt.nTBody)
+							.css( '-moz-user-select', 'none' )
+							.one('selectstart.DTTT_Select', 'tr', function () {
+								return false;
+							} );
+					}
+				} );
+
+				$(dt.nTBody).on( 'mouseup.DTTT_Select', 'tr', function(e) {
+					$(dt.nTBody).css( '-moz-user-select', '' );
+				} );
+			}
+
+			// Row selection
+			$(dt.nTBody).on( 'click.DTTT_Select', this.s.custom.sRowSelector, function(e) {
+				var row = this.nodeName.toLowerCase() === 'tr' ?
+					this :
+					$(this).parents('tr')[0];
+
+				var select = that.s.select;
+				var pos = that.s.dt.oInstance.fnGetPosition( row );
+
+				/* Sub-table must be ignored (odd that the selector won't do this with >) */
+				if ( row.parentNode != dt.nTBody ) {
+					return;
+				}
+
+				/* Check that we are actually working with a DataTables controlled row */
+				if ( dt.oInstance.fnGetData(row) === null ) {
+				    return;
+				}
+
+				// Shift click, ctrl click and simple click handling to make
+				// row selection a lot like a file system in desktop OSs
+				if ( select.type == 'os' ) {
+					if ( e.ctrlKey || e.metaKey ) {
+						// Add or remove from the selection
+						if ( that.fnIsSelected( row ) ) {
+							that._fnRowDeselect( row, e );
+						}
+						else {
+							that._fnRowSelect( row, e );
+						}
+					}
+					else if ( e.shiftKey ) {
+						// Add a range of rows, from the last selected row to
+						// this one
+						var rowIdxs = that.s.dt.aiDisplay.slice(); // visible rows
+						var idx1 = $.inArray( select.lastRow, rowIdxs );
+						var idx2 = $.inArray( pos, rowIdxs );
+
+						if ( that.fnGetSelected().length === 0 || idx1 === -1 ) {
+							// select from top to here - slightly odd, but both
+							// Windows and Mac OS do this
+							rowIdxs.splice( $.inArray( pos, rowIdxs )+1, rowIdxs.length );
+						}
+						else {
+							// reverse so we can shift click 'up' as well as down
+							if ( idx1 > idx2 ) {
+								var tmp = idx2;
+								idx2 = idx1;
+								idx1 = tmp;
+							}
+
+							rowIdxs.splice( idx2+1, rowIdxs.length );
+							rowIdxs.splice( 0, idx1 );
+						}
+
+						if ( ! that.fnIsSelected( row ) ) {
+							// Select range
+							that._fnRowSelect( rowIdxs, e );
+						}
+						else {
+							// Deselect range - need to keep the clicked on row selected
+							rowIdxs.splice( $.inArray( pos, rowIdxs ), 1 );
+							that._fnRowDeselect( rowIdxs, e );
+						}
+					}
+					else {
+						// No cmd or shift click. Deselect current if selected,
+						// or select this row only
+						if ( that.fnIsSelected( row ) && that.fnGetSelected().length === 1 ) {
+							that._fnRowDeselect( row, e );
+						}
+						else {
+							that.fnSelectNone();
+							that._fnRowSelect( row, e );
+						}
+					}
+				}
+				else if ( that.fnIsSelected( row ) ) {
+					that._fnRowDeselect( row, e );
+				}
+				else if ( select.type == "single" ) {
+					that.fnSelectNone();
+					that._fnRowSelect( row, e );
+				}
+				else if ( select.type == "multi" ) {
+					that._fnRowSelect( row, e );
+				}
+
+				select.lastRow = pos;
+			} );//.on('selectstart', function () { return false; } );
+
+			// Bind a listener to the DataTable for when new rows are created.
+			// This allows rows to be visually selected when they should be and
+			// deferred rendering is used.
+			dt.oApi._fnCallbackReg( dt, 'aoRowCreatedCallback', function (tr, data, index) {
+				if ( dt.aoData[index]._DTTT_selected ) {
+					$(tr).addClass( that.classes.select.row );
+				}
+			}, 'TableTools-SelectAll' );
+		}
+	},
+
+	/**
+	 * Select rows
+	 *  @param   {*} src Rows to select - see _fnSelectData for a description of valid inputs
+	 *  @private 
+	 */
+	"_fnRowSelect": function ( src, e )
+	{
+		var
+			that = this,
+			data = this._fnSelectData( src ),
+			firstTr = data.length===0 ? null : data[0].nTr,
+			anSelected = [],
+			i, len;
+
+		// Get all the rows that will be selected
+		for ( i=0, len=data.length ; i<len ; i++ )
+		{
+			if ( data[i].nTr )
+			{
+				anSelected.push( data[i].nTr );
+			}
+		}
+
+		// User defined pre-selection function
+		if ( this.s.select.preRowSelect !== null && !this.s.select.preRowSelect.call(this, e, anSelected, true) )
+		{
+			return;
+		}
+
+		// Mark them as selected
+		for ( i=0, len=data.length ; i<len ; i++ )
+		{
+			data[i]._DTTT_selected = true;
+
+			if ( data[i].nTr )
+			{
+				$(data[i].nTr).addClass( that.classes.select.row );
+			}
+		}
+
+		// Post-selection function
+		if ( this.s.select.postSelected !== null )
+		{
+			this.s.select.postSelected.call( this, anSelected );
+		}
+
+		TableTools._fnEventDispatch( this, 'select', anSelected, true );
+	},
+
+	/**
+	 * Deselect rows
+	 *  @param   {*} src Rows to deselect - see _fnSelectData for a description of valid inputs
+	 *  @private 
+	 */
+	"_fnRowDeselect": function ( src, e )
+	{
+		var
+			that = this,
+			data = this._fnSelectData( src ),
+			firstTr = data.length===0 ? null : data[0].nTr,
+			anDeselectedTrs = [],
+			i, len;
+
+		// Get all the rows that will be deselected
+		for ( i=0, len=data.length ; i<len ; i++ )
+		{
+			if ( data[i].nTr )
+			{
+				anDeselectedTrs.push( data[i].nTr );
+			}
+		}
+
+		// User defined pre-selection function
+		if ( this.s.select.preRowSelect !== null && !this.s.select.preRowSelect.call(this, e, anDeselectedTrs, false) )
+		{
+			return;
+		}
+
+		// Mark them as deselected
+		for ( i=0, len=data.length ; i<len ; i++ )
+		{
+			data[i]._DTTT_selected = false;
+
+			if ( data[i].nTr )
+			{
+				$(data[i].nTr).removeClass( that.classes.select.row );
+			}
+		}
+
+		// Post-deselection function
+		if ( this.s.select.postDeselected !== null )
+		{
+			this.s.select.postDeselected.call( this, anDeselectedTrs );
+		}
+
+		TableTools._fnEventDispatch( this, 'select', anDeselectedTrs, false );
+	},
+
+	/**
+	 * Take a data source for row selection and convert it into aoData points for the DT
+	 *   @param {*} src Can be a single DOM TR node, an array of TR nodes (including a
+	 *     a jQuery object), a single aoData point from DataTables, an array of aoData
+	 *     points or an array of aoData indexes
+	 *   @returns {array} An array of aoData points
+	 */
+	"_fnSelectData": function ( src )
+	{
+		var out = [], pos, i, iLen;
+
+		if ( src.nodeName )
+		{
+			// Single node
+			pos = this.s.dt.oInstance.fnGetPosition( src );
+			out.push( this.s.dt.aoData[pos] );
+		}
+		else if ( typeof src.length !== 'undefined' )
+		{
+			// jQuery object or an array of nodes, or aoData points
+			for ( i=0, iLen=src.length ; i<iLen ; i++ )
+			{
+				if ( src[i].nodeName )
+				{
+					pos = this.s.dt.oInstance.fnGetPosition( src[i] );
+					out.push( this.s.dt.aoData[pos] );
+				}
+				else if ( typeof src[i] === 'number' )
+				{
+					out.push( this.s.dt.aoData[ src[i] ] );
+				}
+				else
+				{
+					out.push( src[i] );
+				}
+			}
+
+			return out;
+		}
+		else
+		{
+			// A single aoData point
+			out.push( src );
+		}
+
+		return out;
+	},
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Text button functions
+	 */
+
+	/**
+	 * Configure a text based button for interaction events
+	 *  @method  _fnTextConfig
+	 *  @param   {Node} nButton Button element which is being considered
+	 *  @param   {Object} oConfig Button configuration object
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnTextConfig": function ( nButton, oConfig )
+	{
+		var that = this;
+
+		if ( oConfig.fnInit !== null )
+		{
+			oConfig.fnInit.call( this, nButton, oConfig );
+		}
+
+		if ( oConfig.sToolTip !== "" )
+		{
+			nButton.title = oConfig.sToolTip;
+		}
+
+		$(nButton).hover( function () {
+			if ( oConfig.fnMouseover !== null )
+			{
+				oConfig.fnMouseover.call( this, nButton, oConfig, null );
+			}
+		}, function () {
+			if ( oConfig.fnMouseout !== null )
+			{
+				oConfig.fnMouseout.call( this, nButton, oConfig, null );
+			}
+		} );
+
+		if ( oConfig.fnSelect !== null )
+		{
+			TableTools._fnEventListen( this, 'select', function (n) {
+				oConfig.fnSelect.call( that, nButton, oConfig, n );
+			} );
+		}
+
+		$(nButton).click( function (e) {
+			//e.preventDefault();
+
+			if ( oConfig.fnClick !== null )
+			{
+				oConfig.fnClick.call( that, nButton, oConfig, null, e );
+			}
+
+			/* Provide a complete function to match the behaviour of the flash elements */
+			if ( oConfig.fnComplete !== null )
+			{
+				oConfig.fnComplete.call( that, nButton, oConfig, null, null );
+			}
+
+			that._fnCollectionHide( nButton, oConfig );
+		} );
+	},
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Flash button functions
+	 */
+	
+	/**
+	 * Check if the Flash plug-in is available
+	 *  @method  _fnHasFlash
+	 *  @returns {boolean} `true` if Flash available, `false` otherwise
+	 *  @private 
+	 */
+	"_fnHasFlash": function ()
+	{
+		try {
+			var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
+			if (fo) {
+				return true;
+			}
+		}
+		catch (e) {
+			if (
+				navigator.mimeTypes &&
+				navigator.mimeTypes['application/x-shockwave-flash'] !== undefined &&
+				navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin
+			) {
+				return true;
+			}
+		}
+
+		return false;
+	},
+
+
+	/**
+	 * Configure a flash based button for interaction events
+	 *  @method  _fnFlashConfig
+	 *  @param   {Node} nButton Button element which is being considered
+	 *  @param   {o} oConfig Button configuration object
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnFlashConfig": function ( nButton, oConfig )
+	{
+		var that = this;
+		var flash = new ZeroClipboard_TableTools.Client();
+
+		if ( oConfig.fnInit !== null )
+		{
+			oConfig.fnInit.call( this, nButton, oConfig );
+		}
+
+		flash.setHandCursor( true );
+
+		if ( oConfig.sAction == "flash_save" )
+		{
+			flash.setAction( 'save' );
+			flash.setCharSet( (oConfig.sCharSet=="utf16le") ? 'UTF16LE' : 'UTF8' );
+			flash.setBomInc( oConfig.bBomInc );
+			flash.setFileName( oConfig.sFileName.replace('*', this.fnGetTitle(oConfig)) );
+		}
+		else if ( oConfig.sAction == "flash_pdf" )
+		{
+			flash.setAction( 'pdf' );
+			flash.setFileName( oConfig.sFileName.replace('*', this.fnGetTitle(oConfig)) );
+		}
+		else
+		{
+			flash.setAction( 'copy' );
+		}
+
+		flash.addEventListener('mouseOver', function(client) {
+			if ( oConfig.fnMouseover !== null )
+			{
+				oConfig.fnMouseover.call( that, nButton, oConfig, flash );
+			}
+		} );
+
+		flash.addEventListener('mouseOut', function(client) {
+			if ( oConfig.fnMouseout !== null )
+			{
+				oConfig.fnMouseout.call( that, nButton, oConfig, flash );
+			}
+		} );
+
+		flash.addEventListener('mouseDown', function(client) {
+			if ( oConfig.fnClick !== null )
+			{
+				oConfig.fnClick.call( that, nButton, oConfig, flash );
+			}
+		} );
+
+		flash.addEventListener('complete', function (client, text) {
+			if ( oConfig.fnComplete !== null )
+			{
+				oConfig.fnComplete.call( that, nButton, oConfig, flash, text );
+			}
+			that._fnCollectionHide( nButton, oConfig );
+		} );
+
+		this._fnFlashGlue( flash, nButton, oConfig.sToolTip );
+	},
+
+
+	/**
+	 * Wait until the id is in the DOM before we "glue" the swf. Note that this function will call
+	 * itself (using setTimeout) until it completes successfully
+	 *  @method  _fnFlashGlue
+	 *  @param   {Object} clip Zero clipboard object
+	 *  @param   {Node} node node to glue swf to
+	 *  @param   {String} text title of the flash movie
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnFlashGlue": function ( flash, node, text )
+	{
+		var that = this;
+		var id = node.getAttribute('id');
+
+		if ( document.getElementById(id) )
+		{
+			flash.glue( node, text );
+		}
+		else
+		{
+			setTimeout( function () {
+				that._fnFlashGlue( flash, node, text );
+			}, 100 );
+		}
+	},
+
+
+	/**
+	 * Set the text for the flash clip to deal with
+	 * 
+	 * This function is required for large information sets. There is a limit on the 
+	 * amount of data that can be transferred between Javascript and Flash in a single call, so
+	 * we use this method to build up the text in Flash by sending over chunks. It is estimated
+	 * that the data limit is around 64k, although it is undocumented, and appears to be different
+	 * between different flash versions. We chunk at 8KiB.
+	 *  @method  _fnFlashSetText
+	 *  @param   {Object} clip the ZeroClipboard object
+	 *  @param   {String} sData the data to be set
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnFlashSetText": function ( clip, sData )
+	{
+		var asData = this._fnChunkData( sData, 8192 );
+
+		clip.clearText();
+		for ( var i=0, iLen=asData.length ; i<iLen ; i++ )
+		{
+			clip.appendText( asData[i] );
+		}
+	},
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Data retrieval functions
+	 */
+
+	/**
+	 * Convert the mixed columns variable into a boolean array the same size as the columns, which
+	 * indicates which columns we want to include
+	 *  @method  _fnColumnTargets
+	 *  @param   {String|Array} mColumns The columns to be included in data retrieval. If a string
+	 *			 then it can take the value of "visible" or "hidden" (to include all visible or
+	 *			 hidden columns respectively). Or an array of column indexes
+	 *  @returns {Array} A boolean array the length of the columns of the table, which each value
+	 *			 indicating if the column is to be included or not
+	 *  @private 
+	 */
+	"_fnColumnTargets": function ( mColumns )
+	{
+		var aColumns = [];
+		var dt = this.s.dt;
+		var i, iLen;
+
+		if ( typeof mColumns == "object" )
+		{
+			for ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )
+			{
+				aColumns.push( false );
+			}
+
+			for ( i=0, iLen=mColumns.length ; i<iLen ; i++ )
+			{
+				aColumns[ mColumns[i] ] = true;
+			}
+		}
+		else if ( mColumns == "visible" )
+		{
+			for ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )
+			{
+				aColumns.push( dt.aoColumns[i].bVisible ? true : false );
+			}
+		}
+		else if ( mColumns == "hidden" )
+		{
+			for ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )
+			{
+				aColumns.push( dt.aoColumns[i].bVisible ? false : true );
+			}
+		}
+		else if ( mColumns == "sortable" )
+		{
+			for ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )
+			{
+				aColumns.push( dt.aoColumns[i].bSortable ? true : false );
+			}
+		}
+		else /* all */
+		{
+			for ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )
+			{
+				aColumns.push( true );
+			}
+		}
+
+		return aColumns;
+	},
+
+
+	/**
+	 * New line character(s) depend on the platforms
+	 *  @method  method
+	 *  @param   {Object} oConfig Button configuration object - only interested in oConfig.sNewLine
+	 *  @returns {String} Newline character
+	 */
+	"_fnNewline": function ( oConfig )
+	{
+		if ( oConfig.sNewLine == "auto" )
+		{
+			return navigator.userAgent.match(/Windows/) ? "\r\n" : "\n";
+		}
+		else
+		{
+			return oConfig.sNewLine;
+		}
+	},
+
+
+	/**
+	 * Get data from DataTables' internals and format it for output
+	 *  @method  _fnGetDataTablesData
+	 *  @param   {Object} oConfig Button configuration object
+	 *  @param   {String} oConfig.sFieldBoundary Field boundary for the data cells in the string
+	 *  @param   {String} oConfig.sFieldSeperator Field separator for the data cells
+	 *  @param   {String} oConfig.sNewline New line options
+	 *  @param   {Mixed} oConfig.mColumns Which columns should be included in the output
+	 *  @param   {Boolean} oConfig.bHeader Include the header
+	 *  @param   {Boolean} oConfig.bFooter Include the footer
+	 *  @param   {Boolean} oConfig.bSelectedOnly Include only the selected rows in the output
+	 *  @returns {String} Concatenated string of data
+	 *  @private 
+	 */
+	"_fnGetDataTablesData": function ( oConfig )
+	{
+		var i, iLen, j, jLen;
+		var aRow, aData=[], sLoopData='', arr;
+		var dt = this.s.dt, tr, child;
+		var regex = new RegExp(oConfig.sFieldBoundary, "g"); /* Do it here for speed */
+		var aColumnsInc = this._fnColumnTargets( oConfig.mColumns );
+		var bSelectedOnly = (typeof oConfig.bSelectedOnly != 'undefined') ? oConfig.bSelectedOnly : false;
+
+		/*
+		 * Header
+		 */
+		if ( oConfig.bHeader )
+		{
+			aRow = [];
+
+			for ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )
+			{
+				if ( aColumnsInc[i] )
+				{
+					sLoopData = dt.aoColumns[i].sTitle.replace(/\n/g," ").replace( /<.*?>/g, "" ).replace(/^\s+|\s+$/g,"");
+					sLoopData = this._fnHtmlDecode( sLoopData );
+
+					aRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) );
+				}
+			}
+
+			aData.push( aRow.join(oConfig.sFieldSeperator) );
+		}
+
+		/*
+		 * Body
+		 */
+		var aSelected = this.fnGetSelected();
+		bSelectedOnly = this.s.select.type !== "none" && bSelectedOnly && aSelected.length !== 0;
+
+		var api = $.fn.dataTable.Api;
+		var aDataIndex = api ?
+			new api( dt ).rows( oConfig.oSelectorOpts ).indexes().flatten().toArray() :
+			dt.oInstance
+				.$('tr', oConfig.oSelectorOpts)
+				.map( function (id, row) {
+					// If "selected only", then ensure that the row is in the selected list
+					return bSelectedOnly && $.inArray( row, aSelected ) === -1 ?
+						null :
+						dt.oInstance.fnGetPosition( row );
+				} )
+				.get();
+
+		for ( j=0, jLen=aDataIndex.length ; j<jLen ; j++ )
+		{
+			tr = dt.aoData[ aDataIndex[j] ].nTr;
+			aRow = [];
+
+			/* Columns */
+			for ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )
+			{
+				if ( aColumnsInc[i] )
+				{
+					/* Convert to strings (with small optimisation) */
+					var mTypeData = dt.oApi._fnGetCellData( dt, aDataIndex[j], i, 'display' );
+					if ( oConfig.fnCellRender )
+					{
+						sLoopData = oConfig.fnCellRender( mTypeData, i, tr, aDataIndex[j] )+"";
+					}
+					else if ( typeof mTypeData == "string" )
+					{
+						/* Strip newlines, replace img tags with alt attr. and finally strip html... */
+						sLoopData = mTypeData.replace(/\n/g," ");
+						sLoopData =
+						    sLoopData.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi,
+						        '$1$2$3');
+						sLoopData = sLoopData.replace( /<.*?>/g, "" );
+					}
+					else
+					{
+						sLoopData = mTypeData+"";
+					}
+
+					/* Trim and clean the data */
+					sLoopData = sLoopData.replace(/^\s+/, '').replace(/\s+$/, '');
+					sLoopData = this._fnHtmlDecode( sLoopData );
+
+					/* Bound it and add it to the total data */
+					aRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) );
+				}
+			}
+
+			aData.push( aRow.join(oConfig.sFieldSeperator) );
+
+			/* Details rows from fnOpen */
+			if ( oConfig.bOpenRows )
+			{
+				arr = $.grep(dt.aoOpenRows, function(o) { return o.nParent === tr; });
+
+				if ( arr.length === 1 )
+				{
+					sLoopData = this._fnBoundData( $('td', arr[0].nTr).html(), oConfig.sFieldBoundary, regex );
+					aData.push( sLoopData );
+				}
+			}
+		}
+
+		/*
+		 * Footer
+		 */
+		if ( oConfig.bFooter && dt.nTFoot !== null )
+		{
+			aRow = [];
+
+			for ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )
+			{
+				if ( aColumnsInc[i] && dt.aoColumns[i].nTf !== null )
+				{
+					sLoopData = dt.aoColumns[i].nTf.innerHTML.replace(/\n/g," ").replace( /<.*?>/g, "" );
+					sLoopData = this._fnHtmlDecode( sLoopData );
+
+					aRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) );
+				}
+			}
+
+			aData.push( aRow.join(oConfig.sFieldSeperator) );
+		}
+
+		var _sLastData = aData.join( this._fnNewline(oConfig) );
+		return _sLastData;
+	},
+
+
+	/**
+	 * Wrap data up with a boundary string
+	 *  @method  _fnBoundData
+	 *  @param   {String} sData data to bound
+	 *  @param   {String} sBoundary bounding char(s)
+	 *  @param   {RegExp} regex search for the bounding chars - constructed outside for efficiency
+	 *			 in the loop
+	 *  @returns {String} bound data
+	 *  @private 
+	 */
+	"_fnBoundData": function ( sData, sBoundary, regex )
+	{
+		if ( sBoundary === "" )
+		{
+			return sData;
+		}
+		else
+		{
+			return sBoundary + sData.replace(regex, sBoundary+sBoundary) + sBoundary;
+		}
+	},
+
+
+	/**
+	 * Break a string up into an array of smaller strings
+	 *  @method  _fnChunkData
+	 *  @param   {String} sData data to be broken up
+	 *  @param   {Int} iSize chunk size
+	 *  @returns {Array} String array of broken up text
+	 *  @private 
+	 */
+	"_fnChunkData": function ( sData, iSize )
+	{
+		var asReturn = [];
+		var iStrlen = sData.length;
+
+		for ( var i=0 ; i<iStrlen ; i+=iSize )
+		{
+			if ( i+iSize < iStrlen )
+			{
+				asReturn.push( sData.substring( i, i+iSize ) );
+			}
+			else
+			{
+				asReturn.push( sData.substring( i, iStrlen ) );
+			}
+		}
+
+		return asReturn;
+	},
+
+
+	/**
+	 * Decode HTML entities
+	 *  @method  _fnHtmlDecode
+	 *  @param   {String} sData encoded string
+	 *  @returns {String} decoded string
+	 *  @private 
+	 */
+	"_fnHtmlDecode": function ( sData )
+	{
+		if ( sData.indexOf('&') === -1 )
+		{
+			return sData;
+		}
+
+		var n = document.createElement('div');
+
+		return sData.replace( /&([^\s]*?);/g, function( match, match2 ) {
+			if ( match.substr(1, 1) === '#' )
+			{
+				return String.fromCharCode( Number(match2.substr(1)) );
+			}
+			else
+			{
+				n.innerHTML = match;
+				return n.childNodes[0].nodeValue;
+			}
+		} );
+	},
+
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Printing functions
+	 */
+
+	/**
+	 * Show print display
+	 *  @method  _fnPrintStart
+	 *  @param   {Event} e Event object
+	 *  @param   {Object} oConfig Button configuration object
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnPrintStart": function ( oConfig )
+	{
+	  var that = this;
+	  var oSetDT = this.s.dt;
+
+		/* Parse through the DOM hiding everything that isn't needed for the table */
+		this._fnPrintHideNodes( oSetDT.nTable );
+
+		/* Show the whole table */
+		this.s.print.saveStart = oSetDT._iDisplayStart;
+		this.s.print.saveLength = oSetDT._iDisplayLength;
+
+		if ( oConfig.bShowAll )
+		{
+			oSetDT._iDisplayStart = 0;
+			oSetDT._iDisplayLength = -1;
+			if ( oSetDT.oApi._fnCalculateEnd ) {
+				oSetDT.oApi._fnCalculateEnd( oSetDT );
+			}
+			oSetDT.oApi._fnDraw( oSetDT );
+		}
+
+		/* Adjust the display for scrolling which might be done by DataTables */
+		if ( oSetDT.oScroll.sX !== "" || oSetDT.oScroll.sY !== "" )
+		{
+			this._fnPrintScrollStart( oSetDT );
+
+			// If the table redraws while in print view, the DataTables scrolling
+			// setup would hide the header, so we need to readd it on draw
+			$(this.s.dt.nTable).bind('draw.DTTT_Print', function () {
+				that._fnPrintScrollStart( oSetDT );
+			} );
+		}
+
+		/* Remove the other DataTables feature nodes - but leave the table! and info div */
+		var anFeature = oSetDT.aanFeatures;
+		for ( var cFeature in anFeature )
+		{
+			if ( cFeature != 'i' && cFeature != 't' && cFeature.length == 1 )
+			{
+				for ( var i=0, iLen=anFeature[cFeature].length ; i<iLen ; i++ )
+				{
+					this.dom.print.hidden.push( {
+						"node": anFeature[cFeature][i],
+						"display": "block"
+					} );
+					anFeature[cFeature][i].style.display = "none";
+				}
+			}
+		}
+
+		/* Print class can be used for styling */
+		$(document.body).addClass( this.classes.print.body );
+
+		/* Show information message to let the user know what is happening */
+		if ( oConfig.sInfo !== "" )
+		{
+			this.fnInfo( oConfig.sInfo, 3000 );
+		}
+
+		/* Add a message at the top of the page */
+		if ( oConfig.sMessage )
+		{
+			$('<div/>')
+				.addClass( this.classes.print.message )
+				.html( oConfig.sMessage )
+				.prependTo( 'body' );
+		}
+
+		/* Cache the scrolling and the jump to the top of the page */
+		this.s.print.saveScroll = $(window).scrollTop();
+		window.scrollTo( 0, 0 );
+
+		/* Bind a key event listener to the document for the escape key -
+		 * it is removed in the callback
+		 */
+		$(document).bind( "keydown.DTTT", function(e) {
+			/* Only interested in the escape key */
+			if ( e.keyCode == 27 )
+			{
+				e.preventDefault();
+				that._fnPrintEnd.call( that, e );
+			}
+		} );
+	},
+
+
+	/**
+	 * Printing is finished, resume normal display
+	 *  @method  _fnPrintEnd
+	 *  @param   {Event} e Event object
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnPrintEnd": function ( e )
+	{
+		var that = this;
+		var oSetDT = this.s.dt;
+		var oSetPrint = this.s.print;
+		var oDomPrint = this.dom.print;
+
+		/* Show all hidden nodes */
+		this._fnPrintShowNodes();
+
+		/* Restore DataTables' scrolling */
+		if ( oSetDT.oScroll.sX !== "" || oSetDT.oScroll.sY !== "" )
+		{
+			$(this.s.dt.nTable).unbind('draw.DTTT_Print');
+
+			this._fnPrintScrollEnd();
+		}
+
+		/* Restore the scroll */
+		window.scrollTo( 0, oSetPrint.saveScroll );
+
+		/* Drop the print message */
+		$('div.'+this.classes.print.message).remove();
+
+		/* Styling class */
+		$(document.body).removeClass( 'DTTT_Print' );
+
+		/* Restore the table length */
+		oSetDT._iDisplayStart = oSetPrint.saveStart;
+		oSetDT._iDisplayLength = oSetPrint.saveLength;
+		if ( oSetDT.oApi._fnCalculateEnd ) {
+			oSetDT.oApi._fnCalculateEnd( oSetDT );
+		}
+		oSetDT.oApi._fnDraw( oSetDT );
+
+		$(document).unbind( "keydown.DTTT" );
+	},
+
+
+	/**
+	 * Take account of scrolling in DataTables by showing the full table
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnPrintScrollStart": function ()
+	{
+		var
+			oSetDT = this.s.dt,
+			nScrollHeadInner = oSetDT.nScrollHead.getElementsByTagName('div')[0],
+			nScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],
+			nScrollBody = oSetDT.nTable.parentNode,
+			nTheadSize, nTfootSize;
+
+		/* Copy the header in the thead in the body table, this way we show one single table when
+		 * in print view. Note that this section of code is more or less verbatim from DT 1.7.0
+		 */
+		nTheadSize = oSetDT.nTable.getElementsByTagName('thead');
+		if ( nTheadSize.length > 0 )
+		{
+			oSetDT.nTable.removeChild( nTheadSize[0] );
+		}
+
+		if ( oSetDT.nTFoot !== null )
+		{
+			nTfootSize = oSetDT.nTable.getElementsByTagName('tfoot');
+			if ( nTfootSize.length > 0 )
+			{
+				oSetDT.nTable.removeChild( nTfootSize[0] );
+			}
+		}
+
+		nTheadSize = oSetDT.nTHead.cloneNode(true);
+		oSetDT.nTable.insertBefore( nTheadSize, oSetDT.nTable.childNodes[0] );
+
+		if ( oSetDT.nTFoot !== null )
+		{
+			nTfootSize = oSetDT.nTFoot.cloneNode(true);
+			oSetDT.nTable.insertBefore( nTfootSize, oSetDT.nTable.childNodes[1] );
+		}
+
+		/* Now adjust the table's viewport so we can actually see it */
+		if ( oSetDT.oScroll.sX !== "" )
+		{
+			oSetDT.nTable.style.width = $(oSetDT.nTable).outerWidth()+"px";
+			nScrollBody.style.width = $(oSetDT.nTable).outerWidth()+"px";
+			nScrollBody.style.overflow = "visible";
+		}
+
+		if ( oSetDT.oScroll.sY !== "" )
+		{
+			nScrollBody.style.height = $(oSetDT.nTable).outerHeight()+"px";
+			nScrollBody.style.overflow = "visible";
+		}
+	},
+
+
+	/**
+	 * Take account of scrolling in DataTables by showing the full table. Note that the redraw of
+	 * the DataTable that we do will actually deal with the majority of the hard work here
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnPrintScrollEnd": function ()
+	{
+		var
+			oSetDT = this.s.dt,
+			nScrollBody = oSetDT.nTable.parentNode;
+
+		if ( oSetDT.oScroll.sX !== "" )
+		{
+			nScrollBody.style.width = oSetDT.oApi._fnStringToCss( oSetDT.oScroll.sX );
+			nScrollBody.style.overflow = "auto";
+		}
+
+		if ( oSetDT.oScroll.sY !== "" )
+		{
+			nScrollBody.style.height = oSetDT.oApi._fnStringToCss( oSetDT.oScroll.sY );
+			nScrollBody.style.overflow = "auto";
+		}
+	},
+
+
+	/**
+	 * Resume the display of all TableTools hidden nodes
+	 *  @method  _fnPrintShowNodes
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnPrintShowNodes": function ( )
+	{
+	  var anHidden = this.dom.print.hidden;
+
+		for ( var i=0, iLen=anHidden.length ; i<iLen ; i++ )
+		{
+			anHidden[i].node.style.display = anHidden[i].display;
+		}
+		anHidden.splice( 0, anHidden.length );
+	},
+
+
+	/**
+	 * Hide nodes which are not needed in order to display the table. Note that this function is
+	 * recursive
+	 *  @method  _fnPrintHideNodes
+	 *  @param   {Node} nNode Element which should be showing in a 'print' display
+	 *  @returns void
+	 *  @private 
+	 */
+	"_fnPrintHideNodes": function ( nNode )
+	{
+		var anHidden = this.dom.print.hidden;
+
+		var nParent = nNode.parentNode;
+		var nChildren = nParent.childNodes;
+		for ( var i=0, iLen=nChildren.length ; i<iLen ; i++ )
+		{
+			if ( nChildren[i] != nNode && nChildren[i].nodeType == 1 )
+			{
+				/* If our node is shown (don't want to show nodes which were previously hidden) */
+				var sDisplay = $(nChildren[i]).css("display");
+				if ( sDisplay != "none" )
+				{
+					/* Cache the node and it's previous state so we can restore it */
+					anHidden.push( {
+						"node": nChildren[i],
+						"display": sDisplay
+					} );
+					nChildren[i].style.display = "none";
+				}
+			}
+		}
+
+		if ( nParent.nodeName.toUpperCase() != "BODY" )
+		{
+			this._fnPrintHideNodes( nParent );
+		}
+	}
+};
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Static variables
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * Store of all instances that have been created of TableTools, so one can look up other (when
+ * there is need of a master)
+ *  @property _aInstances
+ *  @type	 Array
+ *  @default  []
+ *  @private
+ */
+TableTools._aInstances = [];
+
+
+/**
+ * Store of all listeners and their callback functions
+ *  @property _aListeners
+ *  @type	 Array
+ *  @default  []
+ */
+TableTools._aListeners = [];
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Static methods
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * Get an array of all the master instances
+ *  @method  fnGetMasters
+ *  @returns {Array} List of master TableTools instances
+ *  @static
+ */
+TableTools.fnGetMasters = function ()
+{
+	var a = [];
+	for ( var i=0, iLen=TableTools._aInstances.length ; i<iLen ; i++ )
+	{
+		if ( TableTools._aInstances[i].s.master )
+		{
+			a.push( TableTools._aInstances[i] );
+		}
+	}
+	return a;
+};
+
+/**
+ * Get the master instance for a table node (or id if a string is given)
+ *  @method  fnGetInstance
+ *  @returns {Object} ID of table OR table node, for which we want the TableTools instance
+ *  @static
+ */
+TableTools.fnGetInstance = function ( node )
+{
+	if ( typeof node != 'object' )
+	{
+		node = document.getElementById(node);
+	}
+
+	for ( var i=0, iLen=TableTools._aInstances.length ; i<iLen ; i++ )
+	{
+		if ( TableTools._aInstances[i].s.master && TableTools._aInstances[i].dom.table == node )
+		{
+			return TableTools._aInstances[i];
+		}
+	}
+	return null;
+};
+
+
+/**
+ * Add a listener for a specific event
+ *  @method  _fnEventListen
+ *  @param   {Object} that Scope of the listening function (i.e. 'this' in the caller)
+ *  @param   {String} type Event type
+ *  @param   {Function} fn Function
+ *  @returns void
+ *  @private
+ *  @static
+ */
+TableTools._fnEventListen = function ( that, type, fn )
+{
+	TableTools._aListeners.push( {
+		"that": that,
+		"type": type,
+		"fn": fn
+	} );
+};
+
+
+/**
+ * An event has occurred - look up every listener and fire it off. We check that the event we are
+ * going to fire is attached to the same table (using the table node as reference) before firing
+ *  @method  _fnEventDispatch
+ *  @param   {Object} that Scope of the listening function (i.e. 'this' in the caller)
+ *  @param   {String} type Event type
+ *  @param   {Node} node Element that the event occurred on (may be null)
+ *  @param   {boolean} [selected] Indicate if the node was selected (true) or deselected (false)
+ *  @returns void
+ *  @private
+ *  @static
+ */
+TableTools._fnEventDispatch = function ( that, type, node, selected )
+{
+	var listeners = TableTools._aListeners;
+	for ( var i=0, iLen=listeners.length ; i<iLen ; i++ )
+	{
+		if ( that.dom.table == listeners[i].that.dom.table && listeners[i].type == type )
+		{
+			listeners[i].fn( node, selected );
+		}
+	}
+};
+
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+
+TableTools.buttonBase = {
+	// Button base
+	"sAction": "text",
+	"sTag": "default",
+	"sLinerTag": "default",
+	"sButtonClass": "DTTT_button_text",
+	"sButtonText": "Button text",
+	"sTitle": "",
+	"sToolTip": "",
+
+	// Common button specific options
+	"sCharSet": "utf8",
+	"bBomInc": false,
+	"sFileName": "*.csv",
+	"sFieldBoundary": "",
+	"sFieldSeperator": "\t",
+	"sNewLine": "auto",
+	"mColumns": "all", /* "all", "visible", "hidden" or array of column integers */
+	"bHeader": true,
+	"bFooter": true,
+	"bOpenRows": false,
+	"bSelectedOnly": false,
+	"oSelectorOpts": undefined, // See http://datatables.net/docs/DataTables/1.9.4/#$ for full options
+
+	// Callbacks
+	"fnMouseover": null,
+	"fnMouseout": null,
+	"fnClick": null,
+	"fnSelect": null,
+	"fnComplete": null,
+	"fnInit": null,
+	"fnCellRender": null
+};
+
+
+/**
+ * @namespace Default button configurations
+ */
+TableTools.BUTTONS = {
+	"csv": $.extend( {}, TableTools.buttonBase, {
+		"sAction": "flash_save",
+		"sButtonClass": "DTTT_button_csv",
+		"sButtonText": "CSV",
+		"sFieldBoundary": '"',
+		"sFieldSeperator": ",",
+		"fnClick": function( nButton, oConfig, flash ) {
+			this.fnSetText( flash, this.fnGetTableData(oConfig) );
+		}
+	} ),
+
+	"xls": $.extend( {}, TableTools.buttonBase, {
+		"sAction": "flash_save",
+		"sCharSet": "utf16le",
+		"bBomInc": true,
+		"sButtonClass": "DTTT_button_xls",
+		"sButtonText": "Excel",
+		"fnClick": function( nButton, oConfig, flash ) {
+			this.fnSetText( flash, this.fnGetTableData(oConfig) );
+		}
+	} ),
+
+	"copy": $.extend( {}, TableTools.buttonBase, {
+		"sAction": "flash_copy",
+		"sButtonClass": "DTTT_button_copy",
+		"sButtonText": "Copy",
+		"fnClick": function( nButton, oConfig, flash ) {
+			this.fnSetText( flash, this.fnGetTableData(oConfig) );
+		},
+		"fnComplete": function(nButton, oConfig, flash, text) {
+			var lines = text.split('\n').length;
+            if (oConfig.bHeader) lines--;
+            if (this.s.dt.nTFoot !== null && oConfig.bFooter) lines--;
+			var plural = (lines==1) ? "" : "s";
+			this.fnInfo( '<h6>Table copied</h6>'+
+				'<p>Copied '+lines+' row'+plural+' to the clipboard.</p>',
+				1500
+			);
+		}
+	} ),
+
+	"pdf": $.extend( {}, TableTools.buttonBase, {
+		"sAction": "flash_pdf",
+		"sNewLine": "\n",
+		"sFileName": "*.pdf",
+		"sButtonClass": "DTTT_button_pdf",
+		"sButtonText": "PDF",
+		"sPdfOrientation": "portrait",
+		"sPdfSize": "A4",
+		"sPdfMessage": "",
+		"fnClick": function( nButton, oConfig, flash ) {
+			this.fnSetText( flash,
+				"title:"+ this.fnGetTitle(oConfig) +"\n"+
+				"message:"+ oConfig.sPdfMessage +"\n"+
+				"colWidth:"+ this.fnCalcColRatios(oConfig) +"\n"+
+				"orientation:"+ oConfig.sPdfOrientation +"\n"+
+				"size:"+ oConfig.sPdfSize +"\n"+
+				"--/TableToolsOpts--\n" +
+				this.fnGetTableData(oConfig)
+			);
+		}
+	} ),
+
+	"print": $.extend( {}, TableTools.buttonBase, {
+		"sInfo": "<h6>Print view</h6><p>Please use your browser's print function to "+
+		  "print this table. Press escape when finished.</p>",
+		"sMessage": null,
+		"bShowAll": true,
+		"sToolTip": "View print view",
+		"sButtonClass": "DTTT_button_print",
+		"sButtonText": "Print",
+		"fnClick": function ( nButton, oConfig ) {
+			this.fnPrint( true, oConfig );
+		}
+	} ),
+
+	"text": $.extend( {}, TableTools.buttonBase ),
+
+	"select": $.extend( {}, TableTools.buttonBase, {
+		"sButtonText": "Select button",
+		"fnSelect": function( nButton, oConfig ) {
+			if ( this.fnGetSelected().length !== 0 ) {
+				$(nButton).removeClass( this.classes.buttons.disabled );
+			} else {
+				$(nButton).addClass( this.classes.buttons.disabled );
+			}
+		},
+		"fnInit": function( nButton, oConfig ) {
+			$(nButton).addClass( this.classes.buttons.disabled );
+		}
+	} ),
+
+	"select_single": $.extend( {}, TableTools.buttonBase, {
+		"sButtonText": "Select button",
+		"fnSelect": function( nButton, oConfig ) {
+			var iSelected = this.fnGetSelected().length;
+			if ( iSelected == 1 ) {
+				$(nButton).removeClass( this.classes.buttons.disabled );
+			} else {
+				$(nButton).addClass( this.classes.buttons.disabled );
+			}
+		},
+		"fnInit": function( nButton, oConfig ) {
+			$(nButton).addClass( this.classes.buttons.disabled );
+		}
+	} ),
+
+	"select_all": $.extend( {}, TableTools.buttonBase, {
+		"sButtonText": "Select all",
+		"fnClick": function( nButton, oConfig ) {
+			this.fnSelectAll();
+		},
+		"fnSelect": function( nButton, oConfig ) {
+			if ( this.fnGetSelected().length == this.s.dt.fnRecordsDisplay() ) {
+				$(nButton).addClass( this.classes.buttons.disabled );
+			} else {
+				$(nButton).removeClass( this.classes.buttons.disabled );
+			}
+		}
+	} ),
+
+	"select_none": $.extend( {}, TableTools.buttonBase, {
+		"sButtonText": "Deselect all",
+		"fnClick": function( nButton, oConfig ) {
+			this.fnSelectNone();
+		},
+		"fnSelect": function( nButton, oConfig ) {
+			if ( this.fnGetSelected().length !== 0 ) {
+				$(nButton).removeClass( this.classes.buttons.disabled );
+			} else {
+				$(nButton).addClass( this.classes.buttons.disabled );
+			}
+		},
+		"fnInit": function( nButton, oConfig ) {
+			$(nButton).addClass( this.classes.buttons.disabled );
+		}
+	} ),
+
+	"ajax": $.extend( {}, TableTools.buttonBase, {
+		"sAjaxUrl": "/xhr.php",
+		"sButtonText": "Ajax button",
+		"fnClick": function( nButton, oConfig ) {
+			var sData = this.fnGetTableData(oConfig);
+			$.ajax( {
+				"url": oConfig.sAjaxUrl,
+				"data": [
+					{ "name": "tableData", "value": sData }
+				],
+				"success": oConfig.fnAjaxComplete,
+				"dataType": "json",
+				"type": "POST",
+				"cache": false,
+				"error": function () {
+					alert( "Error detected when sending table data to server" );
+				}
+			} );
+		},
+		"fnAjaxComplete": function( json ) {
+			alert( 'Ajax complete' );
+		}
+	} ),
+
+	"div": $.extend( {}, TableTools.buttonBase, {
+		"sAction": "div",
+		"sTag": "div",
+		"sButtonClass": "DTTT_nonbutton",
+		"sButtonText": "Text button"
+	} ),
+
+	"collection": $.extend( {}, TableTools.buttonBase, {
+		"sAction": "collection",
+		"sButtonClass": "DTTT_button_collection",
+		"sButtonText": "Collection",
+		"fnClick": function( nButton, oConfig ) {
+			this._fnCollectionShow(nButton, oConfig);
+		}
+	} )
+};
+/*
+ *  on* callback parameters:
+ *     1. node - button element
+ *     2. object - configuration object for this button
+ *     3. object - ZeroClipboard reference (flash button only)
+ *     4. string - Returned string from Flash (flash button only - and only on 'complete')
+ */
+
+// Alias to match the other plug-ins styling
+TableTools.buttons = TableTools.BUTTONS;
+
+
+/**
+ * @namespace Classes used by TableTools - allows the styles to be override easily.
+ *   Note that when TableTools initialises it will take a copy of the classes object
+ *   and will use its internal copy for the remainder of its run time.
+ */
+TableTools.classes = {
+	"container": "DTTT_container",
+	"buttons": {
+		"normal": "DTTT_button",
+		"disabled": "DTTT_disabled"
+	},
+	"collection": {
+		"container": "DTTT_collection",
+		"background": "DTTT_collection_background",
+		"buttons": {
+			"normal": "DTTT_button",
+			"disabled": "DTTT_disabled"
+		}
+	},
+	"select": {
+		"table": "DTTT_selectable",
+		"row": "DTTT_selected selected"
+	},
+	"print": {
+		"body": "DTTT_Print",
+		"info": "DTTT_print_info",
+		"message": "DTTT_PrintMessage"
+	}
+};
+
+
+/**
+ * @namespace ThemeRoller classes - built in for compatibility with DataTables' 
+ *   bJQueryUI option.
+ */
+TableTools.classes_themeroller = {
+	"container": "DTTT_container ui-buttonset ui-buttonset-multi",
+	"buttons": {
+		"normal": "DTTT_button ui-button ui-state-default"
+	},
+	"collection": {
+		"container": "DTTT_collection ui-buttonset ui-buttonset-multi"
+	}
+};
+
+
+/**
+ * @namespace TableTools default settings for initialisation
+ */
+TableTools.DEFAULTS = {
+	"sSwfPath":        "../swf/copy_csv_xls_pdf.swf",
+	"sRowSelect":      "none",
+	"sRowSelector":    "tr",
+	"sSelectedClass":  null,
+	"fnPreRowSelect":  null,
+	"fnRowSelected":   null,
+	"fnRowDeselected": null,
+	"aButtons":        [ "copy", "csv", "xls", "pdf", "print" ],
+	"oTags": {
+		"container": "div",
+		"button": "a", // We really want to use buttons here, but Firefox and IE ignore the
+		                 // click on the Flash element in the button (but not mouse[in|out]).
+		"liner": "span",
+		"collection": {
+			"container": "div",
+			"button": "a",
+			"liner": "span"
+		}
+	}
+};
+
+// Alias to match the other plug-ins
+TableTools.defaults = TableTools.DEFAULTS;
+
+
+/**
+ * Name of this class
+ *  @constant CLASS
+ *  @type	 String
+ *  @default  TableTools
+ */
+TableTools.prototype.CLASS = "TableTools";
+
+
+/**
+ * TableTools version
+ *  @constant  VERSION
+ *  @type	  String
+ *  @default   See code
+ */
+TableTools.version = "2.2.2";
+
+
+
+// DataTables 1.10 API
+// 
+// This will be extended in a big way in in TableTools 3 to provide API methods
+// such as rows().select() and rows.selected() etc, but for the moment the
+// tabletools() method simply returns the instance.
+
+if ( $.fn.dataTable.Api ) {
+	$.fn.dataTable.Api.register( 'tabletools()', function () {
+		var tt = null;
+
+		if ( this.context.length > 0 ) {
+			tt = TableTools.fnGetInstance( this.context[0].nTable );
+		}
+
+		return tt;
+	} );
+}
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Initialisation
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * Register a new feature with DataTables
+ */
+if ( typeof $.fn.dataTable == "function" &&
+	 typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+	 $.fn.dataTableExt.fnVersionCheck('1.9.0') )
+{
+	$.fn.dataTableExt.aoFeatures.push( {
+		"fnInit": function( oDTSettings ) {
+			var init = oDTSettings.oInit;
+			var opts = init ?
+				init.tableTools || init.oTableTools || {} :
+				{};
+
+			return new TableTools( oDTSettings.oInstance, opts ).dom.container;
+		},
+		"cFeature": "T",
+		"sFeature": "TableTools"
+	} );
+}
+else
+{
+	alert( "Warning: TableTools requires DataTables 1.9.0 or newer - www.datatables.net/download");
+}
+
+$.fn.DataTable.TableTools = TableTools;
+
+})(jQuery, window, document);
+
+/*
+ * Register a new feature with DataTables
+ */
+if ( typeof $.fn.dataTable == "function" &&
+	 typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+	 $.fn.dataTableExt.fnVersionCheck('1.9.0') )
+{
+	$.fn.dataTableExt.aoFeatures.push( {
+		"fnInit": function( oDTSettings ) {
+			var oOpts = typeof oDTSettings.oInit.oTableTools != 'undefined' ?
+				oDTSettings.oInit.oTableTools : {};
+
+			var oTT = new TableTools( oDTSettings.oInstance, oOpts );
+			TableTools._aInstances.push( oTT );
+
+			return oTT.dom.container;
+		},
+		"cFeature": "T",
+		"sFeature": "TableTools"
+	} );
+}
+else
+{
+	alert( "Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download");
+}
+
+
+$.fn.dataTable.TableTools = TableTools;
+$.fn.DataTable.TableTools = TableTools;
+
+
+return TableTools;
+}; // /factory
+
+
+// Define as an AMD module if possible
+if ( typeof define === 'function' && define.amd ) {
+	define( ['jquery', 'datatables'], factory );
+}
+else if ( typeof exports === 'object' ) {
+    // Node/CommonJS
+    factory( require('jquery'), require('datatables') );
+}
+else if ( jQuery && !jQuery.fn.dataTable.TableTools ) {
+	// Otherwise simply initialise as normal, stopping multiple evaluation
+	factory( jQuery, jQuery.fn.dataTable );
+}
+
+
+})(window, document);
+
diff --git a/public/admin/js/DataTables/extensions/TableTools/js/dataTables.tableTools.min.js b/public/admin/js/DataTables/extensions/TableTools/js/dataTables.tableTools.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..535ba10ed072ad9bd6e65ce1b79ef1279cd69d67
--- /dev/null
+++ b/public/admin/js/DataTables/extensions/TableTools/js/dataTables.tableTools.min.js
@@ -0,0 +1,69 @@
+/*!
+ TableTools 2.2.2
+ 2009-2014 SpryMedia Ltd - datatables.net/license
+
+ ZeroClipboard 1.0.4
+ Author: Joseph Huckaby - MIT licensed
+*/
+var TableTools;
+(function(m,k,p){var r=function(n){var g={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(a){"string"==typeof a&&(a=k.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=function(){this.style.display=""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(RegExp("\\s*"+a+
+"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,b,c){(a=this.clients[a])&&a.receiveEvent(b,c)},register:function(a,b){this.clients[a]=b},getDOMObjectPosition:function(a){var b={left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!==a.style.width&&(b.width=a.style.width.replace("px",""));""!==a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b},
+Client:function(a){this.handlers={};this.id=g.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;g.register(this.id,this);a&&this.glue(a)}};g.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"",action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,glue:function(a,b){this.domElement=g.$(a);var c=99;this.domElement.style.zIndex&&(c=parseInt(this.domElement.style.zIndex,10)+1);var d=g.getDOMObjectPosition(this.domElement);this.div=k.createElement("div");var e=
+this.div.style;e.position="absolute";e.left="0px";e.top="0px";e.width=d.width+"px";e.height=d.height+"px";e.zIndex=c;"undefined"!=typeof b&&""!==b&&(this.div.title=b);0!==d.width&&0!==d.height&&(this.sized=!0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(d.width,d.height).replace(/&/g,"&amp;"))},positionElement:function(){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!==a.width&&
+0!==a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=a.height)},getHTML:function(a,b){var c="",d="id="+this.id+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/))var e=location.href.match(/^https/i)?"https://":"http://",c=c+('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+e+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+a+'" height="'+b+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+
+g.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+d+'"/><param name="wmode" value="transparent"/></object>');else c+='<embed id="'+this.movieId+'" src="'+g.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+a+'" height="'+b+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+
+d+'" wmode="transparent" />';return c},hide:function(){this.div&&(this.div.style.left="-2000px")},show:function(){this.reposition()},destroy:function(){if(this.domElement&&this.div){this.hide();this.div.innerHTML="";var a=k.getElementsByTagName("body")[0];try{a.removeChild(this.div)}catch(b){}this.div=this.domElement=null}},reposition:function(a){a&&((this.domElement=g.$(a))||this.hide());if(this.domElement&&this.div){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.left=""+a.left+
+"px";b.top=""+a.top+"px"}},clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+=a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setCharSet:function(a){this.charSet=a;this.ready&&this.movie.setCharSet(a)},setBomInc:function(a){this.incBom=a;this.ready&&this.movie.setBomInc(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},setAction:function(a){this.action=
+a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled=a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){var c,a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=k.getElementById(this.movieId);if(!this.movie){c=this;setTimeout(function(){c.receiveEvent("load",
+null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){c=this;setTimeout(function(){c.receiveEvent("load",null)},100);this.ready=!0;return}this.ready=!0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setCharSet(this.charSet);this.movie.setBomInc(this.incBom);this.movie.setHandCursor(this.handCursorEnabled);break;case "mouseover":this.domElement&&this.cssEffects&&
+this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&&this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var d=0,e=this.handlers[a].length;d<
+e;d++){var f=this.handlers[a][d];if("function"==typeof f)f(this,b);else if("object"==typeof f&&2==f.length)f[0][f[1]](this,b);else if("string"==typeof f)m[f](this,b)}}};m.ZeroClipboard_TableTools=g;var f=jQuery;TableTools=function(a,b){!this instanceof TableTools&&alert("Warning: TableTools must be initialised with the keyword 'new'");this.s={that:this,dt:f.fn.dataTable.Api?(new f.fn.dataTable.Api(a)).settings()[0]:a.fnSettings(),print:{saveStart:-1,saveLength:-1,saveScroll:-1,funcEnd:function(){}},
+buttonCounter:0,select:{type:"",selected:[],preRowSelect:null,postSelected:null,postDeselected:null,all:!1,selectedClass:""},custom:{},swfPath:"",buttonSet:[],master:!1,tags:{}};this.dom={container:null,table:null,print:{hidden:[],message:null},collection:{collection:null,background:null}};this.classes=f.extend(!0,{},TableTools.classes);this.s.dt.bJUI&&f.extend(!0,this.classes,TableTools.classes_themeroller);this.fnSettings=function(){return this.s};"undefined"==typeof b&&(b={});TableTools._aInstances.push(this);
+this._fnConstruct(b);return this};TableTools.prototype={fnGetSelected:function(a){var b=[],c=this.s.dt.aoData,d=this.s.dt.aiDisplay,e;if(a){a=0;for(e=d.length;a<e;a++)c[d[a]]._DTTT_selected&&b.push(c[d[a]].nTr)}else{a=0;for(e=c.length;a<e;a++)c[a]._DTTT_selected&&b.push(c[a].nTr)}return b},fnGetSelectedData:function(){var a=[],b=this.s.dt.aoData,c,d;c=0;for(d=b.length;c<d;c++)b[c]._DTTT_selected&&a.push(this.s.dt.oInstance.fnGetData(c));return a},fnGetSelectedIndexes:function(a){var b=[],c=this.s.dt.aoData,
+d=this.s.dt.aiDisplay,e;if(a){a=0;for(e=d.length;a<e;a++)c[d[a]]._DTTT_selected&&b.push(d[a])}else{a=0;for(e=c.length;a<e;a++)c[a]._DTTT_selected&&b.push(a)}return b},fnIsSelected:function(a){a=this.s.dt.oInstance.fnGetPosition(a);return!0===this.s.dt.aoData[a]._DTTT_selected?!0:!1},fnSelectAll:function(a){this._fnRowSelect(a?this.s.dt.aiDisplay:this.s.dt.aoData)},fnSelectNone:function(a){this._fnRowDeselect(this.fnGetSelectedIndexes(a))},fnSelect:function(a){"single"==this.s.select.type&&this.fnSelectNone();
+this._fnRowSelect(a)},fnDeselect:function(a){this._fnRowDeselect(a)},fnGetTitle:function(a){var b="";"undefined"!=typeof a.sTitle&&""!==a.sTitle?b=a.sTitle:(a=k.getElementsByTagName("title"),0<a.length&&(b=a[0].innerHTML));return 4>"¡".toString().length?b.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""):b.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g,"")},fnCalcColRatios:function(a){var b=this.s.dt.aoColumns,a=this._fnColumnTargets(a.mColumns),c=[],d=0,e=0,f,i;f=0;for(i=a.length;f<i;f++)a[f]&&(d=b[f].nTh.offsetWidth,
+e+=d,c.push(d));f=0;for(i=c.length;f<i;f++)c[f]/=e;return c.join("\t")},fnGetTableData:function(a){if(this.s.dt)return this._fnGetDataTablesData(a)},fnSetText:function(a,b){this._fnFlashSetText(a,b)},fnResizeButtons:function(){for(var a in g.clients)if(a){var b=g.clients[a];"undefined"!=typeof b.domElement&&b.domElement.parentNode&&b.positionElement()}},fnResizeRequired:function(){for(var a in g.clients)if(a){var b=g.clients[a];if("undefined"!=typeof b.domElement&&b.domElement.parentNode==this.dom.container&&
+!1===b.sized)return!0}return!1},fnPrint:function(a,b){b===p&&(b={});a===p||a?this._fnPrintStart(b):this._fnPrintEnd()},fnInfo:function(a,b){var c=f("<div/>").addClass(this.classes.print.info).html(a).appendTo("body");setTimeout(function(){c.fadeOut("normal",function(){c.remove()})},b)},fnContainer:function(){return this.dom.container},_fnConstruct:function(a){var b=this;this._fnCustomiseSettings(a);this.dom.container=k.createElement(this.s.tags.container);this.dom.container.className=this.classes.container;
+"none"!=this.s.select.type&&this._fnRowSelectConfig();this._fnButtonDefinations(this.s.buttonSet,this.dom.container);this.s.dt.aoDestroyCallback.push({sName:"TableTools",fn:function(){f(b.s.dt.nTBody).off("click.DTTT_Select","tr");f(b.dom.container).empty();var a=f.inArray(b,TableTools._aInstances);-1!==a&&TableTools._aInstances.splice(a,1)}})},_fnCustomiseSettings:function(a){"undefined"==typeof this.s.dt._TableToolsInit&&(this.s.master=!0,this.s.dt._TableToolsInit=!0);this.dom.table=this.s.dt.nTable;
+this.s.custom=f.extend({},TableTools.DEFAULTS,a);this.s.swfPath=this.s.custom.sSwfPath;"undefined"!=typeof g&&(g.moviePath=this.s.swfPath);this.s.select.type=this.s.custom.sRowSelect;this.s.select.preRowSelect=this.s.custom.fnPreRowSelect;this.s.select.postSelected=this.s.custom.fnRowSelected;this.s.select.postDeselected=this.s.custom.fnRowDeselected;this.s.custom.sSelectedClass&&(this.classes.select.row=this.s.custom.sSelectedClass);this.s.tags=this.s.custom.oTags;this.s.buttonSet=this.s.custom.aButtons},
+_fnButtonDefinations:function(a,b){for(var c,d=0,e=a.length;d<e;d++){if("string"==typeof a[d]){if("undefined"==typeof TableTools.BUTTONS[a[d]]){alert("TableTools: Warning - unknown button type: "+a[d]);continue}c=f.extend({},TableTools.BUTTONS[a[d]],!0)}else{if("undefined"==typeof TableTools.BUTTONS[a[d].sExtends]){alert("TableTools: Warning - unknown button type: "+a[d].sExtends);continue}c=f.extend({},TableTools.BUTTONS[a[d].sExtends],!0);c=f.extend(c,a[d],!0)}(c=this._fnCreateButton(c,f(b).hasClass(this.classes.collection.container)))&&
+b.appendChild(c)}},_fnCreateButton:function(a,b){var c=this._fnButtonBase(a,b);if(a.sAction.match(/flash/)){if(!this._fnHasFlash())return!1;this._fnFlashConfig(c,a)}else"text"==a.sAction?this._fnTextConfig(c,a):"div"==a.sAction?this._fnTextConfig(c,a):"collection"==a.sAction&&(this._fnTextConfig(c,a),this._fnCollectionConfig(c,a));return c},_fnButtonBase:function(a,b){var c,d,e;b?(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.collection.button,d=a.sLinerTag&&"default"!==a.sLinerTag?a.sLiner:this.s.tags.collection.liner,
+e=this.classes.collection.buttons.normal):(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.button,d=a.sLinerTag&&"default"!==a.sLinerTag?a.sLiner:this.s.tags.liner,e=this.classes.buttons.normal);c=k.createElement(c);d=k.createElement(d);var f=this._fnGetMasterSettings();c.className=e+" "+a.sButtonClass;c.setAttribute("id","ToolTables_"+this.s.dt.sInstance+"_"+f.buttonCounter);c.appendChild(d);d.innerHTML=a.sButtonText;f.buttonCounter++;return c},_fnGetMasterSettings:function(){if(this.s.master)return this.s;
+for(var a=TableTools._aInstances,b=0,c=a.length;b<c;b++)if(this.dom.table==a[b].s.dt.nTable)return a[b].s},_fnCollectionConfig:function(a,b){var c=k.createElement(this.s.tags.collection.container);c.style.display="none";c.className=this.classes.collection.container;b._collection=c;k.body.appendChild(c);this._fnButtonDefinations(b.aButtons,c)},_fnCollectionShow:function(a,b){var c=this,d=f(a).offset(),e=b._collection,j=d.left,d=d.top+f(a).outerHeight(),i=f(m).height(),h=f(k).height(),o=f(m).width(),
+g=f(k).width();e.style.position="absolute";e.style.left=j+"px";e.style.top=d+"px";e.style.display="block";f(e).css("opacity",0);var l=k.createElement("div");l.style.position="absolute";l.style.left="0px";l.style.top="0px";l.style.height=(i>h?i:h)+"px";l.style.width=(o>g?o:g)+"px";l.className=this.classes.collection.background;f(l).css("opacity",0);k.body.appendChild(l);k.body.appendChild(e);i=f(e).outerWidth();o=f(e).outerHeight();j+i>g&&(e.style.left=g-i+"px");d+o>h&&(e.style.top=d-o-f(a).outerHeight()+
+"px");this.dom.collection.collection=e;this.dom.collection.background=l;setTimeout(function(){f(e).animate({opacity:1},500);f(l).animate({opacity:0.25},500)},10);this.fnResizeButtons();f(l).click(function(){c._fnCollectionHide.call(c,null,null)})},_fnCollectionHide:function(a,b){!(null!==b&&"collection"==b.sExtends)&&null!==this.dom.collection.collection&&(f(this.dom.collection.collection).animate({opacity:0},500,function(){this.style.display="none"}),f(this.dom.collection.background).animate({opacity:0},
+500,function(){this.parentNode.removeChild(this)}),this.dom.collection.collection=null,this.dom.collection.background=null)},_fnRowSelectConfig:function(){if(this.s.master){var a=this,b=this.s.dt;f(b.nTable).addClass(this.classes.select.table);"os"===this.s.select.type&&(f(b.nTBody).on("mousedown.DTTT_Select","tr",function(a){if(a.shiftKey)f(b.nTBody).css("-moz-user-select","none").one("selectstart.DTTT_Select","tr",function(){return!1})}),f(b.nTBody).on("mouseup.DTTT_Select","tr",function(){f(b.nTBody).css("-moz-user-select",
+"")}));f(b.nTBody).on("click.DTTT_Select",this.s.custom.sRowSelector,function(c){var d=this.nodeName.toLowerCase()==="tr"?this:f(this).parents("tr")[0],e=a.s.select,j=a.s.dt.oInstance.fnGetPosition(d);if(d.parentNode==b.nTBody&&b.oInstance.fnGetData(d)!==null){if(e.type=="os")if(c.ctrlKey||c.metaKey)a.fnIsSelected(d)?a._fnRowDeselect(d,c):a._fnRowSelect(d,c);else if(c.shiftKey){var i=a.s.dt.aiDisplay.slice(),h=f.inArray(e.lastRow,i),o=f.inArray(j,i);if(a.fnGetSelected().length===0||h===-1)i.splice(f.inArray(j,
+i)+1,i.length);else{if(h>o)var g=o,o=h,h=g;i.splice(o+1,i.length);i.splice(0,h)}if(a.fnIsSelected(d)){i.splice(f.inArray(j,i),1);a._fnRowDeselect(i,c)}else a._fnRowSelect(i,c)}else if(a.fnIsSelected(d)&&a.fnGetSelected().length===1)a._fnRowDeselect(d,c);else{a.fnSelectNone();a._fnRowSelect(d,c)}else if(a.fnIsSelected(d))a._fnRowDeselect(d,c);else if(e.type=="single"){a.fnSelectNone();a._fnRowSelect(d,c)}else e.type=="multi"&&a._fnRowSelect(d,c);e.lastRow=j}});b.oApi._fnCallbackReg(b,"aoRowCreatedCallback",
+function(c,d,e){b.aoData[e]._DTTT_selected&&f(c).addClass(a.classes.select.row)},"TableTools-SelectAll")}},_fnRowSelect:function(a,b){var c=this._fnSelectData(a),d=[],e,j;e=0;for(j=c.length;e<j;e++)c[e].nTr&&d.push(c[e].nTr);if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,b,d,!0)){e=0;for(j=c.length;e<j;e++)c[e]._DTTT_selected=!0,c[e].nTr&&f(c[e].nTr).addClass(this.classes.select.row);null!==this.s.select.postSelected&&this.s.select.postSelected.call(this,d);TableTools._fnEventDispatch(this,
+"select",d,!0)}},_fnRowDeselect:function(a,b){var c=this._fnSelectData(a),d=[],e,j;e=0;for(j=c.length;e<j;e++)c[e].nTr&&d.push(c[e].nTr);if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,b,d,!1)){e=0;for(j=c.length;e<j;e++)c[e]._DTTT_selected=!1,c[e].nTr&&f(c[e].nTr).removeClass(this.classes.select.row);null!==this.s.select.postDeselected&&this.s.select.postDeselected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!1)}},_fnSelectData:function(a){var b=[],c,d,e;if(a.nodeName)c=
+this.s.dt.oInstance.fnGetPosition(a),b.push(this.s.dt.aoData[c]);else if("undefined"!==typeof a.length){d=0;for(e=a.length;d<e;d++)a[d].nodeName?(c=this.s.dt.oInstance.fnGetPosition(a[d]),b.push(this.s.dt.aoData[c])):"number"===typeof a[d]?b.push(this.s.dt.aoData[a[d]]):b.push(a[d])}else b.push(a);return b},_fnTextConfig:function(a,b){var c=this;null!==b.fnInit&&b.fnInit.call(this,a,b);""!==b.sToolTip&&(a.title=b.sToolTip);f(a).hover(function(){b.fnMouseover!==null&&b.fnMouseover.call(this,a,b,null)},
+function(){b.fnMouseout!==null&&b.fnMouseout.call(this,a,b,null)});null!==b.fnSelect&&TableTools._fnEventListen(this,"select",function(d){b.fnSelect.call(c,a,b,d)});f(a).click(function(d){b.fnClick!==null&&b.fnClick.call(c,a,b,null,d);b.fnComplete!==null&&b.fnComplete.call(c,a,b,null,null);c._fnCollectionHide(a,b)})},_fnHasFlash:function(){try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return!0}catch(a){if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]!==p&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin)return!0}return!1},
+_fnFlashConfig:function(a,b){var c=this,d=new g.Client;null!==b.fnInit&&b.fnInit.call(this,a,b);d.setHandCursor(!0);"flash_save"==b.sAction?(d.setAction("save"),d.setCharSet("utf16le"==b.sCharSet?"UTF16LE":"UTF8"),d.setBomInc(b.bBomInc),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):"flash_pdf"==b.sAction?(d.setAction("pdf"),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):d.setAction("copy");d.addEventListener("mouseOver",function(){b.fnMouseover!==null&&b.fnMouseover.call(c,
+a,b,d)});d.addEventListener("mouseOut",function(){b.fnMouseout!==null&&b.fnMouseout.call(c,a,b,d)});d.addEventListener("mouseDown",function(){b.fnClick!==null&&b.fnClick.call(c,a,b,d)});d.addEventListener("complete",function(e,f){b.fnComplete!==null&&b.fnComplete.call(c,a,b,d,f);c._fnCollectionHide(a,b)});this._fnFlashGlue(d,a,b.sToolTip)},_fnFlashGlue:function(a,b,c){var d=this,e=b.getAttribute("id");k.getElementById(e)?a.glue(b,c):setTimeout(function(){d._fnFlashGlue(a,b,c)},100)},_fnFlashSetText:function(a,
+b){var c=this._fnChunkData(b,8192);a.clearText();for(var d=0,e=c.length;d<e;d++)a.appendText(c[d])},_fnColumnTargets:function(a){var b=[],c=this.s.dt,d,e;if("object"==typeof a){d=0;for(e=c.aoColumns.length;d<e;d++)b.push(!1);d=0;for(e=a.length;d<e;d++)b[a[d]]=!0}else if("visible"==a){d=0;for(e=c.aoColumns.length;d<e;d++)b.push(c.aoColumns[d].bVisible?!0:!1)}else if("hidden"==a){d=0;for(e=c.aoColumns.length;d<e;d++)b.push(c.aoColumns[d].bVisible?!1:!0)}else if("sortable"==a){d=0;for(e=c.aoColumns.length;d<
+e;d++)b.push(c.aoColumns[d].bSortable?!0:!1)}else{d=0;for(e=c.aoColumns.length;d<e;d++)b.push(!0)}return b},_fnNewline:function(a){return"auto"==a.sNewLine?navigator.userAgent.match(/Windows/)?"\r\n":"\n":a.sNewLine},_fnGetDataTablesData:function(a){var b,c,d,e,j,i=[],h="",g=this.s.dt,k,l=RegExp(a.sFieldBoundary,"g"),m=this._fnColumnTargets(a.mColumns),n="undefined"!=typeof a.bSelectedOnly?a.bSelectedOnly:!1;if(a.bHeader){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)m[b]&&(h=g.aoColumns[b].sTitle.replace(/\n/g,
+" ").replace(/<.*?>/g,"").replace(/^\s+|\s+$/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}var p=this.fnGetSelected(),n="none"!==this.s.select.type&&n&&0!==p.length,q=(d=f.fn.dataTable.Api)?(new d(g)).rows(a.oSelectorOpts).indexes().flatten().toArray():g.oInstance.$("tr",a.oSelectorOpts).map(function(a,b){return n&&-1===f.inArray(b,p)?null:g.oInstance.fnGetPosition(b)}).get();d=0;for(e=q.length;d<e;d++){k=g.aoData[q[d]].nTr;j=[];b=
+0;for(c=g.aoColumns.length;b<c;b++)m[b]&&(h=g.oApi._fnGetCellData(g,q[d],b,"display"),a.fnCellRender?h=a.fnCellRender(h,b,k,q[d])+"":"string"==typeof h?(h=h.replace(/\n/g," "),h=h.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi,"$1$2$3"),h=h.replace(/<.*?>/g,"")):h+="",h=h.replace(/^\s+/,"").replace(/\s+$/,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator));a.bOpenRows&&(b=f.grep(g.aoOpenRows,function(a){return a.nParent===
+k}),1===b.length&&(h=this._fnBoundData(f("td",b[0].nTr).html(),a.sFieldBoundary,l),i.push(h)))}if(a.bFooter&&null!==g.nTFoot){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)m[b]&&null!==g.aoColumns[b].nTf&&(h=g.aoColumns[b].nTf.innerHTML.replace(/\n/g," ").replace(/<.*?>/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}return i.join(this._fnNewline(a))},_fnBoundData:function(a,b,c){return""===b?a:b+a.replace(c,b+b)+b},_fnChunkData:function(a,
+b){for(var c=[],d=a.length,e=0;e<d;e+=b)e+b<d?c.push(a.substring(e,e+b)):c.push(a.substring(e,d));return c},_fnHtmlDecode:function(a){if(-1===a.indexOf("&"))return a;var b=k.createElement("div");return a.replace(/&([^\s]*?);/g,function(a,d){if("#"===a.substr(1,1))return String.fromCharCode(Number(d.substr(1)));b.innerHTML=a;return b.childNodes[0].nodeValue})},_fnPrintStart:function(a){var b=this,c=this.s.dt;this._fnPrintHideNodes(c.nTable);this.s.print.saveStart=c._iDisplayStart;this.s.print.saveLength=
+c._iDisplayLength;a.bShowAll&&(c._iDisplayStart=0,c._iDisplayLength=-1,c.oApi._fnCalculateEnd&&c.oApi._fnCalculateEnd(c),c.oApi._fnDraw(c));if(""!==c.oScroll.sX||""!==c.oScroll.sY)this._fnPrintScrollStart(c),f(this.s.dt.nTable).bind("draw.DTTT_Print",function(){b._fnPrintScrollStart(c)});var d=c.aanFeatures,e;for(e in d)if("i"!=e&&"t"!=e&&1==e.length)for(var g=0,i=d[e].length;g<i;g++)this.dom.print.hidden.push({node:d[e][g],display:"block"}),d[e][g].style.display="none";f(k.body).addClass(this.classes.print.body);
+""!==a.sInfo&&this.fnInfo(a.sInfo,3E3);a.sMessage&&f("<div/>").addClass(this.classes.print.message).html(a.sMessage).prependTo("body");this.s.print.saveScroll=f(m).scrollTop();m.scrollTo(0,0);f(k).bind("keydown.DTTT",function(a){if(a.keyCode==27){a.preventDefault();b._fnPrintEnd.call(b,a)}})},_fnPrintEnd:function(){var a=this.s.dt,b=this.s.print;this._fnPrintShowNodes();if(""!==a.oScroll.sX||""!==a.oScroll.sY)f(this.s.dt.nTable).unbind("draw.DTTT_Print"),this._fnPrintScrollEnd();m.scrollTo(0,b.saveScroll);
+f("div."+this.classes.print.message).remove();f(k.body).removeClass("DTTT_Print");a._iDisplayStart=b.saveStart;a._iDisplayLength=b.saveLength;a.oApi._fnCalculateEnd&&a.oApi._fnCalculateEnd(a);a.oApi._fnDraw(a);f(k).unbind("keydown.DTTT")},_fnPrintScrollStart:function(){var a=this.s.dt;a.nScrollHead.getElementsByTagName("div")[0].getElementsByTagName("table");var b=a.nTable.parentNode,c;c=a.nTable.getElementsByTagName("thead");0<c.length&&a.nTable.removeChild(c[0]);null!==a.nTFoot&&(c=a.nTable.getElementsByTagName("tfoot"),
+0<c.length&&a.nTable.removeChild(c[0]));c=a.nTHead.cloneNode(!0);a.nTable.insertBefore(c,a.nTable.childNodes[0]);null!==a.nTFoot&&(c=a.nTFoot.cloneNode(!0),a.nTable.insertBefore(c,a.nTable.childNodes[1]));""!==a.oScroll.sX&&(a.nTable.style.width=f(a.nTable).outerWidth()+"px",b.style.width=f(a.nTable).outerWidth()+"px",b.style.overflow="visible");""!==a.oScroll.sY&&(b.style.height=f(a.nTable).outerHeight()+"px",b.style.overflow="visible")},_fnPrintScrollEnd:function(){var a=this.s.dt,b=a.nTable.parentNode;
+""!==a.oScroll.sX&&(b.style.width=a.oApi._fnStringToCss(a.oScroll.sX),b.style.overflow="auto");""!==a.oScroll.sY&&(b.style.height=a.oApi._fnStringToCss(a.oScroll.sY),b.style.overflow="auto")},_fnPrintShowNodes:function(){for(var a=this.dom.print.hidden,b=0,c=a.length;b<c;b++)a[b].node.style.display=a[b].display;a.splice(0,a.length)},_fnPrintHideNodes:function(a){for(var b=this.dom.print.hidden,c=a.parentNode,d=c.childNodes,e=0,g=d.length;e<g;e++)if(d[e]!=a&&1==d[e].nodeType){var i=f(d[e]).css("display");
+"none"!=i&&(b.push({node:d[e],display:i}),d[e].style.display="none")}"BODY"!=c.nodeName.toUpperCase()&&this._fnPrintHideNodes(c)}};TableTools._aInstances=[];TableTools._aListeners=[];TableTools.fnGetMasters=function(){for(var a=[],b=0,c=TableTools._aInstances.length;b<c;b++)TableTools._aInstances[b].s.master&&a.push(TableTools._aInstances[b]);return a};TableTools.fnGetInstance=function(a){"object"!=typeof a&&(a=k.getElementById(a));for(var b=0,c=TableTools._aInstances.length;b<c;b++)if(TableTools._aInstances[b].s.master&&
+TableTools._aInstances[b].dom.table==a)return TableTools._aInstances[b];return null};TableTools._fnEventListen=function(a,b,c){TableTools._aListeners.push({that:a,type:b,fn:c})};TableTools._fnEventDispatch=function(a,b,c,d){for(var e=TableTools._aListeners,f=0,g=e.length;f<g;f++)a.dom.table==e[f].that.dom.table&&e[f].type==b&&e[f].fn(c,d)};TableTools.buttonBase={sAction:"text",sTag:"default",sLinerTag:"default",sButtonClass:"DTTT_button_text",sButtonText:"Button text",sTitle:"",sToolTip:"",sCharSet:"utf8",
+bBomInc:!1,sFileName:"*.csv",sFieldBoundary:"",sFieldSeperator:"\t",sNewLine:"auto",mColumns:"all",bHeader:!0,bFooter:!0,bOpenRows:!1,bSelectedOnly:!1,oSelectorOpts:p,fnMouseover:null,fnMouseout:null,fnClick:null,fnSelect:null,fnComplete:null,fnInit:null,fnCellRender:null};TableTools.BUTTONS={csv:f.extend({},TableTools.buttonBase,{sAction:"flash_save",sButtonClass:"DTTT_button_csv",sButtonText:"CSV",sFieldBoundary:'"',sFieldSeperator:",",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),
+xls:f.extend({},TableTools.buttonBase,{sAction:"flash_save",sCharSet:"utf16le",bBomInc:!0,sButtonClass:"DTTT_button_xls",sButtonText:"Excel",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),copy:f.extend({},TableTools.buttonBase,{sAction:"flash_copy",sButtonClass:"DTTT_button_copy",sButtonText:"Copy",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))},fnComplete:function(a,b,c,d){a=d.split("\n").length;b.bHeader&&a--;null!==this.s.dt.nTFoot&&b.bFooter&&a--;this.fnInfo("<h6>Table copied</h6><p>Copied "+
+a+" row"+(1==a?"":"s")+" to the clipboard.</p>",1500)}}),pdf:f.extend({},TableTools.buttonBase,{sAction:"flash_pdf",sNewLine:"\n",sFileName:"*.pdf",sButtonClass:"DTTT_button_pdf",sButtonText:"PDF",sPdfOrientation:"portrait",sPdfSize:"A4",sPdfMessage:"",fnClick:function(a,b,c){this.fnSetText(c,"title:"+this.fnGetTitle(b)+"\nmessage:"+b.sPdfMessage+"\ncolWidth:"+this.fnCalcColRatios(b)+"\norientation:"+b.sPdfOrientation+"\nsize:"+b.sPdfSize+"\n--/TableToolsOpts--\n"+this.fnGetTableData(b))}}),print:f.extend({},
+TableTools.buttonBase,{sInfo:"<h6>Print view</h6><p>Please use your browser's print function to print this table. Press escape when finished.</p>",sMessage:null,bShowAll:!0,sToolTip:"View print view",sButtonClass:"DTTT_button_print",sButtonText:"Print",fnClick:function(a,b){this.fnPrint(!0,b)}}),text:f.extend({},TableTools.buttonBase),select:f.extend({},TableTools.buttonBase,{sButtonText:"Select button",fnSelect:function(a){0!==this.fnGetSelected().length?f(a).removeClass(this.classes.buttons.disabled):
+f(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){f(a).addClass(this.classes.buttons.disabled)}}),select_single:f.extend({},TableTools.buttonBase,{sButtonText:"Select button",fnSelect:function(a){1==this.fnGetSelected().length?f(a).removeClass(this.classes.buttons.disabled):f(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){f(a).addClass(this.classes.buttons.disabled)}}),select_all:f.extend({},TableTools.buttonBase,{sButtonText:"Select all",fnClick:function(){this.fnSelectAll()},
+fnSelect:function(a){this.fnGetSelected().length==this.s.dt.fnRecordsDisplay()?f(a).addClass(this.classes.buttons.disabled):f(a).removeClass(this.classes.buttons.disabled)}}),select_none:f.extend({},TableTools.buttonBase,{sButtonText:"Deselect all",fnClick:function(){this.fnSelectNone()},fnSelect:function(a){0!==this.fnGetSelected().length?f(a).removeClass(this.classes.buttons.disabled):f(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){f(a).addClass(this.classes.buttons.disabled)}}),
+ajax:f.extend({},TableTools.buttonBase,{sAjaxUrl:"/xhr.php",sButtonText:"Ajax button",fnClick:function(a,b){var c=this.fnGetTableData(b);f.ajax({url:b.sAjaxUrl,data:[{name:"tableData",value:c}],success:b.fnAjaxComplete,dataType:"json",type:"POST",cache:!1,error:function(){alert("Error detected when sending table data to server")}})},fnAjaxComplete:function(){alert("Ajax complete")}}),div:f.extend({},TableTools.buttonBase,{sAction:"div",sTag:"div",sButtonClass:"DTTT_nonbutton",sButtonText:"Text button"}),
+collection:f.extend({},TableTools.buttonBase,{sAction:"collection",sButtonClass:"DTTT_button_collection",sButtonText:"Collection",fnClick:function(a,b){this._fnCollectionShow(a,b)}})};TableTools.buttons=TableTools.BUTTONS;TableTools.classes={container:"DTTT_container",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"},collection:{container:"DTTT_collection",background:"DTTT_collection_background",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"}},select:{table:"DTTT_selectable",row:"DTTT_selected selected"},
+print:{body:"DTTT_Print",info:"DTTT_print_info",message:"DTTT_PrintMessage"}};TableTools.classes_themeroller={container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"},collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}};TableTools.DEFAULTS={sSwfPath:"../swf/copy_csv_xls_pdf.swf",sRowSelect:"none",sRowSelector:"tr",sSelectedClass:null,fnPreRowSelect:null,fnRowSelected:null,fnRowDeselected:null,aButtons:["copy","csv","xls",
+"pdf","print"],oTags:{container:"div",button:"a",liner:"span",collection:{container:"div",button:"a",liner:"span"}}};TableTools.defaults=TableTools.DEFAULTS;TableTools.prototype.CLASS="TableTools";TableTools.version="2.2.2";f.fn.dataTable.Api&&f.fn.dataTable.Api.register("tabletools()",function(){var a=null;0<this.context.length&&(a=TableTools.fnGetInstance(this.context[0].nTable));return a});"function"==typeof f.fn.dataTable&&"function"==typeof f.fn.dataTableExt.fnVersionCheck&&f.fn.dataTableExt.fnVersionCheck("1.9.0")?
+f.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInit;return(new TableTools(a.oInstance,b?b.tableTools||b.oTableTools||{}:{})).dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools requires DataTables 1.9.0 or newer - www.datatables.net/download");f.fn.DataTable.TableTools=TableTools;"function"==typeof n.fn.dataTable&&"function"==typeof n.fn.dataTableExt.fnVersionCheck&&n.fn.dataTableExt.fnVersionCheck("1.9.0")?n.fn.dataTableExt.aoFeatures.push({fnInit:function(a){a=
+new TableTools(a.oInstance,"undefined"!=typeof a.oInit.oTableTools?a.oInit.oTableTools:{});TableTools._aInstances.push(a);return a.dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download");n.fn.dataTable.TableTools=TableTools;return n.fn.DataTable.TableTools=TableTools};"function"===typeof define&&define.amd?define(["jquery","datatables"],r):"object"===typeof exports?r(require("jquery"),require("datatables")):
+jQuery&&!jQuery.fn.dataTable.TableTools&&r(jQuery,jQuery.fn.dataTable)})(window,document);
diff --git a/public/admin/js/DataTables/extensions/TableTools/swf/copy_csv_xls.swf b/public/admin/js/DataTables/extensions/TableTools/swf/copy_csv_xls.swf
new file mode 100644
index 0000000000000000000000000000000000000000..059fa7efdfd07f7a69536107101eaeaa6c4fecbd
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/swf/copy_csv_xls.swf differ
diff --git a/public/admin/js/DataTables/extensions/TableTools/swf/copy_csv_xls_pdf.swf b/public/admin/js/DataTables/extensions/TableTools/swf/copy_csv_xls_pdf.swf
new file mode 100644
index 0000000000000000000000000000000000000000..75dd21ae55e09022a40759df0d1d6cdffc2eed62
Binary files /dev/null and b/public/admin/js/DataTables/extensions/TableTools/swf/copy_csv_xls_pdf.swf differ
diff --git a/public/admin/js/DataTables/license.txt b/public/admin/js/DataTables/license.txt
new file mode 100644
index 0000000000000000000000000000000000000000..48dee1865bcc143f84ccc01432296317114e90a5
--- /dev/null
+++ b/public/admin/js/DataTables/license.txt
@@ -0,0 +1,20 @@
+Copyright (c) 2008-2013 SpryMedia Limited
+http://datatables.net
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/public/admin/js/DataTables/media/css/jquery.dataTables.css b/public/admin/js/DataTables/media/css/jquery.dataTables.css
new file mode 100644
index 0000000000000000000000000000000000000000..4e6fbe38b2887d3a9975b5b0ad20a2e1e6960060
--- /dev/null
+++ b/public/admin/js/DataTables/media/css/jquery.dataTables.css
@@ -0,0 +1,476 @@
+/*
+ * Table styles
+ */
+table.dataTable {
+  width: 100%;
+  margin: 0 auto;
+  clear: both;
+  border-collapse: separate;
+  border-spacing: 0;
+  /*
+   * Header and footer styles
+   */
+  /*
+   * Body styles
+   */
+}
+table.dataTable thead th,
+table.dataTable tfoot th {
+  font-weight: bold;
+}
+table.dataTable thead th,
+table.dataTable thead td {
+  padding: 10px 18px;
+  border-bottom: 1px solid #111111;
+}
+table.dataTable thead th:active,
+table.dataTable thead td:active {
+  outline: none;
+}
+table.dataTable tfoot th,
+table.dataTable tfoot td {
+  padding: 10px 18px 6px 18px;
+  border-top: 1px solid #111111;
+}
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting {
+  cursor: pointer;
+  *cursor: hand;
+}
+table.dataTable thead .sorting {
+  background: url("../images/sort_both.png") no-repeat center right;
+}
+table.dataTable thead .sorting_asc {
+  background: url("../images/sort_asc.png") no-repeat center right;
+}
+table.dataTable thead .sorting_desc {
+  background: url("../images/sort_desc.png") no-repeat center right;
+}
+table.dataTable thead .sorting_asc_disabled {
+  background: url("../images/sort_asc_disabled.png") no-repeat center right;
+}
+table.dataTable thead .sorting_desc_disabled {
+  background: url("../images/sort_desc_disabled.png") no-repeat center right;
+}
+table.dataTable tbody tr {
+  background-color: white;
+}
+table.dataTable tbody tr.selected {
+  background-color: #b0bed9;
+}
+table.dataTable tbody th,
+table.dataTable tbody td {
+  padding: 8px 10px;
+}
+table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
+  border-top: 1px solid #dddddd;
+}
+table.dataTable.row-border tbody tr:first-child th,
+table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
+table.dataTable.display tbody tr:first-child td {
+  border-top: none;
+}
+table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
+  border-top: 1px solid #dddddd;
+  border-right: 1px solid #dddddd;
+}
+table.dataTable.cell-border tbody tr th:first-child,
+table.dataTable.cell-border tbody tr td:first-child {
+  border-left: 1px solid #dddddd;
+}
+table.dataTable.cell-border tbody tr:first-child th,
+table.dataTable.cell-border tbody tr:first-child td {
+  border-top: none;
+}
+table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
+  background-color: #f9f9f9;
+}
+table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
+  background-color: #abb9d3;
+}
+table.dataTable.hover tbody tr:hover,
+table.dataTable.hover tbody tr.odd:hover,
+table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover,
+table.dataTable.display tbody tr.odd:hover,
+table.dataTable.display tbody tr.even:hover {
+  background-color: whitesmoke;
+}
+table.dataTable.hover tbody tr:hover.selected,
+table.dataTable.hover tbody tr.odd:hover.selected,
+table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected,
+table.dataTable.display tbody tr.odd:hover.selected,
+table.dataTable.display tbody tr.even:hover.selected {
+  background-color: #a9b7d1;
+}
+table.dataTable.order-column tbody tr > .sorting_1,
+table.dataTable.order-column tbody tr > .sorting_2,
+table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
+table.dataTable.display tbody tr > .sorting_2,
+table.dataTable.display tbody tr > .sorting_3 {
+  background-color: #f9f9f9;
+}
+table.dataTable.order-column tbody tr.selected > .sorting_1,
+table.dataTable.order-column tbody tr.selected > .sorting_2,
+table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
+table.dataTable.display tbody tr.selected > .sorting_2,
+table.dataTable.display tbody tr.selected > .sorting_3 {
+  background-color: #acbad4;
+}
+table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
+  background-color: #f1f1f1;
+}
+table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
+  background-color: #f3f3f3;
+}
+table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
+  background-color: whitesmoke;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
+  background-color: #a6b3cd;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
+  background-color: #a7b5ce;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
+  background-color: #a9b6d0;
+}
+table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
+  background-color: #f9f9f9;
+}
+table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
+  background-color: #fbfbfb;
+}
+table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
+  background-color: #fdfdfd;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
+  background-color: #acbad4;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
+  background-color: #adbbd6;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
+  background-color: #afbdd8;
+}
+table.dataTable.display tbody tr:hover > .sorting_1,
+table.dataTable.display tbody tr.odd:hover > .sorting_1,
+table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 {
+  background-color: #eaeaea;
+}
+table.dataTable.display tbody tr:hover > .sorting_2,
+table.dataTable.display tbody tr.odd:hover > .sorting_2,
+table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 {
+  background-color: #ebebeb;
+}
+table.dataTable.display tbody tr:hover > .sorting_3,
+table.dataTable.display tbody tr.odd:hover > .sorting_3,
+table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 {
+  background-color: #eeeeee;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_1,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_1,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 {
+  background-color: #a1aec7;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_2,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_2,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 {
+  background-color: #a2afc8;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_3,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_3,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 {
+  background-color: #a4b2cb;
+}
+table.dataTable.no-footer {
+  border-bottom: 1px solid #111111;
+}
+table.dataTable.nowrap th, table.dataTable.nowrap td {
+  white-space: nowrap;
+}
+table.dataTable.compact thead th,
+table.dataTable.compact thead td {
+  padding: 5px 9px;
+}
+table.dataTable.compact tfoot th,
+table.dataTable.compact tfoot td {
+  padding: 5px 9px 3px 9px;
+}
+table.dataTable.compact tbody th,
+table.dataTable.compact tbody td {
+  padding: 4px 5px;
+}
+table.dataTable th.dt-left,
+table.dataTable td.dt-left {
+  text-align: left;
+}
+table.dataTable th.dt-center,
+table.dataTable td.dt-center,
+table.dataTable td.dataTables_empty {
+  text-align: center;
+}
+table.dataTable th.dt-right,
+table.dataTable td.dt-right {
+  text-align: right;
+}
+table.dataTable th.dt-justify,
+table.dataTable td.dt-justify {
+  text-align: justify;
+}
+table.dataTable th.dt-nowrap,
+table.dataTable td.dt-nowrap {
+  white-space: nowrap;
+}
+table.dataTable thead th.dt-head-left,
+table.dataTable thead td.dt-head-left,
+table.dataTable tfoot th.dt-head-left,
+table.dataTable tfoot td.dt-head-left {
+  text-align: left;
+}
+table.dataTable thead th.dt-head-center,
+table.dataTable thead td.dt-head-center,
+table.dataTable tfoot th.dt-head-center,
+table.dataTable tfoot td.dt-head-center {
+  text-align: center;
+}
+table.dataTable thead th.dt-head-right,
+table.dataTable thead td.dt-head-right,
+table.dataTable tfoot th.dt-head-right,
+table.dataTable tfoot td.dt-head-right {
+  text-align: right;
+}
+table.dataTable thead th.dt-head-justify,
+table.dataTable thead td.dt-head-justify,
+table.dataTable tfoot th.dt-head-justify,
+table.dataTable tfoot td.dt-head-justify {
+  text-align: justify;
+}
+table.dataTable thead th.dt-head-nowrap,
+table.dataTable thead td.dt-head-nowrap,
+table.dataTable tfoot th.dt-head-nowrap,
+table.dataTable tfoot td.dt-head-nowrap {
+  white-space: nowrap;
+}
+table.dataTable tbody th.dt-body-left,
+table.dataTable tbody td.dt-body-left {
+  text-align: left;
+}
+table.dataTable tbody th.dt-body-center,
+table.dataTable tbody td.dt-body-center {
+  text-align: center;
+}
+table.dataTable tbody th.dt-body-right,
+table.dataTable tbody td.dt-body-right {
+  text-align: right;
+}
+table.dataTable tbody th.dt-body-justify,
+table.dataTable tbody td.dt-body-justify {
+  text-align: justify;
+}
+table.dataTable tbody th.dt-body-nowrap,
+table.dataTable tbody td.dt-body-nowrap {
+  white-space: nowrap;
+}
+
+table.dataTable,
+table.dataTable th,
+table.dataTable td {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+
+/*
+ * Control feature layout
+ */
+.dataTables_wrapper {
+  position: relative;
+  clear: both;
+  *zoom: 1;
+  zoom: 1;
+}
+.dataTables_wrapper .dataTables_length {
+  float: left;
+}
+.dataTables_wrapper .dataTables_filter {
+  float: right;
+  text-align: right;
+}
+.dataTables_wrapper .dataTables_filter input {
+  margin-left: 0.5em;
+}
+.dataTables_wrapper .dataTables_info {
+  clear: both;
+  float: left;
+  padding-top: 0.755em;
+}
+.dataTables_wrapper .dataTables_paginate {
+  float: right;
+  text-align: right;
+  padding-top: 0.25em;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button {
+  box-sizing: border-box;
+  display: inline-block;
+  min-width: 1.5em;
+  padding: 0.5em 1em;
+  margin-left: 2px;
+  text-align: center;
+  text-decoration: none !important;
+  cursor: pointer;
+  *cursor: hand;
+  color: #333333 !important;
+  border: 1px solid transparent;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
+  color: #333333 !important;
+  border: 1px solid #cacaca;
+  background-color: white;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, gainsboro));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, white 0%, gainsboro 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(top, white 0%, gainsboro 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(top, white 0%, gainsboro 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(top, white 0%, gainsboro 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to bottom, white 0%, gainsboro 100%);
+  /* W3C */
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
+  cursor: default;
+  color: #666 !important;
+  border: 1px solid transparent;
+  background: transparent;
+  box-shadow: none;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
+  color: white !important;
+  border: 1px solid #111111;
+  background-color: #585858;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111111));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #585858 0%, #111111 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(top, #585858 0%, #111111 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(top, #585858 0%, #111111 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(top, #585858 0%, #111111 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to bottom, #585858 0%, #111111 100%);
+  /* W3C */
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button:active {
+  outline: none;
+  background-color: #2b2b2b;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);
+  /* W3C */
+  box-shadow: inset 0 0 3px #111;
+}
+.dataTables_wrapper .dataTables_processing {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 100%;
+  height: 40px;
+  margin-left: -50%;
+  margin-top: -25px;
+  padding-top: 20px;
+  text-align: center;
+  font-size: 1.2em;
+  background-color: white;
+  background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* W3C */
+}
+.dataTables_wrapper .dataTables_length,
+.dataTables_wrapper .dataTables_filter,
+.dataTables_wrapper .dataTables_info,
+.dataTables_wrapper .dataTables_processing,
+.dataTables_wrapper .dataTables_paginate {
+  color: #333333;
+}
+.dataTables_wrapper .dataTables_scroll {
+  clear: both;
+}
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
+  *margin-top: -1px;
+  -webkit-overflow-scrolling: touch;
+}
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing,
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing {
+  height: 0;
+  overflow: hidden;
+  margin: 0 !important;
+  padding: 0 !important;
+}
+.dataTables_wrapper.no-footer .dataTables_scrollBody {
+  border-bottom: 1px solid #111111;
+}
+.dataTables_wrapper.no-footer div.dataTables_scrollHead table,
+.dataTables_wrapper.no-footer div.dataTables_scrollBody table {
+  border-bottom: none;
+}
+.dataTables_wrapper:after {
+  visibility: hidden;
+  display: block;
+  content: "";
+  clear: both;
+  height: 0;
+}
+
+@media screen and (max-width: 767px) {
+  .dataTables_wrapper .dataTables_info,
+  .dataTables_wrapper .dataTables_paginate {
+    float: none;
+    text-align: center;
+  }
+  .dataTables_wrapper .dataTables_paginate {
+    margin-top: 0.5em;
+  }
+}
+@media screen and (max-width: 640px) {
+  .dataTables_wrapper .dataTables_length,
+  .dataTables_wrapper .dataTables_filter {
+    float: none;
+    text-align: center;
+  }
+  .dataTables_wrapper .dataTables_filter {
+    margin-top: 0.5em;
+  }
+}
diff --git a/public/admin/js/DataTables/media/css/jquery.dataTables.min.css b/public/admin/js/DataTables/media/css/jquery.dataTables.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..a2c5489c89fc2979948162b99bae2fd12f9ec5bc
--- /dev/null
+++ b/public/admin/js/DataTables/media/css/jquery.dataTables.min.css
@@ -0,0 +1 @@
+table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting{cursor:pointer;*cursor:hand}table.dataTable thead .sorting{background:url("../images/sort_both.png") no-repeat center right}table.dataTable thead .sorting_asc{background:url("../images/sort_asc.png") no-repeat center right}table.dataTable thead .sorting_desc{background:url("../images/sort_desc.png") no-repeat center right}table.dataTable thead .sorting_asc_disabled{background:url("../images/sort_asc_disabled.png") no-repeat center right}table.dataTable thead .sorting_desc_disabled{background:url("../images/sort_desc_disabled.png") no-repeat center right}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover,table.dataTable.hover tbody tr.odd:hover,table.dataTable.hover tbody tr.even:hover,table.dataTable.display tbody tr:hover,table.dataTable.display tbody tr.odd:hover,table.dataTable.display tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected,table.dataTable.hover tbody tr.odd:hover.selected,table.dataTable.hover tbody tr.even:hover.selected,table.dataTable.display tbody tr:hover.selected,table.dataTable.display tbody tr.odd:hover.selected,table.dataTable.display tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.display tbody tr.odd:hover>.sorting_1,table.dataTable.display tbody tr.even:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1,table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.display tbody tr.odd:hover>.sorting_2,table.dataTable.display tbody tr.even:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2,table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.display tbody tr.odd:hover>.sorting_3,table.dataTable.display tbody tr.even:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3,table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.display tbody tr.odd:hover.selected>.sorting_1,table.dataTable.display tbody tr.even:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.display tbody tr.odd:hover.selected>.sorting_2,table.dataTable.display tbody tr.even:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.display tbody tr.odd:hover.selected>.sorting_3,table.dataTable.display tbody tr.even:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px 5px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #cacaca;background-color:#fff;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table,.dataTables_wrapper.no-footer div.dataTables_scrollBody table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}
diff --git a/public/admin/js/DataTables/media/css/jquery.dataTables_themeroller.css b/public/admin/js/DataTables/media/css/jquery.dataTables_themeroller.css
new file mode 100644
index 0000000000000000000000000000000000000000..5a56d979949069e3c9f270caeba42dc3758800c9
--- /dev/null
+++ b/public/admin/js/DataTables/media/css/jquery.dataTables_themeroller.css
@@ -0,0 +1,330 @@
+/*
+ * Table styles
+ */
+table.dataTable {
+  width: 100%;
+  margin: 0 auto;
+  clear: both;
+  border-collapse: separate;
+  border-spacing: 0;
+  /*
+   * Header and footer styles
+   */
+  /*
+   * Body styles
+   */
+}
+table.dataTable thead th,
+table.dataTable thead td,
+table.dataTable tfoot th,
+table.dataTable tfoot td {
+  padding: 4px 10px;
+}
+table.dataTable thead th,
+table.dataTable tfoot th {
+  font-weight: bold;
+}
+table.dataTable thead th:active,
+table.dataTable thead td:active {
+  outline: none;
+}
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting {
+  cursor: pointer;
+  *cursor: hand;
+}
+table.dataTable thead th div.DataTables_sort_wrapper {
+  position: relative;
+  padding-right: 10px;
+}
+table.dataTable thead th div.DataTables_sort_wrapper span {
+  position: absolute;
+  top: 50%;
+  margin-top: -8px;
+  right: -5px;
+}
+table.dataTable thead th.ui-state-default {
+  border-right-width: 0;
+}
+table.dataTable thead th.ui-state-default:last-child {
+  border-right-width: 1px;
+}
+table.dataTable tbody tr {
+  background-color: white;
+}
+table.dataTable tbody tr.selected {
+  background-color: #b0bed9;
+}
+table.dataTable tbody th,
+table.dataTable tbody td {
+  padding: 8px 10px;
+}
+table.dataTable th.center,
+table.dataTable td.center,
+table.dataTable td.dataTables_empty {
+  text-align: center;
+}
+table.dataTable th.right,
+table.dataTable td.right {
+  text-align: right;
+}
+table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
+  border-top: 1px solid #dddddd;
+}
+table.dataTable.row-border tbody tr:first-child th,
+table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
+table.dataTable.display tbody tr:first-child td {
+  border-top: none;
+}
+table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
+  border-top: 1px solid #dddddd;
+  border-right: 1px solid #dddddd;
+}
+table.dataTable.cell-border tbody tr th:first-child,
+table.dataTable.cell-border tbody tr td:first-child {
+  border-left: 1px solid #dddddd;
+}
+table.dataTable.cell-border tbody tr:first-child th,
+table.dataTable.cell-border tbody tr:first-child td {
+  border-top: none;
+}
+table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
+  background-color: #f9f9f9;
+}
+table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
+  background-color: #abb9d3;
+}
+table.dataTable.hover tbody tr:hover,
+table.dataTable.hover tbody tr.odd:hover,
+table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover,
+table.dataTable.display tbody tr.odd:hover,
+table.dataTable.display tbody tr.even:hover {
+  background-color: whitesmoke;
+}
+table.dataTable.hover tbody tr:hover.selected,
+table.dataTable.hover tbody tr.odd:hover.selected,
+table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected,
+table.dataTable.display tbody tr.odd:hover.selected,
+table.dataTable.display tbody tr.even:hover.selected {
+  background-color: #a9b7d1;
+}
+table.dataTable.order-column tbody tr > .sorting_1,
+table.dataTable.order-column tbody tr > .sorting_2,
+table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
+table.dataTable.display tbody tr > .sorting_2,
+table.dataTable.display tbody tr > .sorting_3 {
+  background-color: #f9f9f9;
+}
+table.dataTable.order-column tbody tr.selected > .sorting_1,
+table.dataTable.order-column tbody tr.selected > .sorting_2,
+table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
+table.dataTable.display tbody tr.selected > .sorting_2,
+table.dataTable.display tbody tr.selected > .sorting_3 {
+  background-color: #acbad4;
+}
+table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
+  background-color: #f1f1f1;
+}
+table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
+  background-color: #f3f3f3;
+}
+table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
+  background-color: whitesmoke;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
+  background-color: #a6b3cd;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
+  background-color: #a7b5ce;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
+  background-color: #a9b6d0;
+}
+table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
+  background-color: #f9f9f9;
+}
+table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
+  background-color: #fbfbfb;
+}
+table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
+  background-color: #fdfdfd;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
+  background-color: #acbad4;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
+  background-color: #adbbd6;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
+  background-color: #afbdd8;
+}
+table.dataTable.display tbody tr:hover > .sorting_1,
+table.dataTable.display tbody tr.odd:hover > .sorting_1,
+table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 {
+  background-color: #eaeaea;
+}
+table.dataTable.display tbody tr:hover > .sorting_2,
+table.dataTable.display tbody tr.odd:hover > .sorting_2,
+table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 {
+  background-color: #ebebeb;
+}
+table.dataTable.display tbody tr:hover > .sorting_3,
+table.dataTable.display tbody tr.odd:hover > .sorting_3,
+table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 {
+  background-color: #eeeeee;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_1,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_1,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 {
+  background-color: #a1aec7;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_2,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_2,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 {
+  background-color: #a2afc8;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_3,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_3,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 {
+  background-color: #a4b2cb;
+}
+
+table.dataTable,
+table.dataTable th,
+table.dataTable td {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+
+/*
+ * Control feature layout
+ */
+.dataTables_wrapper {
+  position: relative;
+  clear: both;
+  *zoom: 1;
+  zoom: 1;
+}
+.dataTables_wrapper .dataTables_length {
+  float: left;
+}
+.dataTables_wrapper .dataTables_filter {
+  float: right;
+  text-align: right;
+}
+.dataTables_wrapper .dataTables_filter input {
+  margin-left: 0.5em;
+}
+.dataTables_wrapper .dataTables_info {
+  clear: both;
+  float: left;
+  padding-top: 0.55em;
+}
+.dataTables_wrapper .dataTables_paginate {
+  float: right;
+  text-align: right;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button {
+  box-sizing: border-box;
+  display: inline-block;
+  min-width: 1.5em;
+  padding: 0.5em;
+  margin-left: 2px;
+  text-align: center;
+  text-decoration: none !important;
+  cursor: pointer;
+  *cursor: hand;
+  color: #333333 !important;
+  border: 1px solid transparent;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:active {
+  outline: none;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:first-child {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:last-child {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.dataTables_wrapper .dataTables_processing {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 100%;
+  height: 40px;
+  margin-left: -50%;
+  margin-top: -25px;
+  padding-top: 20px;
+  text-align: center;
+  font-size: 1.2em;
+  background-color: white;
+  background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+  /* W3C */
+}
+.dataTables_wrapper .dataTables_length,
+.dataTables_wrapper .dataTables_filter,
+.dataTables_wrapper .dataTables_info,
+.dataTables_wrapper .dataTables_processing,
+.dataTables_wrapper .dataTables_paginate {
+  color: #333333;
+}
+.dataTables_wrapper .dataTables_scroll {
+  clear: both;
+}
+.dataTables_wrapper .dataTables_scrollBody {
+  *margin-top: -1px;
+  -webkit-overflow-scrolling: touch;
+}
+.dataTables_wrapper .ui-widget-header {
+  font-weight: normal;
+}
+.dataTables_wrapper .ui-toolbar {
+  padding: 8px;
+}
+.dataTables_wrapper:after {
+  visibility: hidden;
+  display: block;
+  content: "";
+  clear: both;
+  height: 0;
+}
+
+@media screen and (max-width: 767px) {
+  .dataTables_wrapper .dataTables_length,
+  .dataTables_wrapper .dataTables_filter,
+  .dataTables_wrapper .dataTables_info,
+  .dataTables_wrapper .dataTables_paginate {
+    float: none;
+    text-align: center;
+  }
+  .dataTables_wrapper .dataTables_filter,
+  .dataTables_wrapper .dataTables_paginate {
+    margin-top: 0.5em;
+  }
+}
diff --git a/public/admin/js/DataTables/media/images/Sorting icons.psd b/public/admin/js/DataTables/media/images/Sorting icons.psd
new file mode 100644
index 0000000000000000000000000000000000000000..53b2e06850767cb57c52b316f0b845b1a8e0ca0e
Binary files /dev/null and b/public/admin/js/DataTables/media/images/Sorting icons.psd differ
diff --git a/public/admin/js/DataTables/media/images/back_disabled.png b/public/admin/js/DataTables/media/images/back_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..881de7976ff98955e2a5487dca66e618a0655f3d
Binary files /dev/null and b/public/admin/js/DataTables/media/images/back_disabled.png differ
diff --git a/public/admin/js/DataTables/media/images/back_enabled.png b/public/admin/js/DataTables/media/images/back_enabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..c608682b04a6d9b8002602450c8ef7e80ebba099
Binary files /dev/null and b/public/admin/js/DataTables/media/images/back_enabled.png differ
diff --git a/public/admin/js/DataTables/media/images/back_enabled_hover.png b/public/admin/js/DataTables/media/images/back_enabled_hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..d300f1064b3beac1d7d5274e294494d3143e53a2
Binary files /dev/null and b/public/admin/js/DataTables/media/images/back_enabled_hover.png differ
diff --git a/public/admin/js/DataTables/media/images/favicon.ico b/public/admin/js/DataTables/media/images/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..6eeaa2a0d393190ce748107222d9a026f992e4a7
Binary files /dev/null and b/public/admin/js/DataTables/media/images/favicon.ico differ
diff --git a/public/admin/js/DataTables/media/images/forward_disabled.png b/public/admin/js/DataTables/media/images/forward_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a6ded7de821619aedc71d1738c0b73463a4452e
Binary files /dev/null and b/public/admin/js/DataTables/media/images/forward_disabled.png differ
diff --git a/public/admin/js/DataTables/media/images/forward_enabled.png b/public/admin/js/DataTables/media/images/forward_enabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..a4e6b5384b8454ee7f44a8f7c75b0321b7eeb9b1
Binary files /dev/null and b/public/admin/js/DataTables/media/images/forward_enabled.png differ
diff --git a/public/admin/js/DataTables/media/images/forward_enabled_hover.png b/public/admin/js/DataTables/media/images/forward_enabled_hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc46c5ebf0524b72a509fe2d7c1bc74995cb8a9d
Binary files /dev/null and b/public/admin/js/DataTables/media/images/forward_enabled_hover.png differ
diff --git a/public/admin/js/DataTables/media/images/sort_asc.png b/public/admin/js/DataTables/media/images/sort_asc.png
new file mode 100644
index 0000000000000000000000000000000000000000..a88d7975fe9017e4e5f2289a94bd1ed66a5f59dc
Binary files /dev/null and b/public/admin/js/DataTables/media/images/sort_asc.png differ
diff --git a/public/admin/js/DataTables/media/images/sort_asc_disabled.png b/public/admin/js/DataTables/media/images/sort_asc_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..dcd7b7b8cab2304b374e6e4b9dc8c05faa2e1130
Binary files /dev/null and b/public/admin/js/DataTables/media/images/sort_asc_disabled.png differ
diff --git a/public/admin/js/DataTables/media/images/sort_both.png b/public/admin/js/DataTables/media/images/sort_both.png
new file mode 100644
index 0000000000000000000000000000000000000000..18670406bc01ab2721781822dd6478917745ff54
Binary files /dev/null and b/public/admin/js/DataTables/media/images/sort_both.png differ
diff --git a/public/admin/js/DataTables/media/images/sort_desc.png b/public/admin/js/DataTables/media/images/sort_desc.png
new file mode 100644
index 0000000000000000000000000000000000000000..def071ed5afd264a036f6d9e75856366fd6ad153
Binary files /dev/null and b/public/admin/js/DataTables/media/images/sort_desc.png differ
diff --git a/public/admin/js/DataTables/media/images/sort_desc_disabled.png b/public/admin/js/DataTables/media/images/sort_desc_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..7824973cc60fc1841b16f2cb39323cefcdc3f942
Binary files /dev/null and b/public/admin/js/DataTables/media/images/sort_desc_disabled.png differ
diff --git a/public/admin/js/DataTables/media/js/jquery.dataTables.js b/public/admin/js/DataTables/media/js/jquery.dataTables.js
new file mode 100644
index 0000000000000000000000000000000000000000..6689db31747ba156f67c7ea9caecf0b610c4f81a
--- /dev/null
+++ b/public/admin/js/DataTables/media/js/jquery.dataTables.js
@@ -0,0 +1,14613 @@
+/*! DataTables 1.10.1
+ * ©2008-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     DataTables
+ * @description Paginate, search and order HTML tables
+ * @version     1.10.1
+ * @file        jquery.dataTables.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2008-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license
+ *
+ * This source file 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+/*jslint evil: true, undef: true, browser: true */
+/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidateRow,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnScrollBarWidth,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/
+
+(/** @lends <global> */function( window, document, undefined ) {
+
+(function( factory ) {
+	"use strict";
+
+	if ( typeof define === 'function' && define.amd ) {
+		// Define as an AMD module if possible
+		define( 'datatables', ['jquery'], factory );
+	}
+    else if ( typeof exports === 'object' ) {
+        // Node/CommonJS
+        factory( require( 'jquery' ) );
+    }
+	else if ( jQuery && !jQuery.fn.dataTable ) {
+		// Define using browser globals otherwise
+		// Prevent multiple instantiations if the script is loaded twice
+		factory( jQuery );
+	}
+}
+(/** @lends <global> */function( $ ) {
+	"use strict";
+
+	/**
+	 * DataTables is a plug-in for the jQuery Javascript library. It is a highly
+	 * flexible tool, based upon the foundations of progressive enhancement,
+	 * which will add advanced interaction controls to any HTML table. For a
+	 * full list of features please refer to
+	 * [DataTables.net](href="http://datatables.net).
+	 *
+	 * Note that the `DataTable` object is not a global variable but is aliased
+	 * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may
+	 * be  accessed.
+	 *
+	 *  @class
+	 *  @param {object} [init={}] Configuration object for DataTables. Options
+	 *    are defined by {@link DataTable.defaults}
+	 *  @requires jQuery 1.7+
+	 *
+	 *  @example
+	 *    // Basic initialisation
+	 *    $(document).ready( function {
+	 *      $('#example').dataTable();
+	 *    } );
+	 *
+	 *  @example
+	 *    // Initialisation with configuration options - in this case, disable
+	 *    // pagination and sorting.
+	 *    $(document).ready( function {
+	 *      $('#example').dataTable( {
+	 *        "paginate": false,
+	 *        "sort": false
+	 *      } );
+	 *    } );
+	 */
+	var DataTable;
+
+	
+	/*
+	 * It is useful to have variables which are scoped locally so only the
+	 * DataTables functions can access them and they don't leak into global space.
+	 * At the same time these functions are often useful over multiple files in the
+	 * core and API, so we list, or at least document, all variables which are used
+	 * by DataTables as private variables here. This also ensures that there is no
+	 * clashing of variable names and that they can easily referenced for reuse.
+	 */
+	
+	
+	// Defined else where
+	//  _selector_run
+	//  _selector_opts
+	//  _selector_first
+	//  _selector_row_indexes
+	
+	var _ext; // DataTable.ext
+	var _Api; // DataTable.Api
+	var _api_register; // DataTable.Api.register
+	var _api_registerPlural; // DataTable.Api.registerPlural
+	
+	var _re_dic = {};
+	var _re_new_lines = /[\r\n]/g;
+	var _re_html = /<.*?>/g;
+	var _re_date_start = /^[\w\+\-]/;
+	var _re_date_end = /[\w\+\-]$/;
+	
+	// Escape regular expression special characters
+	var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' );
+	
+	// U+2009 is thin space and U+202F is narrow no-break space, both used in many
+	// standards as thousands separators
+	var _re_formatted_numeric = /[',$£€¥%\u2009\u202F]/g;
+	
+	
+	var _empty = function ( d ) {
+		return !d || d === true || d === '-' ? true : false;
+	};
+	
+	
+	var _intVal = function ( s ) {
+		var integer = parseInt( s, 10 );
+		return !isNaN(integer) && isFinite(s) ? integer : null;
+	};
+	
+	// Convert from a formatted number with characters other than `.` as the
+	// decimal place, to a Javascript number
+	var _numToDecimal = function ( num, decimalPoint ) {
+		// Cache created regular expressions for speed as this function is called often
+		if ( ! _re_dic[ decimalPoint ] ) {
+			_re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' );
+		}
+		return typeof num === 'string' ?
+			num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :
+			num;
+	};
+	
+	
+	var _isNumber = function ( d, decimalPoint, formatted ) {
+		var strType = typeof d === 'string';
+	
+		if ( decimalPoint && strType ) {
+			d = _numToDecimal( d, decimalPoint );
+		}
+	
+		if ( formatted && strType ) {
+			d = d.replace( _re_formatted_numeric, '' );
+		}
+	
+		return _empty( d ) || (!isNaN( parseFloat(d) ) && isFinite( d ));
+	};
+	
+	
+	// A string without HTML in it can be considered to be HTML still
+	var _isHtml = function ( d ) {
+		return _empty( d ) || typeof d === 'string';
+	};
+	
+	
+	var _htmlNumeric = function ( d, decimalPoint, formatted ) {
+		if ( _empty( d ) ) {
+			return true;
+		}
+	
+		var html = _isHtml( d );
+		return ! html ?
+			null :
+			_isNumber( _stripHtml( d ), decimalPoint, formatted ) ?
+				true :
+				null;
+	};
+	
+	
+	var _pluck = function ( a, prop, prop2 ) {
+		var out = [];
+		var i=0, ien=a.length;
+	
+		// Could have the test in the loop for slightly smaller code, but speed
+		// is essential here
+		if ( prop2 !== undefined ) {
+			for ( ; i<ien ; i++ ) {
+				if ( a[i] && a[i][ prop ] ) {
+					out.push( a[i][ prop ][ prop2 ] );
+				}
+			}
+		}
+		else {
+			for ( ; i<ien ; i++ ) {
+				if ( a[i] ) {
+					out.push( a[i][ prop ] );
+				}
+			}
+		}
+	
+		return out;
+	};
+	
+	
+	// Basically the same as _pluck, but rather than looping over `a` we use `order`
+	// as the indexes to pick from `a`
+	var _pluck_order = function ( a, order, prop, prop2 )
+	{
+		var out = [];
+		var i=0, ien=order.length;
+	
+		// Could have the test in the loop for slightly smaller code, but speed
+		// is essential here
+		if ( prop2 !== undefined ) {
+			for ( ; i<ien ; i++ ) {
+				out.push( a[ order[i] ][ prop ][ prop2 ] );
+			}
+		}
+		else {
+			for ( ; i<ien ; i++ ) {
+				out.push( a[ order[i] ][ prop ] );
+			}
+		}
+	
+		return out;
+	};
+	
+	
+	var _range = function ( len, start )
+	{
+		var out = [];
+		var end;
+	
+		if ( start === undefined ) {
+			start = 0;
+			end = len;
+		}
+		else {
+			end = start;
+			start = len;
+		}
+	
+		for ( var i=start ; i<end ; i++ ) {
+			out.push( i );
+		}
+	
+		return out;
+	};
+	
+	
+	var _stripHtml = function ( d ) {
+		return d.replace( _re_html, '' );
+	};
+	
+	
+	/**
+	 * Find the unique elements in a source array.
+	 *
+	 * @param  {array} src Source array
+	 * @return {array} Array of unique items
+	 * @ignore
+	 */
+	var _unique = function ( src )
+	{
+		// A faster unique method is to use object keys to identify used values,
+		// but this doesn't work with arrays or objects, which we must also
+		// consider. See jsperf.com/compare-array-unique-versions/4 for more
+		// information.
+		var
+			out = [],
+			val,
+			i, ien=src.length,
+			j, k=0;
+	
+		again: for ( i=0 ; i<ien ; i++ ) {
+			val = src[i];
+	
+			for ( j=0 ; j<k ; j++ ) {
+				if ( out[j] === val ) {
+					continue again;
+				}
+			}
+	
+			out.push( val );
+			k++;
+		}
+	
+		return out;
+	};
+	
+	
+	
+	/**
+	 * Create a mapping object that allows camel case parameters to be looked up
+	 * for their Hungarian counterparts. The mapping is stored in a private
+	 * parameter called `_hungarianMap` which can be accessed on the source object.
+	 *  @param {object} o
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnHungarianMap ( o )
+	{
+		var
+			hungarian = 'a aa ai ao as b fn i m o s ',
+			match,
+			newKey,
+			map = {};
+	
+		$.each( o, function (key, val) {
+			match = key.match(/^([^A-Z]+?)([A-Z])/);
+	
+			if ( match && hungarian.indexOf(match[1]+' ') !== -1 )
+			{
+				newKey = key.replace( match[0], match[2].toLowerCase() );
+				map[ newKey ] = key;
+	
+				//console.log( key, match );
+				if ( match[1] === 'o' )
+				{
+					_fnHungarianMap( o[key] );
+				}
+			}
+		} );
+	
+		o._hungarianMap = map;
+	}
+	
+	
+	/**
+	 * Convert from camel case parameters to Hungarian, based on a Hungarian map
+	 * created by _fnHungarianMap.
+	 *  @param {object} src The model object which holds all parameters that can be
+	 *    mapped.
+	 *  @param {object} user The object to convert from camel case to Hungarian.
+	 *  @param {boolean} force When set to `true`, properties which already have a
+	 *    Hungarian value in the `user` object will be overwritten. Otherwise they
+	 *    won't be.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCamelToHungarian ( src, user, force )
+	{
+		if ( ! src._hungarianMap ) {
+			_fnHungarianMap( src );
+		}
+	
+		var hungarianKey;
+	
+		$.each( user, function (key, val) {
+			hungarianKey = src._hungarianMap[ key ];
+	
+			if ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) )
+			{
+				// For objects, we need to buzz down into the object to copy parameters
+				if ( hungarianKey.charAt(0) === 'o' )
+				{
+					// Copy the camelCase options over to the hungarian
+					if ( ! user[ hungarianKey ] ) {
+						user[ hungarianKey ] = {};
+					}
+					$.extend( true, user[hungarianKey], user[key] );
+	
+					_fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force );
+				}
+				else {
+					user[hungarianKey] = user[ key ];
+				}
+			}
+		} );
+	}
+	
+	
+	/**
+	 * Language compatibility - when certain options are given, and others aren't, we
+	 * need to duplicate the values over, in order to provide backwards compatibility
+	 * with older language files.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnLanguageCompat( lang )
+	{
+		var defaults = DataTable.defaults.oLanguage;
+		var zeroRecords = lang.sZeroRecords;
+	
+		/* Backwards compatibility - if there is no sEmptyTable given, then use the same as
+		 * sZeroRecords - assuming that is given.
+		 */
+		if ( ! lang.sEmptyTable && zeroRecords &&
+			defaults.sEmptyTable === "No data available in table" )
+		{
+			_fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );
+		}
+	
+		/* Likewise with loading records */
+		if ( ! lang.sLoadingRecords && zeroRecords &&
+			defaults.sLoadingRecords === "Loading..." )
+		{
+			_fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );
+		}
+	
+		// Old parameter name of the thousands separator mapped onto the new
+		if ( lang.sInfoThousands ) {
+			lang.sThousands = lang.sInfoThousands;
+		}
+	
+		var decimal = lang.sDecimal;
+		if ( decimal ) {
+			_addNumericSort( decimal );
+		}
+	}
+	
+	
+	/**
+	 * Map one parameter onto another
+	 *  @param {object} o Object to map
+	 *  @param {*} knew The new parameter name
+	 *  @param {*} old The old parameter name
+	 */
+	var _fnCompatMap = function ( o, knew, old ) {
+		if ( o[ knew ] !== undefined ) {
+			o[ old ] = o[ knew ];
+		}
+	};
+	
+	
+	/**
+	 * Provide backwards compatibility for the main DT options. Note that the new
+	 * options are mapped onto the old parameters, so this is an external interface
+	 * change only.
+	 *  @param {object} init Object to map
+	 */
+	function _fnCompatOpts ( init )
+	{
+		_fnCompatMap( init, 'ordering',      'bSort' );
+		_fnCompatMap( init, 'orderMulti',    'bSortMulti' );
+		_fnCompatMap( init, 'orderClasses',  'bSortClasses' );
+		_fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' );
+		_fnCompatMap( init, 'order',         'aaSorting' );
+		_fnCompatMap( init, 'orderFixed',    'aaSortingFixed' );
+		_fnCompatMap( init, 'paging',        'bPaginate' );
+		_fnCompatMap( init, 'pagingType',    'sPaginationType' );
+		_fnCompatMap( init, 'pageLength',    'iDisplayLength' );
+		_fnCompatMap( init, 'searching',     'bFilter' );
+	
+		// Column search objects are in an array, so it needs to be converted
+		// element by element
+		var searchCols = init.aoSearchCols;
+	
+		if ( searchCols ) {
+			for ( var i=0, ien=searchCols.length ; i<ien ; i++ ) {
+				if ( searchCols[i] ) {
+					_fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Provide backwards compatibility for column options. Note that the new options
+	 * are mapped onto the old parameters, so this is an external interface change
+	 * only.
+	 *  @param {object} init Object to map
+	 */
+	function _fnCompatCols ( init )
+	{
+		_fnCompatMap( init, 'orderable',     'bSortable' );
+		_fnCompatMap( init, 'orderData',     'aDataSort' );
+		_fnCompatMap( init, 'orderSequence', 'asSorting' );
+		_fnCompatMap( init, 'orderDataType', 'sortDataType' );
+	}
+	
+	
+	/**
+	 * Browser feature detection for capabilities, quirks
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnBrowserDetect( settings )
+	{
+		var browser = settings.oBrowser;
+	
+		// Scrolling feature / quirks detection
+		var n = $('<div/>')
+			.css( {
+				position: 'absolute',
+				top: 0,
+				left: 0,
+				height: 1,
+				width: 1,
+				overflow: 'hidden'
+			} )
+			.append(
+				$('<div/>')
+					.css( {
+						position: 'absolute',
+						top: 1,
+						left: 1,
+						width: 100,
+						overflow: 'scroll'
+					} )
+					.append(
+						$('<div class="test"/>')
+							.css( {
+								width: '100%',
+								height: 10
+							} )
+					)
+			)
+			.appendTo( 'body' );
+	
+		var test = n.find('.test');
+	
+		// IE6/7 will oversize a width 100% element inside a scrolling element, to
+		// include the width of the scrollbar, while other browsers ensure the inner
+		// element is contained without forcing scrolling
+		browser.bScrollOversize = test[0].offsetWidth === 100;
+	
+		// In rtl text layout, some browsers (most, but not all) will place the
+		// scrollbar on the left, rather than the right.
+		browser.bScrollbarLeft = test.offset().left !== 1;
+	
+		n.remove();
+	}
+	
+	
+	/**
+	 * Array.prototype reduce[Right] method, used for browsers which don't support
+	 * JS 1.6. Done this way to reduce code size, since we iterate either way
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnReduce ( that, fn, init, start, end, inc )
+	{
+		var
+			i = start,
+			value,
+			isSet = false;
+	
+		if ( init !== undefined ) {
+			value = init;
+			isSet = true;
+		}
+	
+		while ( i !== end ) {
+			if ( ! that.hasOwnProperty(i) ) {
+				continue;
+			}
+	
+			value = isSet ?
+				fn( value, that[i], i, that ) :
+				that[i];
+	
+			isSet = true;
+			i += inc;
+		}
+	
+		return value;
+	}
+	
+	/**
+	 * Add a column to the list used for the table with default values
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {node} nTh The th element for this column
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddColumn( oSettings, nTh )
+	{
+		// Add column to aoColumns array
+		var oDefaults = DataTable.defaults.column;
+		var iCol = oSettings.aoColumns.length;
+		var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {
+			"nTh": nTh ? nTh : document.createElement('th'),
+			"sTitle":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',
+			"aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],
+			"mData": oDefaults.mData ? oDefaults.mData : iCol,
+			idx: iCol
+		} );
+		oSettings.aoColumns.push( oCol );
+	
+		// Add search object for column specific search. Note that the `searchCols[ iCol ]`
+		// passed into extend can be undefined. This allows the user to give a default
+		// with only some of the parameters defined, and also not give a default
+		var searchCols = oSettings.aoPreSearchCols;
+		searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );
+	
+		// Use the default column options function to initialise classes etc
+		_fnColumnOptions( oSettings, iCol, null );
+	}
+	
+	
+	/**
+	 * Apply options for a column
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iCol column index to consider
+	 *  @param {object} oOptions object with sType, bVisible and bSearchable etc
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnColumnOptions( oSettings, iCol, oOptions )
+	{
+		var oCol = oSettings.aoColumns[ iCol ];
+		var oClasses = oSettings.oClasses;
+		var th = $(oCol.nTh);
+	
+		// Try to get width information from the DOM. We can't get it from CSS
+		// as we'd need to parse the CSS stylesheet. `width` option can override
+		if ( ! oCol.sWidthOrig ) {
+			// Width attribute
+			oCol.sWidthOrig = th.attr('width') || null;
+	
+			// Style attribute
+			var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/);
+			if ( t ) {
+				oCol.sWidthOrig = t[1];
+			}
+		}
+	
+		/* User specified column options */
+		if ( oOptions !== undefined && oOptions !== null )
+		{
+			// Backwards compatibility
+			_fnCompatCols( oOptions );
+	
+			// Map camel case parameters to their Hungarian counterparts
+			_fnCamelToHungarian( DataTable.defaults.column, oOptions );
+	
+			/* Backwards compatibility for mDataProp */
+			if ( oOptions.mDataProp !== undefined && !oOptions.mData )
+			{
+				oOptions.mData = oOptions.mDataProp;
+			}
+	
+			if ( oOptions.sType )
+			{
+				oCol._sManualType = oOptions.sType;
+			}
+	
+			// `class` is a reserved word in Javascript, so we need to provide
+			// the ability to use a valid name for the camel case input
+			if ( oOptions.className && ! oOptions.sClass )
+			{
+				oOptions.sClass = oOptions.className;
+			}
+	
+			$.extend( oCol, oOptions );
+			_fnMap( oCol, oOptions, "sWidth", "sWidthOrig" );
+	
+			/* iDataSort to be applied (backwards compatibility), but aDataSort will take
+			 * priority if defined
+			 */
+			if ( typeof oOptions.iDataSort === 'number' )
+			{
+				oCol.aDataSort = [ oOptions.iDataSort ];
+			}
+			_fnMap( oCol, oOptions, "aDataSort" );
+		}
+	
+		/* Cache the data get and set functions for speed */
+		var mDataSrc = oCol.mData;
+		var mData = _fnGetObjectDataFn( mDataSrc );
+		var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;
+	
+		var attrTest = function( src ) {
+			return typeof src === 'string' && src.indexOf('@') !== -1;
+		};
+		oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && (
+			attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)
+		);
+	
+		oCol.fnGetData = function (rowData, type, meta) {
+			var innerData = mData( rowData, type, undefined, meta );
+	
+			return mRender && type ?
+				mRender( innerData, type, rowData, meta ) :
+				innerData;
+		};
+		oCol.fnSetData = function ( rowData, val, meta ) {
+			return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );
+		};
+	
+		/* Feature sorting overrides column specific when off */
+		if ( !oSettings.oFeatures.bSort )
+		{
+			oCol.bSortable = false;
+			th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called
+		}
+	
+		/* Check that the class assignment is correct for sorting */
+		var bAsc = $.inArray('asc', oCol.asSorting) !== -1;
+		var bDesc = $.inArray('desc', oCol.asSorting) !== -1;
+		if ( !oCol.bSortable || (!bAsc && !bDesc) )
+		{
+			oCol.sSortingClass = oClasses.sSortableNone;
+			oCol.sSortingClassJUI = "";
+		}
+		else if ( bAsc && !bDesc )
+		{
+			oCol.sSortingClass = oClasses.sSortableAsc;
+			oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;
+		}
+		else if ( !bAsc && bDesc )
+		{
+			oCol.sSortingClass = oClasses.sSortableDesc;
+			oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;
+		}
+		else
+		{
+			oCol.sSortingClass = oClasses.sSortable;
+			oCol.sSortingClassJUI = oClasses.sSortJUI;
+		}
+	}
+	
+	
+	/**
+	 * Adjust the table column widths for new data. Note: you would probably want to
+	 * do a redraw after calling this function!
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAdjustColumnSizing ( settings )
+	{
+		/* Not interested in doing column width calculation if auto-width is disabled */
+		if ( settings.oFeatures.bAutoWidth !== false )
+		{
+			var columns = settings.aoColumns;
+	
+			_fnCalculateColumnWidths( settings );
+			for ( var i=0 , iLen=columns.length ; i<iLen ; i++ )
+			{
+				columns[i].nTh.style.width = columns[i].sWidth;
+			}
+		}
+	
+		var scroll = settings.oScroll;
+		if ( scroll.sY !== '' || scroll.sX !== '')
+		{
+			_fnScrollDraw( settings );
+		}
+	
+		_fnCallbackFire( settings, null, 'column-sizing', [settings] );
+	}
+	
+	
+	/**
+	 * Covert the index of a visible column to the index in the data array (take account
+	 * of hidden columns)
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iMatch Visible column index to lookup
+	 *  @returns {int} i the data index
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnVisibleToColumnIndex( oSettings, iMatch )
+	{
+		var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+	
+		return typeof aiVis[iMatch] === 'number' ?
+			aiVis[iMatch] :
+			null;
+	}
+	
+	
+	/**
+	 * Covert the index of an index in the data array and convert it to the visible
+	 *   column index (take account of hidden columns)
+	 *  @param {int} iMatch Column index to lookup
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {int} i the data index
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnColumnIndexToVisible( oSettings, iMatch )
+	{
+		var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+		var iPos = $.inArray( iMatch, aiVis );
+	
+		return iPos !== -1 ? iPos : null;
+	}
+	
+	
+	/**
+	 * Get the number of visible columns
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {int} i the number of visible columns
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnVisbleColumns( oSettings )
+	{
+		return _fnGetColumns( oSettings, 'bVisible' ).length;
+	}
+	
+	
+	/**
+	 * Get an array of column indexes that match a given property
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {string} sParam Parameter in aoColumns to look for - typically
+	 *    bVisible or bSearchable
+	 *  @returns {array} Array of indexes with matched properties
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetColumns( oSettings, sParam )
+	{
+		var a = [];
+	
+		$.map( oSettings.aoColumns, function(val, i) {
+			if ( val[sParam] ) {
+				a.push( i );
+			}
+		} );
+	
+		return a;
+	}
+	
+	
+	/**
+	 * Calculate the 'type' of a column
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnColumnTypes ( settings )
+	{
+		var columns = settings.aoColumns;
+		var data = settings.aoData;
+		var types = DataTable.ext.type.detect;
+		var i, ien, j, jen, k, ken;
+		var col, cell, detectedType, cache;
+	
+		// For each column, spin over the 
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			col = columns[i];
+			cache = [];
+	
+			if ( ! col.sType && col._sManualType ) {
+				col.sType = col._sManualType;
+			}
+			else if ( ! col.sType ) {
+				for ( j=0, jen=types.length ; j<jen ; j++ ) {
+					for ( k=0, ken=data.length ; k<ken ; k++ ) {
+						// Use a cache array so we only need to get the type data
+						// from the formatter once (when using multiple detectors)
+						if ( cache[k] === undefined ) {
+							cache[k] = _fnGetCellData( settings, k, i, 'type' );
+						}
+	
+						detectedType = types[j]( cache[k], settings );
+	
+						// Doesn't match, so break early, since this type can't
+						// apply to this column. Also, HTML is a special case since
+						// it is so similar to `string`. Just a single match is
+						// needed for a column to be html type
+						if ( ! detectedType || detectedType === 'html' ) {
+							break;
+						}
+					}
+	
+					// Type is valid for all data points in the column - use this
+					// type
+					if ( detectedType ) {
+						col.sType = detectedType;
+						break;
+					}
+				}
+	
+				// Fall back - if no type was detected, always use string
+				if ( ! col.sType ) {
+					col.sType = 'string';
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Take the column definitions and static columns arrays and calculate how
+	 * they relate to column indexes. The callback function will then apply the
+	 * definition found for a column to a suitable configuration object.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {array} aoColDefs The aoColumnDefs array that is to be applied
+	 *  @param {array} aoCols The aoColumns array that defines columns individually
+	 *  @param {function} fn Callback function - takes two parameters, the calculated
+	 *    column index and the definition for that column.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )
+	{
+		var i, iLen, j, jLen, k, kLen, def;
+		var columns = oSettings.aoColumns;
+	
+		// Column definitions with aTargets
+		if ( aoColDefs )
+		{
+			/* Loop over the definitions array - loop in reverse so first instance has priority */
+			for ( i=aoColDefs.length-1 ; i>=0 ; i-- )
+			{
+				def = aoColDefs[i];
+	
+				/* Each definition can target multiple columns, as it is an array */
+				var aTargets = def.targets !== undefined ?
+					def.targets :
+					def.aTargets;
+	
+				if ( ! $.isArray( aTargets ) )
+				{
+					aTargets = [ aTargets ];
+				}
+	
+				for ( j=0, jLen=aTargets.length ; j<jLen ; j++ )
+				{
+					if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )
+					{
+						/* Add columns that we don't yet know about */
+						while( columns.length <= aTargets[j] )
+						{
+							_fnAddColumn( oSettings );
+						}
+	
+						/* Integer, basic index */
+						fn( aTargets[j], def );
+					}
+					else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )
+					{
+						/* Negative integer, right to left column counting */
+						fn( columns.length+aTargets[j], def );
+					}
+					else if ( typeof aTargets[j] === 'string' )
+					{
+						/* Class name matching on TH element */
+						for ( k=0, kLen=columns.length ; k<kLen ; k++ )
+						{
+							if ( aTargets[j] == "_all" ||
+							     $(columns[k].nTh).hasClass( aTargets[j] ) )
+							{
+								fn( k, def );
+							}
+						}
+					}
+				}
+			}
+		}
+	
+		// Statically defined columns array
+		if ( aoCols )
+		{
+			for ( i=0, iLen=aoCols.length ; i<iLen ; i++ )
+			{
+				fn( i, aoCols[i] );
+			}
+		}
+	}
+	
+	/**
+	 * Add a data array to the table, creating DOM node etc. This is the parallel to
+	 * _fnGatherData, but for adding rows from a Javascript source, rather than a
+	 * DOM source.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {array} aData data array to be added
+	 *  @param {node} [nTr] TR element to add to the table - optional. If not given,
+	 *    DataTables will create a row automatically
+	 *  @param {array} [anTds] Array of TD|TH elements for the row - must be given
+	 *    if nTr is.
+	 *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddData ( oSettings, aDataIn, nTr, anTds )
+	{
+		/* Create the object for storing information about this new row */
+		var iRow = oSettings.aoData.length;
+		var oData = $.extend( true, {}, DataTable.models.oRow, {
+			src: nTr ? 'dom' : 'data'
+		} );
+	
+		oData._aData = aDataIn;
+		oSettings.aoData.push( oData );
+	
+		/* Create the cells */
+		var nTd, sThisType;
+		var columns = oSettings.aoColumns;
+		for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
+		{
+			// When working with a row, the data source object must be populated. In
+			// all other cases, the data source object is already populated, so we
+			// don't overwrite it, which might break bindings etc
+			if ( nTr ) {
+				_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );
+			}
+			columns[i].sType = null;
+		}
+	
+		/* Add to the display array */
+		oSettings.aiDisplayMaster.push( iRow );
+	
+		/* Create the DOM information, or register it if already present */
+		if ( nTr || ! oSettings.oFeatures.bDeferRender )
+		{
+			_fnCreateTr( oSettings, iRow, nTr, anTds );
+		}
+	
+		return iRow;
+	}
+	
+	
+	/**
+	 * Add one or more TR elements to the table. Generally we'd expect to
+	 * use this for reading data from a DOM sourced table, but it could be
+	 * used for an TR element. Note that if a TR is given, it is used (i.e.
+	 * it is not cloned).
+	 *  @param {object} settings dataTables settings object
+	 *  @param {array|node|jQuery} trs The TR element(s) to add to the table
+	 *  @returns {array} Array of indexes for the added rows
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddTr( settings, trs )
+	{
+		var row;
+	
+		// Allow an individual node to be passed in
+		if ( ! (trs instanceof $) ) {
+			trs = $(trs);
+		}
+	
+		return trs.map( function (i, el) {
+			row = _fnGetRowElements( settings, el );
+			return _fnAddData( settings, row.data, el, row.cells );
+		} );
+	}
+	
+	
+	/**
+	 * Take a TR element and convert it to an index in aoData
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {node} n the TR element to find
+	 *  @returns {int} index if the node is found, null if not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnNodeToDataIndex( oSettings, n )
+	{
+		return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;
+	}
+	
+	
+	/**
+	 * Take a TD element and convert it into a column data index (not the visible index)
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iRow The row number the TD/TH can be found in
+	 *  @param {node} n The TD/TH element to find
+	 *  @returns {int} index if the node is found, -1 if not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnNodeToColumnIndex( oSettings, iRow, n )
+	{
+		return $.inArray( n, oSettings.aoData[ iRow ].anCells );
+	}
+	
+	
+	/**
+	 * Get the data for a given cell from the internal cache, taking into account data mapping
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} rowIdx aoData row id
+	 *  @param {int} colIdx Column index
+	 *  @param {string} type data get type ('display', 'type' 'filter' 'sort')
+	 *  @returns {*} Cell data
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetCellData( settings, rowIdx, colIdx, type )
+	{
+		var draw           = settings.iDraw;
+		var col            = settings.aoColumns[colIdx];
+		var rowData        = settings.aoData[rowIdx]._aData;
+		var defaultContent = col.sDefaultContent;
+		var cellData       = col.fnGetData( rowData, type, {
+			settings: settings,
+			row:      rowIdx,
+			col:      colIdx
+		} );
+	
+		if ( cellData === undefined ) {
+			if ( settings.iDrawError != draw && defaultContent === null ) {
+				_fnLog( settings, 0, "Requested unknown parameter "+
+					(typeof col.mData=='function' ? '{function}' : "'"+col.mData+"'")+
+					" for row "+rowIdx, 4 );
+				settings.iDrawError = draw;
+			}
+			return defaultContent;
+		}
+	
+		/* When the data source is null, we can use default column data */
+		if ( (cellData === rowData || cellData === null) && defaultContent !== null ) {
+			cellData = defaultContent;
+		}
+		else if ( typeof cellData === 'function' ) {
+			// If the data source is a function, then we run it and use the return,
+			// executing in the scope of the data object (for instances)
+			return cellData.call( rowData );
+		}
+	
+		if ( cellData === null && type == 'display' ) {
+			return '';
+		}
+		return cellData;
+	}
+	
+	
+	/**
+	 * Set the value for a specific cell, into the internal data cache
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} rowIdx aoData row id
+	 *  @param {int} colIdx Column index
+	 *  @param {*} val Value to set
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSetCellData( settings, rowIdx, colIdx, val )
+	{
+		var col     = settings.aoColumns[colIdx];
+		var rowData = settings.aoData[rowIdx]._aData;
+	
+		col.fnSetData( rowData, val, {
+			settings: settings,
+			row:      rowIdx,
+			col:      colIdx
+		}  );
+	}
+	
+	
+	// Private variable that is used to match action syntax in the data property object
+	var __reArray = /\[.*?\]$/;
+	var __reFn = /\(\)$/;
+	
+	/**
+	 * Split string on periods, taking into account escaped periods
+	 * @param  {string} str String to split
+	 * @return {array} Split string
+	 */
+	function _fnSplitObjNotation( str )
+	{
+		return $.map( str.match(/(\\.|[^\.])+/g), function ( s ) {
+			return s.replace(/\\./g, '.');
+		} );
+	}
+	
+	
+	/**
+	 * Return a function that can be used to get data from a source object, taking
+	 * into account the ability to use nested objects as a source
+	 *  @param {string|int|function} mSource The data source for the object
+	 *  @returns {function} Data get function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetObjectDataFn( mSource )
+	{
+		if ( $.isPlainObject( mSource ) )
+		{
+			/* Build an object of get functions, and wrap them in a single call */
+			var o = {};
+			$.each( mSource, function (key, val) {
+				if ( val ) {
+					o[key] = _fnGetObjectDataFn( val );
+				}
+			} );
+	
+			return function (data, type, row, meta) {
+				var t = o[type] || o._;
+				return t !== undefined ?
+					t(data, type, row, meta) :
+					data;
+			};
+		}
+		else if ( mSource === null )
+		{
+			/* Give an empty string for rendering / sorting etc */
+			return function (data) { // type, row and meta also passed, but not used
+				return data;
+			};
+		}
+		else if ( typeof mSource === 'function' )
+		{
+			return function (data, type, row, meta) {
+				return mSource( data, type, row, meta );
+			};
+		}
+		else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||
+			      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )
+		{
+			/* If there is a . in the source string then the data source is in a
+			 * nested object so we loop over the data for each level to get the next
+			 * level down. On each loop we test for undefined, and if found immediately
+			 * return. This allows entire objects to be missing and sDefaultContent to
+			 * be used if defined, rather than throwing an error
+			 */
+			var fetchData = function (data, type, src) {
+				var arrayNotation, funcNotation, out, innerSrc;
+	
+				if ( src !== "" )
+				{
+					var a = _fnSplitObjNotation( src );
+	
+					for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+					{
+						// Check if we are dealing with special notation
+						arrayNotation = a[i].match(__reArray);
+						funcNotation = a[i].match(__reFn);
+	
+						if ( arrayNotation )
+						{
+							// Array notation
+							a[i] = a[i].replace(__reArray, '');
+	
+							// Condition allows simply [] to be passed in
+							if ( a[i] !== "" ) {
+								data = data[ a[i] ];
+							}
+							out = [];
+	
+							// Get the remainder of the nested object to get
+							a.splice( 0, i+1 );
+							innerSrc = a.join('.');
+	
+							// Traverse each entry in the array getting the properties requested
+							for ( var j=0, jLen=data.length ; j<jLen ; j++ ) {
+								out.push( fetchData( data[j], type, innerSrc ) );
+							}
+	
+							// If a string is given in between the array notation indicators, that
+							// is used to join the strings together, otherwise an array is returned
+							var join = arrayNotation[0].substring(1, arrayNotation[0].length-1);
+							data = (join==="") ? out : out.join(join);
+	
+							// The inner call to fetchData has already traversed through the remainder
+							// of the source requested, so we exit from the loop
+							break;
+						}
+						else if ( funcNotation )
+						{
+							// Function call
+							a[i] = a[i].replace(__reFn, '');
+							data = data[ a[i] ]();
+							continue;
+						}
+	
+						if ( data === null || data[ a[i] ] === undefined )
+						{
+							return undefined;
+						}
+						data = data[ a[i] ];
+					}
+				}
+	
+				return data;
+			};
+	
+			return function (data, type) { // row and meta also passed, but not used
+				return fetchData( data, type, mSource );
+			};
+		}
+		else
+		{
+			/* Array or flat object mapping */
+			return function (data, type) { // row and meta also passed, but not used
+				return data[mSource];
+			};
+		}
+	}
+	
+	
+	/**
+	 * Return a function that can be used to set data from a source object, taking
+	 * into account the ability to use nested objects as a source
+	 *  @param {string|int|function} mSource The data source for the object
+	 *  @returns {function} Data set function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSetObjectDataFn( mSource )
+	{
+		if ( $.isPlainObject( mSource ) )
+		{
+			/* Unlike get, only the underscore (global) option is used for for
+			 * setting data since we don't know the type here. This is why an object
+			 * option is not documented for `mData` (which is read/write), but it is
+			 * for `mRender` which is read only.
+			 */
+			return _fnSetObjectDataFn( mSource._ );
+		}
+		else if ( mSource === null )
+		{
+			/* Nothing to do when the data source is null */
+			return function () {};
+		}
+		else if ( typeof mSource === 'function' )
+		{
+			return function (data, val, meta) {
+				mSource( data, 'set', val, meta );
+			};
+		}
+		else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||
+			      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )
+		{
+			/* Like the get, we need to get data from a nested object */
+			var setData = function (data, val, src) {
+				var a = _fnSplitObjNotation( src ), b;
+				var aLast = a[a.length-1];
+				var arrayNotation, funcNotation, o, innerSrc;
+	
+				for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )
+				{
+					// Check if we are dealing with an array notation request
+					arrayNotation = a[i].match(__reArray);
+					funcNotation = a[i].match(__reFn);
+	
+					if ( arrayNotation )
+					{
+						a[i] = a[i].replace(__reArray, '');
+						data[ a[i] ] = [];
+	
+						// Get the remainder of the nested object to set so we can recurse
+						b = a.slice();
+						b.splice( 0, i+1 );
+						innerSrc = b.join('.');
+	
+						// Traverse each entry in the array setting the properties requested
+						for ( var j=0, jLen=val.length ; j<jLen ; j++ )
+						{
+							o = {};
+							setData( o, val[j], innerSrc );
+							data[ a[i] ].push( o );
+						}
+	
+						// The inner call to setData has already traversed through the remainder
+						// of the source and has set the data, thus we can exit here
+						return;
+					}
+					else if ( funcNotation )
+					{
+						// Function call
+						a[i] = a[i].replace(__reFn, '');
+						data = data[ a[i] ]( val );
+					}
+	
+					// If the nested object doesn't currently exist - since we are
+					// trying to set the value - create it
+					if ( data[ a[i] ] === null || data[ a[i] ] === undefined )
+					{
+						data[ a[i] ] = {};
+					}
+					data = data[ a[i] ];
+				}
+	
+				// Last item in the input - i.e, the actual set
+				if ( aLast.match(__reFn ) )
+				{
+					// Function call
+					data = data[ aLast.replace(__reFn, '') ]( val );
+				}
+				else
+				{
+					// If array notation is used, we just want to strip it and use the property name
+					// and assign the value. If it isn't used, then we get the result we want anyway
+					data[ aLast.replace(__reArray, '') ] = val;
+				}
+			};
+	
+			return function (data, val) { // meta is also passed in, but not used
+				return setData( data, val, mSource );
+			};
+		}
+		else
+		{
+			/* Array or flat object mapping */
+			return function (data, val) { // meta is also passed in, but not used
+				data[mSource] = val;
+			};
+		}
+	}
+	
+	
+	/**
+	 * Return an array with the full table data
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns array {array} aData Master data array
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetDataMaster ( settings )
+	{
+		return _pluck( settings.aoData, '_aData' );
+	}
+	
+	
+	/**
+	 * Nuke the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnClearTable( settings )
+	{
+		settings.aoData.length = 0;
+		settings.aiDisplayMaster.length = 0;
+		settings.aiDisplay.length = 0;
+	}
+	
+	
+	 /**
+	 * Take an array of integers (index array) and remove a target integer (value - not
+	 * the key!)
+	 *  @param {array} a Index array to target
+	 *  @param {int} iTarget value to find
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDeleteIndex( a, iTarget, splice )
+	{
+		var iTargetIndex = -1;
+	
+		for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+		{
+			if ( a[i] == iTarget )
+			{
+				iTargetIndex = i;
+			}
+			else if ( a[i] > iTarget )
+			{
+				a[i]--;
+			}
+		}
+	
+		if ( iTargetIndex != -1 && splice === undefined )
+		{
+			a.splice( iTargetIndex, 1 );
+		}
+	}
+	
+	
+	/**
+	 * Mark cached data as invalid such that a re-read of the data will occur when
+	 * the cached data is next requested. Also update from the data source object.
+	 *
+	 * @param {object} settings DataTables settings object
+	 * @param  {int}    rowIdx   Row index to invalidate
+	 * @memberof DataTable#oApi
+	 *
+	 * @todo For the modularisation of v1.11 this will need to become a callback, so
+	 *   the sort and filter methods can subscribe to it. That will required
+	 *   initialisation options for sorting, which is why it is not already baked in
+	 */
+	function _fnInvalidateRow( settings, rowIdx, src, column )
+	{
+		var row = settings.aoData[ rowIdx ];
+		var i, ien;
+	
+		// Are we reading last data from DOM or the data object?
+		if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {
+			// Read the data from the DOM
+			row._aData = _fnGetRowElements( settings, row ).data;
+		}
+		else {
+			// Reading from data object, update the DOM
+			var cells = row.anCells;
+			var cell;
+	
+			if ( cells ) {
+				for ( i=0, ien=cells.length ; i<ien ; i++ ) {
+					cell = cells[i];
+	
+					// This is very frustrating, but in IE if you just write directly
+					// to innerHTML, and elements that are overwritten are GC'ed,
+					// even if there is a reference to them elsewhere
+					while ( cell.childNodes.length ) {
+						cell.removeChild( cell.firstChild );
+					}
+	
+					cells[i].innerHTML = _fnGetCellData( settings, rowIdx, i, 'display' );
+				}
+			}
+		}
+	
+		row._aSortData = null;
+		row._aFilterData = null;
+	
+		// Invalidate the type for a specific column (if given) or all columns since
+		// the data might have changed
+		var cols = settings.aoColumns;
+		if ( column !== undefined ) {
+			cols[ column ].sType = null;
+		}
+		else {
+			for ( i=0, ien=cols.length ; i<ien ; i++ ) {
+				cols[i].sType = null;
+			}
+		}
+	
+		// Update DataTables special `DT_*` attributes for the row
+		_fnRowAttributes( row );
+	}
+	
+	
+	/**
+	 * Build a data source object from an HTML row, reading the contents of the
+	 * cells that are in the row.
+	 *
+	 * @param {object} settings DataTables settings object
+	 * @param {node|object} TR element from which to read data or existing row
+	 *   object from which to re-read the data from the cells
+	 * @returns {object} Object with two parameters: `data` the data read, in
+	 *   document order, and `cells` and array of nodes (they can be useful to the
+	 *   caller, so rather than needing a second traversal to get them, just return
+	 *   them from here).
+	 * @memberof DataTable#oApi
+	 */
+	function _fnGetRowElements( settings, row )
+	{
+		var
+			d = [],
+			tds = [],
+			td = row.firstChild,
+			name, col, o, i=0, contents,
+			columns = settings.aoColumns;
+	
+		var attr = function ( str, data, td  ) {
+			if ( typeof str === 'string' ) {
+				var idx = str.indexOf('@');
+	
+				if ( idx !== -1 ) {
+					var src = str.substring( idx+1 );
+					o[ '@'+src ] = td.getAttribute( src );
+				}
+			}
+		};
+	
+		var cellProcess = function ( cell ) {
+			col = columns[i];
+			contents = $.trim(cell.innerHTML);
+	
+			if ( col && col._bAttrSrc ) {
+				o = {
+					display: contents
+				};
+	
+				attr( col.mData.sort, o, cell );
+				attr( col.mData.type, o, cell );
+				attr( col.mData.filter, o, cell );
+	
+				d.push( o );
+			}
+			else {
+				d.push( contents );
+			}
+	
+			i++;
+		};
+	
+		if ( td ) {
+			// `tr` element passed in
+			while ( td ) {
+				name = td.nodeName.toUpperCase();
+	
+				if ( name == "TD" || name == "TH" ) {
+					cellProcess( td );
+					tds.push( td );
+				}
+	
+				td = td.nextSibling;
+			}
+		}
+		else {
+			// Existing row object passed in
+			tds = row.anCells;
+			
+			for ( var j=0, jen=tds.length ; j<jen ; j++ ) {
+				cellProcess( tds[j] );
+			}
+		}
+	
+		return {
+			data: d,
+			cells: tds
+		};
+	}
+	/**
+	 * Create a new TR element (and it's TD children) for a row
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {int} iRow Row to consider
+	 *  @param {node} [nTrIn] TR element to add to the table - optional. If not given,
+	 *    DataTables will create a row automatically
+	 *  @param {array} [anTds] Array of TD|TH elements for the row - must be given
+	 *    if nTr is.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCreateTr ( oSettings, iRow, nTrIn, anTds )
+	{
+		var
+			row = oSettings.aoData[iRow],
+			rowData = row._aData,
+			cells = [],
+			nTr, nTd, oCol,
+			i, iLen;
+	
+		if ( row.nTr === null )
+		{
+			nTr = nTrIn || document.createElement('tr');
+	
+			row.nTr = nTr;
+			row.anCells = cells;
+	
+			/* Use a private property on the node to allow reserve mapping from the node
+			 * to the aoData array for fast look up
+			 */
+			nTr._DT_RowIndex = iRow;
+	
+			/* Special parameters can be given by the data source to be used on the row */
+			_fnRowAttributes( row );
+	
+			/* Process each column */
+			for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+			{
+				oCol = oSettings.aoColumns[i];
+	
+				nTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType );
+				cells.push( nTd );
+	
+				// Need to create the HTML if new, or if a rendering function is defined
+				if ( !nTrIn || oCol.mRender || oCol.mData !== i )
+				{
+					nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );
+				}
+	
+				/* Add user defined class */
+				if ( oCol.sClass )
+				{
+					nTd.className += ' '+oCol.sClass;
+				}
+	
+				// Visibility - add or remove as required
+				if ( oCol.bVisible && ! nTrIn )
+				{
+					nTr.appendChild( nTd );
+				}
+				else if ( ! oCol.bVisible && nTrIn )
+				{
+					nTd.parentNode.removeChild( nTd );
+				}
+	
+				if ( oCol.fnCreatedCell )
+				{
+					oCol.fnCreatedCell.call( oSettings.oInstance,
+						nTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i
+					);
+				}
+			}
+	
+			_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] );
+		}
+	
+		// Remove once webkit bug 131819 and Chromium bug 365619 have been resolved
+		// and deployed
+		row.nTr.setAttribute( 'role', 'row' );
+	}
+	
+	
+	/**
+	 * Add attributes to a row based on the special `DT_*` parameters in a data
+	 * source object.
+	 *  @param {object} DataTables row object for the row to be modified
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnRowAttributes( row )
+	{
+		var tr = row.nTr;
+		var data = row._aData;
+	
+		if ( tr ) {
+			if ( data.DT_RowId ) {
+				tr.id = data.DT_RowId;
+			}
+	
+			if ( data.DT_RowClass ) {
+				// Remove any classes added by DT_RowClass before
+				var a = data.DT_RowClass.split(' ');
+				row.__rowc = row.__rowc ?
+					_unique( row.__rowc.concat( a ) ) :
+					a;
+	
+				$(tr)
+					.removeClass( row.__rowc.join(' ') )
+					.addClass( data.DT_RowClass );
+			}
+	
+			if ( data.DT_RowData ) {
+				$(tr).data( data.DT_RowData );
+			}
+		}
+	}
+	
+	
+	/**
+	 * Create the HTML header for the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnBuildHead( oSettings )
+	{
+		var i, ien, cell, row, column;
+		var thead = oSettings.nTHead;
+		var tfoot = oSettings.nTFoot;
+		var createHeader = $('th, td', thead).length === 0;
+		var classes = oSettings.oClasses;
+		var columns = oSettings.aoColumns;
+	
+		if ( createHeader ) {
+			row = $('<tr/>').appendTo( thead );
+		}
+	
+		for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+			column = columns[i];
+			cell = $( column.nTh ).addClass( column.sClass );
+	
+			if ( createHeader ) {
+				cell.appendTo( row );
+			}
+	
+			// 1.11 move into sorting
+			if ( oSettings.oFeatures.bSort ) {
+				cell.addClass( column.sSortingClass );
+	
+				if ( column.bSortable !== false ) {
+					cell
+						.attr( 'tabindex', oSettings.iTabIndex )
+						.attr( 'aria-controls', oSettings.sTableId );
+	
+					_fnSortAttachListener( oSettings, column.nTh, i );
+				}
+			}
+	
+			if ( column.sTitle != cell.html() ) {
+				cell.html( column.sTitle );
+			}
+	
+			_fnRenderer( oSettings, 'header' )(
+				oSettings, cell, column, classes
+			);
+		}
+	
+		if ( createHeader ) {
+			_fnDetectHeader( oSettings.aoHeader, thead );
+		}
+		
+		/* ARIA role for the rows */
+	 	$(thead).find('>tr').attr('role', 'row');
+	
+		/* Deal with the footer - add classes if required */
+		$(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH );
+		$(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH );
+	
+		// Cache the footer cells. Note that we only take the cells from the first
+		// row in the footer. If there is more than one row the user wants to
+		// interact with, they need to use the table().foot() method. Note also this
+		// allows cells to be used for multiple columns using colspan
+		if ( tfoot !== null ) {
+			var cells = oSettings.aoFooter[0];
+	
+			for ( i=0, ien=cells.length ; i<ien ; i++ ) {
+				column = columns[i];
+				column.nTf = cells[i].cell;
+	
+				if ( column.sClass ) {
+					$(column.nTf).addClass( column.sClass );
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Draw the header (or footer) element based on the column visibility states. The
+	 * methodology here is to use the layout array from _fnDetectHeader, modified for
+	 * the instantaneous column visibility, to construct the new layout. The grid is
+	 * traversed over cell at a time in a rows x columns grid fashion, although each
+	 * cell insert can cover multiple elements in the grid - which is tracks using the
+	 * aApplied array. Cell inserts in the grid will only occur where there isn't
+	 * already a cell in that position.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param array {objects} aoSource Layout array from _fnDetectHeader
+	 *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
+	{
+		var i, iLen, j, jLen, k, kLen, n, nLocalTr;
+		var aoLocal = [];
+		var aApplied = [];
+		var iColumns = oSettings.aoColumns.length;
+		var iRowspan, iColspan;
+	
+		if ( ! aoSource )
+		{
+			return;
+		}
+	
+		if (  bIncludeHidden === undefined )
+		{
+			bIncludeHidden = false;
+		}
+	
+		/* Make a copy of the master layout array, but without the visible columns in it */
+		for ( i=0, iLen=aoSource.length ; i<iLen ; i++ )
+		{
+			aoLocal[i] = aoSource[i].slice();
+			aoLocal[i].nTr = aoSource[i].nTr;
+	
+			/* Remove any columns which are currently hidden */
+			for ( j=iColumns-1 ; j>=0 ; j-- )
+			{
+				if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )
+				{
+					aoLocal[i].splice( j, 1 );
+				}
+			}
+	
+			/* Prep the applied array - it needs an element for each row */
+			aApplied.push( [] );
+		}
+	
+		for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )
+		{
+			nLocalTr = aoLocal[i].nTr;
+	
+			/* All cells are going to be replaced, so empty out the row */
+			if ( nLocalTr )
+			{
+				while( (n = nLocalTr.firstChild) )
+				{
+					nLocalTr.removeChild( n );
+				}
+			}
+	
+			for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )
+			{
+				iRowspan = 1;
+				iColspan = 1;
+	
+				/* Check to see if there is already a cell (row/colspan) covering our target
+				 * insert point. If there is, then there is nothing to do.
+				 */
+				if ( aApplied[i][j] === undefined )
+				{
+					nLocalTr.appendChild( aoLocal[i][j].cell );
+					aApplied[i][j] = 1;
+	
+					/* Expand the cell to cover as many rows as needed */
+					while ( aoLocal[i+iRowspan] !== undefined &&
+					        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )
+					{
+						aApplied[i+iRowspan][j] = 1;
+						iRowspan++;
+					}
+	
+					/* Expand the cell to cover as many columns as needed */
+					while ( aoLocal[i][j+iColspan] !== undefined &&
+					        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )
+					{
+						/* Must update the applied array over the rows for the columns */
+						for ( k=0 ; k<iRowspan ; k++ )
+						{
+							aApplied[i+k][j+iColspan] = 1;
+						}
+						iColspan++;
+					}
+	
+					/* Do the actual expansion in the DOM */
+					$(aoLocal[i][j].cell)
+						.attr('rowspan', iRowspan)
+						.attr('colspan', iColspan);
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Insert the required TR nodes into the table for display
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDraw( oSettings )
+	{
+		/* Provide a pre-callback function which can be used to cancel the draw is false is returned */
+		var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );
+		if ( $.inArray( false, aPreDraw ) !== -1 )
+		{
+			_fnProcessingDisplay( oSettings, false );
+			return;
+		}
+	
+		var i, iLen, n;
+		var anRows = [];
+		var iRowCount = 0;
+		var asStripeClasses = oSettings.asStripeClasses;
+		var iStripes = asStripeClasses.length;
+		var iOpenRows = oSettings.aoOpenRows.length;
+		var oLang = oSettings.oLanguage;
+		var iInitDisplayStart = oSettings.iInitDisplayStart;
+		var bServerSide = _fnDataSource( oSettings ) == 'ssp';
+		var aiDisplay = oSettings.aiDisplay;
+	
+		oSettings.bDrawing = true;
+	
+		/* Check and see if we have an initial draw position from state saving */
+		if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )
+		{
+			oSettings._iDisplayStart = bServerSide ?
+				iInitDisplayStart :
+				iInitDisplayStart >= oSettings.fnRecordsDisplay() ?
+					0 :
+					iInitDisplayStart;
+	
+			oSettings.iInitDisplayStart = -1;
+		}
+	
+		var iDisplayStart = oSettings._iDisplayStart;
+		var iDisplayEnd = oSettings.fnDisplayEnd();
+	
+		/* Server-side processing draw intercept */
+		if ( oSettings.bDeferLoading )
+		{
+			oSettings.bDeferLoading = false;
+			oSettings.iDraw++;
+			_fnProcessingDisplay( oSettings, false );
+		}
+		else if ( !bServerSide )
+		{
+			oSettings.iDraw++;
+		}
+		else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )
+		{
+			return;
+		}
+	
+		if ( aiDisplay.length !== 0 )
+		{
+			var iStart = bServerSide ? 0 : iDisplayStart;
+			var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;
+	
+			for ( var j=iStart ; j<iEnd ; j++ )
+			{
+				var iDataIndex = aiDisplay[j];
+				var aoData = oSettings.aoData[ iDataIndex ];
+				if ( aoData.nTr === null )
+				{
+					_fnCreateTr( oSettings, iDataIndex );
+				}
+	
+				var nRow = aoData.nTr;
+	
+				/* Remove the old striping classes and then add the new one */
+				if ( iStripes !== 0 )
+				{
+					var sStripe = asStripeClasses[ iRowCount % iStripes ];
+					if ( aoData._sRowStripe != sStripe )
+					{
+						$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );
+						aoData._sRowStripe = sStripe;
+					}
+				}
+	
+				/* Row callback functions - might want to manipulate the row */
+				_fnCallbackFire( oSettings, 'aoRowCallback', null,
+					[nRow, aoData._aData, iRowCount, j] );
+	
+				anRows.push( nRow );
+				iRowCount++;
+			}
+		}
+		else
+		{
+			/* Table is empty - create a row with an empty message in it */
+			var sZero = oLang.sZeroRecords;
+			if ( oSettings.iDraw == 1 &&  _fnDataSource( oSettings ) == 'ajax' )
+			{
+				sZero = oLang.sLoadingRecords;
+			}
+			else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )
+			{
+				sZero = oLang.sEmptyTable;
+			}
+	
+			anRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } )
+				.append( $('<td />', {
+					'valign':  'top',
+					'colSpan': _fnVisbleColumns( oSettings ),
+					'class':   oSettings.oClasses.sRowEmpty
+				} ).html( sZero ) )[0];
+		}
+	
+		/* Header and footer callbacks */
+		_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],
+			_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );
+	
+		_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],
+			_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );
+	
+		var body = $(oSettings.nTBody);
+	
+		body.children().detach();
+		body.append( $(anRows) );
+	
+		/* Call all required callback functions for the end of a draw */
+		_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );
+	
+		/* Draw is complete, sorting and filtering must be as well */
+		oSettings.bSorted = false;
+		oSettings.bFiltered = false;
+		oSettings.bDrawing = false;
+	}
+	
+	
+	/**
+	 * Redraw the table - taking account of the various features which are enabled
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {boolean} [holdPosition] Keep the current paging position. By default
+	 *    the paging is reset to the first page
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnReDraw( settings, holdPosition )
+	{
+		var
+			features = settings.oFeatures,
+			sort     = features.bSort,
+			filter   = features.bFilter;
+	
+		if ( sort ) {
+			_fnSort( settings );
+		}
+	
+		if ( filter ) {
+			_fnFilterComplete( settings, settings.oPreviousSearch );
+		}
+		else {
+			// No filtering, so we want to just use the display master
+			settings.aiDisplay = settings.aiDisplayMaster.slice();
+		}
+	
+		if ( holdPosition !== true ) {
+			settings._iDisplayStart = 0;
+		}
+	
+		// Let any modules know about the draw hold position state (used by
+		// scrolling internally)
+		settings._drawHold = holdPosition;
+	
+		_fnDraw( settings );
+	
+		settings._drawHold = false;
+	}
+	
+	
+	/**
+	 * Add the options to the page HTML for the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAddOptionsHtml ( oSettings )
+	{
+		var classes = oSettings.oClasses;
+		var table = $(oSettings.nTable);
+		var holding = $('<div/>').insertBefore( table ); // Holding element for speed
+		var features = oSettings.oFeatures;
+	
+		// All DataTables are wrapped in a div
+		var insert = $('<div/>', {
+			id:      oSettings.sTableId+'_wrapper',
+			'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)
+		} );
+	
+		oSettings.nHolding = holding[0];
+		oSettings.nTableWrapper = insert[0];
+		oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;
+	
+		/* Loop over the user set positioning and place the elements as needed */
+		var aDom = oSettings.sDom.split('');
+		var featureNode, cOption, nNewNode, cNext, sAttr, j;
+		for ( var i=0 ; i<aDom.length ; i++ )
+		{
+			featureNode = null;
+			cOption = aDom[i];
+	
+			if ( cOption == '<' )
+			{
+				/* New container div */
+				nNewNode = $('<div/>')[0];
+	
+				/* Check to see if we should append an id and/or a class name to the container */
+				cNext = aDom[i+1];
+				if ( cNext == "'" || cNext == '"' )
+				{
+					sAttr = "";
+					j = 2;
+					while ( aDom[i+j] != cNext )
+					{
+						sAttr += aDom[i+j];
+						j++;
+					}
+	
+					/* Replace jQuery UI constants @todo depreciated */
+					if ( sAttr == "H" )
+					{
+						sAttr = classes.sJUIHeader;
+					}
+					else if ( sAttr == "F" )
+					{
+						sAttr = classes.sJUIFooter;
+					}
+	
+					/* The attribute can be in the format of "#id.class", "#id" or "class" This logic
+					 * breaks the string into parts and applies them as needed
+					 */
+					if ( sAttr.indexOf('.') != -1 )
+					{
+						var aSplit = sAttr.split('.');
+						nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);
+						nNewNode.className = aSplit[1];
+					}
+					else if ( sAttr.charAt(0) == "#" )
+					{
+						nNewNode.id = sAttr.substr(1, sAttr.length-1);
+					}
+					else
+					{
+						nNewNode.className = sAttr;
+					}
+	
+					i += j; /* Move along the position array */
+				}
+	
+				insert.append( nNewNode );
+				insert = $(nNewNode);
+			}
+			else if ( cOption == '>' )
+			{
+				/* End container div */
+				insert = insert.parent();
+			}
+			// @todo Move options into their own plugins?
+			else if ( cOption == 'l' && features.bPaginate && features.bLengthChange )
+			{
+				/* Length */
+				featureNode = _fnFeatureHtmlLength( oSettings );
+			}
+			else if ( cOption == 'f' && features.bFilter )
+			{
+				/* Filter */
+				featureNode = _fnFeatureHtmlFilter( oSettings );
+			}
+			else if ( cOption == 'r' && features.bProcessing )
+			{
+				/* pRocessing */
+				featureNode = _fnFeatureHtmlProcessing( oSettings );
+			}
+			else if ( cOption == 't' )
+			{
+				/* Table */
+				featureNode = _fnFeatureHtmlTable( oSettings );
+			}
+			else if ( cOption ==  'i' && features.bInfo )
+			{
+				/* Info */
+				featureNode = _fnFeatureHtmlInfo( oSettings );
+			}
+			else if ( cOption == 'p' && features.bPaginate )
+			{
+				/* Pagination */
+				featureNode = _fnFeatureHtmlPaginate( oSettings );
+			}
+			else if ( DataTable.ext.feature.length !== 0 )
+			{
+				/* Plug-in features */
+				var aoFeatures = DataTable.ext.feature;
+				for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )
+				{
+					if ( cOption == aoFeatures[k].cFeature )
+					{
+						featureNode = aoFeatures[k].fnInit( oSettings );
+						break;
+					}
+				}
+			}
+	
+			/* Add to the 2D features array */
+			if ( featureNode )
+			{
+				var aanFeatures = oSettings.aanFeatures;
+	
+				if ( ! aanFeatures[cOption] )
+				{
+					aanFeatures[cOption] = [];
+				}
+	
+				aanFeatures[cOption].push( featureNode );
+				insert.append( featureNode );
+			}
+		}
+	
+		/* Built our DOM structure - replace the holding div with what we want */
+		holding.replaceWith( insert );
+	}
+	
+	
+	/**
+	 * Use the DOM source to create up an array of header cells. The idea here is to
+	 * create a layout grid (array) of rows x columns, which contains a reference
+	 * to the cell that that point in the grid (regardless of col/rowspan), such that
+	 * any column / row could be removed and the new grid constructed
+	 *  @param array {object} aLayout Array to store the calculated layout in
+	 *  @param {node} nThead The header/footer element for the table
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDetectHeader ( aLayout, nThead )
+	{
+		var nTrs = $(nThead).children('tr');
+		var nTr, nCell;
+		var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;
+		var bUnique;
+		var fnShiftCol = function ( a, i, j ) {
+			var k = a[i];
+	                while ( k[j] ) {
+				j++;
+			}
+			return j;
+		};
+	
+		aLayout.splice( 0, aLayout.length );
+	
+		/* We know how many rows there are in the layout - so prep it */
+		for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+		{
+			aLayout.push( [] );
+		}
+	
+		/* Calculate a layout array */
+		for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+		{
+			nTr = nTrs[i];
+			iColumn = 0;
+	
+			/* For every cell in the row... */
+			nCell = nTr.firstChild;
+			while ( nCell ) {
+				if ( nCell.nodeName.toUpperCase() == "TD" ||
+				     nCell.nodeName.toUpperCase() == "TH" )
+				{
+					/* Get the col and rowspan attributes from the DOM and sanitise them */
+					iColspan = nCell.getAttribute('colspan') * 1;
+					iRowspan = nCell.getAttribute('rowspan') * 1;
+					iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;
+					iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;
+	
+					/* There might be colspan cells already in this row, so shift our target
+					 * accordingly
+					 */
+					iColShifted = fnShiftCol( aLayout, i, iColumn );
+	
+					/* Cache calculation for unique columns */
+					bUnique = iColspan === 1 ? true : false;
+	
+					/* If there is col / rowspan, copy the information into the layout grid */
+					for ( l=0 ; l<iColspan ; l++ )
+					{
+						for ( k=0 ; k<iRowspan ; k++ )
+						{
+							aLayout[i+k][iColShifted+l] = {
+								"cell": nCell,
+								"unique": bUnique
+							};
+							aLayout[i+k].nTr = nTr;
+						}
+					}
+				}
+				nCell = nCell.nextSibling;
+			}
+		}
+	}
+	
+	
+	/**
+	 * Get an array of unique th elements, one for each column
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {node} nHeader automatically detect the layout from this node - optional
+	 *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional
+	 *  @returns array {node} aReturn list of unique th's
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
+	{
+		var aReturn = [];
+		if ( !aLayout )
+		{
+			aLayout = oSettings.aoHeader;
+			if ( nHeader )
+			{
+				aLayout = [];
+				_fnDetectHeader( aLayout, nHeader );
+			}
+		}
+	
+		for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )
+		{
+			for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )
+			{
+				if ( aLayout[i][j].unique &&
+					 (!aReturn[j] || !oSettings.bSortCellsTop) )
+				{
+					aReturn[j] = aLayout[i][j].cell;
+				}
+			}
+		}
+	
+		return aReturn;
+	}
+	
+	
+	
+	/**
+	 * Create an Ajax call based on the table's settings, taking into account that
+	 * parameters can have multiple forms, and backwards compatibility.
+	 *
+	 * @param {object} oSettings dataTables settings object
+	 * @param {array} data Data to send to the server, required by
+	 *     DataTables - may be augmented by developer callbacks
+	 * @param {function} fn Callback function to run when data is obtained
+	 */
+	function _fnBuildAjax( oSettings, data, fn )
+	{
+		// Compatibility with 1.9-, allow fnServerData and event to manipulate
+		_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] );
+	
+		// Convert to object based for 1.10+ if using the old array scheme which can
+		// come from server-side processing or serverParams
+		if ( data && $.isArray(data) ) {
+			var tmp = {};
+			var rbracket = /(.*?)\[\]$/;
+	
+			$.each( data, function (key, val) {
+				var match = val.name.match(rbracket);
+	
+				if ( match ) {
+					// Support for arrays
+					var name = match[0];
+	
+					if ( ! tmp[ name ] ) {
+						tmp[ name ] = [];
+					}
+					tmp[ name ].push( val.value );
+				}
+				else {
+					tmp[val.name] = val.value;
+				}
+			} );
+			data = tmp;
+		}
+	
+		var ajaxData;
+		var ajax = oSettings.ajax;
+		var instance = oSettings.oInstance;
+	
+		if ( $.isPlainObject( ajax ) && ajax.data )
+		{
+			ajaxData = ajax.data;
+	
+			var newData = $.isFunction( ajaxData ) ?
+				ajaxData( data ) :  // fn can manipulate data or return an object
+				ajaxData;           // object or array to merge
+	
+			// If the function returned an object, use that alone
+			data = $.isFunction( ajaxData ) && newData ?
+				newData :
+				$.extend( true, data, newData );
+	
+			// Remove the data property as we've resolved it already and don't want
+			// jQuery to do it again (it is restored at the end of the function)
+			delete ajax.data;
+		}
+	
+		var baseAjax = {
+			"data": data,
+			"success": function (json) {
+				var error = json.error || json.sError;
+				if ( error ) {
+					oSettings.oApi._fnLog( oSettings, 0, error );
+				}
+	
+				oSettings.json = json;
+				_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json] );
+				fn( json );
+			},
+			"dataType": "json",
+			"cache": false,
+			"type": oSettings.sServerMethod,
+			"error": function (xhr, error, thrown) {
+				var log = oSettings.oApi._fnLog;
+	
+				if ( error == "parsererror" ) {
+					log( oSettings, 0, 'Invalid JSON response', 1 );
+				}
+				else if ( xhr.readyState === 4 ) {
+					log( oSettings, 0, 'Ajax error', 7 );
+				}
+	
+				_fnProcessingDisplay( oSettings, false );
+			}
+		};
+	
+		// Store the data submitted for the API
+		oSettings.oAjaxData = data;
+	
+		// Allow plug-ins and external processes to modify the data
+		_fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] );
+	
+		if ( oSettings.fnServerData )
+		{
+			// DataTables 1.9- compatibility
+			oSettings.fnServerData.call( instance,
+				oSettings.sAjaxSource,
+				$.map( data, function (val, key) { // Need to convert back to 1.9 trad format
+					return { name: key, value: val };
+				} ),
+				fn,
+				oSettings
+			);
+		}
+		else if ( oSettings.sAjaxSource || typeof ajax === 'string' )
+		{
+			// DataTables 1.9- compatibility
+			oSettings.jqXHR = $.ajax( $.extend( baseAjax, {
+				url: ajax || oSettings.sAjaxSource
+			} ) );
+		}
+		else if ( $.isFunction( ajax ) )
+		{
+			// Is a function - let the caller define what needs to be done
+			oSettings.jqXHR = ajax.call( instance, data, fn, oSettings );
+		}
+		else
+		{
+			// Object to extend the base settings
+			oSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) );
+	
+			// Restore for next time around
+			ajax.data = ajaxData;
+		}
+	}
+	
+	
+	/**
+	 * Update the table using an Ajax call
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {boolean} Block the table drawing or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAjaxUpdate( settings )
+	{
+		if ( settings.bAjaxDataGet ) {
+			settings.iDraw++;
+			_fnProcessingDisplay( settings, true );
+	
+			_fnBuildAjax(
+				settings,
+				_fnAjaxParameters( settings ),
+				function(json) {
+					_fnAjaxUpdateDraw( settings, json );
+				}
+			);
+	
+			return false;
+		}
+		return true;
+	}
+	
+	
+	/**
+	 * Build up the parameters in an object needed for a server-side processing
+	 * request. Note that this is basically done twice, is different ways - a modern
+	 * method which is used by default in DataTables 1.10 which uses objects and
+	 * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if
+	 * the sAjaxSource option is used in the initialisation, or the legacyAjax
+	 * option is set.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {bool} block the table drawing or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAjaxParameters( settings )
+	{
+		var
+			columns = settings.aoColumns,
+			columnCount = columns.length,
+			features = settings.oFeatures,
+			preSearch = settings.oPreviousSearch,
+			preColSearch = settings.aoPreSearchCols,
+			i, data = [], dataProp, column, columnSearch,
+			sort = _fnSortFlatten( settings ),
+			displayStart = settings._iDisplayStart,
+			displayLength = features.bPaginate !== false ?
+				settings._iDisplayLength :
+				-1;
+	
+		var param = function ( name, value ) {
+			data.push( { 'name': name, 'value': value } );
+		};
+	
+		// DataTables 1.9- compatible method
+		param( 'sEcho',          settings.iDraw );
+		param( 'iColumns',       columnCount );
+		param( 'sColumns',       _pluck( columns, 'sName' ).join(',') );
+		param( 'iDisplayStart',  displayStart );
+		param( 'iDisplayLength', displayLength );
+	
+		// DataTables 1.10+ method
+		var d = {
+			draw:    settings.iDraw,
+			columns: [],
+			order:   [],
+			start:   displayStart,
+			length:  displayLength,
+			search:  {
+				value: preSearch.sSearch,
+				regex: preSearch.bRegex
+			}
+		};
+	
+		for ( i=0 ; i<columnCount ; i++ ) {
+			column = columns[i];
+			columnSearch = preColSearch[i];
+			dataProp = typeof column.mData=="function" ? 'function' : column.mData ;
+	
+			d.columns.push( {
+				data:       dataProp,
+				name:       column.sName,
+				searchable: column.bSearchable,
+				orderable:  column.bSortable,
+				search:     {
+					value: columnSearch.sSearch,
+					regex: columnSearch.bRegex
+				}
+			} );
+	
+			param( "mDataProp_"+i, dataProp );
+	
+			if ( features.bFilter ) {
+				param( 'sSearch_'+i,     columnSearch.sSearch );
+				param( 'bRegex_'+i,      columnSearch.bRegex );
+				param( 'bSearchable_'+i, column.bSearchable );
+			}
+	
+			if ( features.bSort ) {
+				param( 'bSortable_'+i, column.bSortable );
+			}
+		}
+	
+		if ( features.bFilter ) {
+			param( 'sSearch', preSearch.sSearch );
+			param( 'bRegex', preSearch.bRegex );
+		}
+	
+		if ( features.bSort ) {
+			$.each( sort, function ( i, val ) {
+				d.order.push( { column: val.col, dir: val.dir } );
+	
+				param( 'iSortCol_'+i, val.col );
+				param( 'sSortDir_'+i, val.dir );
+			} );
+	
+			param( 'iSortingCols', sort.length );
+		}
+	
+		// If the legacy.ajax parameter is null, then we automatically decide which
+		// form to use, based on sAjaxSource
+		var legacy = DataTable.ext.legacy.ajax;
+		if ( legacy === null ) {
+			return settings.sAjaxSource ? data : d;
+		}
+	
+		// Otherwise, if legacy has been specified then we use that to decide on the
+		// form
+		return legacy ? data : d;
+	}
+	
+	
+	/**
+	 * Data the data from the server (nuking the old) and redraw the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} json json data return from the server.
+	 *  @param {string} json.sEcho Tracking flag for DataTables to match requests
+	 *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering
+	 *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering
+	 *  @param {array} json.aaData The data to display on this page
+	 *  @param {string} [json.sColumns] Column ordering (sName, comma separated)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnAjaxUpdateDraw ( settings, json )
+	{
+		// v1.10 uses camelCase variables, while 1.9 uses Hungarian notation.
+		// Support both
+		var compat = function ( old, modern ) {
+			return json[old] !== undefined ? json[old] : json[modern];
+		};
+	
+		var draw            = compat( 'sEcho',                'draw' );
+		var recordsTotal    = compat( 'iTotalRecords',        'recordsTotal' );
+		var rocordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' );
+	
+		if ( draw ) {
+			// Protect against out of sequence returns
+			if ( draw*1 < settings.iDraw ) {
+				return;
+			}
+			settings.iDraw = draw * 1;
+		}
+	
+		_fnClearTable( settings );
+		settings._iRecordsTotal   = parseInt(recordsTotal, 10);
+		settings._iRecordsDisplay = parseInt(rocordsFiltered, 10);
+	
+		var data = _fnAjaxDataSrc( settings, json );
+		for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+			_fnAddData( settings, data[i] );
+		}
+		settings.aiDisplay = settings.aiDisplayMaster.slice();
+	
+		settings.bAjaxDataGet = false;
+		_fnDraw( settings );
+	
+		if ( ! settings._bInitComplete ) {
+			_fnInitComplete( settings, json );
+		}
+	
+		settings.bAjaxDataGet = true;
+		_fnProcessingDisplay( settings, false );
+	}
+	
+	
+	/**
+	 * Get the data from the JSON data source to use for drawing a table. Using
+	 * `_fnGetObjectDataFn` allows the data to be sourced from a property of the
+	 * source object, or from a processing function.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param  {object} json Data source object / array from the server
+	 *  @return {array} Array of data to use
+	 */
+	function _fnAjaxDataSrc ( oSettings, json )
+	{
+		var dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ?
+			oSettings.ajax.dataSrc :
+			oSettings.sAjaxDataProp; // Compatibility with 1.9-.
+	
+		// Compatibility with 1.9-. In order to read from aaData, check if the
+		// default has been changed, if not, check for aaData
+		if ( dataSrc === 'data' ) {
+			return json.aaData || json[dataSrc];
+		}
+	
+		return dataSrc !== "" ?
+			_fnGetObjectDataFn( dataSrc )( json ) :
+			json;
+	}
+	
+	
+	/**
+	 * Generate the node required for filtering text
+	 *  @returns {node} Filter control element
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlFilter ( settings )
+	{
+		var classes = settings.oClasses;
+		var tableId = settings.sTableId;
+		var language = settings.oLanguage;
+		var previousSearch = settings.oPreviousSearch;
+		var features = settings.aanFeatures;
+		var input = '<input type="search" class="'+classes.sFilterInput+'"/>';
+	
+		var str = language.sSearch;
+		str = str.match(/_INPUT_/) ?
+			str.replace('_INPUT_', input) :
+			str+input;
+	
+		var filter = $('<div/>', {
+				'id': ! features.f ? tableId+'_filter' : null,
+				'class': classes.sFilter
+			} )
+			.append( $('<label/>' ).append( str ) );
+	
+		var searchFn = function() {
+			/* Update all other filter input elements for the new display */
+			var n = features.f;
+			var val = !this.value ? "" : this.value; // mental IE8 fix :-(
+	
+			/* Now do the filter */
+			if ( val != previousSearch.sSearch ) {
+				_fnFilterComplete( settings, {
+					"sSearch": val,
+					"bRegex": previousSearch.bRegex,
+					"bSmart": previousSearch.bSmart ,
+					"bCaseInsensitive": previousSearch.bCaseInsensitive
+				} );
+	
+				// Need to redraw, without resorting
+				settings._iDisplayStart = 0;
+				_fnDraw( settings );
+			}
+		};
+		var jqFilter = $('input', filter)
+			.val( previousSearch.sSearch )
+			.attr( 'placeholder', language.sSearchPlaceholder )
+			.bind(
+				'keyup.DT search.DT input.DT paste.DT cut.DT',
+				_fnDataSource( settings ) === 'ssp' ?
+					_fnThrottle( searchFn, 400 ):
+					searchFn
+			)
+			.bind( 'keypress.DT', function(e) {
+				/* Prevent form submission */
+				if ( e.keyCode == 13 ) {
+					return false;
+				}
+			} )
+			.attr('aria-controls', tableId);
+	
+		// Update the input elements whenever the table is filtered
+		$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {
+			if ( settings === s ) {
+				// IE9 throws an 'unknown error' if document.activeElement is used
+				// inside an iframe or frame...
+				try {
+					if ( jqFilter[0] !== document.activeElement ) {
+						jqFilter.val( previousSearch.sSearch );
+					}
+				}
+				catch ( e ) {}
+			}
+		} );
+	
+		return filter[0];
+	}
+	
+	
+	/**
+	 * Filter the table using both the global filter and column based filtering
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} oSearch search information
+	 *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterComplete ( oSettings, oInput, iForce )
+	{
+		var oPrevSearch = oSettings.oPreviousSearch;
+		var aoPrevSearch = oSettings.aoPreSearchCols;
+		var fnSaveFilter = function ( oFilter ) {
+			/* Save the filtering values */
+			oPrevSearch.sSearch = oFilter.sSearch;
+			oPrevSearch.bRegex = oFilter.bRegex;
+			oPrevSearch.bSmart = oFilter.bSmart;
+			oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;
+		};
+		var fnRegex = function ( o ) {
+			// Backwards compatibility with the bEscapeRegex option
+			return o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex;
+		};
+	
+		// Resolve any column types that are unknown due to addition or invalidation
+		// @todo As per sort - can this be moved into an event handler?
+		_fnColumnTypes( oSettings );
+	
+		/* In server-side processing all filtering is done by the server, so no point hanging around here */
+		if ( _fnDataSource( oSettings ) != 'ssp' )
+		{
+			/* Global filter */
+			_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive );
+			fnSaveFilter( oInput );
+	
+			/* Now do the individual column filter */
+			for ( var i=0 ; i<aoPrevSearch.length ; i++ )
+			{
+				_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),
+					aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );
+			}
+	
+			/* Custom filtering */
+			_fnFilterCustom( oSettings );
+		}
+		else
+		{
+			fnSaveFilter( oInput );
+		}
+	
+		/* Tell the draw function we have been filtering */
+		oSettings.bFiltered = true;
+		_fnCallbackFire( oSettings, null, 'search', [oSettings] );
+	}
+	
+	
+	/**
+	 * Apply custom filtering functions
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterCustom( settings )
+	{
+		var filters = DataTable.ext.search;
+		var displayRows = settings.aiDisplay;
+		var row, rowIdx;
+	
+		for ( var i=0, ien=filters.length ; i<ien ; i++ ) {
+			var rows = [];
+	
+			// Loop over each row and see if it should be included
+			for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {
+				rowIdx = displayRows[ j ];
+				row = settings.aoData[ rowIdx ];
+	
+				if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {
+					rows.push( rowIdx );
+				}
+			}
+	
+			// So the array reference doesn't break set the results into the
+			// existing array
+			displayRows.length = 0;
+			displayRows.push.apply( displayRows, rows );
+		}
+	}
+	
+	
+	/**
+	 * Filter the table on a per-column basis
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {string} sInput string to filter on
+	 *  @param {int} iColumn column to filter
+	 *  @param {bool} bRegex treat search string as a regular expression or not
+	 *  @param {bool} bSmart use smart filtering or not
+	 *  @param {bool} bCaseInsensitive Do case insenstive matching or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive )
+	{
+		if ( searchStr === '' ) {
+			return;
+		}
+	
+		var data;
+		var display = settings.aiDisplay;
+		var rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive );
+	
+		for ( var i=display.length-1 ; i>=0 ; i-- ) {
+			data = settings.aoData[ display[i] ]._aFilterData[ colIdx ];
+	
+			if ( ! rpSearch.test( data ) ) {
+				display.splice( i, 1 );
+			}
+		}
+	}
+	
+	
+	/**
+	 * Filter the data table based on user input and draw the table
+	 *  @param {object} settings dataTables settings object
+	 *  @param {string} input string to filter on
+	 *  @param {int} force optional - force a research of the master array (1) or not (undefined or 0)
+	 *  @param {bool} regex treat as a regular expression or not
+	 *  @param {bool} smart perform smart filtering or not
+	 *  @param {bool} caseInsensitive Do case insenstive matching or not
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilter( settings, input, force, regex, smart, caseInsensitive )
+	{
+		var rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive );
+		var prevSearch = settings.oPreviousSearch.sSearch;
+		var displayMaster = settings.aiDisplayMaster;
+		var display, invalidated, i;
+	
+		// Need to take account of custom filtering functions - always filter
+		if ( DataTable.ext.search.length !== 0 ) {
+			force = true;
+		}
+	
+		// Check if any of the rows were invalidated
+		invalidated = _fnFilterData( settings );
+	
+		// If the input is blank - we just want the full data set
+		if ( input.length <= 0 ) {
+			settings.aiDisplay = displayMaster.slice();
+		}
+		else {
+			// New search - start from the master array
+			if ( invalidated ||
+				 force ||
+				 prevSearch.length > input.length ||
+				 input.indexOf(prevSearch) !== 0 ||
+				 settings.bSorted // On resort, the display master needs to be
+				                  // re-filtered since indexes will have changed
+			) {
+				settings.aiDisplay = displayMaster.slice();
+			}
+	
+			// Search the display array
+			display = settings.aiDisplay;
+	
+			for ( i=display.length-1 ; i>=0 ; i-- ) {
+				if ( ! rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) {
+					display.splice( i, 1 );
+				}
+			}
+		}
+	}
+	
+	
+	/**
+	 * Build a regular expression object suitable for searching a table
+	 *  @param {string} sSearch string to search for
+	 *  @param {bool} bRegex treat as a regular expression or not
+	 *  @param {bool} bSmart perform smart filtering or not
+	 *  @param {bool} bCaseInsensitive Do case insensitive matching or not
+	 *  @returns {RegExp} constructed object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFilterCreateSearch( search, regex, smart, caseInsensitive )
+	{
+		search = regex ?
+			search :
+			_fnEscapeRegex( search );
+		
+		if ( smart ) {
+			/* For smart filtering we want to allow the search to work regardless of
+			 * word order. We also want double quoted text to be preserved, so word
+			 * order is important - a la google. So this is what we want to
+			 * generate:
+			 * 
+			 * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$
+			 */
+			var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || '', function ( word ) {
+				return word.charAt(0) === '"' ?
+					word.match( /^"(.*)"$/ )[1] :
+					word;
+			} );
+	
+			search = '^(?=.*?'+a.join( ')(?=.*?' )+').*$';
+		}
+	
+		return new RegExp( search, caseInsensitive ? 'i' : '' );
+	}
+	
+	
+	/**
+	 * scape a string such that it can be used in a regular expression
+	 *  @param {string} sVal string to escape
+	 *  @returns {string} escaped string
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnEscapeRegex ( sVal )
+	{
+		return sVal.replace( _re_escape_regex, '\\$1' );
+	}
+	
+	
+	
+	var __filter_div = $('<div>')[0];
+	var __filter_div_textContent = __filter_div.textContent !== undefined;
+	
+	// Update the filtering data for each row if needed (by invalidation or first run)
+	function _fnFilterData ( settings )
+	{
+		var columns = settings.aoColumns;
+		var column;
+		var i, j, ien, jen, filterData, cellData, row;
+		var fomatters = DataTable.ext.type.search;
+		var wasInvalidated = false;
+	
+		for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+			row = settings.aoData[i];
+	
+			if ( ! row._aFilterData ) {
+				filterData = [];
+	
+				for ( j=0, jen=columns.length ; j<jen ; j++ ) {
+					column = columns[j];
+	
+					if ( column.bSearchable ) {
+						cellData = _fnGetCellData( settings, i, j, 'filter' );
+	
+						cellData = fomatters[ column.sType ] ?
+							fomatters[ column.sType ]( cellData ) :
+							cellData !== null ?
+								cellData :
+								'';
+					}
+					else {
+						cellData = '';
+					}
+	
+					if ( cellData ) {
+						// If it looks like there is an HTML entity in the string,
+						// attempt to decode it so sorting works as expected. Note that
+						// we could use a single line of jQuery to do this, but the DOM
+						// method used here is much faster http://jsperf.com/html-decode
+						if ( cellData.indexOf && cellData.indexOf('&') !== -1 ) {
+							__filter_div.innerHTML = cellData;
+							cellData = __filter_div_textContent ?
+								__filter_div.textContent :
+								__filter_div.innerText;
+						}
+	
+						if ( cellData.replace ) {
+							cellData = cellData.replace(/[\r\n]/g, '');
+						}
+	
+						filterData.push( cellData );
+					}
+				}
+	
+				row._aFilterData = filterData;
+				row._sFilterRow = filterData.join('  ');
+				wasInvalidated = true;
+			}
+		}
+	
+		return wasInvalidated;
+	}
+	
+	
+	/**
+	 * Convert from the internal Hungarian notation to camelCase for external
+	 * interaction
+	 *  @param {object} obj Object to convert
+	 *  @returns {object} Inverted object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSearchToCamel ( obj )
+	{
+		return {
+			search:          obj.sSearch,
+			smart:           obj.bSmart,
+			regex:           obj.bRegex,
+			caseInsensitive: obj.bCaseInsensitive
+		};
+	}
+	
+	
+	
+	/**
+	 * Convert from camelCase notation to the internal Hungarian. We could use the
+	 * Hungarian convert function here, but this is cleaner
+	 *  @param {object} obj Object to convert
+	 *  @returns {object} Inverted object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSearchToHung ( obj )
+	{
+		return {
+			sSearch:          obj.search,
+			bSmart:           obj.smart,
+			bRegex:           obj.regex,
+			bCaseInsensitive: obj.caseInsensitive
+		};
+	}
+	
+	/**
+	 * Generate the node required for the info display
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {node} Information element
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlInfo ( settings )
+	{
+		var
+			tid = settings.sTableId,
+			nodes = settings.aanFeatures.i,
+			n = $('<div/>', {
+				'class': settings.oClasses.sInfo,
+				'id': ! nodes ? tid+'_info' : null
+			} );
+	
+		if ( ! nodes ) {
+			// Update display on each draw
+			settings.aoDrawCallback.push( {
+				"fn": _fnUpdateInfo,
+				"sName": "information"
+			} );
+	
+			n
+				.attr( 'role', 'status' )
+				.attr( 'aria-live', 'polite' );
+	
+			// Table is described by our info div
+			$(settings.nTable).attr( 'aria-describedby', tid+'_info' );
+		}
+	
+		return n[0];
+	}
+	
+	
+	/**
+	 * Update the information elements in the display
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnUpdateInfo ( settings )
+	{
+		/* Show information about the table */
+		var nodes = settings.aanFeatures.i;
+		if ( nodes.length === 0 ) {
+			return;
+		}
+	
+		var
+			lang  = settings.oLanguage,
+			start = settings._iDisplayStart+1,
+			end   = settings.fnDisplayEnd(),
+			max   = settings.fnRecordsTotal(),
+			total = settings.fnRecordsDisplay(),
+			out   = total ?
+				lang.sInfo :
+				lang.sInfoEmpty;
+	
+		if ( total !== max ) {
+			/* Record set after filtering */
+			out += ' ' + lang.sInfoFiltered;
+		}
+	
+		// Convert the macros
+		out += lang.sInfoPostFix;
+		out = _fnInfoMacros( settings, out );
+	
+		var callback = lang.fnInfoCallback;
+		if ( callback !== null ) {
+			out = callback.call( settings.oInstance,
+				settings, start, end, max, total, out
+			);
+		}
+	
+		$(nodes).html( out );
+	}
+	
+	
+	function _fnInfoMacros ( settings, str )
+	{
+		// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only
+		// internally
+		var
+			formatter  = settings.fnFormatNumber,
+			start      = settings._iDisplayStart+1,
+			len        = settings._iDisplayLength,
+			vis        = settings.fnRecordsDisplay(),
+			all        = len === -1;
+	
+		return str.
+			replace(/_START_/g, formatter.call( settings, start ) ).
+			replace(/_END_/g,   formatter.call( settings, settings.fnDisplayEnd() ) ).
+			replace(/_MAX_/g,   formatter.call( settings, settings.fnRecordsTotal() ) ).
+			replace(/_TOTAL_/g, formatter.call( settings, vis ) ).
+			replace(/_PAGE_/g,  formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).
+			replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) );
+	}
+	
+	
+	
+	/**
+	 * Draw the table for the first time, adding all required features
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnInitialise ( settings )
+	{
+		var i, iLen, iAjaxStart=settings.iInitDisplayStart;
+		var columns = settings.aoColumns, column;
+		var features = settings.oFeatures;
+	
+		/* Ensure that the table data is fully initialised */
+		if ( ! settings.bInitialised ) {
+			setTimeout( function(){ _fnInitialise( settings ); }, 200 );
+			return;
+		}
+	
+		/* Show the display HTML options */
+		_fnAddOptionsHtml( settings );
+	
+		/* Build and draw the header / footer for the table */
+		_fnBuildHead( settings );
+		_fnDrawHead( settings, settings.aoHeader );
+		_fnDrawHead( settings, settings.aoFooter );
+	
+		/* Okay to show that something is going on now */
+		_fnProcessingDisplay( settings, true );
+	
+		/* Calculate sizes for columns */
+		if ( features.bAutoWidth ) {
+			_fnCalculateColumnWidths( settings );
+		}
+	
+		for ( i=0, iLen=columns.length ; i<iLen ; i++ ) {
+			column = columns[i];
+	
+			if ( column.sWidth ) {
+				column.nTh.style.width = _fnStringToCss( column.sWidth );
+			}
+		}
+	
+		// If there is default sorting required - let's do it. The sort function
+		// will do the drawing for us. Otherwise we draw the table regardless of the
+		// Ajax source - this allows the table to look initialised for Ajax sourcing
+		// data (show 'loading' message possibly)
+		_fnReDraw( settings );
+	
+		// Server-side processing init complete is done by _fnAjaxUpdateDraw
+		var dataSrc = _fnDataSource( settings );
+		if ( dataSrc != 'ssp' ) {
+			// if there is an ajax source load the data
+			if ( dataSrc == 'ajax' ) {
+				_fnBuildAjax( settings, [], function(json) {
+					var aData = _fnAjaxDataSrc( settings, json );
+	
+					// Got the data - add it to the table
+					for ( i=0 ; i<aData.length ; i++ ) {
+						_fnAddData( settings, aData[i] );
+					}
+	
+					// Reset the init display for cookie saving. We've already done
+					// a filter, and therefore cleared it before. So we need to make
+					// it appear 'fresh'
+					settings.iInitDisplayStart = iAjaxStart;
+	
+					_fnReDraw( settings );
+	
+					_fnProcessingDisplay( settings, false );
+					_fnInitComplete( settings, json );
+				}, settings );
+			}
+			else {
+				_fnProcessingDisplay( settings, false );
+				_fnInitComplete( settings );
+			}
+		}
+	}
+	
+	
+	/**
+	 * Draw the table for the first time, adding all required features
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} [json] JSON from the server that completed the table, if using Ajax source
+	 *    with client-side processing (optional)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnInitComplete ( settings, json )
+	{
+		settings._bInitComplete = true;
+	
+		// On an Ajax load we now have data and therefore want to apply the column
+		// sizing
+		if ( json ) {
+			_fnAdjustColumnSizing( settings );
+		}
+	
+		_fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] );
+	}
+	
+	
+	function _fnLengthChange ( settings, val )
+	{
+		var len = parseInt( val, 10 );
+		settings._iDisplayLength = len;
+	
+		_fnLengthOverflow( settings );
+	
+		// Fire length change event
+		_fnCallbackFire( settings, null, 'length', [settings, len] );
+	}
+	
+	
+	/**
+	 * Generate the node required for user display length changing
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {node} Display length feature node
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlLength ( settings )
+	{
+		var
+			classes  = settings.oClasses,
+			tableId  = settings.sTableId,
+			menu     = settings.aLengthMenu,
+			d2       = $.isArray( menu[0] ),
+			lengths  = d2 ? menu[0] : menu,
+			language = d2 ? menu[1] : menu;
+	
+		var select = $('<select/>', {
+			'name':          tableId+'_length',
+			'aria-controls': tableId,
+			'class':         classes.sLengthSelect
+		} );
+	
+		for ( var i=0, ien=lengths.length ; i<ien ; i++ ) {
+			select[0][ i ] = new Option( language[i], lengths[i] );
+		}
+	
+		var div = $('<div><label/></div>').addClass( classes.sLength );
+		if ( ! settings.aanFeatures.l ) {
+			div[0].id = tableId+'_length';
+		}
+	
+		div.children().append(
+			settings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )
+		);
+	
+		// Can't use `select` variable as user might provide their own and the
+		// reference is broken by the use of outerHTML
+		$('select', div)
+			.val( settings._iDisplayLength )
+			.bind( 'change.DT', function(e) {
+				_fnLengthChange( settings, $(this).val() );
+				_fnDraw( settings );
+			} );
+	
+		// Update node value whenever anything changes the table's length
+		$(settings.nTable).bind( 'length.dt.DT', function (e, s, len) {
+			if ( settings === s ) {
+				$('select', div).val( len );
+			}
+		} );
+	
+		return div[0];
+	}
+	
+	
+	
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Note that most of the paging logic is done in
+	 * DataTable.ext.pager
+	 */
+	
+	/**
+	 * Generate the node required for default pagination
+	 *  @param {object} oSettings dataTables settings object
+	 *  @returns {node} Pagination feature node
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlPaginate ( settings )
+	{
+		var
+			type   = settings.sPaginationType,
+			plugin = DataTable.ext.pager[ type ],
+			modern = typeof plugin === 'function',
+			redraw = function( settings ) {
+				_fnDraw( settings );
+			},
+			node = $('<div/>').addClass( settings.oClasses.sPaging + type )[0],
+			features = settings.aanFeatures;
+	
+		if ( ! modern ) {
+			plugin.fnInit( settings, node, redraw );
+		}
+	
+		/* Add a draw callback for the pagination on first instance, to update the paging display */
+		if ( ! features.p )
+		{
+			node.id = settings.sTableId+'_paginate';
+	
+			settings.aoDrawCallback.push( {
+				"fn": function( settings ) {
+					if ( modern ) {
+						var
+							start      = settings._iDisplayStart,
+							len        = settings._iDisplayLength,
+							visRecords = settings.fnRecordsDisplay(),
+							all        = len === -1,
+							page = all ? 0 : Math.ceil( start / len ),
+							pages = all ? 1 : Math.ceil( visRecords / len ),
+							buttons = plugin(page, pages),
+							i, ien;
+	
+						for ( i=0, ien=features.p.length ; i<ien ; i++ ) {
+							_fnRenderer( settings, 'pageButton' )(
+								settings, features.p[i], i, buttons, page, pages
+							);
+						}
+					}
+					else {
+						plugin.fnUpdate( settings, redraw );
+					}
+				},
+				"sName": "pagination"
+			} );
+		}
+	
+		return node;
+	}
+	
+	
+	/**
+	 * Alter the display settings to change the page
+	 *  @param {object} settings DataTables settings object
+	 *  @param {string|int} action Paging action to take: "first", "previous",
+	 *    "next" or "last" or page number to jump to (integer)
+	 *  @param [bool] redraw Automatically draw the update or not
+	 *  @returns {bool} true page has changed, false - no change
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnPageChange ( settings, action, redraw )
+	{
+		var
+			start     = settings._iDisplayStart,
+			len       = settings._iDisplayLength,
+			records   = settings.fnRecordsDisplay();
+	
+		if ( records === 0 || len === -1 )
+		{
+			start = 0;
+		}
+		else if ( typeof action === "number" )
+		{
+			start = action * len;
+	
+			if ( start > records )
+			{
+				start = 0;
+			}
+		}
+		else if ( action == "first" )
+		{
+			start = 0;
+		}
+		else if ( action == "previous" )
+		{
+			start = len >= 0 ?
+				start - len :
+				0;
+	
+			if ( start < 0 )
+			{
+			  start = 0;
+			}
+		}
+		else if ( action == "next" )
+		{
+			if ( start + len < records )
+			{
+				start += len;
+			}
+		}
+		else if ( action == "last" )
+		{
+			start = Math.floor( (records-1) / len) * len;
+		}
+		else
+		{
+			_fnLog( settings, 0, "Unknown paging action: "+action, 5 );
+		}
+	
+		var changed = settings._iDisplayStart !== start;
+		settings._iDisplayStart = start;
+	
+		if ( changed ) {
+			_fnCallbackFire( settings, null, 'page', [settings] );
+	
+			if ( redraw ) {
+				_fnDraw( settings );
+			}
+		}
+	
+		return changed;
+	}
+	
+	
+	
+	/**
+	 * Generate the node required for the processing node
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {node} Processing element
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlProcessing ( settings )
+	{
+		return $('<div/>', {
+				'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null,
+				'class': settings.oClasses.sProcessing
+			} )
+			.html( settings.oLanguage.sProcessing )
+			.insertBefore( settings.nTable )[0];
+	}
+	
+	
+	/**
+	 * Display or hide the processing indicator
+	 *  @param {object} settings dataTables settings object
+	 *  @param {bool} show Show the processing indicator (true) or not (false)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnProcessingDisplay ( settings, show )
+	{
+		if ( settings.oFeatures.bProcessing ) {
+			$(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );
+		}
+	
+		_fnCallbackFire( settings, null, 'processing', [settings, show] );
+	}
+	
+	/**
+	 * Add any control elements for the table - specifically scrolling
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {node} Node to add to the DOM
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnFeatureHtmlTable ( settings )
+	{
+		var table = $(settings.nTable);
+	
+		// Add the ARIA grid role to the table
+		table.attr( 'role', 'grid' );
+	
+		// Scrolling from here on in
+		var scroll = settings.oScroll;
+	
+		if ( scroll.sX === '' && scroll.sY === '' ) {
+			return settings.nTable;
+		}
+	
+		var scrollX = scroll.sX;
+		var scrollY = scroll.sY;
+		var classes = settings.oClasses;
+		var caption = table.children('caption');
+		var captionSide = caption.length ? caption[0]._captionSide : null;
+		var headerClone = $( table[0].cloneNode(false) );
+		var footerClone = $( table[0].cloneNode(false) );
+		var footer = table.children('tfoot');
+		var _div = '<div/>';
+		var size = function ( s ) {
+			return !s ? null : _fnStringToCss( s );
+		};
+	
+		// This is fairly messy, but with x scrolling enabled, if the table has a
+		// width attribute, regardless of any width applied using the column width
+		// options, the browser will shrink or grow the table as needed to fit into
+		// that 100%. That would make the width options useless. So we remove it.
+		// This is okay, under the assumption that width:100% is applied to the
+		// table in CSS (it is in the default stylesheet) which will set the table
+		// width as appropriate (the attribute and css behave differently...)
+		if ( scroll.sX && table.attr('width') === '100%' ) {
+			table.removeAttr('width');
+		}
+	
+		if ( ! footer.length ) {
+			footer = null;
+		}
+	
+		/*
+		 * The HTML structure that we want to generate in this function is:
+		 *  div - scroller
+		 *    div - scroll head
+		 *      div - scroll head inner
+		 *        table - scroll head table
+		 *          thead - thead
+		 *    div - scroll body
+		 *      table - table (master table)
+		 *        thead - thead clone for sizing
+		 *        tbody - tbody
+		 *    div - scroll foot
+		 *      div - scroll foot inner
+		 *        table - scroll foot table
+		 *          tfoot - tfoot
+		 */
+		var scroller = $( _div, { 'class': classes.sScrollWrapper } )
+			.append(
+				$(_div, { 'class': classes.sScrollHead } )
+					.css( {
+						overflow: 'hidden',
+						position: 'relative',
+						border: 0,
+						width: scrollX ? size(scrollX) : '100%'
+					} )
+					.append(
+						$(_div, { 'class': classes.sScrollHeadInner } )
+							.css( {
+								'box-sizing': 'content-box',
+								width: scroll.sXInner || '100%'
+							} )
+							.append(
+								headerClone
+									.removeAttr('id')
+									.css( 'margin-left', 0 )
+									.append(
+										table.children('thead')
+									)
+							)
+					)
+					.append( captionSide === 'top' ? caption : null )
+			)
+			.append(
+				$(_div, { 'class': classes.sScrollBody } )
+					.css( {
+						overflow: 'auto',
+						height: size( scrollY ),
+						width: size( scrollX )
+					} )
+					.append( table )
+			);
+	
+		if ( footer ) {
+			scroller.append(
+				$(_div, { 'class': classes.sScrollFoot } )
+					.css( {
+						overflow: 'hidden',
+						border: 0,
+						width: scrollX ? size(scrollX) : '100%'
+					} )
+					.append(
+						$(_div, { 'class': classes.sScrollFootInner } )
+							.append(
+								footerClone
+									.removeAttr('id')
+									.css( 'margin-left', 0 )
+									.append(
+										table.children('tfoot')
+									)
+							)
+					)
+					.append( captionSide === 'bottom' ? caption : null )
+			);
+		}
+	
+		var children = scroller.children();
+		var scrollHead = children[0];
+		var scrollBody = children[1];
+		var scrollFoot = footer ? children[2] : null;
+	
+		// When the body is scrolled, then we also want to scroll the headers
+		if ( scrollX ) {
+			$(scrollBody).scroll( function (e) {
+				var scrollLeft = this.scrollLeft;
+	
+				scrollHead.scrollLeft = scrollLeft;
+	
+				if ( footer ) {
+					scrollFoot.scrollLeft = scrollLeft;
+				}
+			} );
+		}
+	
+		settings.nScrollHead = scrollHead;
+		settings.nScrollBody = scrollBody;
+		settings.nScrollFoot = scrollFoot;
+	
+		// On redraw - align columns
+		settings.aoDrawCallback.push( {
+			"fn": _fnScrollDraw,
+			"sName": "scrolling"
+		} );
+	
+		return scroller[0];
+	}
+	
+	
+	
+	/**
+	 * Update the header, footer and body tables for resizing - i.e. column
+	 * alignment.
+	 *
+	 * Welcome to the most horrible function DataTables. The process that this
+	 * function follows is basically:
+	 *   1. Re-create the table inside the scrolling div
+	 *   2. Take live measurements from the DOM
+	 *   3. Apply the measurements to align the columns
+	 *   4. Clean up
+	 *
+	 *  @param {object} settings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnScrollDraw ( settings )
+	{
+		// Given that this is such a monster function, a lot of variables are use
+		// to try and keep the minimised size as small as possible
+		var
+			scroll         = settings.oScroll,
+			scrollX        = scroll.sX,
+			scrollXInner   = scroll.sXInner,
+			scrollY        = scroll.sY,
+			barWidth       = scroll.iBarWidth,
+			divHeader      = $(settings.nScrollHead),
+			divHeaderStyle = divHeader[0].style,
+			divHeaderInner = divHeader.children('div'),
+			divHeaderInnerStyle = divHeaderInner[0].style,
+			divHeaderTable = divHeaderInner.children('table'),
+			divBodyEl      = settings.nScrollBody,
+			divBody        = $(divBodyEl),
+			divBodyStyle   = divBodyEl.style,
+			divFooter      = $(settings.nScrollFoot),
+			divFooterInner = divFooter.children('div'),
+			divFooterTable = divFooterInner.children('table'),
+			header         = $(settings.nTHead),
+			table          = $(settings.nTable),
+			tableEl        = table[0],
+			tableStyle     = tableEl.style,
+			footer         = settings.nTFoot ? $(settings.nTFoot) : null,
+			browser        = settings.oBrowser,
+			ie67           = browser.bScrollOversize,
+			headerTrgEls, footerTrgEls,
+			headerSrcEls, footerSrcEls,
+			headerCopy, footerCopy,
+			headerWidths=[], footerWidths=[],
+			headerContent=[],
+			idx, correction, sanityWidth,
+			zeroOut = function(nSizer) {
+				var style = nSizer.style;
+				style.paddingTop = "0";
+				style.paddingBottom = "0";
+				style.borderTopWidth = "0";
+				style.borderBottomWidth = "0";
+				style.height = 0;
+			};
+	
+		/*
+		 * 1. Re-create the table inside the scrolling div
+		 */
+	
+		// Remove the old minimised thead and tfoot elements in the inner table
+		table.children('thead, tfoot').remove();
+	
+		// Clone the current header and footer elements and then place it into the inner table
+		headerCopy = header.clone().prependTo( table );
+		headerTrgEls = header.find('tr'); // original header is in its own table
+		headerSrcEls = headerCopy.find('tr');
+		headerCopy.find('th, td').removeAttr('tabindex');
+	
+		if ( footer ) {
+			footerCopy = footer.clone().prependTo( table );
+			footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized
+			footerSrcEls = footerCopy.find('tr');
+		}
+	
+	
+		/*
+		 * 2. Take live measurements from the DOM - do not alter the DOM itself!
+		 */
+	
+		// Remove old sizing and apply the calculated column widths
+		// Get the unique column headers in the newly created (cloned) header. We want to apply the
+		// calculated sizes to this header
+		if ( ! scrollX )
+		{
+			divBodyStyle.width = '100%';
+			divHeader[0].style.width = '100%';
+		}
+	
+		$.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {
+			idx = _fnVisibleToColumnIndex( settings, i );
+			el.style.width = settings.aoColumns[idx].sWidth;
+		} );
+	
+		if ( footer ) {
+			_fnApplyToChildren( function(n) {
+				n.style.width = "";
+			}, footerSrcEls );
+		}
+	
+		// If scroll collapse is enabled, when we put the headers back into the body for sizing, we
+		// will end up forcing the scrollbar to appear, making our measurements wrong for when we
+		// then hide it (end of this function), so add the header height to the body scroller.
+		if ( scroll.bCollapse && scrollY !== "" ) {
+			divBodyStyle.height = (divBody[0].offsetHeight + header[0].offsetHeight)+"px";
+		}
+	
+		// Size the table as a whole
+		sanityWidth = table.outerWidth();
+		if ( scrollX === "" ) {
+			// No x scrolling
+			tableStyle.width = "100%";
+	
+			// IE7 will make the width of the table when 100% include the scrollbar
+			// - which is shouldn't. When there is a scrollbar we need to take this
+			// into account.
+			if ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight ||
+				divBody.css('overflow-y') == "scroll")
+			) {
+				tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);
+			}
+		}
+		else
+		{
+			// x scrolling
+			if ( scrollXInner !== "" ) {
+				// x scroll inner has been given - use it
+				tableStyle.width = _fnStringToCss(scrollXInner);
+			}
+			else if ( sanityWidth == divBody.width() && divBody.height() < table.height() ) {
+				// There is y-scrolling - try to take account of the y scroll bar
+				tableStyle.width = _fnStringToCss( sanityWidth-barWidth );
+				if ( table.outerWidth() > sanityWidth-barWidth ) {
+					// Not possible to take account of it
+					tableStyle.width = _fnStringToCss( sanityWidth );
+				}
+			}
+			else {
+				// When all else fails
+				tableStyle.width = _fnStringToCss( sanityWidth );
+			}
+		}
+	
+		// Recalculate the sanity width - now that we've applied the required width,
+		// before it was a temporary variable. This is required because the column
+		// width calculation is done before this table DOM is created.
+		sanityWidth = table.outerWidth();
+	
+		// Hidden header should have zero height, so remove padding and borders. Then
+		// set the width based on the real headers
+	
+		// Apply all styles in one pass
+		_fnApplyToChildren( zeroOut, headerSrcEls );
+	
+		// Read all widths in next pass
+		_fnApplyToChildren( function(nSizer) {
+			headerContent.push( nSizer.innerHTML );
+			headerWidths.push( _fnStringToCss( $(nSizer).css('width') ) );
+		}, headerSrcEls );
+	
+		// Apply all widths in final pass
+		_fnApplyToChildren( function(nToSize, i) {
+			nToSize.style.width = headerWidths[i];
+		}, headerTrgEls );
+	
+		$(headerSrcEls).height(0);
+	
+		/* Same again with the footer if we have one */
+		if ( footer )
+		{
+			_fnApplyToChildren( zeroOut, footerSrcEls );
+	
+			_fnApplyToChildren( function(nSizer) {
+				footerWidths.push( _fnStringToCss( $(nSizer).css('width') ) );
+			}, footerSrcEls );
+	
+			_fnApplyToChildren( function(nToSize, i) {
+				nToSize.style.width = footerWidths[i];
+			}, footerTrgEls );
+	
+			$(footerSrcEls).height(0);
+		}
+	
+	
+		/*
+		 * 3. Apply the measurements
+		 */
+	
+		// "Hide" the header and footer that we used for the sizing. We need to keep
+		// the content of the cell so that the width applied to the header and body
+		// both match, but we want to hide it completely. We want to also fix their
+		// width to what they currently are
+		_fnApplyToChildren( function(nSizer, i) {
+			nSizer.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+headerContent[i]+'</div>';
+			nSizer.style.width = headerWidths[i];
+		}, headerSrcEls );
+	
+		if ( footer )
+		{
+			_fnApplyToChildren( function(nSizer, i) {
+				nSizer.innerHTML = "";
+				nSizer.style.width = footerWidths[i];
+			}, footerSrcEls );
+		}
+	
+		// Sanity check that the table is of a sensible width. If not then we are going to get
+		// misalignment - try to prevent this by not allowing the table to shrink below its min width
+		if ( table.outerWidth() < sanityWidth )
+		{
+			// The min width depends upon if we have a vertical scrollbar visible or not */
+			correction = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||
+				divBody.css('overflow-y') == "scroll")) ?
+					sanityWidth+barWidth :
+					sanityWidth;
+	
+			// IE6/7 are a law unto themselves...
+			if ( ie67 && (divBodyEl.scrollHeight >
+				divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll")
+			) {
+				tableStyle.width = _fnStringToCss( correction-barWidth );
+			}
+	
+			// And give the user a warning that we've stopped the table getting too small
+			if ( scrollX === "" || scrollXInner !== "" ) {
+				_fnLog( settings, 1, 'Possible column misalignment', 6 );
+			}
+		}
+		else
+		{
+			correction = '100%';
+		}
+	
+		// Apply to the container elements
+		divBodyStyle.width = _fnStringToCss( correction );
+		divHeaderStyle.width = _fnStringToCss( correction );
+	
+		if ( footer ) {
+			settings.nScrollFoot.style.width = _fnStringToCss( correction );
+		}
+	
+	
+		/*
+		 * 4. Clean up
+		 */
+		if ( ! scrollY ) {
+			/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting
+			 * the scrollbar height from the visible display, rather than adding it on. We need to
+			 * set the height in order to sort this. Don't want to do it in any other browsers.
+			 */
+			if ( ie67 ) {
+				divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );
+			}
+		}
+	
+		if ( scrollY && scroll.bCollapse ) {
+			divBodyStyle.height = _fnStringToCss( scrollY );
+	
+			var iExtra = (scrollX && tableEl.offsetWidth > divBodyEl.offsetWidth) ?
+				barWidth :
+				0;
+	
+			if ( tableEl.offsetHeight < divBodyEl.offsetHeight ) {
+				divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+iExtra );
+			}
+		}
+	
+		/* Finally set the width's of the header and footer tables */
+		var iOuterWidth = table.outerWidth();
+		divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );
+		divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );
+	
+		// Figure out if there are scrollbar present - if so then we need a the header and footer to
+		// provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
+		var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll";
+		var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );
+		divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px";
+	
+		if ( footer ) {
+			divFooterTable[0].style.width = _fnStringToCss( iOuterWidth );
+			divFooterInner[0].style.width = _fnStringToCss( iOuterWidth );
+			divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px";
+		}
+	
+		/* Adjust the position of the header in case we loose the y-scrollbar */
+		divBody.scroll();
+	
+		// If sorting or filtering has occurred, jump the scrolling back to the top
+		// only if we aren't holding the position
+		if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {
+			divBodyEl.scrollTop = 0;
+		}
+	}
+	
+	
+	
+	/**
+	 * Apply a given function to the display child nodes of an element array (typically
+	 * TD children of TR rows
+	 *  @param {function} fn Method to apply to the objects
+	 *  @param array {nodes} an1 List of elements to look through for display children
+	 *  @param array {nodes} an2 Another list (identical structure to the first) - optional
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnApplyToChildren( fn, an1, an2 )
+	{
+		var index=0, i=0, iLen=an1.length;
+		var nNode1, nNode2;
+	
+		while ( i < iLen ) {
+			nNode1 = an1[i].firstChild;
+			nNode2 = an2 ? an2[i].firstChild : null;
+	
+			while ( nNode1 ) {
+				if ( nNode1.nodeType === 1 ) {
+					if ( an2 ) {
+						fn( nNode1, nNode2, index );
+					}
+					else {
+						fn( nNode1, index );
+					}
+	
+					index++;
+				}
+	
+				nNode1 = nNode1.nextSibling;
+				nNode2 = an2 ? nNode2.nextSibling : null;
+			}
+	
+			i++;
+		}
+	}
+	
+	
+	
+	var __re_html_remove = /<.*?>/g;
+	
+	
+	/**
+	 * Calculate the width of columns for the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCalculateColumnWidths ( oSettings )
+	{
+		var
+			table = oSettings.nTable,
+			columns = oSettings.aoColumns,
+			scroll = oSettings.oScroll,
+			scrollY = scroll.sY,
+			scrollX = scroll.sX,
+			scrollXInner = scroll.sXInner,
+			columnCount = columns.length,
+			visibleColumns = _fnGetColumns( oSettings, 'bVisible' ),
+			headerCells = $('th', oSettings.nTHead),
+			tableWidthAttr = table.getAttribute('width'),
+			tableContainer = table.parentNode,
+			userInputs = false,
+			i, column, columnIdx, width, outerWidth;
+	
+		/* Convert any user input sizes into pixel sizes */
+		for ( i=0 ; i<visibleColumns.length ; i++ ) {
+			column = columns[ visibleColumns[i] ];
+	
+			if ( column.sWidth !== null ) {
+				column.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer );
+	
+				userInputs = true;
+			}
+		}
+	
+		/* If the number of columns in the DOM equals the number that we have to
+		 * process in DataTables, then we can use the offsets that are created by
+		 * the web- browser. No custom sizes can be set in order for this to happen,
+		 * nor scrolling used
+		 */
+		if ( ! userInputs && ! scrollX && ! scrollY &&
+		    columnCount == _fnVisbleColumns( oSettings ) &&
+			columnCount == headerCells.length
+		) {
+			for ( i=0 ; i<columnCount ; i++ ) {
+				columns[i].sWidth = _fnStringToCss( headerCells.eq(i).width() );
+			}
+		}
+		else
+		{
+			// Otherwise construct a single row table with the widest node in the
+			// data, assign any user defined widths, then insert it into the DOM and
+			// allow the browser to do all the hard work of calculating table widths
+			var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table
+				.empty()
+				.css( 'visibility', 'hidden' )
+				.removeAttr( 'id' )
+				.append( $(oSettings.nTHead).clone( false ) )
+				.append( $(oSettings.nTFoot).clone( false ) )
+				.append( $('<tbody><tr/></tbody>') );
+	
+			// Remove any assigned widths from the footer (from scrolling)
+			tmpTable.find('tfoot th, tfoot td').css('width', '');
+	
+			var tr = tmpTable.find( 'tbody tr' );
+	
+			// Apply custom sizing to the cloned header
+			headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );
+	
+			for ( i=0 ; i<visibleColumns.length ; i++ ) {
+				column = columns[ visibleColumns[i] ];
+	
+				headerCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ?
+					_fnStringToCss( column.sWidthOrig ) :
+					'';
+			}
+	
+			// Find the widest cell for each column and put it into the table
+			if ( oSettings.aoData.length ) {
+				for ( i=0 ; i<visibleColumns.length ; i++ ) {
+					columnIdx = visibleColumns[i];
+					column = columns[ columnIdx ];
+	
+					$( _fnGetWidestNode( oSettings, columnIdx ) )
+						.clone( false )
+						.append( column.sContentPadding )
+						.appendTo( tr );
+				}
+			}
+	
+			// Table has been built, attach to the document so we can work with it
+			tmpTable.appendTo( tableContainer );
+	
+			// When scrolling (X or Y) we want to set the width of the table as 
+			// appropriate. However, when not scrolling leave the table width as it
+			// is. This results in slightly different, but I think correct behaviour
+			if ( scrollX && scrollXInner ) {
+				tmpTable.width( scrollXInner );
+			}
+			else if ( scrollX ) {
+				tmpTable.css( 'width', 'auto' );
+	
+				if ( tmpTable.width() < tableContainer.offsetWidth ) {
+					tmpTable.width( tableContainer.offsetWidth );
+				}
+			}
+			else if ( scrollY ) {
+				tmpTable.width( tableContainer.offsetWidth );
+			}
+			else if ( tableWidthAttr ) {
+				tmpTable.width( tableWidthAttr );
+			}
+	
+			// Take into account the y scrollbar
+			_fnScrollingWidthAdjust( oSettings, tmpTable[0] );
+	
+			// Browsers need a bit of a hand when a width is assigned to any columns
+			// when x-scrolling as they tend to collapse the table to the min-width,
+			// even if we sent the column widths. So we need to keep track of what
+			// the table width should be by summing the user given values, and the
+			// automatic values
+			if ( scrollX )
+			{
+				var total = 0;
+	
+				for ( i=0 ; i<visibleColumns.length ; i++ ) {
+					column = columns[ visibleColumns[i] ];
+					outerWidth = $(headerCells[i]).outerWidth();
+	
+					total += column.sWidthOrig === null ?
+						outerWidth :
+						parseInt( column.sWidth, 10 ) + outerWidth - $(headerCells[i]).width();
+				}
+	
+				tmpTable.width( _fnStringToCss( total ) );
+				table.style.width = _fnStringToCss( total );
+			}
+	
+			// Get the width of each column in the constructed table
+			for ( i=0 ; i<visibleColumns.length ; i++ ) {
+				column = columns[ visibleColumns[i] ];
+				width = $(headerCells[i]).width();
+	
+				if ( width ) {
+					column.sWidth = _fnStringToCss( width );
+				}
+			}
+	
+			table.style.width = _fnStringToCss( tmpTable.css('width') );
+	
+			// Finished with the table - ditch it
+			tmpTable.remove();
+		}
+	
+		// If there is a width attr, we want to attach an event listener which
+		// allows the table sizing to automatically adjust when the window is
+		// resized. Use the width attr rather than CSS, since we can't know if the
+		// CSS is a relative value or absolute - DOM read is always px.
+		if ( tableWidthAttr ) {
+			table.style.width = _fnStringToCss( tableWidthAttr );
+		}
+	
+		if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {
+			$(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {
+				_fnAdjustColumnSizing( oSettings );
+			} ) );
+	
+			oSettings._reszEvt = true;
+		}
+	}
+	
+	
+	/**
+	 * Throttle the calls to a function. Arguments and context are maintained for
+	 * the throttled function
+	 *  @param {function} fn Function to be called
+	 *  @param {int} [freq=200] call frequency in mS
+	 *  @returns {function} wrapped function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnThrottle( fn, freq ) {
+		var
+			frequency = freq || 200,
+			last,
+			timer;
+	
+		return function () {
+			var
+				that = this,
+				now  = +new Date(),
+				args = arguments;
+	
+			if ( last && now < last + frequency ) {
+				clearTimeout( timer );
+	
+				timer = setTimeout( function () {
+					last = undefined;
+					fn.apply( that, args );
+				}, frequency );
+			}
+			else if ( last ) {
+				last = now;
+				fn.apply( that, args );
+			}
+			else {
+				last = now;
+			}
+		};
+	}
+	
+	
+	/**
+	 * Convert a CSS unit width to pixels (e.g. 2em)
+	 *  @param {string} width width to be converted
+	 *  @param {node} parent parent to get the with for (required for relative widths) - optional
+	 *  @returns {int} width in pixels
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnConvertToWidth ( width, parent )
+	{
+		if ( ! width ) {
+			return 0;
+		}
+	
+		var n = $('<div/>')
+			.css( 'width', _fnStringToCss( width ) )
+			.appendTo( parent || document.body );
+	
+		var val = n[0].offsetWidth;
+		n.remove();
+	
+		return val;
+	}
+	
+	
+	/**
+	 * Adjust a table's width to take account of vertical scroll bar
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {node} n table node
+	 *  @memberof DataTable#oApi
+	 */
+	
+	function _fnScrollingWidthAdjust ( settings, n )
+	{
+		var scroll = settings.oScroll;
+	
+		if ( scroll.sX || scroll.sY ) {
+			// When y-scrolling only, we want to remove the width of the scroll bar
+			// so the table + scroll bar will fit into the area available, otherwise
+			// we fix the table at its current size with no adjustment
+			var correction = ! scroll.sX ? scroll.iBarWidth : 0;
+			n.style.width = _fnStringToCss( $(n).outerWidth() - correction );
+		}
+	}
+	
+	
+	/**
+	 * Get the widest node
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} colIdx column of interest
+	 *  @returns {node} widest table node
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetWidestNode( settings, colIdx )
+	{
+		var idx = _fnGetMaxLenString( settings, colIdx );
+		if ( idx < 0 ) {
+			return null;
+		}
+	
+		var data = settings.aoData[ idx ];
+		return ! data.nTr ? // Might not have been created when deferred rendering
+			$('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :
+			data.anCells[ colIdx ];
+	}
+	
+	
+	/**
+	 * Get the maximum strlen for each data column
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} colIdx column of interest
+	 *  @returns {string} max string length for each column
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnGetMaxLenString( settings, colIdx )
+	{
+		var s, max=-1, maxIdx = -1;
+	
+		for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+			s = _fnGetCellData( settings, i, colIdx, 'display' )+'';
+			s = s.replace( __re_html_remove, '' );
+	
+			if ( s.length > max ) {
+				max = s.length;
+				maxIdx = i;
+			}
+		}
+	
+		return maxIdx;
+	}
+	
+	
+	/**
+	 * Append a CSS unit (only if required) to a string
+	 *  @param {string} value to css-ify
+	 *  @returns {string} value with css unit
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnStringToCss( s )
+	{
+		if ( s === null ) {
+			return '0px';
+		}
+	
+		if ( typeof s == 'number' ) {
+			return s < 0 ?
+				'0px' :
+				s+'px';
+		}
+	
+		// Check it has a unit character already
+		return s.match(/\d$/) ?
+			s+'px' :
+			s;
+	}
+	
+	
+	/**
+	 * Get the width of a scroll bar in this browser being used
+	 *  @returns {int} width in pixels
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnScrollBarWidth ()
+	{
+		// On first run a static variable is set, since this is only needed once.
+		// Subsequent runs will just use the previously calculated value
+		if ( ! DataTable.__scrollbarWidth ) {
+			var inner = $('<p/>').css( {
+				width: '100%',
+				height: 200,
+				padding: 0
+			} )[0];
+	
+			var outer = $('<div/>')
+				.css( {
+					position: 'absolute',
+					top: 0,
+					left: 0,
+					width: 200,
+					height: 150,
+					padding: 0,
+					overflow: 'hidden',
+					visibility: 'hidden'
+				} )
+				.append( inner )
+				.appendTo( 'body' );
+	
+			var w1 = inner.offsetWidth;
+			outer.css( 'overflow', 'scroll' );
+			var w2 = inner.offsetWidth;
+	
+			if ( w1 === w2 ) {
+				w2 = outer[0].clientWidth;
+			}
+	
+			outer.remove();
+	
+			DataTable.__scrollbarWidth = w1 - w2;
+		}
+	
+		return DataTable.__scrollbarWidth;
+	}
+	
+	
+	
+	function _fnSortFlatten ( settings )
+	{
+		var
+			i, iLen, k, kLen,
+			aSort = [],
+			aiOrig = [],
+			aoColumns = settings.aoColumns,
+			aDataSort, iCol, sType, srcCol,
+			fixed = settings.aaSortingFixed,
+			fixedObj = $.isPlainObject( fixed ),
+			nestedSort = [],
+			add = function ( a ) {
+				if ( a.length && ! $.isArray( a[0] ) ) {
+					// 1D array
+					nestedSort.push( a );
+				}
+				else {
+					// 2D array
+					nestedSort.push.apply( nestedSort, a );
+				}
+			};
+	
+		// Build the sort array, with pre-fix and post-fix options if they have been
+		// specified
+		if ( $.isArray( fixed ) ) {
+			add( fixed );
+		}
+	
+		if ( fixedObj && fixed.pre ) {
+			add( fixed.pre );
+		}
+	
+		add( settings.aaSorting );
+	
+		if (fixedObj && fixed.post ) {
+			add( fixed.post );
+		}
+	
+		for ( i=0 ; i<nestedSort.length ; i++ )
+		{
+			srcCol = nestedSort[i][0];
+			aDataSort = aoColumns[ srcCol ].aDataSort;
+	
+			for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )
+			{
+				iCol = aDataSort[k];
+				sType = aoColumns[ iCol ].sType || 'string';
+	
+				aSort.push( {
+					src:       srcCol,
+					col:       iCol,
+					dir:       nestedSort[i][1],
+					index:     nestedSort[i][2],
+					type:      sType,
+					formatter: DataTable.ext.type.order[ sType+"-pre" ]
+				} );
+			}
+		}
+	
+		return aSort;
+	}
+	
+	/**
+	 * Change the order of the table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 *  @todo This really needs split up!
+	 */
+	function _fnSort ( oSettings )
+	{
+		var
+			i, ien, iLen, j, jLen, k, kLen,
+			sDataType, nTh,
+			aiOrig = [],
+			oExtSort = DataTable.ext.type.order,
+			aoData = oSettings.aoData,
+			aoColumns = oSettings.aoColumns,
+			aDataSort, data, iCol, sType, oSort,
+			formatters = 0,
+			sortCol,
+			displayMaster = oSettings.aiDisplayMaster,
+			aSort;
+	
+		// Resolve any column types that are unknown due to addition or invalidation
+		// @todo Can this be moved into a 'data-ready' handler which is called when
+		//   data is going to be used in the table?
+		_fnColumnTypes( oSettings );
+	
+		aSort = _fnSortFlatten( oSettings );
+	
+		for ( i=0, ien=aSort.length ; i<ien ; i++ ) {
+			sortCol = aSort[i];
+	
+			// Track if we can use the fast sort algorithm
+			if ( sortCol.formatter ) {
+				formatters++;
+			}
+	
+			// Load the data needed for the sort, for each cell
+			_fnSortData( oSettings, sortCol.col );
+		}
+	
+		/* No sorting required if server-side or no sorting array */
+		if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )
+		{
+			// Create a value - key array of the current row positions such that we can use their
+			// current position during the sort, if values match, in order to perform stable sorting
+			for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {
+				aiOrig[ displayMaster[i] ] = i;
+			}
+	
+			/* Do the sort - here we want multi-column sorting based on a given data source (column)
+			 * and sorting function (from oSort) in a certain direction. It's reasonably complex to
+			 * follow on it's own, but this is what we want (example two column sorting):
+			 *  fnLocalSorting = function(a,b){
+			 *    var iTest;
+			 *    iTest = oSort['string-asc']('data11', 'data12');
+			 *      if (iTest !== 0)
+			 *        return iTest;
+			 *    iTest = oSort['numeric-desc']('data21', 'data22');
+			 *    if (iTest !== 0)
+			 *      return iTest;
+			 *    return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
+			 *  }
+			 * Basically we have a test for each sorting column, if the data in that column is equal,
+			 * test the next column. If all columns match, then we use a numeric sort on the row
+			 * positions in the original data array to provide a stable sort.
+			 *
+			 * Note - I know it seems excessive to have two sorting methods, but the first is around
+			 * 15% faster, so the second is only maintained for backwards compatibility with sorting
+			 * methods which do not have a pre-sort formatting function.
+			 */
+			if ( formatters === aSort.length ) {
+				// All sort types have formatting functions
+				displayMaster.sort( function ( a, b ) {
+					var
+						x, y, k, test, sort,
+						len=aSort.length,
+						dataA = aoData[a]._aSortData,
+						dataB = aoData[b]._aSortData;
+	
+					for ( k=0 ; k<len ; k++ ) {
+						sort = aSort[k];
+	
+						x = dataA[ sort.col ];
+						y = dataB[ sort.col ];
+	
+						test = x<y ? -1 : x>y ? 1 : 0;
+						if ( test !== 0 ) {
+							return sort.dir === 'asc' ? test : -test;
+						}
+					}
+	
+					x = aiOrig[a];
+					y = aiOrig[b];
+					return x<y ? -1 : x>y ? 1 : 0;
+				} );
+			}
+			else {
+				// Depreciated - remove in 1.11 (providing a plug-in option)
+				// Not all sort types have formatting methods, so we have to call their sorting
+				// methods.
+				displayMaster.sort( function ( a, b ) {
+					var
+						x, y, k, l, test, sort, fn,
+						len=aSort.length,
+						dataA = aoData[a]._aSortData,
+						dataB = aoData[b]._aSortData;
+	
+					for ( k=0 ; k<len ; k++ ) {
+						sort = aSort[k];
+	
+						x = dataA[ sort.col ];
+						y = dataB[ sort.col ];
+	
+						fn = oExtSort[ sort.type+"-"+sort.dir ] || oExtSort[ "string-"+sort.dir ];
+						test = fn( x, y );
+						if ( test !== 0 ) {
+							return test;
+						}
+					}
+	
+					x = aiOrig[a];
+					y = aiOrig[b];
+					return x<y ? -1 : x>y ? 1 : 0;
+				} );
+			}
+		}
+	
+		/* Tell the draw function that we have sorted the data */
+		oSettings.bSorted = true;
+	}
+	
+	
+	function _fnSortAria ( settings )
+	{
+		var label;
+		var nextSort;
+		var columns = settings.aoColumns;
+		var aSort = _fnSortFlatten( settings );
+		var oAria = settings.oLanguage.oAria;
+	
+		// ARIA attributes - need to loop all columns, to update all (removing old
+		// attributes as needed)
+		for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
+		{
+			var col = columns[i];
+			var asSorting = col.asSorting;
+			var sTitle = col.sTitle.replace( /<.*?>/g, "" );
+			var th = col.nTh;
+	
+			// IE7 is throwing an error when setting these properties with jQuery's
+			// attr() and removeAttr() methods...
+			th.removeAttribute('aria-sort');
+	
+			/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */
+			if ( col.bSortable ) {
+				if ( aSort.length > 0 && aSort[0].col == i ) {
+					th.setAttribute('aria-sort', aSort[0].dir=="asc" ? "ascending" : "descending" );
+					nextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];
+				}
+				else {
+					nextSort = asSorting[0];
+				}
+	
+				label = sTitle + ( nextSort === "asc" ?
+					oAria.sSortAscending :
+					oAria.sSortDescending
+				);
+			}
+			else {
+				label = sTitle;
+			}
+	
+			th.setAttribute('aria-label', label);
+		}
+	}
+	
+	
+	/**
+	 * Function to run on user sort request
+	 *  @param {object} settings dataTables settings object
+	 *  @param {node} attachTo node to attach the handler to
+	 *  @param {int} colIdx column sorting index
+	 *  @param {boolean} [append=false] Append the requested sort to the existing
+	 *    sort if true (i.e. multi-column sort)
+	 *  @param {function} [callback] callback function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSortListener ( settings, colIdx, append, callback )
+	{
+		var col = settings.aoColumns[ colIdx ];
+		var sorting = settings.aaSorting;
+		var asSorting = col.asSorting;
+		var nextSortIdx;
+		var next = function ( a ) {
+			var idx = a._idx;
+			if ( idx === undefined ) {
+				idx = $.inArray( a[1], asSorting );
+			}
+	
+			return idx+1 >= asSorting.length ? 0 : idx+1;
+		};
+	
+		// Convert to 2D array if needed
+		if ( typeof sorting[0] === 'number' ) {
+			sorting = settings.aaSorting = [ sorting ];
+		}
+	
+		// If appending the sort then we are multi-column sorting
+		if ( append && settings.oFeatures.bSortMulti ) {
+			// Are we already doing some kind of sort on this column?
+			var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );
+	
+			if ( sortIdx !== -1 ) {
+				// Yes, modify the sort
+				nextSortIdx = next( sorting[sortIdx] );
+	
+				sorting[sortIdx][1] = asSorting[ nextSortIdx ];
+				sorting[sortIdx]._idx = nextSortIdx;
+			}
+			else {
+				// No sort on this column yet
+				sorting.push( [ colIdx, asSorting[0], 0 ] );
+				sorting[sorting.length-1]._idx = 0;
+			}
+		}
+		else if ( sorting.length && sorting[0][0] == colIdx ) {
+			// Single column - already sorting on this column, modify the sort
+			nextSortIdx = next( sorting[0] );
+	
+			sorting.length = 1;
+			sorting[0][1] = asSorting[ nextSortIdx ];
+			sorting[0]._idx = nextSortIdx;
+		}
+		else {
+			// Single column - sort only on this column
+			sorting.length = 0;
+			sorting.push( [ colIdx, asSorting[0] ] );
+			sorting[0]._idx = 0;
+		}
+	
+		// Run the sort by calling a full redraw
+		_fnReDraw( settings );
+	
+		// callback used for async user interaction
+		if ( typeof callback == 'function' ) {
+			callback( settings );
+		}
+	}
+	
+	
+	/**
+	 * Attach a sort handler (click) to a node
+	 *  @param {object} settings dataTables settings object
+	 *  @param {node} attachTo node to attach the handler to
+	 *  @param {int} colIdx column sorting index
+	 *  @param {function} [callback] callback function
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSortAttachListener ( settings, attachTo, colIdx, callback )
+	{
+		var col = settings.aoColumns[ colIdx ];
+	
+		_fnBindAction( attachTo, {}, function (e) {
+			/* If the column is not sortable - don't to anything */
+			if ( col.bSortable === false ) {
+				return;
+			}
+	
+			// If processing is enabled use a timeout to allow the processing
+			// display to be shown - otherwise to it synchronously
+			if ( settings.oFeatures.bProcessing ) {
+				_fnProcessingDisplay( settings, true );
+	
+				setTimeout( function() {
+					_fnSortListener( settings, colIdx, e.shiftKey, callback );
+	
+					// In server-side processing, the draw callback will remove the
+					// processing display
+					if ( _fnDataSource( settings ) !== 'ssp' ) {
+						_fnProcessingDisplay( settings, false );
+					}
+				}, 0 );
+			}
+			else {
+				_fnSortListener( settings, colIdx, e.shiftKey, callback );
+			}
+		} );
+	}
+	
+	
+	/**
+	 * Set the sorting classes on table's body, Note: it is safe to call this function
+	 * when bSort and bSortClasses are false
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSortingClasses( settings )
+	{
+		var oldSort = settings.aLastSort;
+		var sortClass = settings.oClasses.sSortColumn;
+		var sort = _fnSortFlatten( settings );
+		var features = settings.oFeatures;
+		var i, ien, colIdx;
+	
+		if ( features.bSort && features.bSortClasses ) {
+			// Remove old sorting classes
+			for ( i=0, ien=oldSort.length ; i<ien ; i++ ) {
+				colIdx = oldSort[i].src;
+	
+				// Remove column sorting
+				$( _pluck( settings.aoData, 'anCells', colIdx ) )
+					.removeClass( sortClass + (i<2 ? i+1 : 3) );
+			}
+	
+			// Add new column sorting
+			for ( i=0, ien=sort.length ; i<ien ; i++ ) {
+				colIdx = sort[i].src;
+	
+				$( _pluck( settings.aoData, 'anCells', colIdx ) )
+					.addClass( sortClass + (i<2 ? i+1 : 3) );
+			}
+		}
+	
+		settings.aLastSort = sort;
+	}
+	
+	
+	// Get the data to sort a column, be it from cache, fresh (populating the
+	// cache), or from a sort formatter
+	function _fnSortData( settings, idx )
+	{
+		// Custom sorting function - provided by the sort data type
+		var column = settings.aoColumns[ idx ];
+		var customSort = DataTable.ext.order[ column.sSortDataType ];
+		var customData;
+	
+		if ( customSort ) {
+			customData = customSort.call( settings.oInstance, settings, idx,
+				_fnColumnIndexToVisible( settings, idx )
+			);
+		}
+	
+		// Use / populate cache
+		var row, cellData;
+		var formatter = DataTable.ext.type.order[ column.sType+"-pre" ];
+	
+		for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+			row = settings.aoData[i];
+	
+			if ( ! row._aSortData ) {
+				row._aSortData = [];
+			}
+	
+			if ( ! row._aSortData[idx] || customSort ) {
+				cellData = customSort ?
+					customData[i] : // If there was a custom sort function, use data from there
+					_fnGetCellData( settings, i, idx, 'sort' );
+	
+				row._aSortData[ idx ] = formatter ?
+					formatter( cellData ) :
+					cellData;
+			}
+		}
+	}
+	
+	
+	
+	/**
+	 * Save the state of a table
+	 *  @param {object} oSettings dataTables settings object
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSaveState ( settings )
+	{
+		if ( !settings.oFeatures.bStateSave || settings.bDestroying )
+		{
+			return;
+		}
+	
+		/* Store the interesting variables */
+		var state = {
+			time:    +new Date(),
+			start:   settings._iDisplayStart,
+			length:  settings._iDisplayLength,
+			order:   $.extend( true, [], settings.aaSorting ),
+			search:  _fnSearchToCamel( settings.oPreviousSearch ),
+			columns: $.map( settings.aoColumns, function ( col, i ) {
+				return {
+					visible: col.bVisible,
+					search: _fnSearchToCamel( settings.aoPreSearchCols[i] )
+				};
+			} )
+		};
+	
+		_fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] );
+	
+		settings.oSavedState = state;
+		settings.fnStateSaveCallback.call( settings.oInstance, settings, state );
+	}
+	
+	
+	/**
+	 * Attempt to load a saved table state
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {object} oInit DataTables init object so we can override settings
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnLoadState ( settings, oInit )
+	{
+		var i, ien;
+		var columns = settings.aoColumns;
+	
+		if ( ! settings.oFeatures.bStateSave ) {
+			return;
+		}
+	
+		var state = settings.fnStateLoadCallback.call( settings.oInstance, settings );
+		if ( ! state || ! state.time ) {
+			return;
+		}
+	
+		/* Allow custom and plug-in manipulation functions to alter the saved data set and
+		 * cancelling of loading by returning false
+		 */
+		var abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, state] );
+		if ( $.inArray( false, abStateLoad ) !== -1 ) {
+			return;
+		}
+	
+		/* Reject old data */
+		var duration = settings.iStateDuration;
+		if ( duration > 0 && state.time < +new Date() - (duration*1000) ) {
+			return;
+		}
+	
+		// Number of columns have changed - all bets are off, no restore of settings
+		if ( columns.length !== state.columns.length ) {
+			return;
+		}
+	
+		// Store the saved state so it might be accessed at any time
+		settings.oLoadedState = $.extend( true, {}, state );
+	
+		// Restore key features - todo - for 1.11 this needs to be done by
+		// subscribed events
+		settings._iDisplayStart    = state.start;
+		settings.iInitDisplayStart = state.start;
+		settings._iDisplayLength   = state.length;
+		settings.aaSorting = [];
+	
+		// Order
+		$.each( state.order, function ( i, col ) {
+			settings.aaSorting.push( col[0] >= columns.length ?
+				[ 0, col[1] ] :
+				col
+			);
+		} );
+	
+		// Search
+		$.extend( settings.oPreviousSearch, _fnSearchToHung( state.search ) );
+	
+		// Columns
+		for ( i=0, ien=state.columns.length ; i<ien ; i++ ) {
+			var col = state.columns[i];
+	
+			// Visibility
+			columns[i].bVisible = col.visible;
+	
+			// Search
+			$.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) );
+		}
+	
+		_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, state] );
+	}
+	
+	
+	/**
+	 * Return the settings object for a particular table
+	 *  @param {node} table table we are using as a dataTable
+	 *  @returns {object} Settings object - or null if not found
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnSettingsFromNode ( table )
+	{
+		var settings = DataTable.settings;
+		var idx = $.inArray( table, _pluck( settings, 'nTable' ) );
+	
+		return idx !== -1 ?
+			settings[ idx ] :
+			null;
+	}
+	
+	
+	/**
+	 * Log an error message
+	 *  @param {object} settings dataTables settings object
+	 *  @param {int} level log error messages, or display them to the user
+	 *  @param {string} msg error message
+	 *  @param {int} tn Technical note id to get more information about the error.
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnLog( settings, level, msg, tn )
+	{
+		msg = 'DataTables warning: '+
+			(settings!==null ? 'table id='+settings.sTableId+' - ' : '')+msg;
+	
+		if ( tn ) {
+			msg += '. For more information about this error, please see '+
+			'http://datatables.net/tn/'+tn;
+		}
+	
+		if ( ! level  ) {
+			// Backwards compatibility pre 1.10
+			var ext = DataTable.ext;
+			var type = ext.sErrMode || ext.errMode;
+	
+			if ( type == 'alert' ) {
+				alert( msg );
+			}
+			else {
+				throw new Error(msg);
+			}
+		}
+		else if ( window.console && console.log ) {
+			console.log( msg );
+		}
+	}
+	
+	
+	/**
+	 * See if a property is defined on one object, if so assign it to the other object
+	 *  @param {object} ret target object
+	 *  @param {object} src source object
+	 *  @param {string} name property
+	 *  @param {string} [mappedName] name to map too - optional, name used if not given
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnMap( ret, src, name, mappedName )
+	{
+		if ( $.isArray( name ) ) {
+			$.each( name, function (i, val) {
+				if ( $.isArray( val ) ) {
+					_fnMap( ret, src, val[0], val[1] );
+				}
+				else {
+					_fnMap( ret, src, val );
+				}
+			} );
+	
+			return;
+		}
+	
+		if ( mappedName === undefined ) {
+			mappedName = name;
+		}
+	
+		if ( src[name] !== undefined ) {
+			ret[mappedName] = src[name];
+		}
+	}
+	
+	
+	/**
+	 * Extend objects - very similar to jQuery.extend, but deep copy objects, and
+	 * shallow copy arrays. The reason we need to do this, is that we don't want to
+	 * deep copy array init values (such as aaSorting) since the dev wouldn't be
+	 * able to override them, but we do want to deep copy arrays.
+	 *  @param {object} out Object to extend
+	 *  @param {object} extender Object from which the properties will be applied to
+	 *      out
+	 *  @param {boolean} breakRefs If true, then arrays will be sliced to take an
+	 *      independent copy with the exception of the `data` or `aaData` parameters
+	 *      if they are present. This is so you can pass in a collection to
+	 *      DataTables and have that used as your data source without breaking the
+	 *      references
+	 *  @returns {object} out Reference, just for convenience - out === the return.
+	 *  @memberof DataTable#oApi
+	 *  @todo This doesn't take account of arrays inside the deep copied objects.
+	 */
+	function _fnExtend( out, extender, breakRefs )
+	{
+		var val;
+	
+		for ( var prop in extender ) {
+			if ( extender.hasOwnProperty(prop) ) {
+				val = extender[prop];
+	
+				if ( $.isPlainObject( val ) ) {
+					if ( ! $.isPlainObject( out[prop] ) ) {
+						out[prop] = {};
+					}
+					$.extend( true, out[prop], val );
+				}
+				else if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) {
+					out[prop] = val.slice();
+				}
+				else {
+					out[prop] = val;
+				}
+			}
+		}
+	
+		return out;
+	}
+	
+	
+	/**
+	 * Bind an event handers to allow a click or return key to activate the callback.
+	 * This is good for accessibility since a return on the keyboard will have the
+	 * same effect as a click, if the element has focus.
+	 *  @param {element} n Element to bind the action to
+	 *  @param {object} oData Data object to pass to the triggered function
+	 *  @param {function} fn Callback function for when the event is triggered
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnBindAction( n, oData, fn )
+	{
+		$(n)
+			.bind( 'click.DT', oData, function (e) {
+					n.blur(); // Remove focus outline for mouse users
+					fn(e);
+				} )
+			.bind( 'keypress.DT', oData, function (e){
+					if ( e.which === 13 ) {
+						e.preventDefault();
+						fn(e);
+					}
+				} )
+			.bind( 'selectstart.DT', function () {
+					/* Take the brutal approach to cancelling text selection */
+					return false;
+				} );
+	}
+	
+	
+	/**
+	 * Register a callback function. Easily allows a callback function to be added to
+	 * an array store of callback functions that can then all be called together.
+	 *  @param {object} oSettings dataTables settings object
+	 *  @param {string} sStore Name of the array storage for the callbacks in oSettings
+	 *  @param {function} fn Function to be called back
+	 *  @param {string} sName Identifying name for the callback (i.e. a label)
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCallbackReg( oSettings, sStore, fn, sName )
+	{
+		if ( fn )
+		{
+			oSettings[sStore].push( {
+				"fn": fn,
+				"sName": sName
+			} );
+		}
+	}
+	
+	
+	/**
+	 * Fire callback functions and trigger events. Note that the loop over the
+	 * callback array store is done backwards! Further note that you do not want to
+	 * fire off triggers in time sensitive applications (for example cell creation)
+	 * as its slow.
+	 *  @param {object} settings dataTables settings object
+	 *  @param {string} callbackArr Name of the array storage for the callbacks in
+	 *      oSettings
+	 *  @param {string} event Name of the jQuery custom event to trigger. If null no
+	 *      trigger is fired
+	 *  @param {array} args Array of arguments to pass to the callback function /
+	 *      trigger
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnCallbackFire( settings, callbackArr, e, args )
+	{
+		var ret = [];
+	
+		if ( callbackArr ) {
+			ret = $.map( settings[callbackArr].slice().reverse(), function (val, i) {
+				return val.fn.apply( settings.oInstance, args );
+			} );
+		}
+	
+		if ( e !== null ) {
+			$(settings.nTable).trigger( e+'.dt', args );
+		}
+	
+		return ret;
+	}
+	
+	
+	function _fnLengthOverflow ( settings )
+	{
+		var
+			start = settings._iDisplayStart,
+			end = settings.fnDisplayEnd(),
+			len = settings._iDisplayLength;
+	
+		/* If we have space to show extra rows (backing up from the end point - then do so */
+		if ( end === settings.fnRecordsDisplay() )
+		{
+			start = end - len;
+		}
+	
+		if ( len === -1 || start < 0 )
+		{
+			start = 0;
+		}
+	
+		settings._iDisplayStart = start;
+	}
+	
+	
+	function _fnRenderer( settings, type )
+	{
+		var renderer = settings.renderer;
+		var host = DataTable.ext.renderer[type];
+	
+		if ( $.isPlainObject( renderer ) && renderer[type] ) {
+			// Specific renderer for this type. If available use it, otherwise use
+			// the default.
+			return host[renderer[type]] || host._;
+		}
+		else if ( typeof renderer === 'string' ) {
+			// Common renderer - if there is one available for this type use it,
+			// otherwise use the default
+			return host[renderer] || host._;
+		}
+	
+		// Use the default
+		return host._;
+	}
+	
+	
+	/**
+	 * Detect the data source being used for the table. Used to simplify the code
+	 * a little (ajax) and to make it compress a little smaller.
+	 *
+	 *  @param {object} settings dataTables settings object
+	 *  @returns {string} Data source
+	 *  @memberof DataTable#oApi
+	 */
+	function _fnDataSource ( settings )
+	{
+		if ( settings.oFeatures.bServerSide ) {
+			return 'ssp';
+		}
+		else if ( settings.ajax || settings.sAjaxSource ) {
+			return 'ajax';
+		}
+		return 'dom';
+	}
+	
+
+	DataTable = function( options )
+	{
+		/**
+		 * Perform a jQuery selector action on the table's TR elements (from the tbody) and
+		 * return the resulting jQuery object.
+		 *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+		 *  @param {object} [oOpts] Optional parameters for modifying the rows to be included
+		 *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter
+		 *    criterion ("applied") or all TR elements (i.e. no filter).
+		 *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.
+		 *    Can be either 'current', whereby the current sorting of the table is used, or
+		 *    'original' whereby the original order the data was read into the table is used.
+		 *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+		 *    ("current") or not ("all"). If 'current' is given, then order is assumed to be
+		 *    'current' and filter is 'applied', regardless of what they might be given as.
+		 *  @returns {object} jQuery object, filtered by the given selector.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Highlight every second row
+		 *      oTable.$('tr:odd').css('backgroundColor', 'blue');
+		 *    } );
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Filter to rows with 'Webkit' in them, add a background colour and then
+		 *      // remove the filter, thus highlighting the 'Webkit' rows only.
+		 *      oTable.fnFilter('Webkit');
+		 *      oTable.$('tr', {"search": "applied"}).css('backgroundColor', 'blue');
+		 *      oTable.fnFilter('');
+		 *    } );
+		 */
+		this.$ = function ( sSelector, oOpts )
+		{
+			return this.api(true).$( sSelector, oOpts );
+		};
+		
+		
+		/**
+		 * Almost identical to $ in operation, but in this case returns the data for the matched
+		 * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes
+		 * rather than any descendants, so the data can be obtained for the row/cell. If matching
+		 * rows are found, the data returned is the original data array/object that was used to
+		 * create the row (or a generated array if from a DOM source).
+		 *
+		 * This method is often useful in-combination with $ where both functions are given the
+		 * same parameters and the array indexes will match identically.
+		 *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+		 *  @param {object} [oOpts] Optional parameters for modifying the rows to be included
+		 *  @param {string} [oOpts.filter=none] Select elements that meet the current filter
+		 *    criterion ("applied") or all elements (i.e. no filter).
+		 *  @param {string} [oOpts.order=current] Order of the data in the processed array.
+		 *    Can be either 'current', whereby the current sorting of the table is used, or
+		 *    'original' whereby the original order the data was read into the table is used.
+		 *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+		 *    ("current") or not ("all"). If 'current' is given, then order is assumed to be
+		 *    'current' and filter is 'applied', regardless of what they might be given as.
+		 *  @returns {array} Data for the matched elements. If any elements, as a result of the
+		 *    selector, were not TR, TD or TH elements in the DataTable, they will have a null
+		 *    entry in the array.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Get the data from the first row in the table
+		 *      var data = oTable._('tr:first');
+		 *
+		 *      // Do something useful with the data
+		 *      alert( "First cell is: "+data[0] );
+		 *    } );
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Filter to 'Webkit' and get all data for
+		 *      oTable.fnFilter('Webkit');
+		 *      var data = oTable._('tr', {"search": "applied"});
+		 *
+		 *      // Do something with the data
+		 *      alert( data.length+" rows matched the search" );
+		 *    } );
+		 */
+		this._ = function ( sSelector, oOpts )
+		{
+			return this.api(true).rows( sSelector, oOpts ).data();
+		};
+		
+		
+		/**
+		 * Create a DataTables Api instance, with the currently selected tables for
+		 * the Api's context.
+		 * @param {boolean} [traditional=false] Set the API instance's context to be
+		 *   only the table referred to by the `DataTable.ext.iApiIndex` option, as was
+		 *   used in the API presented by DataTables 1.9- (i.e. the traditional mode),
+		 *   or if all tables captured in the jQuery object should be used.
+		 * @return {DataTables.Api}
+		 */
+		this.api = function ( traditional )
+		{
+			return traditional ?
+				new _Api(
+					_fnSettingsFromNode( this[ _ext.iApiIndex ] )
+				) :
+				new _Api( this );
+		};
+		
+		
+		/**
+		 * Add a single new row or multiple rows of data to the table. Please note
+		 * that this is suitable for client-side processing only - if you are using
+		 * server-side processing (i.e. "bServerSide": true), then to add data, you
+		 * must add it to the data source, i.e. the server-side, through an Ajax call.
+		 *  @param {array|object} data The data to be added to the table. This can be:
+		 *    <ul>
+		 *      <li>1D array of data - add a single row with the data provided</li>
+		 *      <li>2D array of arrays - add multiple rows in a single call</li>
+		 *      <li>object - data object when using <i>mData</i></li>
+		 *      <li>array of objects - multiple data objects when using <i>mData</i></li>
+		 *    </ul>
+		 *  @param {bool} [redraw=true] redraw the table or not
+		 *  @returns {array} An array of integers, representing the list of indexes in
+		 *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to
+		 *    the table.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    // Global var for counter
+		 *    var giCount = 2;
+		 *
+		 *    $(document).ready(function() {
+		 *      $('#example').dataTable();
+		 *    } );
+		 *
+		 *    function fnClickAddRow() {
+		 *      $('#example').dataTable().fnAddData( [
+		 *        giCount+".1",
+		 *        giCount+".2",
+		 *        giCount+".3",
+		 *        giCount+".4" ]
+		 *      );
+		 *
+		 *      giCount++;
+		 *    }
+		 */
+		this.fnAddData = function( data, redraw )
+		{
+			var api = this.api( true );
+		
+			/* Check if we want to add multiple rows or not */
+			var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ?
+				api.rows.add( data ) :
+				api.row.add( data );
+		
+			if ( redraw === undefined || redraw ) {
+				api.draw();
+			}
+		
+			return rows.flatten().toArray();
+		};
+		
+		
+		/**
+		 * This function will make DataTables recalculate the column sizes, based on the data
+		 * contained in the table and the sizes applied to the columns (in the DOM, CSS or
+		 * through the sWidth parameter). This can be useful when the width of the table's
+		 * parent element changes (for example a window resize).
+		 *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sScrollY": "200px",
+		 *        "bPaginate": false
+		 *      } );
+		 *
+		 *      $(window).bind('resize', function () {
+		 *        oTable.fnAdjustColumnSizing();
+		 *      } );
+		 *    } );
+		 */
+		this.fnAdjustColumnSizing = function ( bRedraw )
+		{
+			var api = this.api( true ).columns.adjust();
+			var settings = api.settings()[0];
+			var scroll = settings.oScroll;
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw( false );
+			}
+			else if ( scroll.sX !== "" || scroll.sY !== "" ) {
+				/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */
+				_fnScrollDraw( settings );
+			}
+		};
+		
+		
+		/**
+		 * Quickly and simply clear a table
+		 *  @param {bool} [bRedraw=true] redraw the table or not
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)
+		 *      oTable.fnClearTable();
+		 *    } );
+		 */
+		this.fnClearTable = function( bRedraw )
+		{
+			var api = this.api( true ).clear();
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw();
+			}
+		};
+		
+		
+		/**
+		 * The exact opposite of 'opening' a row, this function will close any rows which
+		 * are currently 'open'.
+		 *  @param {node} nTr the table row to 'close'
+		 *  @returns {int} 0 on success, or 1 if failed (can't find the row)
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnClose = function( nTr )
+		{
+			this.api( true ).row( nTr ).child.hide();
+		};
+		
+		
+		/**
+		 * Remove a row for the table
+		 *  @param {mixed} target The index of the row from aoData to be deleted, or
+		 *    the TR element you want to delete
+		 *  @param {function|null} [callBack] Callback function
+		 *  @param {bool} [redraw=true] Redraw the table or not
+		 *  @returns {array} The row that was deleted
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Immediately remove the first row
+		 *      oTable.fnDeleteRow( 0 );
+		 *    } );
+		 */
+		this.fnDeleteRow = function( target, callback, redraw )
+		{
+			var api = this.api( true );
+			var rows = api.rows( target );
+			var settings = rows.settings()[0];
+			var data = settings.aoData[ rows[0][0] ];
+		
+			rows.remove();
+		
+			if ( callback ) {
+				callback.call( this, settings, data );
+			}
+		
+			if ( redraw === undefined || redraw ) {
+				api.draw();
+			}
+		
+			return data;
+		};
+		
+		
+		/**
+		 * Restore the table to it's original state in the DOM by removing all of DataTables
+		 * enhancements, alterations to the DOM structure of the table and event listeners.
+		 *  @param {boolean} [remove=false] Completely remove the table from the DOM
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      // This example is fairly pointless in reality, but shows how fnDestroy can be used
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnDestroy();
+		 *    } );
+		 */
+		this.fnDestroy = function ( remove )
+		{
+			this.api( true ).destroy( remove );
+		};
+		
+		
+		/**
+		 * Redraw the table
+		 *  @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)
+		 *      oTable.fnDraw();
+		 *    } );
+		 */
+		this.fnDraw = function( complete )
+		{
+			// Note that this isn't an exact match to the old call to _fnDraw - it takes
+			// into account the new data, but can old position.
+			this.api( true ).draw( ! complete );
+		};
+		
+		
+		/**
+		 * Filter the input based on data
+		 *  @param {string} sInput String to filter the table on
+		 *  @param {int|null} [iColumn] Column to limit filtering to
+		 *  @param {bool} [bRegex=false] Treat as regular expression or not
+		 *  @param {bool} [bSmart=true] Perform smart filtering or not
+		 *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)
+		 *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Sometime later - filter...
+		 *      oTable.fnFilter( 'test string' );
+		 *    } );
+		 */
+		this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )
+		{
+			var api = this.api( true );
+		
+			if ( iColumn === null || iColumn === undefined ) {
+				api.search( sInput, bRegex, bSmart, bCaseInsensitive );
+			}
+			else {
+				api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );
+			}
+		
+			api.draw();
+		};
+		
+		
+		/**
+		 * Get the data for the whole table, an individual row or an individual cell based on the
+		 * provided parameters.
+		 *  @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as
+		 *    a TR node then the data source for the whole row will be returned. If given as a
+		 *    TD/TH cell node then iCol will be automatically calculated and the data for the
+		 *    cell returned. If given as an integer, then this is treated as the aoData internal
+		 *    data index for the row (see fnGetPosition) and the data for that row used.
+		 *  @param {int} [col] Optional column index that you want the data of.
+		 *  @returns {array|object|string} If mRow is undefined, then the data for all rows is
+		 *    returned. If mRow is defined, just data for that row, and is iCol is
+		 *    defined, only data for the designated cell is returned.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    // Row data
+		 *    $(document).ready(function() {
+		 *      oTable = $('#example').dataTable();
+		 *
+		 *      oTable.$('tr').click( function () {
+		 *        var data = oTable.fnGetData( this );
+		 *        // ... do something with the array / object of data for the row
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Individual cell data
+		 *    $(document).ready(function() {
+		 *      oTable = $('#example').dataTable();
+		 *
+		 *      oTable.$('td').click( function () {
+		 *        var sData = oTable.fnGetData( this );
+		 *        alert( 'The cell clicked on had the value of '+sData );
+		 *      } );
+		 *    } );
+		 */
+		this.fnGetData = function( src, col )
+		{
+			var api = this.api( true );
+		
+			if ( src !== undefined ) {
+				var type = src.nodeName ? src.nodeName.toLowerCase() : '';
+		
+				return col !== undefined || type == 'td' || type == 'th' ?
+					api.cell( src, col ).data() :
+					api.row( src ).data() || null;
+			}
+		
+			return api.data().toArray();
+		};
+		
+		
+		/**
+		 * Get an array of the TR nodes that are used in the table's body. Note that you will
+		 * typically want to use the '$' API method in preference to this as it is more
+		 * flexible.
+		 *  @param {int} [iRow] Optional row index for the TR element you want
+		 *  @returns {array|node} If iRow is undefined, returns an array of all TR elements
+		 *    in the table's body, or iRow is defined, just the TR element requested.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Get the nodes from the table
+		 *      var nNodes = oTable.fnGetNodes( );
+		 *    } );
+		 */
+		this.fnGetNodes = function( iRow )
+		{
+			var api = this.api( true );
+		
+			return iRow !== undefined ?
+				api.row( iRow ).node() :
+				api.rows().nodes().flatten().toArray();
+		};
+		
+		
+		/**
+		 * Get the array indexes of a particular cell from it's DOM element
+		 * and column index including hidden columns
+		 *  @param {node} node this can either be a TR, TD or TH in the table's body
+		 *  @returns {int} If nNode is given as a TR, then a single index is returned, or
+		 *    if given as a cell, an array of [row index, column index (visible),
+		 *    column index (all)] is given.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      $('#example tbody td').click( function () {
+		 *        // Get the position of the current data from the node
+		 *        var aPos = oTable.fnGetPosition( this );
+		 *
+		 *        // Get the data array for this row
+		 *        var aData = oTable.fnGetData( aPos[0] );
+		 *
+		 *        // Update the data array and return the value
+		 *        aData[ aPos[1] ] = 'clicked';
+		 *        this.innerHTML = 'clicked';
+		 *      } );
+		 *
+		 *      // Init DataTables
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnGetPosition = function( node )
+		{
+			var api = this.api( true );
+			var nodeName = node.nodeName.toUpperCase();
+		
+			if ( nodeName == 'TR' ) {
+				return api.row( node ).index();
+			}
+			else if ( nodeName == 'TD' || nodeName == 'TH' ) {
+				var cell = api.cell( node ).index();
+		
+				return [
+					cell.row,
+					cell.columnVisible,
+					cell.column
+				];
+			}
+			return null;
+		};
+		
+		
+		/**
+		 * Check to see if a row is 'open' or not.
+		 *  @param {node} nTr the table row to check
+		 *  @returns {boolean} true if the row is currently open, false otherwise
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnIsOpen = function( nTr )
+		{
+			return this.api( true ).row( nTr ).child.isShown();
+		};
+		
+		
+		/**
+		 * This function will place a new row directly after a row which is currently
+		 * on display on the page, with the HTML contents that is passed into the
+		 * function. This can be used, for example, to ask for confirmation that a
+		 * particular record should be deleted.
+		 *  @param {node} nTr The table row to 'open'
+		 *  @param {string|node|jQuery} mHtml The HTML to put into the row
+		 *  @param {string} sClass Class to give the new TD cell
+		 *  @returns {node} The row opened. Note that if the table row passed in as the
+		 *    first parameter, is not found in the table, this method will silently
+		 *    return.
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnOpen = function( nTr, mHtml, sClass )
+		{
+			return this.api( true )
+				.row( nTr )
+				.child( mHtml, sClass )
+				.show()
+				.child()[0];
+		};
+		
+		
+		/**
+		 * Change the pagination - provides the internal logic for pagination in a simple API
+		 * function. With this function you can have a DataTables table go to the next,
+		 * previous, first or last pages.
+		 *  @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
+		 *    or page number to jump to (integer), note that page 0 is the first page.
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnPageChange( 'next' );
+		 *    } );
+		 */
+		this.fnPageChange = function ( mAction, bRedraw )
+		{
+			var api = this.api( true ).page( mAction );
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw(false);
+			}
+		};
+		
+		
+		/**
+		 * Show a particular column
+		 *  @param {int} iCol The column whose display should be changed
+		 *  @param {bool} bShow Show (true) or hide (false) the column
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Hide the second column after initialisation
+		 *      oTable.fnSetColumnVis( 1, false );
+		 *    } );
+		 */
+		this.fnSetColumnVis = function ( iCol, bShow, bRedraw )
+		{
+			var api = this.api( true ).column( iCol ).visible( bShow );
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.columns.adjust().draw();
+			}
+		};
+		
+		
+		/**
+		 * Get the settings for a particular table for external manipulation
+		 *  @returns {object} DataTables settings object. See
+		 *    {@link DataTable.models.oSettings}
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      var oSettings = oTable.fnSettings();
+		 *
+		 *      // Show an example parameter from the settings
+		 *      alert( oSettings._iDisplayStart );
+		 *    } );
+		 */
+		this.fnSettings = function()
+		{
+			return _fnSettingsFromNode( this[_ext.iApiIndex] );
+		};
+		
+		
+		/**
+		 * Sort the table by a particular column
+		 *  @param {int} iCol the data index to sort on. Note that this will not match the
+		 *    'display index' if you have hidden data entries
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Sort immediately with columns 0 and 1
+		 *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );
+		 *    } );
+		 */
+		this.fnSort = function( aaSort )
+		{
+			this.api( true ).order( aaSort ).draw();
+		};
+		
+		
+		/**
+		 * Attach a sort listener to an element for a given column
+		 *  @param {node} nNode the element to attach the sort listener to
+		 *  @param {int} iColumn the column that a click on this node will sort on
+		 *  @param {function} [fnCallback] callback function when sort is run
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Sort on column 1, when 'sorter' is clicked on
+		 *      oTable.fnSortListener( document.getElementById('sorter'), 1 );
+		 *    } );
+		 */
+		this.fnSortListener = function( nNode, iColumn, fnCallback )
+		{
+			this.api( true ).order.listener( nNode, iColumn, fnCallback );
+		};
+		
+		
+		/**
+		 * Update a table cell or row - this method will accept either a single value to
+		 * update the cell with, an array of values with one element for each column or
+		 * an object in the same format as the original data source. The function is
+		 * self-referencing in order to make the multi column updates easier.
+		 *  @param {object|array|string} mData Data to update the cell/row with
+		 *  @param {node|int} mRow TR element you want to update or the aoData index
+		 *  @param {int} [iColumn] The column to update, give as null or undefined to
+		 *    update a whole row.
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @param {bool} [bAction=true] Perform pre-draw actions or not
+		 *  @returns {int} 0 on success, 1 on error
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell
+		 *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row
+		 *    } );
+		 */
+		this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )
+		{
+			var api = this.api( true );
+		
+			if ( iColumn === undefined || iColumn === null ) {
+				api.row( mRow ).data( mData );
+			}
+			else {
+				api.cell( mRow, iColumn ).data( mData );
+			}
+		
+			if ( bAction === undefined || bAction ) {
+				api.columns.adjust();
+			}
+		
+			if ( bRedraw === undefined || bRedraw ) {
+				api.draw();
+			}
+			return 0;
+		};
+		
+		
+		/**
+		 * Provide a common method for plug-ins to check the version of DataTables being used, in order
+		 * to ensure compatibility.
+		 *  @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
+		 *    formats "X" and "X.Y" are also acceptable.
+		 *  @returns {boolean} true if this version of DataTables is greater or equal to the required
+		 *    version, or false if this version of DataTales is not suitable
+		 *  @method
+		 *  @dtopt API
+		 *  @deprecated Since v1.10
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      alert( oTable.fnVersionCheck( '1.9.0' ) );
+		 *    } );
+		 */
+		this.fnVersionCheck = _ext.fnVersionCheck;
+		
+
+		var _that = this;
+		var emptyInit = options === undefined;
+		var len = this.length;
+
+		if ( emptyInit ) {
+			options = {};
+		}
+
+		this.oApi = this.internal = _ext.internal;
+
+		// Extend with old style plug-in API methods
+		for ( var fn in DataTable.ext.internal ) {
+			if ( fn ) {
+				this[fn] = _fnExternApiFunc(fn);
+			}
+		}
+
+		this.each(function() {
+			// For each initialisation we want to give it a clean initialisation
+			// object that can be bashed around
+			var o = {};
+			var oInit = len > 1 ? // optimisation for single table case
+				_fnExtend( o, options, true ) :
+				options;
+
+			/*global oInit,_that,emptyInit*/
+			var i=0, iLen, j, jLen, k, kLen;
+			var sId = this.getAttribute( 'id' );
+			var bInitHandedOff = false;
+			var defaults = DataTable.defaults;
+			
+			
+			/* Sanity check */
+			if ( this.nodeName.toLowerCase() != 'table' )
+			{
+				_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );
+				return;
+			}
+			
+			/* Backwards compatibility for the defaults */
+			_fnCompatOpts( defaults );
+			_fnCompatCols( defaults.column );
+			
+			/* Convert the camel-case defaults to Hungarian */
+			_fnCamelToHungarian( defaults, defaults, true );
+			_fnCamelToHungarian( defaults.column, defaults.column, true );
+			
+			/* Setting up the initialisation object */
+			_fnCamelToHungarian( defaults, oInit );
+			
+			/* Check to see if we are re-initialising a table */
+			var allSettings = DataTable.settings;
+			for ( i=0, iLen=allSettings.length ; i<iLen ; i++ )
+			{
+				/* Base check on table node */
+				if ( allSettings[i].nTable == this )
+				{
+					var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;
+					var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;
+			
+					if ( emptyInit || bRetrieve )
+					{
+						return allSettings[i].oInstance;
+					}
+					else if ( bDestroy )
+					{
+						allSettings[i].oInstance.fnDestroy();
+						break;
+					}
+					else
+					{
+						_fnLog( allSettings[i], 0, 'Cannot reinitialise DataTable', 3 );
+						return;
+					}
+				}
+			
+				/* If the element we are initialising has the same ID as a table which was previously
+				 * initialised, but the table nodes don't match (from before) then we destroy the old
+				 * instance by simply deleting it. This is under the assumption that the table has been
+				 * destroyed by other methods. Anyone using non-id selectors will need to do this manually
+				 */
+				if ( allSettings[i].sTableId == this.id )
+				{
+					allSettings.splice( i, 1 );
+					break;
+				}
+			}
+			
+			/* Ensure the table has an ID - required for accessibility */
+			if ( sId === null || sId === "" )
+			{
+				sId = "DataTables_Table_"+(DataTable.ext._unique++);
+				this.id = sId;
+			}
+			
+			/* Create the settings object for this table and set some of the default parameters */
+			var oSettings = $.extend( true, {}, DataTable.models.oSettings, {
+				"nTable":        this,
+				"oApi":          _that.internal,
+				"oInit":         oInit,
+				"sDestroyWidth": $(this)[0].style.width,
+				"sInstance":     sId,
+				"sTableId":      sId
+			} );
+			allSettings.push( oSettings );
+			
+			// Need to add the instance after the instance after the settings object has been added
+			// to the settings array, so we can self reference the table instance if more than one
+			oSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();
+			
+			// Backwards compatibility, before we apply all the defaults
+			_fnCompatOpts( oInit );
+			
+			if ( oInit.oLanguage )
+			{
+				_fnLanguageCompat( oInit.oLanguage );
+			}
+			
+			// If the length menu is given, but the init display length is not, use the length menu
+			if ( oInit.aLengthMenu && ! oInit.iDisplayLength )
+			{
+				oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ?
+					oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];
+			}
+			
+			// Apply the defaults and init options to make a single init object will all
+			// options defined from defaults and instance options.
+			oInit = _fnExtend( $.extend( true, {}, defaults ), oInit );
+			
+			
+			// Map the initialisation options onto the settings object
+			_fnMap( oSettings.oFeatures, oInit, [
+				"bPaginate",
+				"bLengthChange",
+				"bFilter",
+				"bSort",
+				"bSortMulti",
+				"bInfo",
+				"bProcessing",
+				"bAutoWidth",
+				"bSortClasses",
+				"bServerSide",
+				"bDeferRender"
+			] );
+			_fnMap( oSettings, oInit, [
+				"asStripeClasses",
+				"ajax",
+				"fnServerData",
+				"fnFormatNumber",
+				"sServerMethod",
+				"aaSorting",
+				"aaSortingFixed",
+				"aLengthMenu",
+				"sPaginationType",
+				"sAjaxSource",
+				"sAjaxDataProp",
+				"iStateDuration",
+				"sDom",
+				"bSortCellsTop",
+				"iTabIndex",
+				"fnStateLoadCallback",
+				"fnStateSaveCallback",
+				"renderer",
+				[ "iCookieDuration", "iStateDuration" ], // backwards compat
+				[ "oSearch", "oPreviousSearch" ],
+				[ "aoSearchCols", "aoPreSearchCols" ],
+				[ "iDisplayLength", "_iDisplayLength" ],
+				[ "bJQueryUI", "bJUI" ]
+			] );
+			_fnMap( oSettings.oScroll, oInit, [
+				[ "sScrollX", "sX" ],
+				[ "sScrollXInner", "sXInner" ],
+				[ "sScrollY", "sY" ],
+				[ "bScrollCollapse", "bCollapse" ]
+			] );
+			_fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" );
+			
+			/* Callback functions which are array driven */
+			_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );
+			_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );
+			_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );
+			_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );
+			_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );
+			_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );
+			_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );
+			_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );
+			_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );
+			_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );
+			_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );
+			
+			var oClasses = oSettings.oClasses;
+			
+			// @todo Remove in 1.11
+			if ( oInit.bJQueryUI )
+			{
+				/* Use the JUI classes object for display. You could clone the oStdClasses object if
+				 * you want to have multiple tables with multiple independent classes
+				 */
+				$.extend( oClasses, DataTable.ext.oJUIClasses, oInit.oClasses );
+			
+				if ( oInit.sDom === defaults.sDom && defaults.sDom === "lfrtip" )
+				{
+					/* Set the DOM to use a layout suitable for jQuery UI's theming */
+					oSettings.sDom = '<"H"lfr>t<"F"ip>';
+				}
+			
+				if ( ! oSettings.renderer ) {
+					oSettings.renderer = 'jqueryui';
+				}
+				else if ( $.isPlainObject( oSettings.renderer ) && ! oSettings.renderer.header ) {
+					oSettings.renderer.header = 'jqueryui';
+				}
+			}
+			else
+			{
+				$.extend( oClasses, DataTable.ext.classes, oInit.oClasses );
+			}
+			$(this).addClass( oClasses.sTable );
+			
+			/* Calculate the scroll bar width and cache it for use later on */
+			if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" )
+			{
+				oSettings.oScroll.iBarWidth = _fnScrollBarWidth();
+			}
+			if ( oSettings.oScroll.sX === true ) { // Easy initialisation of x-scrolling
+				oSettings.oScroll.sX = '100%';
+			}
+			
+			if ( oSettings.iInitDisplayStart === undefined )
+			{
+				/* Display start point, taking into account the save saving */
+				oSettings.iInitDisplayStart = oInit.iDisplayStart;
+				oSettings._iDisplayStart = oInit.iDisplayStart;
+			}
+			
+			if ( oInit.iDeferLoading !== null )
+			{
+				oSettings.bDeferLoading = true;
+				var tmp = $.isArray( oInit.iDeferLoading );
+				oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;
+				oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;
+			}
+			
+			/* Language definitions */
+			if ( oInit.oLanguage.sUrl !== "" )
+			{
+				/* Get the language definitions from a file - because this Ajax call makes the language
+				 * get async to the remainder of this function we use bInitHandedOff to indicate that
+				 * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor
+				 */
+				oSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;
+				$.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {
+					_fnLanguageCompat( json );
+					_fnCamelToHungarian( defaults.oLanguage, json );
+					$.extend( true, oSettings.oLanguage, oInit.oLanguage, json );
+					_fnInitialise( oSettings );
+				} );
+				bInitHandedOff = true;
+			}
+			else
+			{
+				$.extend( true, oSettings.oLanguage, oInit.oLanguage );
+			}
+			
+			
+			/*
+			 * Stripes
+			 */
+			if ( oInit.asStripeClasses === null )
+			{
+				oSettings.asStripeClasses =[
+					oClasses.sStripeOdd,
+					oClasses.sStripeEven
+				];
+			}
+			
+			/* Remove row stripe classes if they are already on the table row */
+			var stripeClasses = oSettings.asStripeClasses;
+			var rowOne = $('tbody tr:eq(0)', this);
+			if ( $.inArray( true, $.map( stripeClasses, function(el, i) {
+				return rowOne.hasClass(el);
+			} ) ) !== -1 ) {
+				$('tbody tr', this).removeClass( stripeClasses.join(' ') );
+				oSettings.asDestroyStripes = stripeClasses.slice();
+			}
+			
+			/*
+			 * Columns
+			 * See if we should load columns automatically or use defined ones
+			 */
+			var anThs = [];
+			var aoColumnsInit;
+			var nThead = this.getElementsByTagName('thead');
+			if ( nThead.length !== 0 )
+			{
+				_fnDetectHeader( oSettings.aoHeader, nThead[0] );
+				anThs = _fnGetUniqueThs( oSettings );
+			}
+			
+			/* If not given a column array, generate one with nulls */
+			if ( oInit.aoColumns === null )
+			{
+				aoColumnsInit = [];
+				for ( i=0, iLen=anThs.length ; i<iLen ; i++ )
+				{
+					aoColumnsInit.push( null );
+				}
+			}
+			else
+			{
+				aoColumnsInit = oInit.aoColumns;
+			}
+			
+			/* Add the columns */
+			for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )
+			{
+				_fnAddColumn( oSettings, anThs ? anThs[i] : null );
+			}
+			
+			/* Apply the column definitions */
+			_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {
+				_fnColumnOptions( oSettings, iCol, oDef );
+			} );
+			
+			/* HTML5 attribute detection - build an mData object automatically if the
+			 * attributes are found
+			 */
+			if ( rowOne.length ) {
+				var a = function ( cell, name ) {
+					return cell.getAttribute( 'data-'+name ) ? name : null;
+				};
+			
+				$.each( _fnGetRowElements( oSettings, rowOne[0] ).cells, function (i, cell) {
+					var col = oSettings.aoColumns[i];
+			
+					if ( col.mData === i ) {
+						var sort = a( cell, 'sort' ) || a( cell, 'order' );
+						var filter = a( cell, 'filter' ) || a( cell, 'search' );
+			
+						if ( sort !== null || filter !== null ) {
+							col.mData = {
+								_:      i+'.display',
+								sort:   sort !== null   ? i+'.@data-'+sort   : undefined,
+								type:   sort !== null   ? i+'.@data-'+sort   : undefined,
+								filter: filter !== null ? i+'.@data-'+filter : undefined
+							};
+			
+							_fnColumnOptions( oSettings, i );
+						}
+					}
+				} );
+			}
+			
+			var features = oSettings.oFeatures;
+			
+			/* Must be done after everything which can be overridden by the state saving! */
+			if ( oInit.bStateSave )
+			{
+				features.bStateSave = true;
+				_fnLoadState( oSettings, oInit );
+				_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );
+			}
+			
+			
+			/*
+			 * Sorting
+			 * @todo For modularisation (1.11) this needs to do into a sort start up handler
+			 */
+			
+			// If aaSorting is not defined, then we use the first indicator in asSorting
+			// in case that has been altered, so the default sort reflects that option
+			if ( oInit.aaSorting === undefined )
+			{
+				var sorting = oSettings.aaSorting;
+				for ( i=0, iLen=sorting.length ; i<iLen ; i++ )
+				{
+					sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];
+				}
+			}
+			
+			/* Do a first pass on the sorting classes (allows any size changes to be taken into
+			 * account, and also will apply sorting disabled classes if disabled
+			 */
+			_fnSortingClasses( oSettings );
+			
+			if ( features.bSort )
+			{
+				_fnCallbackReg( oSettings, 'aoDrawCallback', function () {
+					if ( oSettings.bSorted ) {
+						var aSort = _fnSortFlatten( oSettings );
+						var sortedColumns = {};
+			
+						$.each( aSort, function (i, val) {
+							sortedColumns[ val.src ] = val.dir;
+						} );
+			
+						_fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] );
+						_fnSortAria( oSettings );
+					}
+				} );
+			}
+			
+			_fnCallbackReg( oSettings, 'aoDrawCallback', function () {
+				if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {
+					_fnSortingClasses( oSettings );
+				}
+			}, 'sc' );
+			
+			
+			/*
+			 * Final init
+			 * Cache the header, body and footer as required, creating them if needed
+			 */
+			
+			/* Browser support detection */
+			_fnBrowserDetect( oSettings );
+			
+			// Work around for Webkit bug 83867 - store the caption-side before removing from doc
+			var captions = $(this).children('caption').each( function () {
+				this._captionSide = $(this).css('caption-side');
+			} );
+			
+			var thead = $(this).children('thead');
+			if ( thead.length === 0 )
+			{
+				thead = $('<thead/>').appendTo(this);
+			}
+			oSettings.nTHead = thead[0];
+			
+			var tbody = $(this).children('tbody');
+			if ( tbody.length === 0 )
+			{
+				tbody = $('<tbody/>').appendTo(this);
+			}
+			oSettings.nTBody = tbody[0];
+			
+			var tfoot = $(this).children('tfoot');
+			if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") )
+			{
+				// If we are a scrolling table, and no footer has been given, then we need to create
+				// a tfoot element for the caption element to be appended to
+				tfoot = $('<tfoot/>').appendTo(this);
+			}
+			
+			if ( tfoot.length === 0 || tfoot.children().length === 0 ) {
+				$(this).addClass( oClasses.sNoFooter );
+			}
+			else if ( tfoot.length > 0 ) {
+				oSettings.nTFoot = tfoot[0];
+				_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );
+			}
+			
+			/* Check if there is data passing into the constructor */
+			if ( oInit.aaData )
+			{
+				for ( i=0 ; i<oInit.aaData.length ; i++ )
+				{
+					_fnAddData( oSettings, oInit.aaData[ i ] );
+				}
+			}
+			else if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' )
+			{
+				/* Grab the data from the page - only do this when deferred loading or no Ajax
+				 * source since there is no point in reading the DOM data if we are then going
+				 * to replace it with Ajax data
+				 */
+				_fnAddTr( oSettings, $(oSettings.nTBody).children('tr') );
+			}
+			
+			/* Copy the data index array */
+			oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+			
+			/* Initialisation complete - table can be drawn */
+			oSettings.bInitialised = true;
+			
+			/* Check if we need to initialise the table (it might not have been handed off to the
+			 * language processor)
+			 */
+			if ( bInitHandedOff === false )
+			{
+				_fnInitialise( oSettings );
+			}
+		} );
+		_that = null;
+		return this;
+	};
+
+	
+	
+	/**
+	 * Computed structure of the DataTables API, defined by the options passed to
+	 * `DataTable.Api.register()` when building the API.
+	 *
+	 * The structure is built in order to speed creation and extension of the Api
+	 * objects since the extensions are effectively pre-parsed.
+	 *
+	 * The array is an array of objects with the following structure, where this
+	 * base array represents the Api prototype base:
+	 *
+	 *     [
+	 *       {
+	 *         name:      'data'                -- string   - Property name
+	 *         val:       function () {},       -- function - Api method (or undefined if just an object
+	 *         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result
+	 *         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property
+	 *       },
+	 *       {
+	 *         name:     'row'
+	 *         val:       {},
+	 *         methodExt: [ ... ],
+	 *         propExt:   [
+	 *           {
+	 *             name:      'data'
+	 *             val:       function () {},
+	 *             methodExt: [ ... ],
+	 *             propExt:   [ ... ]
+	 *           },
+	 *           ...
+	 *         ]
+	 *       }
+	 *     ]
+	 *
+	 * @type {Array}
+	 * @ignore
+	 */
+	var __apiStruct = [];
+	
+	
+	/**
+	 * `Array.prototype` reference.
+	 *
+	 * @type object
+	 * @ignore
+	 */
+	var __arrayProto = Array.prototype;
+	
+	
+	/**
+	 * Abstraction for `context` parameter of the `Api` constructor to allow it to
+	 * take several different forms for ease of use.
+	 *
+	 * Each of the input parameter types will be converted to a DataTables settings
+	 * object where possible.
+	 *
+	 * @param  {string|node|jQuery|object} mixed DataTable identifier. Can be one
+	 *   of:
+	 *
+	 *   * `string` - jQuery selector. Any DataTables' matching the given selector
+	 *     with be found and used.
+	 *   * `node` - `TABLE` node which has already been formed into a DataTable.
+	 *   * `jQuery` - A jQuery object of `TABLE` nodes.
+	 *   * `object` - DataTables settings object
+	 *   * `DataTables.Api` - API instance
+	 * @return {array|null} Matching DataTables settings objects. `null` or
+	 *   `undefined` is returned if no matching DataTable is found.
+	 * @ignore
+	 */
+	var _toSettings = function ( mixed )
+	{
+		var idx, jq;
+		var settings = DataTable.settings;
+		var tables = $.map( settings, function (el, i) {
+			return el.nTable;
+		} );
+	
+		if ( ! mixed ) {
+			return [];
+		}
+		else if ( mixed.nTable && mixed.oApi ) {
+			// DataTables settings object
+			return [ mixed ];
+		}
+		else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {
+			// Table node
+			idx = $.inArray( mixed, tables );
+			return idx !== -1 ? [ settings[idx] ] : null;
+		}
+		else if ( mixed && typeof mixed.settings === 'function' ) {
+			return mixed.settings().toArray();
+		}
+		else if ( typeof mixed === 'string' ) {
+			// jQuery selector
+			jq = $(mixed);
+		}
+		else if ( mixed instanceof $ ) {
+			// jQuery object (also DataTables instance)
+			jq = mixed;
+		}
+	
+		if ( jq ) {
+			return jq.map( function(i) {
+				idx = $.inArray( this, tables );
+				return idx !== -1 ? settings[idx] : null;
+			} ).toArray();
+		}
+	};
+	
+	
+	/**
+	 * DataTables API class - used to control and interface with  one or more
+	 * DataTables enhanced tables.
+	 *
+	 * The API class is heavily based on jQuery, presenting a chainable interface
+	 * that you can use to interact with tables. Each instance of the API class has
+	 * a "context" - i.e. the tables that it will operate on. This could be a single
+	 * table, all tables on a page or a sub-set thereof.
+	 *
+	 * Additionally the API is designed to allow you to easily work with the data in
+	 * the tables, retrieving and manipulating it as required. This is done by
+	 * presenting the API class as an array like interface. The contents of the
+	 * array depend upon the actions requested by each method (for example
+	 * `rows().nodes()` will return an array of nodes, while `rows().data()` will
+	 * return an array of objects or arrays depending upon your table's
+	 * configuration). The API object has a number of array like methods (`push`,
+	 * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,
+	 * `unique` etc) to assist your working with the data held in a table.
+	 *
+	 * Most methods (those which return an Api instance) are chainable, which means
+	 * the return from a method call also has all of the methods available that the
+	 * top level object had. For example, these two calls are equivalent:
+	 *
+	 *     // Not chained
+	 *     api.row.add( {...} );
+	 *     api.draw();
+	 *
+	 *     // Chained
+	 *     api.row.add( {...} ).draw();
+	 *
+	 * @class DataTable.Api
+	 * @param {array|object|string|jQuery} context DataTable identifier. This is
+	 *   used to define which DataTables enhanced tables this API will operate on.
+	 *   Can be one of:
+	 *
+	 *   * `string` - jQuery selector. Any DataTables' matching the given selector
+	 *     with be found and used.
+	 *   * `node` - `TABLE` node which has already been formed into a DataTable.
+	 *   * `jQuery` - A jQuery object of `TABLE` nodes.
+	 *   * `object` - DataTables settings object
+	 * @param {array} [data] Data to initialise the Api instance with.
+	 *
+	 * @example
+	 *   // Direct initialisation during DataTables construction
+	 *   var api = $('#example').DataTable();
+	 *
+	 * @example
+	 *   // Initialisation using a DataTables jQuery object
+	 *   var api = $('#example').dataTable().api();
+	 *
+	 * @example
+	 *   // Initialisation as a constructor
+	 *   var api = new $.fn.DataTable.Api( 'table.dataTable' );
+	 */
+	_Api = function ( context, data )
+	{
+		if ( ! this instanceof _Api ) {
+			throw 'DT API must be constructed as a new object';
+			// or should it do the 'new' for the caller?
+			// return new _Api.apply( this, arguments );
+		}
+	
+		var settings = [];
+		var ctxSettings = function ( o ) {
+			var a = _toSettings( o );
+			if ( a ) {
+				settings.push.apply( settings, a );
+			}
+		};
+	
+		if ( $.isArray( context ) ) {
+			for ( var i=0, ien=context.length ; i<ien ; i++ ) {
+				ctxSettings( context[i] );
+			}
+		}
+		else {
+			ctxSettings( context );
+		}
+	
+		// Remove duplicates
+		this.context = _unique( settings );
+	
+		// Initial data
+		if ( data ) {
+			this.push.apply( this, data.toArray ? data.toArray() : data );
+		}
+	
+		// selector
+		this.selector = {
+			rows: null,
+			cols: null,
+			opts: null
+		};
+	
+		_Api.extend( this, this, __apiStruct );
+	};
+	
+	DataTable.Api = _Api;
+	
+	_Api.prototype = /** @lends DataTables.Api */{
+		/**
+		 * Return a new Api instance, comprised of the data held in the current
+		 * instance, join with the other array(s) and/or value(s).
+		 *
+		 * An alias for `Array.prototype.concat`.
+		 *
+		 * @type method
+		 * @param {*} value1 Arrays and/or values to concatenate.
+		 * @param {*} [...] Additional arrays and/or values to concatenate.
+		 * @returns {DataTables.Api} New API instance, comprising of the combined
+		 *   array.
+		 */
+		concat:  __arrayProto.concat,
+	
+	
+		context: [], // array of table settings objects
+	
+	
+		each: function ( fn )
+		{
+			for ( var i=0, ien=this.length ; i<ien; i++ ) {
+				fn.call( this, this[i], i, this );
+			}
+	
+			return this;
+		},
+	
+	
+		eq: function ( idx )
+		{
+			var ctx = this.context;
+	
+			return ctx.length > idx ?
+				new _Api( ctx[idx], this[idx] ) :
+				null;
+		},
+	
+	
+		filter: function ( fn )
+		{
+			var a = [];
+	
+			if ( __arrayProto.filter ) {
+				a = __arrayProto.filter.call( this, fn, this );
+			}
+			else {
+				// Compatibility for browsers without EMCA-252-5 (JS 1.6)
+				for ( var i=0, ien=this.length ; i<ien ; i++ ) {
+					if ( fn.call( this, this[i], i, this ) ) {
+						a.push( this[i] );
+					}
+				}
+			}
+	
+			return new _Api( this.context, a );
+		},
+	
+	
+		flatten: function ()
+		{
+			var a = [];
+			return new _Api( this.context, a.concat.apply( a, this.toArray() ) );
+		},
+	
+	
+		join:    __arrayProto.join,
+	
+	
+		indexOf: __arrayProto.indexOf || function (obj, start)
+		{
+			for ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) {
+				if ( this[i] === obj ) {
+					return i;
+				}
+			}
+			return -1;
+		},
+	
+		// Internal only at the moment - relax?
+		iterator: function ( flatten, type, fn ) {
+			var
+				a = [], ret,
+				i, ien, j, jen,
+				context = this.context,
+				rows, items, item,
+				selector = this.selector;
+	
+			// Argument shifting
+			if ( typeof flatten === 'string' ) {
+				fn = type;
+				type = flatten;
+				flatten = false;
+			}
+	
+			for ( i=0, ien=context.length ; i<ien ; i++ ) {
+				if ( type === 'table' ) {
+					ret = fn( context[i], i );
+	
+					if ( ret !== undefined ) {
+						a.push( ret );
+					}
+				}
+				else if ( type === 'columns' || type === 'rows' ) {
+					// this has same length as context - one entry for each table
+					ret = fn( context[i], this[i], i );
+	
+					if ( ret !== undefined ) {
+						a.push( ret );
+					}
+				}
+				else if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {
+					// columns and rows share the same structure.
+					// 'this' is an array of column indexes for each context
+					items = this[i];
+	
+					if ( type === 'column-rows' ) {
+						rows = _selector_row_indexes( context[i], selector.opts );
+					}
+	
+					for ( j=0, jen=items.length ; j<jen ; j++ ) {
+						item = items[j];
+	
+						if ( type === 'cell' ) {
+							ret = fn( context[i], item.row, item.column, i, j );
+						}
+						else {
+							ret = fn( context[i], item, i, j, rows );
+						}
+	
+						if ( ret !== undefined ) {
+							a.push( ret );
+						}
+					}
+				}
+			}
+	
+			if ( a.length ) {
+				var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );
+				var apiSelector = api.selector;
+				apiSelector.rows = selector.rows;
+				apiSelector.cols = selector.cols;
+				apiSelector.opts = selector.opts;
+				return api;
+			}
+			return this;
+		},
+	
+	
+		lastIndexOf: __arrayProto.lastIndexOf || function (obj, start)
+		{
+			// Bit cheeky...
+			return this.indexOf.apply( this.toArray.reverse(), arguments );
+		},
+	
+	
+		length:  0,
+	
+	
+		map: function ( fn )
+		{
+			var a = [];
+	
+			if ( __arrayProto.map ) {
+				a = __arrayProto.map.call( this, fn, this );
+			}
+			else {
+				// Compatibility for browsers without EMCA-252-5 (JS 1.6)
+				for ( var i=0, ien=this.length ; i<ien ; i++ ) {
+					a.push( fn.call( this, this[i], i ) );
+				}
+			}
+	
+			return new _Api( this.context, a );
+		},
+	
+	
+		pluck: function ( prop )
+		{
+			return this.map( function ( el ) {
+				return el[ prop ];
+			} );
+		},
+	
+		pop:     __arrayProto.pop,
+	
+	
+		push:    __arrayProto.push,
+	
+	
+		// Does not return an API instance
+		reduce: __arrayProto.reduce || function ( fn, init )
+		{
+			return _fnReduce( this, fn, init, 0, this.length, 1 );
+		},
+	
+	
+		reduceRight: __arrayProto.reduceRight || function ( fn, init )
+		{
+			return _fnReduce( this, fn, init, this.length-1, -1, -1 );
+		},
+	
+	
+		reverse: __arrayProto.reverse,
+	
+	
+		// Object with rows, columns and opts
+		selector: null,
+	
+	
+		shift:   __arrayProto.shift,
+	
+	
+		sort:    __arrayProto.sort, // ? name - order?
+	
+	
+		splice:  __arrayProto.splice,
+	
+	
+		toArray: function ()
+		{
+			return __arrayProto.slice.call( this );
+		},
+	
+	
+		to$: function ()
+		{
+			return $( this );
+		},
+	
+	
+		toJQuery: function ()
+		{
+			return $( this );
+		},
+	
+	
+		unique: function ()
+		{
+			return new _Api( this.context, _unique(this) );
+		},
+	
+	
+		unshift: __arrayProto.unshift
+	};
+	
+	
+	_Api.extend = function ( scope, obj, ext )
+	{
+		// Only extend API instances and static properties of the API
+		if ( ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {
+			return;
+		}
+	
+		var
+			i, ien,
+			j, jen,
+			struct, inner,
+			methodScoping = function ( scope, fn, struc ) {
+				return function () {
+					var ret = fn.apply( scope, arguments );
+	
+					// Method extension
+					_Api.extend( ret, ret, struc.methodExt );
+					return ret;
+				};
+			};
+	
+		for ( i=0, ien=ext.length ; i<ien ; i++ ) {
+			struct = ext[i];
+	
+			// Value
+			obj[ struct.name ] = typeof struct.val === 'function' ?
+				methodScoping( scope, struct.val, struct ) :
+				$.isPlainObject( struct.val ) ?
+					{} :
+					struct.val;
+	
+			obj[ struct.name ].__dt_wrapper = true;
+	
+			// Property extension
+			_Api.extend( scope, obj[ struct.name ], struct.propExt );
+		}
+	};
+	
+	
+	// @todo - Is there need for an augment function?
+	// _Api.augment = function ( inst, name )
+	// {
+	// 	// Find src object in the structure from the name
+	// 	var parts = name.split('.');
+	
+	// 	_Api.extend( inst, obj );
+	// };
+	
+	
+	//     [
+	//       {
+	//         name:      'data'                -- string   - Property name
+	//         val:       function () {},       -- function - Api method (or undefined if just an object
+	//         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result
+	//         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property
+	//       },
+	//       {
+	//         name:     'row'
+	//         val:       {},
+	//         methodExt: [ ... ],
+	//         propExt:   [
+	//           {
+	//             name:      'data'
+	//             val:       function () {},
+	//             methodExt: [ ... ],
+	//             propExt:   [ ... ]
+	//           },
+	//           ...
+	//         ]
+	//       }
+	//     ]
+	
+	_Api.register = _api_register = function ( name, val )
+	{
+		if ( $.isArray( name ) ) {
+			for ( var j=0, jen=name.length ; j<jen ; j++ ) {
+				_Api.register( name[j], val );
+			}
+			return;
+		}
+	
+		var
+			i, ien,
+			heir = name.split('.'),
+			struct = __apiStruct,
+			key, method;
+	
+		var find = function ( src, name ) {
+			for ( var i=0, ien=src.length ; i<ien ; i++ ) {
+				if ( src[i].name === name ) {
+					return src[i];
+				}
+			}
+			return null;
+		};
+	
+		for ( i=0, ien=heir.length ; i<ien ; i++ ) {
+			method = heir[i].indexOf('()') !== -1;
+			key = method ?
+				heir[i].replace('()', '') :
+				heir[i];
+	
+			var src = find( struct, key );
+			if ( ! src ) {
+				src = {
+					name:      key,
+					val:       {},
+					methodExt: [],
+					propExt:   []
+				};
+				struct.push( src );
+			}
+	
+			if ( i === ien-1 ) {
+				src.val = val;
+			}
+			else {
+				struct = method ?
+					src.methodExt :
+					src.propExt;
+			}
+		}
+	};
+	
+	
+	_Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {
+		_Api.register( pluralName, val );
+	
+		_Api.register( singularName, function () {
+			var ret = val.apply( this, arguments );
+	
+			if ( ret === this ) {
+				// Returned item is the API instance that was passed in, return it
+				return this;
+			}
+			else if ( ret instanceof _Api ) {
+				// New API instance returned, want the value from the first item
+				// in the returned array for the singular result.
+				return ret.length ?
+					$.isArray( ret[0] ) ?
+						new _Api( ret.context, ret[0] ) : // Array results are 'enhanced'
+						ret[0] :
+					undefined;
+			}
+	
+			// Non-API return - just fire it back
+			return ret;
+		} );
+	};
+	
+	
+	/**
+	 * Selector for HTML tables. Apply the given selector to the give array of
+	 * DataTables settings objects.
+	 *
+	 * @param {string|integer} [selector] jQuery selector string or integer
+	 * @param  {array} Array of DataTables settings objects to be filtered
+	 * @return {array}
+	 * @ignore
+	 */
+	var __table_selector = function ( selector, a )
+	{
+		// Integer is used to pick out a table by index
+		if ( typeof selector === 'number' ) {
+			return [ a[ selector ] ];
+		}
+	
+		// Perform a jQuery selector on the table nodes
+		var nodes = $.map( a, function (el, i) {
+			return el.nTable;
+		} );
+	
+		return $(nodes)
+			.filter( selector )
+			.map( function (i) {
+				// Need to translate back from the table node to the settings
+				var idx = $.inArray( this, nodes );
+				return a[ idx ];
+			} )
+			.toArray();
+	};
+	
+	
+	
+	/**
+	 * Context selector for the API's context (i.e. the tables the API instance
+	 * refers to.
+	 *
+	 * @name    DataTable.Api#tables
+	 * @param {string|integer} [selector] Selector to pick which tables the iterator
+	 *   should operate on. If not given, all tables in the current context are
+	 *   used. This can be given as a jQuery selector (for example `':gt(0)'`) to
+	 *   select multiple tables or as an integer to select a single table.
+	 * @returns {DataTable.Api} Returns a new API instance if a selector is given.
+	 */
+	_api_register( 'tables()', function ( selector ) {
+		// A new instance is created if there was a selector specified
+		return selector ?
+			new _Api( __table_selector( selector, this.context ) ) :
+			this;
+	} );
+	
+	
+	_api_register( 'table()', function ( selector ) {
+		var tables = this.tables( selector );
+		var ctx = tables.context;
+	
+		// Truncate to the first matched table
+		return ctx.length ?
+			new _Api( ctx[0] ) :
+			tables;
+	} );
+	
+	
+	_api_registerPlural( 'tables().nodes()', 'table().node()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTable;
+		} );
+	} );
+	
+	
+	_api_registerPlural( 'tables().body()', 'table().body()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTBody;
+		} );
+	} );
+	
+	
+	_api_registerPlural( 'tables().header()', 'table().header()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTHead;
+		} );
+	} );
+	
+	
+	_api_registerPlural( 'tables().footer()', 'table().footer()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTFoot;
+		} );
+	} );
+	
+	
+	_api_registerPlural( 'tables().containers()', 'table().container()' , function () {
+		return this.iterator( 'table', function ( ctx ) {
+			return ctx.nTableWrapper;
+		} );
+	} );
+	
+	
+	
+	/**
+	 * Redraw the tables in the current context.
+	 *
+	 * @param {boolean} [reset=true] Reset (default) or hold the current paging
+	 *   position. A full re-sort and re-filter is performed when this method is
+	 *   called, which is why the pagination reset is the default action.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'draw()', function ( resetPaging ) {
+		return this.iterator( 'table', function ( settings ) {
+			_fnReDraw( settings, resetPaging===false );
+		} );
+	} );
+	
+	
+	
+	/**
+	 * Get the current page index.
+	 *
+	 * @return {integer} Current page index (zero based)
+	 *//**
+	 * Set the current page.
+	 *
+	 * Note that if you attempt to show a page which does not exist, DataTables will
+	 * not throw an error, but rather reset the paging.
+	 *
+	 * @param {integer|string} action The paging action to take. This can be one of:
+	 *  * `integer` - The page index to jump to
+	 *  * `string` - An action to take:
+	 *    * `first` - Jump to first page.
+	 *    * `next` - Jump to the next page
+	 *    * `previous` - Jump to previous page
+	 *    * `last` - Jump to the last page.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'page()', function ( action ) {
+		if ( action === undefined ) {
+			return this.page.info().page; // not an expensive call
+		}
+	
+		// else, have an action to take on all tables
+		return this.iterator( 'table', function ( settings ) {
+			_fnPageChange( settings, action );
+		} );
+	} );
+	
+	
+	/**
+	 * Paging information for the first table in the current context.
+	 *
+	 * If you require paging information for another table, use the `table()` method
+	 * with a suitable selector.
+	 *
+	 * @return {object} Object with the following properties set:
+	 *  * `page` - Current page index (zero based - i.e. the first page is `0`)
+	 *  * `pages` - Total number of pages
+	 *  * `start` - Display index for the first record shown on the current page
+	 *  * `end` - Display index for the last record shown on the current page
+	 *  * `length` - Display length (number of records). Note that generally `start
+	 *    + length = end`, but this is not always true, for example if there are
+	 *    only 2 records to show on the final page, with a length of 10.
+	 *  * `recordsTotal` - Full data set length
+	 *  * `recordsDisplay` - Data set length once the current filtering criterion
+	 *    are applied.
+	 */
+	_api_register( 'page.info()', function ( action ) {
+		if ( this.context.length === 0 ) {
+			return undefined;
+		}
+	
+		var
+			settings   = this.context[0],
+			start      = settings._iDisplayStart,
+			len        = settings._iDisplayLength,
+			visRecords = settings.fnRecordsDisplay(),
+			all        = len === -1;
+	
+		return {
+			"page":           all ? 0 : Math.floor( start / len ),
+			"pages":          all ? 1 : Math.ceil( visRecords / len ),
+			"start":          start,
+			"end":            settings.fnDisplayEnd(),
+			"length":         len,
+			"recordsTotal":   settings.fnRecordsTotal(),
+			"recordsDisplay": visRecords
+		};
+	} );
+	
+	
+	/**
+	 * Get the current page length.
+	 *
+	 * @return {integer} Current page length. Note `-1` indicates that all records
+	 *   are to be shown.
+	 *//**
+	 * Set the current page length.
+	 *
+	 * @param {integer} Page length to set. Use `-1` to show all records.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'page.len()', function ( len ) {
+		// Note that we can't call this function 'length()' because `length`
+		// is a Javascript property of functions which defines how many arguments
+		// the function expects.
+		if ( len === undefined ) {
+			return this.context.length !== 0 ?
+				this.context[0]._iDisplayLength :
+				undefined;
+		}
+	
+		// else, set the page length
+		return this.iterator( 'table', function ( settings ) {
+			_fnLengthChange( settings, len );
+		} );
+	} );
+	
+	
+	
+	var __reload = function ( settings, holdPosition, callback ) {
+		if ( _fnDataSource( settings ) == 'ssp' ) {
+			_fnReDraw( settings, holdPosition );
+		}
+		else {
+			// Trigger xhr
+			_fnProcessingDisplay( settings, true );
+	
+			_fnBuildAjax( settings, [], function( json ) {
+				_fnClearTable( settings );
+	
+				var data = _fnAjaxDataSrc( settings, json );
+				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+					_fnAddData( settings, data[i] );
+				}
+	
+				_fnReDraw( settings, holdPosition );
+				_fnProcessingDisplay( settings, false );
+			} );
+		}
+	
+		// Use the draw event to trigger a callback, regardless of if it is an async
+		// or sync draw
+		if ( callback ) {
+			var api = new _Api( settings );
+	
+			api.one( 'draw', function () {
+				callback( api.ajax.json() );
+			} );
+		}
+	};
+	
+	
+	/**
+	 * Get the JSON response from the last Ajax request that DataTables made to the
+	 * server. Note that this returns the JSON from the first table in the current
+	 * context.
+	 *
+	 * @return {object} JSON received from the server.
+	 */
+	_api_register( 'ajax.json()', function () {
+		var ctx = this.context;
+	
+		if ( ctx.length > 0 ) {
+			return ctx[0].json;
+		}
+	
+		// else return undefined;
+	} );
+	
+	
+	/**
+	 * Get the data submitted in the last Ajax request
+	 */
+	_api_register( 'ajax.params()', function () {
+		var ctx = this.context;
+	
+		if ( ctx.length > 0 ) {
+			return ctx[0].oAjaxData;
+		}
+	
+		// else return undefined;
+	} );
+	
+	
+	/**
+	 * Reload tables from the Ajax data source. Note that this function will
+	 * automatically re-draw the table when the remote data has been loaded.
+	 *
+	 * @param {boolean} [reset=true] Reset (default) or hold the current paging
+	 *   position. A full re-sort and re-filter is performed when this method is
+	 *   called, which is why the pagination reset is the default action.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'ajax.reload()', function ( callback, resetPaging ) {
+		return this.iterator( 'table', function (settings) {
+			__reload( settings, resetPaging===false, callback );
+		} );
+	} );
+	
+	
+	/**
+	 * Get the current Ajax URL. Note that this returns the URL from the first
+	 * table in the current context.
+	 *
+	 * @return {string} Current Ajax source URL
+	 *//**
+	 * Set the Ajax URL. Note that this will set the URL for all tables in the
+	 * current context.
+	 *
+	 * @param {string} url URL to set.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'ajax.url()', function ( url ) {
+		var ctx = this.context;
+	
+		if ( url === undefined ) {
+			// get
+			if ( ctx.length === 0 ) {
+				return undefined;
+			}
+			ctx = ctx[0];
+	
+			return ctx.ajax ?
+				$.isPlainObject( ctx.ajax ) ?
+					ctx.ajax.url :
+					ctx.ajax :
+				ctx.sAjaxSource;
+		}
+	
+		// set
+		return this.iterator( 'table', function ( settings ) {
+			if ( $.isPlainObject( settings.ajax ) ) {
+				settings.ajax.url = url;
+			}
+			else {
+				settings.ajax = url;
+			}
+			// No need to consider sAjaxSource here since DataTables gives priority
+			// to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any
+			// value of `sAjaxSource` redundant.
+		} );
+	} );
+	
+	
+	/**
+	 * Load data from the newly set Ajax URL. Note that this method is only
+	 * available when `ajax.url()` is used to set a URL. Additionally, this method
+	 * has the same effect as calling `ajax.reload()` but is provided for
+	 * convenience when setting a new URL. Like `ajax.reload()` it will
+	 * automatically redraw the table once the remote data has been loaded.
+	 *
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {
+		// Same as a reload, but makes sense to present it for easy access after a
+		// url change
+		return this.iterator( 'table', function ( ctx ) {
+			__reload( ctx, resetPaging===false, callback );
+		} );
+	} );
+	
+	
+	
+	
+	var _selector_run = function ( selector, select )
+	{
+		var
+			out = [], res,
+			a, i, ien, j, jen;
+	
+		// Can't just check for isArray here, as an API or jQuery instance might be
+		// given with their array like look
+		if ( ! selector || typeof selector === 'string' || selector.length === undefined ) {
+			selector = [ selector ];
+		}
+	
+		for ( i=0, ien=selector.length ; i<ien ; i++ ) {
+			a = selector[i] && selector[i].split ?
+				selector[i].split(',') :
+				[ selector[i] ];
+	
+			for ( j=0, jen=a.length ; j<jen ; j++ ) {
+				res = select( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] );
+	
+				if ( res && res.length ) {
+					out.push.apply( out, res );
+				}
+			}
+		}
+	
+		return out;
+	};
+	
+	
+	var _selector_opts = function ( opts )
+	{
+		if ( ! opts ) {
+			opts = {};
+		}
+	
+		// Backwards compatibility for 1.9- which used the terminology filter rather
+		// than search
+		if ( opts.filter && ! opts.search ) {
+			opts.search = opts.filter;
+		}
+	
+		return {
+			search: opts.search || 'none',
+			order:  opts.order  || 'current',
+			page:   opts.page   || 'all'
+		};
+	};
+	
+	
+	var _selector_first = function ( inst )
+	{
+		// Reduce the API instance to the first item found
+		for ( var i=0, ien=inst.length ; i<ien ; i++ ) {
+			if ( inst[i].length > 0 ) {
+				// Assign the first element to the first item in the instance
+				// and truncate the instance and context
+				inst[0] = inst[i];
+				inst.length = 1;
+				inst.context = [ inst.context[i] ];
+	
+				return inst;
+			}
+		}
+	
+		// Not found - return an empty instance
+		inst.length = 0;
+		return inst;
+	};
+	
+	
+	var _selector_row_indexes = function ( settings, opts )
+	{
+		var
+			i, ien, tmp, a=[],
+			displayFiltered = settings.aiDisplay,
+			displayMaster = settings.aiDisplayMaster;
+	
+		var
+			search = opts.search,  // none, applied, removed
+			order  = opts.order,   // applied, current, index (original - compatibility with 1.9)
+			page   = opts.page;    // all, current
+	
+		if ( _fnDataSource( settings ) == 'ssp' ) {
+			// In server-side processing mode, most options are irrelevant since
+			// rows not shown don't exist and the index order is the applied order
+			// Removed is a special case - for consistency just return an empty
+			// array
+			return search === 'removed' ?
+				[] :
+				_range( 0, displayMaster.length );
+		}
+		else if ( page == 'current' ) {
+			// Current page implies that order=current and fitler=applied, since it is
+			// fairly senseless otherwise, regardless of what order and search actually
+			// are
+			for ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) {
+				a.push( displayFiltered[i] );
+			}
+		}
+		else if ( order == 'current' || order == 'applied' ) {
+			a = search == 'none' ?
+				displayMaster.slice() :                      // no search
+				search == 'applied' ?
+					displayFiltered.slice() :                // applied search
+					$.map( displayMaster, function (el, i) { // removed search
+						return $.inArray( el, displayFiltered ) === -1 ? el : null;
+					} );
+		}
+		else if ( order == 'index' || order == 'original' ) {
+			for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+				if ( search == 'none' ) {
+					a.push( i );
+				}
+				else { // applied | removed
+					tmp = $.inArray( i, displayFiltered );
+	
+					if ((tmp === -1 && search == 'removed') ||
+						(tmp >= 0   && search == 'applied') )
+					{
+						a.push( i );
+					}
+				}
+			}
+		}
+	
+		return a;
+	};
+	
+	
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Rows
+	 *
+	 * {}          - no selector - use all available rows
+	 * {integer}   - row aoData index
+	 * {node}      - TR node
+	 * {string}    - jQuery selector to apply to the TR elements
+	 * {array}     - jQuery array of nodes, or simply an array of TR nodes
+	 *
+	 */
+	
+	
+	var __row_selector = function ( settings, selector, opts )
+	{
+		return _selector_run( selector, function ( sel ) {
+			var selInt = _intVal( sel );
+	
+			// Short cut - selector is a number and no options provided (default is
+			// all records, so no need to check if the index is in there, since it
+			// must be - dev error if the index doesn't exist).
+			if ( selInt !== null && ! opts ) {
+				return [ selInt ];
+			}
+	
+			var rows = _selector_row_indexes( settings, opts );
+	
+			if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {
+				// Selector - integer
+				return [ selInt ];
+			}
+			else if ( ! sel ) {
+				// Selector - none
+				return rows;
+			}
+	
+			// Get nodes in the order from the `rows` array (can't use `pluck`) @todo - use pluck_order
+			var nodes = [];
+			for ( var i=0, ien=rows.length ; i<ien ; i++ ) {
+				nodes.push( settings.aoData[ rows[i] ].nTr );
+			}
+	
+			if ( sel.nodeName ) {
+				// Selector - node
+				if ( $.inArray( sel, nodes ) !== -1 ) {
+					return [ sel._DT_RowIndex ];// sel is a TR node that is in the table
+											// and DataTables adds a prop for fast lookup
+				}
+			}
+	
+			// Selector - jQuery selector string, array of nodes or jQuery object/
+			// As jQuery's .filter() allows jQuery objects to be passed in filter,
+			// it also allows arrays, so this will cope with all three options
+			return $(nodes)
+				.filter( sel )
+				.map( function () {
+					return this._DT_RowIndex;
+				} )
+				.toArray();
+		} );
+	};
+	
+	
+	/**
+	 *
+	 */
+	_api_register( 'rows()', function ( selector, opts ) {
+		// argument shifting
+		if ( selector === undefined ) {
+			selector = '';
+		}
+		else if ( $.isPlainObject( selector ) ) {
+			opts = selector;
+			selector = '';
+		}
+	
+		opts = _selector_opts( opts );
+	
+		var inst = this.iterator( 'table', function ( settings ) {
+			return __row_selector( settings, selector, opts );
+		} );
+	
+		// Want argument shifting here and in __row_selector?
+		inst.selector.rows = selector;
+		inst.selector.opts = opts;
+	
+		return inst;
+	} );
+	
+	
+	_api_register( 'rows().nodes()', function () {
+		return this.iterator( 'row', function ( settings, row ) {
+			return settings.aoData[ row ].nTr || undefined;
+		} );
+	} );
+	
+	_api_register( 'rows().data()', function () {
+		return this.iterator( true, 'rows', function ( settings, rows ) {
+			return _pluck_order( settings.aoData, rows, '_aData' );
+		} );
+	} );
+	
+	_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {
+		return this.iterator( 'row', function ( settings, row ) {
+			var r = settings.aoData[ row ];
+			return type === 'search' ? r._aFilterData : r._aSortData;
+		} );
+	} );
+	
+	_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {
+		return this.iterator( 'row', function ( settings, row ) {
+			_fnInvalidateRow( settings, row, src );
+		} );
+	} );
+	
+	_api_registerPlural( 'rows().indexes()', 'row().index()', function () {
+		return this.iterator( 'row', function ( settings, row ) {
+			return row;
+		} );
+	} );
+	
+	_api_registerPlural( 'rows().remove()', 'row().remove()', function () {
+		var that = this;
+	
+		return this.iterator( 'row', function ( settings, row, thatIdx ) {
+			var data = settings.aoData;
+	
+			data.splice( row, 1 );
+	
+			// Update the _DT_RowIndex parameter on all rows in the table
+			for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+				if ( data[i].nTr !== null ) {
+					data[i].nTr._DT_RowIndex = i;
+				}
+			}
+	
+			// Remove the target row from the search array
+			var displayIndex = $.inArray( row, settings.aiDisplay );
+	
+			// Delete from the display arrays
+			_fnDeleteIndex( settings.aiDisplayMaster, row );
+			_fnDeleteIndex( settings.aiDisplay, row );
+			_fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes
+	
+			// Check for an 'overflow' they case for displaying the table
+			_fnLengthOverflow( settings );
+		} );
+	} );
+	
+	
+	_api_register( 'rows.add()', function ( rows ) {
+		var newRows = this.iterator( 'table', function ( settings ) {
+				var row, i, ien;
+				var out = [];
+	
+				for ( i=0, ien=rows.length ; i<ien ; i++ ) {
+					row = rows[i];
+	
+					if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
+						out.push( _fnAddTr( settings, row )[0] );
+					}
+					else {
+						out.push( _fnAddData( settings, row ) );
+					}
+				}
+	
+				return out;
+			} );
+	
+		// Return an Api.rows() extended instance, so rows().nodes() etc can be used
+		var modRows = this.rows( -1 );
+		modRows.pop();
+		modRows.push.apply( modRows, newRows.toArray() );
+	
+		return modRows;
+	} );
+	
+	
+	
+	
+	
+	/**
+	 *
+	 */
+	_api_register( 'row()', function ( selector, opts ) {
+		return _selector_first( this.rows( selector, opts ) );
+	} );
+	
+	
+	_api_register( 'row().data()', function ( data ) {
+		var ctx = this.context;
+	
+		if ( data === undefined ) {
+			// Get
+			return ctx.length && this.length ?
+				ctx[0].aoData[ this[0] ]._aData :
+				undefined;
+		}
+	
+		// Set
+		ctx[0].aoData[ this[0] ]._aData = data;
+	
+		// Automatically invalidate
+		_fnInvalidateRow( ctx[0], this[0], 'data' );
+	
+		return this;
+	} );
+	
+	
+	_api_register( 'row().node()', function () {
+		var ctx = this.context;
+	
+		return ctx.length && this.length ?
+			ctx[0].aoData[ this[0] ].nTr || null :
+			null;
+	} );
+	
+	
+	_api_register( 'row.add()', function ( row ) {
+		// Allow a jQuery object to be passed in - only a single row is added from
+		// it though - the first element in the set
+		if ( row instanceof $ && row.length ) {
+			row = row[0];
+		}
+	
+		var rows = this.iterator( 'table', function ( settings ) {
+			if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
+				return _fnAddTr( settings, row )[0];
+			}
+			return _fnAddData( settings, row );
+		} );
+	
+		// Return an Api.rows() extended instance, with the newly added row selected
+		return this.row( rows[0] );
+	} );
+	
+	
+	
+	var __details_add = function ( ctx, row, data, klass )
+	{
+		// Convert to array of TR elements
+		var rows = [];
+		var addRow = function ( r, k ) {
+			// If we get a TR element, then just add it directly - up to the dev
+			// to add the correct number of columns etc
+			if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {
+				rows.push( r );
+			}
+			else {
+				// Otherwise create a row with a wrapper
+				var created = $('<tr><td/></tr>').addClass( k );
+				$('td', created)
+					.addClass( k )
+					.html( r )
+					[0].colSpan = _fnVisbleColumns( ctx );
+	
+				rows.push( created[0] );
+			}
+		};
+	
+		if ( $.isArray( data ) || data instanceof $ ) {
+			for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+				addRow( data[i], klass );
+			}
+		}
+		else {
+			addRow( data, klass );
+		}
+	
+		if ( row._details ) {
+			row._details.remove();
+		}
+	
+		row._details = $(rows);
+	
+		// If the children were already shown, that state should be retained
+		if ( row._detailsShow ) {
+			row._details.insertAfter( row.nTr );
+		}
+	};
+	
+	
+	var __details_remove = function ( api )
+	{
+		var ctx = api.context;
+	
+		if ( ctx.length && api.length ) {
+			var row = ctx[0].aoData[ api[0] ];
+	
+			if ( row._details ) {
+				row._details.remove();
+	
+				row._detailsShow = undefined;
+				row._details = undefined;
+			}
+		}
+	};
+	
+	
+	var __details_display = function ( api, show ) {
+		var ctx = api.context;
+	
+		if ( ctx.length && api.length ) {
+			var row = ctx[0].aoData[ api[0] ];
+	
+			if ( row._details ) {
+				row._detailsShow = show;
+	
+				if ( show ) {
+					row._details.insertAfter( row.nTr );
+				}
+				else {
+					row._details.detach();
+				}
+	
+				__details_events( ctx[0] );
+			}
+		}
+	};
+	
+	
+	var __details_events = function ( settings )
+	{
+		var api = new _Api( settings );
+		var namespace = '.dt.DT_details';
+		var drawEvent = 'draw'+namespace;
+		var colvisEvent = 'column-visibility'+namespace;
+		var destroyEvent = 'destroy'+namespace;
+		var data = settings.aoData;
+	
+		api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );
+	
+		if ( _pluck( data, '_details' ).length > 0 ) {
+			// On each draw, insert the required elements into the document
+			api.on( drawEvent, function ( e, ctx ) {
+				if ( settings !== ctx ) {
+					return;
+				}
+	
+				api.rows( {page:'current'} ).eq(0).each( function (idx) {
+					// Internal data grab
+					var row = data[ idx ];
+	
+					if ( row._detailsShow ) {
+						row._details.insertAfter( row.nTr );
+					}
+				} );
+			} );
+	
+			// Column visibility change - update the colspan
+			api.on( colvisEvent, function ( e, ctx, idx, vis ) {
+				if ( settings !== ctx ) {
+					return;
+				}
+	
+				// Update the colspan for the details rows (note, only if it already has
+				// a colspan)
+				var row, visible = _fnVisbleColumns( ctx );
+	
+				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+					row = data[i];
+	
+					if ( row._details ) {
+						row._details.children('td[colspan]').attr('colspan', visible );
+					}
+				}
+			} );
+	
+			// Table destroyed - nuke any child rows
+			api.on( destroyEvent, function ( e, ctx ) {
+				if ( settings !== ctx ) {
+					return;
+				}
+	
+				for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+					if ( data[i]._details ) {
+						__details_remove( data[i] );
+					}
+				}
+			} );
+		}
+	};
+	
+	// Strings for the method names to help minification
+	var _emp = '';
+	var _child_obj = _emp+'row().child';
+	var _child_mth = _child_obj+'()';
+	
+	// data can be:
+	//  tr
+	//  string
+	//  jQuery or array of any of the above
+	_api_register( _child_mth, function ( data, klass ) {
+		var ctx = this.context;
+	
+		if ( data === undefined ) {
+			// get
+			return ctx.length && this.length ?
+				ctx[0].aoData[ this[0] ]._details :
+				undefined;
+		}
+		else if ( data === true ) {
+			// show
+			this.child.show();
+		}
+		else if ( data === false ) {
+			// remove
+			__details_remove( this );
+		}
+		else if ( ctx.length && this.length ) {
+			// set
+			__details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );
+		}
+	
+		return this;
+	} );
+	
+	
+	_api_register( [
+		_child_obj+'.show()',
+		_child_mth+'.show()' // only when `child()` was called with parameters (without
+	], function ( show ) {   // it returns an object and this method is not executed)
+		__details_display( this, true );
+		return this;
+	} );
+	
+	
+	_api_register( [
+		_child_obj+'.hide()',
+		_child_mth+'.hide()' // only when `child()` was called with parameters (without
+	], function () {         // it returns an object and this method is not executed)
+		__details_display( this, false );
+		return this;
+	} );
+	
+	
+	_api_register( [
+		_child_obj+'.remove()',
+		_child_mth+'.remove()' // only when `child()` was called with parameters (without
+	], function () {           // it returns an object and this method is not executed)
+		__details_remove( this );
+		return this;
+	} );
+	
+	
+	_api_register( _child_obj+'.isShown()', function () {
+		var ctx = this.context;
+	
+		if ( ctx.length && this.length ) {
+			// _detailsShown as false or undefined will fall through to return false
+			return ctx[0].aoData[ this[0] ]._detailsShow || false;
+		}
+		return false;
+	} );
+	
+	
+	
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * Columns
+	 *
+	 * {integer}           - column index (>=0 count from left, <0 count from right)
+	 * "{integer}:visIdx"  - visible column index (i.e. translate to column index)  (>=0 count from left, <0 count from right)
+	 * "{integer}:visible" - alias for {integer}:visIdx  (>=0 count from left, <0 count from right)
+	 * "{string}:name"     - column name
+	 * "{string}"          - jQuery selector on column header nodes
+	 *
+	 */
+	
+	// can be an array of these items, comma separated list, or an array of comma
+	// separated lists
+	
+	var __re_column_selector = /^(.*):(name|visIdx|visible)$/;
+	
+	var __column_selector = function ( settings, selector, opts )
+	{
+		var
+			columns = settings.aoColumns,
+			names = _pluck( columns, 'sName' ),
+			nodes = _pluck( columns, 'nTh' );
+	
+		return _selector_run( selector, function ( s ) {
+			var selInt = _intVal( s );
+	
+			if ( s === '' ) {
+				// All columns
+				return _range( columns.length );
+			}
+			else if ( selInt !== null ) {
+				// Integer selector
+				return [ selInt >= 0 ?
+					selInt : // Count from left
+					columns.length + selInt // Count from right (+ because its a negative value)
+				];
+			}
+			else {
+				var match = typeof s === 'string' ?
+					s.match( __re_column_selector ) :
+					'';
+	
+				if ( match ) {
+					switch( match[2] ) {
+						case 'visIdx':
+						case 'visible':
+							var idx = parseInt( match[1], 10 );
+							// Visible index given, convert to column index
+							if ( idx < 0 ) {
+								// Counting from the right
+								var visColumns = $.map( columns, function (col,i) {
+									return col.bVisible ? i : null;
+								} );
+								return [ visColumns[ visColumns.length + idx ] ];
+							}
+							// Counting from the left
+							return [ _fnVisibleToColumnIndex( settings, idx ) ];
+	
+						case 'name':
+							// match by name. `names` is column index complete and in order
+							return $.map( names, function (name, i) {
+								return name === match[1] ? i : null;
+							} );
+					}
+				}
+				else {
+					// jQuery selector on the TH elements for the columns
+					return $( nodes )
+						.filter( s )
+						.map( function () {
+							return $.inArray( this, nodes ); // `nodes` is column index complete and in order
+						} )
+						.toArray();
+				}
+			}
+		} );
+	};
+	
+	
+	
+	
+	
+	var __setColumnVis = function ( settings, column, vis ) {
+		var
+			cols = settings.aoColumns,
+			col  = cols[ column ],
+			data = settings.aoData,
+			row, cells, i, ien, tr;
+	
+		// Get
+		if ( vis === undefined ) {
+			return col.bVisible;
+		}
+	
+		// Set
+		// No change
+		if ( col.bVisible === vis ) {
+			return;
+		}
+	
+		if ( vis ) {
+			// Insert column
+			// Need to decide if we should use appendChild or insertBefore
+			var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );
+	
+			for ( i=0, ien=data.length ; i<ien ; i++ ) {
+				tr = data[i].nTr;
+				cells = data[i].anCells;
+	
+				if ( tr ) {
+					// insertBefore can act like appendChild if 2nd arg is null
+					tr.insertBefore( cells[ column ], cells[ insertBefore ] || null );
+				}
+			}
+		}
+		else {
+			// Remove column
+			$( _pluck( settings.aoData, 'anCells', column ) ).detach();
+		}
+	
+		// Common actions
+		col.bVisible = vis;
+		_fnDrawHead( settings, settings.aoHeader );
+		_fnDrawHead( settings, settings.aoFooter );
+	
+		// Automatically adjust column sizing
+		_fnAdjustColumnSizing( settings );
+	
+		// Realign columns for scrolling
+		if ( settings.oScroll.sX || settings.oScroll.sY ) {
+			_fnScrollDraw( settings );
+		}
+	
+		_fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis] );
+	
+		_fnSaveState( settings );
+	};
+	
+	
+	/**
+	 *
+	 */
+	_api_register( 'columns()', function ( selector, opts ) {
+		// argument shifting
+		if ( selector === undefined ) {
+			selector = '';
+		}
+		else if ( $.isPlainObject( selector ) ) {
+			opts = selector;
+			selector = '';
+		}
+	
+		opts = _selector_opts( opts );
+	
+		var inst = this.iterator( 'table', function ( settings ) {
+			return __column_selector( settings, selector, opts );
+		} );
+	
+		// Want argument shifting here and in _row_selector?
+		inst.selector.cols = selector;
+		inst.selector.opts = opts;
+	
+		return inst;
+	} );
+	
+	
+	/**
+	 *
+	 */
+	_api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) {
+		return this.iterator( 'column', function ( settings, column ) {
+			return settings.aoColumns[column].nTh;
+		} );
+	} );
+	
+	
+	/**
+	 *
+	 */
+	_api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) {
+		return this.iterator( 'column', function ( settings, column ) {
+			return settings.aoColumns[column].nTf;
+		} );
+	} );
+	
+	
+	/**
+	 *
+	 */
+	_api_registerPlural( 'columns().data()', 'column().data()', function () {
+		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
+			var a = [];
+			for ( var row=0, ien=rows.length ; row<ien ; row++ ) {
+				a.push( _fnGetCellData( settings, rows[row], column, '' ) );
+			}
+			return a;
+		} );
+	} );
+	
+	
+	_api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {
+		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
+			return _pluck_order( settings.aoData, rows,
+				type === 'search' ? '_aFilterData' : '_aSortData', column
+			);
+		} );
+	} );
+	
+	
+	_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {
+		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
+			return _pluck_order( settings.aoData, rows, 'anCells', column ) ;
+		} );
+	} );
+	
+	
+	
+	_api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis ) {
+		return this.iterator( 'column', function ( settings, column ) {
+			return vis === undefined ?
+				settings.aoColumns[ column ].bVisible :
+				__setColumnVis( settings, column, vis );
+		} );
+	} );
+	
+	
+	
+	_api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {
+		return this.iterator( 'column', function ( settings, column ) {
+			return type === 'visible' ?
+				_fnColumnIndexToVisible( settings, column ) :
+				column;
+		} );
+	} );
+	
+	
+	// _api_register( 'columns().show()', function () {
+	// 	var selector = this.selector;
+	// 	return this.columns( selector.cols, selector.opts ).visible( true );
+	// } );
+	
+	
+	// _api_register( 'columns().hide()', function () {
+	// 	var selector = this.selector;
+	// 	return this.columns( selector.cols, selector.opts ).visible( false );
+	// } );
+	
+	
+	
+	_api_register( 'columns.adjust()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			_fnAdjustColumnSizing( settings );
+		} );
+	} );
+	
+	
+	// Convert from one column index type, to another type
+	_api_register( 'column.index()', function ( type, idx ) {
+		if ( this.context.length !== 0 ) {
+			var ctx = this.context[0];
+	
+			if ( type === 'fromVisible' || type === 'toData' ) {
+				return _fnVisibleToColumnIndex( ctx, idx );
+			}
+			else if ( type === 'fromData' || type === 'toVisible' ) {
+				return _fnColumnIndexToVisible( ctx, idx );
+			}
+		}
+	} );
+	
+	
+	_api_register( 'column()', function ( selector, opts ) {
+		return _selector_first( this.columns( selector, opts ) );
+	} );
+	
+	
+	
+	
+	var __cell_selector = function ( settings, selector, opts )
+	{
+		var data = settings.aoData;
+		var rows = _selector_row_indexes( settings, opts );
+		var cells = _pluck_order( data, rows, 'anCells' );
+		var allCells = $( [].concat.apply([], cells) );
+		var row;
+		var columns = settings.aoColumns.length;
+		var a, i, ien, j;
+	
+		return _selector_run( selector, function ( s ) {
+			if ( s === null || s === undefined ) {
+				// All cells
+				a = [];
+	
+				for ( i=0, ien=rows.length ; i<ien ; i++ ) {
+					row = rows[i];
+	
+					for ( j=0 ; j<columns ; j++ ) {
+						a.push( {
+							row: row,
+							column: j
+						} );
+					}
+				}
+	
+				return a;
+			}
+			else if ( $.isPlainObject( s ) ) {
+				return [s];
+			}
+	
+			// jQuery filtered cells
+			return allCells
+				.filter( s )
+				.map( function (i, el) {
+					row = el.parentNode._DT_RowIndex;
+	
+					return {
+						row: row,
+						column: $.inArray( el, data[ row ].anCells )
+					};
+				} )
+				.toArray();
+		} );
+	};
+	
+	
+	
+	
+	_api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {
+		// Argument shifting
+		if ( $.isPlainObject( rowSelector ) ) {
+			// Indexes
+			if ( typeof rowSelector.row !== undefined ) {
+				opts = columnSelector;
+				columnSelector = null;
+			}
+			else {
+				opts = rowSelector;
+				rowSelector = null;
+			}
+		}
+		if ( $.isPlainObject( columnSelector ) ) {
+			opts = columnSelector;
+			columnSelector = null;
+		}
+	
+		// Cell selector
+		if ( columnSelector === null || columnSelector === undefined ) {
+			return this.iterator( 'table', function ( settings ) {
+				return __cell_selector( settings, rowSelector, _selector_opts( opts ) );
+			} );
+		}
+	
+		// Row + column selector
+		var columns = this.columns( columnSelector, opts );
+		var rows = this.rows( rowSelector, opts );
+		var a, i, ien, j, jen;
+	
+		var cells = this.iterator( 'table', function ( settings, idx ) {
+			a = [];
+	
+			for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {
+				for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {
+					a.push( {
+						row:    rows[idx][i],
+						column: columns[idx][j]
+					} );
+				}
+			}
+	
+			return a;
+		} );
+	
+		$.extend( cells.selector, {
+			cols: columnSelector,
+			rows: rowSelector,
+			opts: opts
+		} );
+	
+		return cells;
+	} );
+	
+	
+	_api_registerPlural( 'cells().nodes()', 'cell().node()', function () {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return settings.aoData[ row ].anCells[ column ];
+		} );
+	} );
+	
+	
+	_api_register( 'cells().data()', function () {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return _fnGetCellData( settings, row, column );
+		} );
+	} );
+	
+	
+	_api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {
+		type = type === 'search' ? '_aFilterData' : '_aSortData';
+	
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return settings.aoData[ row ][ type ][ column ];
+		} );
+	} );
+	
+	
+	_api_registerPlural( 'cells().indexes()', 'cell().index()', function () {
+		return this.iterator( 'cell', function ( settings, row, column ) {
+			return {
+				row: row,
+				column: column,
+				columnVisible: _fnColumnIndexToVisible( settings, column )
+			};
+		} );
+	} );
+	
+	
+	_api_register( [
+		'cells().invalidate()',
+		'cell().invalidate()'
+	], function ( src ) {
+		var selector = this.selector;
+	
+		// Use the rows method of the instance to perform the invalidation, rather
+		// than doing it here. This avoids needing to handle duplicate rows from
+		// the cells.
+		this.rows( selector.rows, selector.opts ).invalidate( src );
+	
+		return this;
+	} );
+	
+	
+	
+	
+	_api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {
+		return _selector_first( this.cells( rowSelector, columnSelector, opts ) );
+	} );
+	
+	
+	
+	_api_register( 'cell().data()', function ( data ) {
+		var ctx = this.context;
+		var cell = this[0];
+	
+		if ( data === undefined ) {
+			// Get
+			return ctx.length && cell.length ?
+				_fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :
+				undefined;
+		}
+	
+		// Set
+		_fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );
+		_fnInvalidateRow( ctx[0], cell[0].row, 'data', cell[0].column );
+	
+		return this;
+	} );
+	
+	
+	
+	/**
+	 * Get current ordering (sorting) that has been applied to the table.
+	 *
+	 * @returns {array} 2D array containing the sorting information for the first
+	 *   table in the current context. Each element in the parent array represents
+	 *   a column being sorted upon (i.e. multi-sorting with two columns would have
+	 *   2 inner arrays). The inner arrays may have 2 or 3 elements. The first is
+	 *   the column index that the sorting condition applies to, the second is the
+	 *   direction of the sort (`desc` or `asc`) and, optionally, the third is the
+	 *   index of the sorting order from the `column.sorting` initialisation array.
+	 *//**
+	 * Set the ordering for the table.
+	 *
+	 * @param {integer} order Column index to sort upon.
+	 * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)
+	 * @returns {DataTables.Api} this
+	 *//**
+	 * Set the ordering for the table.
+	 *
+	 * @param {array} order 1D array of sorting information to be applied.
+	 * @param {array} [...] Optional additional sorting conditions
+	 * @returns {DataTables.Api} this
+	 *//**
+	 * Set the ordering for the table.
+	 *
+	 * @param {array} order 2D array of sorting information to be applied.
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'order()', function ( order, dir ) {
+		var ctx = this.context;
+	
+		if ( order === undefined ) {
+			// get
+			return ctx.length !== 0 ?
+				ctx[0].aaSorting :
+				undefined;
+		}
+	
+		// set
+		if ( typeof order === 'number' ) {
+			// Simple column / direction passed in
+			order = [ [ order, dir ] ];
+		}
+		else if ( ! $.isArray( order[0] ) ) {
+			// Arguments passed in (list of 1D arrays)
+			order = Array.prototype.slice.call( arguments );
+		}
+		// otherwise a 2D array was passed in
+	
+		return this.iterator( 'table', function ( settings ) {
+			settings.aaSorting = order.slice();
+		} );
+	} );
+	
+	
+	/**
+	 * Attach a sort listener to an element for a given column
+	 *
+	 * @param {node|jQuery|string} node Identifier for the element(s) to attach the
+	 *   listener to. This can take the form of a single DOM node, a jQuery
+	 *   collection of nodes or a jQuery selector which will identify the node(s).
+	 * @param {integer} column the column that a click on this node will sort on
+	 * @param {function} [callback] callback function when sort is run
+	 * @returns {DataTables.Api} this
+	 */
+	_api_register( 'order.listener()', function ( node, column, callback ) {
+		return this.iterator( 'table', function ( settings ) {
+			_fnSortAttachListener( settings, node, column, callback );
+		} );
+	} );
+	
+	
+	// Order by the selected column(s)
+	_api_register( [
+		'columns().order()',
+		'column().order()'
+	], function ( dir ) {
+		var that = this;
+	
+		return this.iterator( 'table', function ( settings, i ) {
+			var sort = [];
+	
+			$.each( that[i], function (j, col) {
+				sort.push( [ col, dir ] );
+			} );
+	
+			settings.aaSorting = sort;
+		} );
+	} );
+	
+	
+	
+	_api_register( 'search()', function ( input, regex, smart, caseInsen ) {
+		var ctx = this.context;
+	
+		if ( input === undefined ) {
+			// get
+			return ctx.length !== 0 ?
+				ctx[0].oPreviousSearch.sSearch :
+				undefined;
+		}
+	
+		// set
+		return this.iterator( 'table', function ( settings ) {
+			if ( ! settings.oFeatures.bFilter ) {
+				return;
+			}
+	
+			_fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, {
+				"sSearch": input+"",
+				"bRegex":  regex === null ? false : regex,
+				"bSmart":  smart === null ? true  : smart,
+				"bCaseInsensitive": caseInsen === null ? true : caseInsen
+			} ), 1 );
+		} );
+	} );
+	
+	
+	_api_register( [
+		'columns().search()',
+		'column().search()'
+	], function ( input, regex, smart, caseInsen ) {
+		return this.iterator( 'column', function ( settings, column ) {
+			var preSearch = settings.aoPreSearchCols;
+	
+			if ( input === undefined ) {
+				// get
+				return preSearch[ column ].sSearch;
+			}
+	
+			// set
+			if ( ! settings.oFeatures.bFilter ) {
+				return;
+			}
+	
+			$.extend( preSearch[ column ], {
+				"sSearch": input+"",
+				"bRegex":  regex === null ? false : regex,
+				"bSmart":  smart === null ? true  : smart,
+				"bCaseInsensitive": caseInsen === null ? true : caseInsen
+			} );
+	
+			_fnFilterComplete( settings, settings.oPreviousSearch, 1 );
+		} );
+	} );
+	
+	/*
+	 * State API methods
+	 */
+	
+	_api_register( 'state()', function () {
+		return this.context.length ?
+			this.context[0].oSavedState :
+			null;
+	} );
+	
+	
+	_api_register( 'state.clear()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			// Save an empty object
+			settings.fnStateSaveCallback.call( settings.oInstance, settings, {} );
+		} );
+	} );
+	
+	
+	_api_register( 'state.loaded()', function () {
+		return this.context.length ?
+			this.context[0].oLoadedState :
+			null;
+	} );
+	
+	
+	_api_register( 'state.save()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			_fnSaveState( settings );
+		} );
+	} );
+	
+	
+	
+	/**
+	 * Provide a common method for plug-ins to check the version of DataTables being
+	 * used, in order to ensure compatibility.
+	 *
+	 *  @param {string} version Version string to check for, in the format "X.Y.Z".
+	 *    Note that the formats "X" and "X.Y" are also acceptable.
+	 *  @returns {boolean} true if this version of DataTables is greater or equal to
+	 *    the required version, or false if this version of DataTales is not
+	 *    suitable
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    alert( $.fn.dataTable.versionCheck( '1.9.0' ) );
+	 */
+	DataTable.versionCheck = DataTable.fnVersionCheck = function( version )
+	{
+		var aThis = DataTable.version.split('.');
+		var aThat = version.split('.');
+		var iThis, iThat;
+	
+		for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {
+			iThis = parseInt( aThis[i], 10 ) || 0;
+			iThat = parseInt( aThat[i], 10 ) || 0;
+	
+			// Parts are the same, keep comparing
+			if (iThis === iThat) {
+				continue;
+			}
+	
+			// Parts are different, return immediately
+			return iThis > iThat;
+		}
+	
+		return true;
+	};
+	
+	
+	/**
+	 * Check if a `<table>` node is a DataTable table already or not.
+	 *
+	 *  @param {node|jquery|string} table Table node, jQuery object or jQuery
+	 *      selector for the table to test. Note that if more than more than one
+	 *      table is passed on, only the first will be checked
+	 *  @returns {boolean} true the table given is a DataTable, or false otherwise
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {
+	 *      $('#example').dataTable();
+	 *    }
+	 */
+	DataTable.isDataTable = DataTable.fnIsDataTable = function ( table )
+	{
+		var t = $(table).get(0);
+		var is = false;
+	
+		$.each( DataTable.settings, function (i, o) {
+			if ( o.nTable === t || o.nScrollHead === t || o.nScrollFoot === t ) {
+				is = true;
+			}
+		} );
+	
+		return is;
+	};
+	
+	
+	/**
+	 * Get all DataTable tables that have been initialised - optionally you can
+	 * select to get only currently visible tables.
+	 *
+	 *  @param {boolean} [visible=false] Flag to indicate if you want all (default)
+	 *    or visible tables only.
+	 *  @returns {array} Array of `table` nodes (not DataTable instances) which are
+	 *    DataTables
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    $.each( $.fn.dataTable.tables(true), function () {
+	 *      $(table).DataTable().columns.adjust();
+	 *    } );
+	 */
+	DataTable.tables = DataTable.fnTables = function ( visible )
+	{
+		return jQuery.map( DataTable.settings, function (o) {
+			if ( !visible || (visible && $(o.nTable).is(':visible')) ) {
+				return o.nTable;
+			}
+		} );
+	};
+	
+	
+	/**
+	 * Convert from camel case parameters to Hungarian notation. This is made public
+	 * for the extensions to provide the same ability as DataTables core to accept
+	 * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase
+	 * parameters.
+	 *
+	 *  @param {object} src The model object which holds all parameters that can be
+	 *    mapped.
+	 *  @param {object} user The object to convert from camel case to Hungarian.
+	 *  @param {boolean} force When set to `true`, properties which already have a
+	 *    Hungarian value in the `user` object will be overwritten. Otherwise they
+	 *    won't be.
+	 */
+	DataTable.camelToHungarian = _fnCamelToHungarian;
+	
+	
+	
+	/**
+	 *
+	 */
+	_api_register( '$()', function ( selector, opts ) {
+		var
+			rows   = this.rows( opts ).nodes(), // Get all rows
+			jqRows = $(rows);
+	
+		return $( [].concat(
+			jqRows.filter( selector ).toArray(),
+			jqRows.find( selector ).toArray()
+		) );
+	} );
+	
+	
+	// jQuery functions to operate on the tables
+	$.each( [ 'on', 'one', 'off' ], function (i, key) {
+		_api_register( key+'()', function ( /* event, handler */ ) {
+			var args = Array.prototype.slice.call(arguments);
+	
+			// Add the `dt` namespace automatically if it isn't already present
+			if ( ! args[0].match(/\.dt\b/) ) {
+				args[0] += '.dt';
+			}
+	
+			var inst = $( this.tables().nodes() );
+			inst[key].apply( inst, args );
+			return this;
+		} );
+	} );
+	
+	
+	_api_register( 'clear()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			_fnClearTable( settings );
+		} );
+	} );
+	
+	
+	_api_register( 'settings()', function () {
+		return new _Api( this.context, this.context );
+	} );
+	
+	
+	_api_register( 'data()', function () {
+		return this.iterator( 'table', function ( settings ) {
+			return _pluck( settings.aoData, '_aData' );
+		} ).flatten();
+	} );
+	
+	
+	_api_register( 'destroy()', function ( remove ) {
+		remove = remove || false;
+	
+		return this.iterator( 'table', function ( settings ) {
+			var orig      = settings.nTableWrapper.parentNode;
+			var classes   = settings.oClasses;
+			var table     = settings.nTable;
+			var tbody     = settings.nTBody;
+			var thead     = settings.nTHead;
+			var tfoot     = settings.nTFoot;
+			var jqTable   = $(table);
+			var jqTbody   = $(tbody);
+			var jqWrapper = $(settings.nTableWrapper);
+			var rows      = $.map( settings.aoData, function (r) { return r.nTr; } );
+			var i, ien;
+	
+			// Flag to note that the table is currently being destroyed - no action
+			// should be taken
+			settings.bDestroying = true;
+	
+			// Fire off the destroy callbacks for plug-ins etc
+			_fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] );
+	
+			// If not being removed from the document, make all columns visible
+			if ( ! remove ) {
+				new _Api( settings ).columns().visible( true );
+			}
+	
+			// Blitz all `DT` namespaced events (these are internal events, the
+			// lowercase, `dt` events are user subscribed and they are responsible
+			// for removing them
+			jqWrapper.unbind('.DT').find(':not(tbody *)').unbind('.DT');
+			$(window).unbind('.DT-'+settings.sInstance);
+	
+			// When scrolling we had to break the table up - restore it
+			if ( table != thead.parentNode ) {
+				jqTable.children('thead').detach();
+				jqTable.append( thead );
+			}
+	
+			if ( tfoot && table != tfoot.parentNode ) {
+				jqTable.children('tfoot').detach();
+				jqTable.append( tfoot );
+			}
+	
+			// Remove the DataTables generated nodes, events and classes
+			jqTable.detach();
+			jqWrapper.detach();
+	
+			settings.aaSorting = [];
+			settings.aaSortingFixed = [];
+			_fnSortingClasses( settings );
+	
+			$( rows ).removeClass( settings.asStripeClasses.join(' ') );
+	
+			$('th, td', thead).removeClass( classes.sSortable+' '+
+				classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone
+			);
+	
+			if ( settings.bJUI ) {
+				$('th span.'+classes.sSortIcon+ ', td span.'+classes.sSortIcon, thead).detach();
+				$('th, td', thead).each( function () {
+					var wrapper = $('div.'+classes.sSortJUIWrapper, this);
+					$(this).append( wrapper.contents() );
+					wrapper.detach();
+				} );
+			}
+	
+			if ( ! remove && orig ) {
+				// insertBefore acts like appendChild if !arg[1]
+				orig.insertBefore( table, settings.nTableReinsertBefore );
+			}
+	
+			// Add the TR elements back into the table in their original order
+			jqTbody.children().detach();
+			jqTbody.append( rows );
+	
+			// Restore the width of the original table - was read from the style property,
+			// so we can restore directly to that
+			jqTable
+				.css( 'width', settings.sDestroyWidth )
+				.removeClass( classes.sTable );
+	
+			// If the were originally stripe classes - then we add them back here.
+			// Note this is not fool proof (for example if not all rows had stripe
+			// classes - but it's a good effort without getting carried away
+			ien = settings.asDestroyStripes.length;
+	
+			if ( ien ) {
+				jqTbody.children().each( function (i) {
+					$(this).addClass( settings.asDestroyStripes[i % ien] );
+				} );
+			}
+	
+			/* Remove the settings object from the settings array */
+			var idx = $.inArray( settings, DataTable.settings );
+			if ( idx !== -1 ) {
+				DataTable.settings.splice( idx, 1 );
+			}
+		} );
+	} );
+	
+
+	/**
+	 * Version string for plug-ins to check compatibility. Allowed format is
+	 * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used
+	 * only for non-release builds. See http://semver.org/ for more information.
+	 *  @member
+	 *  @type string
+	 *  @default Version number
+	 */
+	DataTable.version = "1.10.1";
+
+	/**
+	 * Private data store, containing all of the settings objects that are
+	 * created for the tables on a given page.
+	 *
+	 * Note that the `DataTable.settings` object is aliased to
+	 * `jQuery.fn.dataTableExt` through which it may be accessed and
+	 * manipulated, or `jQuery.fn.dataTable.settings`.
+	 *  @member
+	 *  @type array
+	 *  @default []
+	 *  @private
+	 */
+	DataTable.settings = [];
+
+	/**
+	 * Object models container, for the various models that DataTables has
+	 * available to it. These models define the objects that are used to hold
+	 * the active state and configuration of the table.
+	 *  @namespace
+	 */
+	DataTable.models = {};
+	
+	
+	
+	/**
+	 * Template object for the way in which DataTables holds information about
+	 * search information for the global filter and individual column filters.
+	 *  @namespace
+	 */
+	DataTable.models.oSearch = {
+		/**
+		 * Flag to indicate if the filtering should be case insensitive or not
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bCaseInsensitive": true,
+	
+		/**
+		 * Applied search term
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sSearch": "",
+	
+		/**
+		 * Flag to indicate if the search term should be interpreted as a
+		 * regular expression (true) or not (false) and therefore and special
+		 * regex characters escaped.
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bRegex": false,
+	
+		/**
+		 * Flag to indicate if DataTables is to use its smart filtering or not.
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bSmart": true
+	};
+	
+	
+	
+	
+	/**
+	 * Template object for the way in which DataTables holds information about
+	 * each individual row. This is the object format used for the settings
+	 * aoData array.
+	 *  @namespace
+	 */
+	DataTable.models.oRow = {
+		/**
+		 * TR element for the row
+		 *  @type node
+		 *  @default null
+		 */
+		"nTr": null,
+	
+		/**
+		 * Array of TD elements for each row. This is null until the row has been
+		 * created.
+		 *  @type array nodes
+		 *  @default []
+		 */
+		"anCells": null,
+	
+		/**
+		 * Data object from the original data source for the row. This is either
+		 * an array if using the traditional form of DataTables, or an object if
+		 * using mData options. The exact type will depend on the passed in
+		 * data from the data source, or will be an array if using DOM a data
+		 * source.
+		 *  @type array|object
+		 *  @default []
+		 */
+		"_aData": [],
+	
+		/**
+		 * Sorting data cache - this array is ostensibly the same length as the
+		 * number of columns (although each index is generated only as it is
+		 * needed), and holds the data that is used for sorting each column in the
+		 * row. We do this cache generation at the start of the sort in order that
+		 * the formatting of the sort data need be done only once for each cell
+		 * per sort. This array should not be read from or written to by anything
+		 * other than the master sorting methods.
+		 *  @type array
+		 *  @default null
+		 *  @private
+		 */
+		"_aSortData": null,
+	
+		/**
+		 * Per cell filtering data cache. As per the sort data cache, used to
+		 * increase the performance of the filtering in DataTables
+		 *  @type array
+		 *  @default null
+		 *  @private
+		 */
+		"_aFilterData": null,
+	
+		/**
+		 * Filtering data cache. This is the same as the cell filtering cache, but
+		 * in this case a string rather than an array. This is easily computed with
+		 * a join on `_aFilterData`, but is provided as a cache so the join isn't
+		 * needed on every search (memory traded for performance)
+		 *  @type array
+		 *  @default null
+		 *  @private
+		 */
+		"_sFilterRow": null,
+	
+		/**
+		 * Cache of the class name that DataTables has applied to the row, so we
+		 * can quickly look at this variable rather than needing to do a DOM check
+		 * on className for the nTr property.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *  @private
+		 */
+		"_sRowStripe": "",
+	
+		/**
+		 * Denote if the original data source was from the DOM, or the data source
+		 * object. This is used for invalidating data, so DataTables can
+		 * automatically read data from the original source, unless uninstructed
+		 * otherwise.
+		 *  @type string
+		 *  @default null
+		 *  @private
+		 */
+		"src": null
+	};
+	
+	
+	/**
+	 * Template object for the column information object in DataTables. This object
+	 * is held in the settings aoColumns array and contains all the information that
+	 * DataTables needs about each individual column.
+	 *
+	 * Note that this object is related to {@link DataTable.defaults.column}
+	 * but this one is the internal data store for DataTables's cache of columns.
+	 * It should NOT be manipulated outside of DataTables. Any configuration should
+	 * be done through the initialisation options.
+	 *  @namespace
+	 */
+	DataTable.models.oColumn = {
+		/**
+		 * Column index. This could be worked out on-the-fly with $.inArray, but it
+		 * is faster to just hold it as a variable
+		 *  @type integer
+		 *  @default null
+		 */
+		"idx": null,
+	
+		/**
+		 * A list of the columns that sorting should occur on when this column
+		 * is sorted. That this property is an array allows multi-column sorting
+		 * to be defined for a column (for example first name / last name columns
+		 * would benefit from this). The values are integers pointing to the
+		 * columns to be sorted on (typically it will be a single integer pointing
+		 * at itself, but that doesn't need to be the case).
+		 *  @type array
+		 */
+		"aDataSort": null,
+	
+		/**
+		 * Define the sorting directions that are applied to the column, in sequence
+		 * as the column is repeatedly sorted upon - i.e. the first value is used
+		 * as the sorting direction when the column if first sorted (clicked on).
+		 * Sort it again (click again) and it will move on to the next index.
+		 * Repeat until loop.
+		 *  @type array
+		 */
+		"asSorting": null,
+	
+		/**
+		 * Flag to indicate if the column is searchable, and thus should be included
+		 * in the filtering or not.
+		 *  @type boolean
+		 */
+		"bSearchable": null,
+	
+		/**
+		 * Flag to indicate if the column is sortable or not.
+		 *  @type boolean
+		 */
+		"bSortable": null,
+	
+		/**
+		 * Flag to indicate if the column is currently visible in the table or not
+		 *  @type boolean
+		 */
+		"bVisible": null,
+	
+		/**
+		 * Store for manual type assignment using the `column.type` option. This
+		 * is held in store so we can manipulate the column's `sType` property.
+		 *  @type string
+		 *  @default null
+		 *  @private
+		 */
+		"_sManualType": null,
+	
+		/**
+		 * Flag to indicate if HTML5 data attributes should be used as the data
+		 * source for filtering or sorting. True is either are.
+		 *  @type boolean
+		 *  @default false
+		 *  @private
+		 */
+		"_bAttrSrc": false,
+	
+		/**
+		 * Developer definable function that is called whenever a cell is created (Ajax source,
+		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+		 * allowing you to modify the DOM element (add background colour for example) when the
+		 * element is available.
+		 *  @type function
+		 *  @param {element} nTd The TD node that has been created
+		 *  @param {*} sData The Data for the cell
+		 *  @param {array|object} oData The data for the whole row
+		 *  @param {int} iRow The row index for the aoData data store
+		 *  @default null
+		 */
+		"fnCreatedCell": null,
+	
+		/**
+		 * Function to get data from a cell in a column. You should <b>never</b>
+		 * access data directly through _aData internally in DataTables - always use
+		 * the method attached to this property. It allows mData to function as
+		 * required. This function is automatically assigned by the column
+		 * initialisation method
+		 *  @type function
+		 *  @param {array|object} oData The data array/object for the array
+		 *    (i.e. aoData[]._aData)
+		 *  @param {string} sSpecific The specific data type you want to get -
+		 *    'display', 'type' 'filter' 'sort'
+		 *  @returns {*} The data for the cell from the given row's data
+		 *  @default null
+		 */
+		"fnGetData": null,
+	
+		/**
+		 * Function to set data for a cell in the column. You should <b>never</b>
+		 * set the data directly to _aData internally in DataTables - always use
+		 * this method. It allows mData to function as required. This function
+		 * is automatically assigned by the column initialisation method
+		 *  @type function
+		 *  @param {array|object} oData The data array/object for the array
+		 *    (i.e. aoData[]._aData)
+		 *  @param {*} sValue Value to set
+		 *  @default null
+		 */
+		"fnSetData": null,
+	
+		/**
+		 * Property to read the value for the cells in the column from the data
+		 * source array / object. If null, then the default content is used, if a
+		 * function is given then the return from the function is used.
+		 *  @type function|int|string|null
+		 *  @default null
+		 */
+		"mData": null,
+	
+		/**
+		 * Partner property to mData which is used (only when defined) to get
+		 * the data - i.e. it is basically the same as mData, but without the
+		 * 'set' option, and also the data fed to it is the result from mData.
+		 * This is the rendering method to match the data method of mData.
+		 *  @type function|int|string|null
+		 *  @default null
+		 */
+		"mRender": null,
+	
+		/**
+		 * Unique header TH/TD element for this column - this is what the sorting
+		 * listener is attached to (if sorting is enabled.)
+		 *  @type node
+		 *  @default null
+		 */
+		"nTh": null,
+	
+		/**
+		 * Unique footer TH/TD element for this column (if there is one). Not used
+		 * in DataTables as such, but can be used for plug-ins to reference the
+		 * footer for each column.
+		 *  @type node
+		 *  @default null
+		 */
+		"nTf": null,
+	
+		/**
+		 * The class to apply to all TD elements in the table's TBODY for the column
+		 *  @type string
+		 *  @default null
+		 */
+		"sClass": null,
+	
+		/**
+		 * When DataTables calculates the column widths to assign to each column,
+		 * it finds the longest string in each column and then constructs a
+		 * temporary table and reads the widths from that. The problem with this
+		 * is that "mmm" is much wider then "iiii", but the latter is a longer
+		 * string - thus the calculation can go wrong (doing it properly and putting
+		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
+		 * a "work around" we provide this option. It will append its value to the
+		 * text that is found to be the longest string for the column - i.e. padding.
+		 *  @type string
+		 */
+		"sContentPadding": null,
+	
+		/**
+		 * Allows a default value to be given for a column's data, and will be used
+		 * whenever a null data source is encountered (this can be because mData
+		 * is set to null, or because the data source itself is null).
+		 *  @type string
+		 *  @default null
+		 */
+		"sDefaultContent": null,
+	
+		/**
+		 * Name for the column, allowing reference to the column by name as well as
+		 * by index (needs a lookup to work by name).
+		 *  @type string
+		 */
+		"sName": null,
+	
+		/**
+		 * Custom sorting data type - defines which of the available plug-ins in
+		 * afnSortData the custom sorting will use - if any is defined.
+		 *  @type string
+		 *  @default std
+		 */
+		"sSortDataType": 'std',
+	
+		/**
+		 * Class to be applied to the header element when sorting on this column
+		 *  @type string
+		 *  @default null
+		 */
+		"sSortingClass": null,
+	
+		/**
+		 * Class to be applied to the header element when sorting on this column -
+		 * when jQuery UI theming is used.
+		 *  @type string
+		 *  @default null
+		 */
+		"sSortingClassJUI": null,
+	
+		/**
+		 * Title of the column - what is seen in the TH element (nTh).
+		 *  @type string
+		 */
+		"sTitle": null,
+	
+		/**
+		 * Column sorting and filtering type
+		 *  @type string
+		 *  @default null
+		 */
+		"sType": null,
+	
+		/**
+		 * Width of the column
+		 *  @type string
+		 *  @default null
+		 */
+		"sWidth": null,
+	
+		/**
+		 * Width of the column when it was first "encountered"
+		 *  @type string
+		 *  @default null
+		 */
+		"sWidthOrig": null
+	};
+	
+	
+	/*
+	 * Developer note: The properties of the object below are given in Hungarian
+	 * notation, that was used as the interface for DataTables prior to v1.10, however
+	 * from v1.10 onwards the primary interface is camel case. In order to avoid
+	 * breaking backwards compatibility utterly with this change, the Hungarian
+	 * version is still, internally the primary interface, but is is not documented
+	 * - hence the @name tags in each doc comment. This allows a Javascript function
+	 * to create a map from Hungarian notation to camel case (going the other direction
+	 * would require each property to be listed, which would at around 3K to the size
+	 * of DataTables, while this method is about a 0.5K hit.
+	 *
+	 * Ultimately this does pave the way for Hungarian notation to be dropped
+	 * completely, but that is a massive amount of work and will break current
+	 * installs (therefore is on-hold until v2).
+	 */
+	
+	/**
+	 * Initialisation options that can be given to DataTables at initialisation
+	 * time.
+	 *  @namespace
+	 */
+	DataTable.defaults = {
+		/**
+		 * An array of data to use for the table, passed in at initialisation which
+		 * will be used in preference to any data which is already in the DOM. This is
+		 * particularly useful for constructing tables purely in Javascript, for
+		 * example with a custom Ajax call.
+		 *  @type array
+		 *  @default null
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.data
+		 *
+		 *  @example
+		 *    // Using a 2D array data source
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "data": [
+		 *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],
+		 *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],
+		 *        ],
+		 *        "columns": [
+		 *          { "title": "Engine" },
+		 *          { "title": "Browser" },
+		 *          { "title": "Platform" },
+		 *          { "title": "Version" },
+		 *          { "title": "Grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using an array of objects as a data source (`data`)
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "data": [
+		 *          {
+		 *            "engine":   "Trident",
+		 *            "browser":  "Internet Explorer 4.0",
+		 *            "platform": "Win 95+",
+		 *            "version":  4,
+		 *            "grade":    "X"
+		 *          },
+		 *          {
+		 *            "engine":   "Trident",
+		 *            "browser":  "Internet Explorer 5.0",
+		 *            "platform": "Win 95+",
+		 *            "version":  5,
+		 *            "grade":    "C"
+		 *          }
+		 *        ],
+		 *        "columns": [
+		 *          { "title": "Engine",   "data": "engine" },
+		 *          { "title": "Browser",  "data": "browser" },
+		 *          { "title": "Platform", "data": "platform" },
+		 *          { "title": "Version",  "data": "version" },
+		 *          { "title": "Grade",    "data": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"aaData": null,
+	
+	
+		/**
+		 * If ordering is enabled, then DataTables will perform a first pass sort on
+		 * initialisation. You can define which column(s) the sort is performed
+		 * upon, and the sorting direction, with this variable. The `sorting` array
+		 * should contain an array for each column to be sorted initially containing
+		 * the column's index and a direction string ('asc' or 'desc').
+		 *  @type array
+		 *  @default [[0,'asc']]
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.order
+		 *
+		 *  @example
+		 *    // Sort by 3rd column first, and then 4th column
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "order": [[2,'asc'], [3,'desc']]
+		 *      } );
+		 *    } );
+		 *
+		 *    // No initial sorting
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "order": []
+		 *      } );
+		 *    } );
+		 */
+		"aaSorting": [[0,'asc']],
+	
+	
+		/**
+		 * This parameter is basically identical to the `sorting` parameter, but
+		 * cannot be overridden by user interaction with the table. What this means
+		 * is that you could have a column (visible or hidden) which the sorting
+		 * will always be forced on first - any sorting after that (from the user)
+		 * will then be performed as required. This can be useful for grouping rows
+		 * together.
+		 *  @type array
+		 *  @default null
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.orderFixed
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "orderFixed": [[0,'asc']]
+		 *      } );
+		 *    } )
+		 */
+		"aaSortingFixed": [],
+	
+	
+		/**
+		 * DataTables can be instructed to load data to display in the table from a
+		 * Ajax source. This option defines how that Ajax call is made and where to.
+		 *
+		 * The `ajax` property has three different modes of operation, depending on
+		 * how it is defined. These are:
+		 *
+		 * * `string` - Set the URL from where the data should be loaded from.
+		 * * `object` - Define properties for `jQuery.ajax`.
+		 * * `function` - Custom data get function
+		 *
+		 * `string`
+		 * --------
+		 *
+		 * As a string, the `ajax` property simply defines the URL from which
+		 * DataTables will load data.
+		 *
+		 * `object`
+		 * --------
+		 *
+		 * As an object, the parameters in the object are passed to
+		 * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control
+		 * of the Ajax request. DataTables has a number of default parameters which
+		 * you can override using this option. Please refer to the jQuery
+		 * documentation for a full description of the options available, although
+		 * the following parameters provide additional options in DataTables or
+		 * require special consideration:
+		 *
+		 * * `data` - As with jQuery, `data` can be provided as an object, but it
+		 *   can also be used as a function to manipulate the data DataTables sends
+		 *   to the server. The function takes a single parameter, an object of
+		 *   parameters with the values that DataTables has readied for sending. An
+		 *   object may be returned which will be merged into the DataTables
+		 *   defaults, or you can add the items to the object that was passed in and
+		 *   not return anything from the function. This supersedes `fnServerParams`
+		 *   from DataTables 1.9-.
+		 *
+		 * * `dataSrc` - By default DataTables will look for the property `data` (or
+		 *   `aaData` for compatibility with DataTables 1.9-) when obtaining data
+		 *   from an Ajax source or for server-side processing - this parameter
+		 *   allows that property to be changed. You can use Javascript dotted
+		 *   object notation to get a data source for multiple levels of nesting, or
+		 *   it my be used as a function. As a function it takes a single parameter,
+		 *   the JSON returned from the server, which can be manipulated as
+		 *   required, with the returned value being that used by DataTables as the
+		 *   data source for the table. This supersedes `sAjaxDataProp` from
+		 *   DataTables 1.9-.
+		 *
+		 * * `success` - Should not be overridden it is used internally in
+		 *   DataTables. To manipulate / transform the data returned by the server
+		 *   use `ajax.dataSrc`, or use `ajax` as a function (see below).
+		 *
+		 * `function`
+		 * ----------
+		 *
+		 * As a function, making the Ajax call is left up to yourself allowing
+		 * complete control of the Ajax request. Indeed, if desired, a method other
+		 * than Ajax could be used to obtain the required data, such as Web storage
+		 * or an AIR database.
+		 *
+		 * The function is given four parameters and no return is required. The
+		 * parameters are:
+		 *
+		 * 1. _object_ - Data to send to the server
+		 * 2. _function_ - Callback function that must be executed when the required
+		 *    data has been obtained. That data should be passed into the callback
+		 *    as the only parameter
+		 * 3. _object_ - DataTables settings object for the table
+		 *
+		 * Note that this supersedes `fnServerData` from DataTables 1.9-.
+		 *
+		 *  @type string|object|function
+		 *  @default null
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.ajax
+		 *  @since 1.10.0
+		 *
+		 * @example
+		 *   // Get JSON data from a file via Ajax.
+		 *   // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).
+		 *   $('#example').dataTable( {
+		 *     "ajax": "data.json"
+		 *   } );
+		 *
+		 * @example
+		 *   // Get JSON data from a file via Ajax, using `dataSrc` to change
+		 *   // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "dataSrc": "tableData"
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Get JSON data from a file via Ajax, using `dataSrc` to read data
+		 *   // from a plain array rather than an array in an object
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "dataSrc": ""
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Manipulate the data returned from the server - add a link to data
+		 *   // (note this can, should, be done using `render` for the column - this
+		 *   // is just a simple example of how the data can be manipulated).
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "dataSrc": function ( json ) {
+		 *         for ( var i=0, ien=json.length ; i<ien ; i++ ) {
+		 *           json[i][0] = '<a href="/message/'+json[i][0]+'>View message</a>';
+		 *         }
+		 *         return json;
+		 *       }
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Add data to the request
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "data": function ( d ) {
+		 *         return {
+		 *           "extra_search": $('#extra').val()
+		 *         };
+		 *       }
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Send request as POST
+		 *   $('#example').dataTable( {
+		 *     "ajax": {
+		 *       "url": "data.json",
+		 *       "type": "POST"
+		 *     }
+		 *   } );
+		 *
+		 * @example
+		 *   // Get the data from localStorage (could interface with a form for
+		 *   // adding, editing and removing rows).
+		 *   $('#example').dataTable( {
+		 *     "ajax": function (data, callback, settings) {
+		 *       callback(
+		 *         JSON.parse( localStorage.getItem('dataTablesData') )
+		 *       );
+		 *     }
+		 *   } );
+		 */
+		"ajax": null,
+	
+	
+		/**
+		 * This parameter allows you to readily specify the entries in the length drop
+		 * down menu that DataTables shows when pagination is enabled. It can be
+		 * either a 1D array of options which will be used for both the displayed
+		 * option and the value, or a 2D array which will use the array in the first
+		 * position as the value, and the array in the second position as the
+		 * displayed options (useful for language strings such as 'All').
+		 *
+		 * Note that the `pageLength` property will be automatically set to the
+		 * first value given in this array, unless `pageLength` is also provided.
+		 *  @type array
+		 *  @default [ 10, 25, 50, 100 ]
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.lengthMenu
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
+		 *      } );
+		 *    } );
+		 */
+		"aLengthMenu": [ 10, 25, 50, 100 ],
+	
+	
+		/**
+		 * The `columns` option in the initialisation parameter allows you to define
+		 * details about the way individual columns behave. For a full list of
+		 * column options that can be set, please see
+		 * {@link DataTable.defaults.column}. Note that if you use `columns` to
+		 * define your columns, you must have an entry in the array for every single
+		 * column that you have in your table (these can be null if you don't which
+		 * to specify any options).
+		 *  @member
+		 *
+		 *  @name DataTable.defaults.column
+		 */
+		"aoColumns": null,
+	
+		/**
+		 * Very similar to `columns`, `columnDefs` allows you to target a specific
+		 * column, multiple columns, or all columns, using the `targets` property of
+		 * each object in the array. This allows great flexibility when creating
+		 * tables, as the `columnDefs` arrays can be of any length, targeting the
+		 * columns you specifically want. `columnDefs` may use any of the column
+		 * options available: {@link DataTable.defaults.column}, but it _must_
+		 * have `targets` defined in each object in the array. Values in the `targets`
+		 * array may be:
+		 *   <ul>
+		 *     <li>a string - class name will be matched on the TH for the column</li>
+		 *     <li>0 or a positive integer - column index counting from the left</li>
+		 *     <li>a negative integer - column index counting from the right</li>
+		 *     <li>the string "_all" - all columns (i.e. assign a default)</li>
+		 *   </ul>
+		 *  @member
+		 *
+		 *  @name DataTable.defaults.columnDefs
+		 */
+		"aoColumnDefs": null,
+	
+	
+		/**
+		 * Basically the same as `search`, this parameter defines the individual column
+		 * filtering state at initialisation time. The array must be of the same size
+		 * as the number of columns, and each element be an object with the parameters
+		 * `search` and `escapeRegex` (the latter is optional). 'null' is also
+		 * accepted and the default will be used.
+		 *  @type array
+		 *  @default []
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.searchCols
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "searchCols": [
+		 *          null,
+		 *          { "search": "My filter" },
+		 *          null,
+		 *          { "search": "^[0-9]", "escapeRegex": false }
+		 *        ]
+		 *      } );
+		 *    } )
+		 */
+		"aoSearchCols": [],
+	
+	
+		/**
+		 * An array of CSS classes that should be applied to displayed rows. This
+		 * array may be of any length, and DataTables will apply each class
+		 * sequentially, looping when required.
+		 *  @type array
+		 *  @default null <i>Will take the values determined by the `oClasses.stripe*`
+		 *    options</i>
+		 *
+		 *  @dtopt Option
+		 *  @name DataTable.defaults.stripeClasses
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stripeClasses": [ 'strip1', 'strip2', 'strip3' ]
+		 *      } );
+		 *    } )
+		 */
+		"asStripeClasses": null,
+	
+	
+		/**
+		 * Enable or disable automatic column width calculation. This can be disabled
+		 * as an optimisation (it takes some time to calculate the widths) if the
+		 * tables widths are passed in using `columns`.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.autoWidth
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "autoWidth": false
+		 *      } );
+		 *    } );
+		 */
+		"bAutoWidth": true,
+	
+	
+		/**
+		 * Deferred rendering can provide DataTables with a huge speed boost when you
+		 * are using an Ajax or JS data source for the table. This option, when set to
+		 * true, will cause DataTables to defer the creation of the table elements for
+		 * each row until they are needed for a draw - saving a significant amount of
+		 * time.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.deferRender
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajax": "sources/arrays.txt",
+		 *        "deferRender": true
+		 *      } );
+		 *    } );
+		 */
+		"bDeferRender": false,
+	
+	
+		/**
+		 * Replace a DataTable which matches the given selector and replace it with
+		 * one which has the properties of the new initialisation object passed. If no
+		 * table matches the selector, then the new DataTable will be constructed as
+		 * per normal.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.destroy
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "srollY": "200px",
+		 *        "paginate": false
+		 *      } );
+		 *
+		 *      // Some time later....
+		 *      $('#example').dataTable( {
+		 *        "filter": false,
+		 *        "destroy": true
+		 *      } );
+		 *    } );
+		 */
+		"bDestroy": false,
+	
+	
+		/**
+		 * Enable or disable filtering of data. Filtering in DataTables is "smart" in
+		 * that it allows the end user to input multiple words (space separated) and
+		 * will match a row containing those words, even if not in the order that was
+		 * specified (this allow matching across multiple columns). Note that if you
+		 * wish to use filtering in DataTables this must remain 'true' - to remove the
+		 * default filtering input box and retain filtering abilities, please use
+		 * {@link DataTable.defaults.dom}.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.searching
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "searching": false
+		 *      } );
+		 *    } );
+		 */
+		"bFilter": true,
+	
+	
+		/**
+		 * Enable or disable the table information display. This shows information
+		 * about the data that is currently visible on the page, including information
+		 * about filtered data if that action is being performed.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.info
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "info": false
+		 *      } );
+		 *    } );
+		 */
+		"bInfo": true,
+	
+	
+		/**
+		 * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some
+		 * slightly different and additional mark-up from what DataTables has
+		 * traditionally used).
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.jQueryUI
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "jQueryUI": true
+		 *      } );
+		 *    } );
+		 */
+		"bJQueryUI": false,
+	
+	
+		/**
+		 * Allows the end user to select the size of a formatted page from a select
+		 * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.lengthChange
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "lengthChange": false
+		 *      } );
+		 *    } );
+		 */
+		"bLengthChange": true,
+	
+	
+		/**
+		 * Enable or disable pagination.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.paging
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "paging": false
+		 *      } );
+		 *    } );
+		 */
+		"bPaginate": true,
+	
+	
+		/**
+		 * Enable or disable the display of a 'processing' indicator when the table is
+		 * being processed (e.g. a sort). This is particularly useful for tables with
+		 * large amounts of data where it can take a noticeable amount of time to sort
+		 * the entries.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.processing
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "processing": true
+		 *      } );
+		 *    } );
+		 */
+		"bProcessing": false,
+	
+	
+		/**
+		 * Retrieve the DataTables object for the given selector. Note that if the
+		 * table has already been initialised, this parameter will cause DataTables
+		 * to simply return the object that has already been set up - it will not take
+		 * account of any changes you might have made to the initialisation object
+		 * passed to DataTables (setting this parameter to true is an acknowledgement
+		 * that you understand this). `destroy` can be used to reinitialise a table if
+		 * you need.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.retrieve
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      initTable();
+		 *      tableActions();
+		 *    } );
+		 *
+		 *    function initTable ()
+		 *    {
+		 *      return $('#example').dataTable( {
+		 *        "scrollY": "200px",
+		 *        "paginate": false,
+		 *        "retrieve": true
+		 *      } );
+		 *    }
+		 *
+		 *    function tableActions ()
+		 *    {
+		 *      var table = initTable();
+		 *      // perform API operations with oTable
+		 *    }
+		 */
+		"bRetrieve": false,
+	
+	
+		/**
+		 * When vertical (y) scrolling is enabled, DataTables will force the height of
+		 * the table's viewport to the given height at all times (useful for layout).
+		 * However, this can look odd when filtering data down to a small data set,
+		 * and the footer is left "floating" further down. This parameter (when
+		 * enabled) will cause DataTables to collapse the table's viewport down when
+		 * the result set will fit within the given Y height.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.scrollCollapse
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollY": "200",
+		 *        "scrollCollapse": true
+		 *      } );
+		 *    } );
+		 */
+		"bScrollCollapse": false,
+	
+	
+		/**
+		 * Configure DataTables to use server-side processing. Note that the
+		 * `ajax` parameter must also be given in order to give DataTables a
+		 * source to obtain the required data for each draw.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverSide
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "serverSide": true,
+		 *        "ajax": "xhr.php"
+		 *      } );
+		 *    } );
+		 */
+		"bServerSide": false,
+	
+	
+		/**
+		 * Enable or disable sorting of columns. Sorting of individual columns can be
+		 * disabled by the `sortable` option for each column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.ordering
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "ordering": false
+		 *      } );
+		 *    } );
+		 */
+		"bSort": true,
+	
+	
+		/**
+		 * Enable or display DataTables' ability to sort multiple columns at the
+		 * same time (activated by shift-click by the user).
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.orderMulti
+		 *
+		 *  @example
+		 *    // Disable multiple column sorting ability
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "orderMulti": false
+		 *      } );
+		 *    } );
+		 */
+		"bSortMulti": true,
+	
+	
+		/**
+		 * Allows control over whether DataTables should use the top (true) unique
+		 * cell that is found for a single column, or the bottom (false - default).
+		 * This is useful when using complex headers.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.orderCellsTop
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "orderCellsTop": true
+		 *      } );
+		 *    } );
+		 */
+		"bSortCellsTop": false,
+	
+	
+		/**
+		 * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and
+		 * `sorting\_3` to the columns which are currently being sorted on. This is
+		 * presented as a feature switch as it can increase processing time (while
+		 * classes are removed and added) so for large data sets you might want to
+		 * turn this off.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.orderClasses
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "orderClasses": false
+		 *      } );
+		 *    } );
+		 */
+		"bSortClasses": true,
+	
+	
+		/**
+		 * Enable or disable state saving. When enabled HTML5 `localStorage` will be
+		 * used to save table display information such as pagination information,
+		 * display length, filtering and sorting. As such when the end user reloads
+		 * the page the display display will match what thy had previously set up.
+		 *
+		 * Due to the use of `localStorage` the default state saving is not supported
+		 * in IE6 or 7. If state saving is required in those browsers, use
+		 * `stateSaveCallback` to provide a storage solution such as cookies.
+		 *  @type boolean
+		 *  @default false
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.stateSave
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true
+		 *      } );
+		 *    } );
+		 */
+		"bStateSave": false,
+	
+	
+		/**
+		 * This function is called when a TR element is created (and all TD child
+		 * elements have been inserted), or registered if using a DOM source, allowing
+		 * manipulation of the TR element (adding classes etc).
+		 *  @type function
+		 *  @param {node} row "TR" element for the current row
+		 *  @param {array} data Raw data array for this row
+		 *  @param {int} dataIndex The index of this row in the internal aoData array
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.createdRow
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "createdRow": function( row, data, dataIndex ) {
+		 *          // Bold the grade for all 'A' grade browsers
+		 *          if ( data[4] == "A" )
+		 *          {
+		 *            $('td:eq(4)', row).html( '<b>A</b>' );
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnCreatedRow": null,
+	
+	
+		/**
+		 * This function is called on every 'draw' event, and allows you to
+		 * dynamically modify any aspect you want about the created DOM.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.drawCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "drawCallback": function( settings ) {
+		 *          alert( 'DataTables has redrawn the table' );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnDrawCallback": null,
+	
+	
+		/**
+		 * Identical to fnHeaderCallback() but for the table footer this function
+		 * allows you to modify the table footer on every 'draw' event.
+		 *  @type function
+		 *  @param {node} foot "TR" element for the footer
+		 *  @param {array} data Full table data (as derived from the original HTML)
+		 *  @param {int} start Index for the current display starting point in the
+		 *    display array
+		 *  @param {int} end Index for the current display ending point in the
+		 *    display array
+		 *  @param {array int} display Index array to translate the visual position
+		 *    to the full data array
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.footerCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "footerCallback": function( tfoot, data, start, end, display ) {
+		 *          tfoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+start;
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnFooterCallback": null,
+	
+	
+		/**
+		 * When rendering large numbers in the information element for the table
+		 * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
+		 * to have a comma separator for the 'thousands' units (e.g. 1 million is
+		 * rendered as "1,000,000") to help readability for the end user. This
+		 * function will override the default method DataTables uses.
+		 *  @type function
+		 *  @member
+		 *  @param {int} toFormat number to be formatted
+		 *  @returns {string} formatted string for DataTables to show the number
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.formatNumber
+		 *
+		 *  @example
+		 *    // Format a number using a single quote for the separator (note that
+		 *    // this can also be done with the language.thousands option)
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "formatNumber": function ( toFormat ) {
+		 *          return toFormat.toString().replace(
+		 *            /\B(?=(\d{3})+(?!\d))/g, "'"
+		 *          );
+		 *        };
+		 *      } );
+		 *    } );
+		 */
+		"fnFormatNumber": function ( toFormat ) {
+			return toFormat.toString().replace(
+				/\B(?=(\d{3})+(?!\d))/g,
+				this.oLanguage.sThousands
+			);
+		},
+	
+	
+		/**
+		 * This function is called on every 'draw' event, and allows you to
+		 * dynamically modify the header row. This can be used to calculate and
+		 * display useful information about the table.
+		 *  @type function
+		 *  @param {node} head "TR" element for the header
+		 *  @param {array} data Full table data (as derived from the original HTML)
+		 *  @param {int} start Index for the current display starting point in the
+		 *    display array
+		 *  @param {int} end Index for the current display ending point in the
+		 *    display array
+		 *  @param {array int} display Index array to translate the visual position
+		 *    to the full data array
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.headerCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fheaderCallback": function( head, data, start, end, display ) {
+		 *          head.getElementsByTagName('th')[0].innerHTML = "Displaying "+(end-start)+" records";
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnHeaderCallback": null,
+	
+	
+		/**
+		 * The information element can be used to convey information about the current
+		 * state of the table. Although the internationalisation options presented by
+		 * DataTables are quite capable of dealing with most customisations, there may
+		 * be times where you wish to customise the string further. This callback
+		 * allows you to do exactly that.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {int} start Starting position in data for the draw
+		 *  @param {int} end End position in data for the draw
+		 *  @param {int} max Total number of rows in the table (regardless of
+		 *    filtering)
+		 *  @param {int} total Total number of rows in the data set, after filtering
+		 *  @param {string} pre The string that DataTables has formatted using it's
+		 *    own rules
+		 *  @returns {string} The string to be displayed in the information element.
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.infoCallback
+		 *
+		 *  @example
+		 *    $('#example').dataTable( {
+		 *      "infoCallback": function( settings, start, end, max, total, pre ) {
+		 *        return start +" to "+ end;
+		 *      }
+		 *    } );
+		 */
+		"fnInfoCallback": null,
+	
+	
+		/**
+		 * Called when the table has been initialised. Normally DataTables will
+		 * initialise sequentially and there will be no need for this function,
+		 * however, this does not hold true when using external language information
+		 * since that is obtained using an async XHR call.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} json The JSON object request from the server - only
+		 *    present if client-side Ajax sourced data is used
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.initComplete
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "initComplete": function(settings, json) {
+		 *          alert( 'DataTables has finished its initialisation.' );
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnInitComplete": null,
+	
+	
+		/**
+		 * Called at the very start of each table draw and can be used to cancel the
+		 * draw by returning false, any other return (including undefined) results in
+		 * the full draw occurring).
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @returns {boolean} False will cancel the draw, anything else (including no
+		 *    return) will allow it to complete.
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.preDrawCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "preDrawCallback": function( settings ) {
+		 *          if ( $('#test').val() == 1 ) {
+		 *            return false;
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnPreDrawCallback": null,
+	
+	
+		/**
+		 * This function allows you to 'post process' each row after it have been
+		 * generated for each table draw, but before it is rendered on screen. This
+		 * function might be used for setting the row class name etc.
+		 *  @type function
+		 *  @param {node} row "TR" element for the current row
+		 *  @param {array} data Raw data array for this row
+		 *  @param {int} displayIndex The display index for the current table draw
+		 *  @param {int} displayIndexFull The index of the data in the full list of
+		 *    rows (after filtering)
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.rowCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "rowCallback": function( row, data, displayIndex, displayIndexFull ) {
+		 *          // Bold the grade for all 'A' grade browsers
+		 *          if ( data[4] == "A" ) {
+		 *            $('td:eq(4)', row).html( '<b>A</b>' );
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnRowCallback": null,
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * This parameter allows you to override the default function which obtains
+		 * the data from the server so something more suitable for your application.
+		 * For example you could use POST data, or pull information from a Gears or
+		 * AIR database.
+		 *  @type function
+		 *  @member
+		 *  @param {string} source HTTP source to obtain the data from (`ajax`)
+		 *  @param {array} data A key/value pair object containing the data to send
+		 *    to the server
+		 *  @param {function} callback to be called on completion of the data get
+		 *    process that will draw the data on the page.
+		 *  @param {object} settings DataTables settings object
+		 *
+		 *  @dtopt Callbacks
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverData
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"fnServerData": null,
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 *  It is often useful to send extra data to the server when making an Ajax
+		 * request - for example custom filtering information, and this callback
+		 * function makes it trivial to send extra information to the server. The
+		 * passed in parameter is the data set that has been constructed by
+		 * DataTables, and you can add to this or modify it as you require.
+		 *  @type function
+		 *  @param {array} data Data array (array of objects which are name/value
+		 *    pairs) that has been constructed by DataTables and will be sent to the
+		 *    server. In the case of Ajax sourced data with server-side processing
+		 *    this will be an empty array, for server-side processing there will be a
+		 *    significant number of parameters!
+		 *  @returns {undefined} Ensure that you modify the data array passed in,
+		 *    as this is passed by reference.
+		 *
+		 *  @dtopt Callbacks
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverParams
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"fnServerParams": null,
+	
+	
+		/**
+		 * Load the table state. With this function you can define from where, and how, the
+		 * state of a table is loaded. By default DataTables will load from `localStorage`
+		 * but you might wish to use a server-side database or cookies.
+		 *  @type function
+		 *  @member
+		 *  @param {object} settings DataTables settings object
+		 *  @return {object} The DataTables state object to be loaded
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateLoadCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoadCallback": function (settings) {
+		 *          var o;
+		 *
+		 *          // Send an Ajax request to the server to get the data. Note that
+		 *          // this is a synchronous request.
+		 *          $.ajax( {
+		 *            "url": "/state_load",
+		 *            "async": false,
+		 *            "dataType": "json",
+		 *            "success": function (json) {
+		 *              o = json;
+		 *            }
+		 *          } );
+		 *
+		 *          return o;
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoadCallback": function ( settings ) {
+			try {
+				return JSON.parse(
+					(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(
+						'DataTables_'+settings.sInstance+'_'+location.pathname
+					)
+				);
+			} catch (e) {}
+		},
+	
+	
+		/**
+		 * Callback which allows modification of the saved state prior to loading that state.
+		 * This callback is called when the table is loading state from the stored data, but
+		 * prior to the settings object being modified by the saved state. Note that for
+		 * plug-in authors, you should use the `stateLoadParams` event to load parameters for
+		 * a plug-in.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object that is to be loaded
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateLoadParams
+		 *
+		 *  @example
+		 *    // Remove a saved filter, so filtering is never loaded
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoadParams": function (settings, data) {
+		 *          data.oSearch.sSearch = "";
+		 *        }
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Disallow state loading by returning false
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoadParams": function (settings, data) {
+		 *          return false;
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoadParams": null,
+	
+	
+		/**
+		 * Callback that is called when the state has been loaded from the state saving method
+		 * and the DataTables settings object has been modified as a result of the loaded state.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object that was loaded
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateLoaded
+		 *
+		 *  @example
+		 *    // Show an alert with the filtering value that was saved
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateLoaded": function (settings, data) {
+		 *          alert( 'Saved filter was: '+data.oSearch.sSearch );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoaded": null,
+	
+	
+		/**
+		 * Save the table state. This function allows you to define where and how the state
+		 * information for the table is stored By default DataTables will use `localStorage`
+		 * but you might wish to use a server-side database or cookies.
+		 *  @type function
+		 *  @member
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object to be saved
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateSaveCallback
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateSaveCallback": function (settings, data) {
+		 *          // Send an Ajax request to the server with the state object
+		 *          $.ajax( {
+		 *            "url": "/state_save",
+		 *            "data": data,
+		 *            "dataType": "json",
+		 *            "method": "POST"
+		 *            "success": function () {}
+		 *          } );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateSaveCallback": function ( settings, data ) {
+			try {
+				(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(
+					'DataTables_'+settings.sInstance+'_'+location.pathname,
+					JSON.stringify( data )
+				);
+			} catch (e) {}
+		},
+	
+	
+		/**
+		 * Callback which allows modification of the state to be saved. Called when the table
+		 * has changed state a new state save is required. This method allows modification of
+		 * the state saving object prior to actually doing the save, including addition or
+		 * other state properties or modification. Note that for plug-in authors, you should
+		 * use the `stateSaveParams` event to save parameters for a plug-in.
+		 *  @type function
+		 *  @param {object} settings DataTables settings object
+		 *  @param {object} data The state object to be saved
+		 *
+		 *  @dtopt Callbacks
+		 *  @name DataTable.defaults.stateSaveParams
+		 *
+		 *  @example
+		 *    // Remove a saved filter, so filtering is never saved
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateSave": true,
+		 *        "stateSaveParams": function (settings, data) {
+		 *          data.oSearch.sSearch = "";
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateSaveParams": null,
+	
+	
+		/**
+		 * Duration for which the saved state information is considered valid. After this period
+		 * has elapsed the state will be returned to the default.
+		 * Value is given in seconds.
+		 *  @type int
+		 *  @default 7200 <i>(2 hours)</i>
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.stateDuration
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "stateDuration": 60*60*24; // 1 day
+		 *      } );
+		 *    } )
+		 */
+		"iStateDuration": 7200,
+	
+	
+		/**
+		 * When enabled DataTables will not make a request to the server for the first
+		 * page draw - rather it will use the data already on the page (no sorting etc
+		 * will be applied to it), thus saving on an XHR at load time. `deferLoading`
+		 * is used to indicate that deferred loading is required, but it is also used
+		 * to tell DataTables how many records there are in the full table (allowing
+		 * the information element and pagination to be displayed correctly). In the case
+		 * where a filtering is applied to the table on initial load, this can be
+		 * indicated by giving the parameter as an array, where the first element is
+		 * the number of records available after filtering and the second element is the
+		 * number of records without filtering (allowing the table information element
+		 * to be shown correctly).
+		 *  @type int | array
+		 *  @default null
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.deferLoading
+		 *
+		 *  @example
+		 *    // 57 records available in the table, no filtering applied
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "serverSide": true,
+		 *        "ajax": "scripts/server_processing.php",
+		 *        "deferLoading": 57
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // 57 records after filtering, 100 without filtering (an initial filter applied)
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "serverSide": true,
+		 *        "ajax": "scripts/server_processing.php",
+		 *        "deferLoading": [ 57, 100 ],
+		 *        "search": {
+		 *          "search": "my_filter"
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"iDeferLoading": null,
+	
+	
+		/**
+		 * Number of rows to display on a single page when using pagination. If
+		 * feature enabled (`lengthChange`) then the end user will be able to override
+		 * this to a custom setting using a pop-up menu.
+		 *  @type int
+		 *  @default 10
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.pageLength
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "pageLength": 50
+		 *      } );
+		 *    } )
+		 */
+		"iDisplayLength": 10,
+	
+	
+		/**
+		 * Define the starting point for data display when using DataTables with
+		 * pagination. Note that this parameter is the number of records, rather than
+		 * the page number, so if you have 10 records per page and want to start on
+		 * the third page, it should be "20".
+		 *  @type int
+		 *  @default 0
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.displayStart
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "displayStart": 20
+		 *      } );
+		 *    } )
+		 */
+		"iDisplayStart": 0,
+	
+	
+		/**
+		 * By default DataTables allows keyboard navigation of the table (sorting, paging,
+		 * and filtering) by adding a `tabindex` attribute to the required elements. This
+		 * allows you to tab through the controls and press the enter key to activate them.
+		 * The tabindex is default 0, meaning that the tab follows the flow of the document.
+		 * You can overrule this using this parameter if you wish. Use a value of -1 to
+		 * disable built-in keyboard navigation.
+		 *  @type int
+		 *  @default 0
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.tabIndex
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "tabIndex": 1
+		 *      } );
+		 *    } );
+		 */
+		"iTabIndex": 0,
+	
+	
+		/**
+		 * Classes that DataTables assigns to the various components and features
+		 * that it adds to the HTML table. This allows classes to be configured
+		 * during initialisation in addition to through the static
+		 * {@link DataTable.ext.oStdClasses} object).
+		 *  @namespace
+		 *  @name DataTable.defaults.classes
+		 */
+		"oClasses": {},
+	
+	
+		/**
+		 * All strings that DataTables uses in the user interface that it creates
+		 * are defined in this object, allowing you to modified them individually or
+		 * completely replace them all as required.
+		 *  @namespace
+		 *  @name DataTable.defaults.language
+		 */
+		"oLanguage": {
+			/**
+			 * Strings that are used for WAI-ARIA labels and controls only (these are not
+			 * actually visible on the page, but will be read by screenreaders, and thus
+			 * must be internationalised as well).
+			 *  @namespace
+			 *  @name DataTable.defaults.language.aria
+			 */
+			"oAria": {
+				/**
+				 * ARIA label that is added to the table headers when the column may be
+				 * sorted ascending by activing the column (click or return when focused).
+				 * Note that the column header is prefixed to this string.
+				 *  @type string
+				 *  @default : activate to sort column ascending
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.aria.sortAscending
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "aria": {
+				 *            "sortAscending": " - click/return to sort ascending"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sSortAscending": ": activate to sort column ascending",
+	
+				/**
+				 * ARIA label that is added to the table headers when the column may be
+				 * sorted descending by activing the column (click or return when focused).
+				 * Note that the column header is prefixed to this string.
+				 *  @type string
+				 *  @default : activate to sort column ascending
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.aria.sortDescending
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "aria": {
+				 *            "sortDescending": " - click/return to sort descending"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sSortDescending": ": activate to sort column descending"
+			},
+	
+			/**
+			 * Pagination string used by DataTables for the built-in pagination
+			 * control types.
+			 *  @namespace
+			 *  @name DataTable.defaults.language.paginate
+			 */
+			"oPaginate": {
+				/**
+				 * Text to use when using the 'full_numbers' type of pagination for the
+				 * button to take the user to the first page.
+				 *  @type string
+				 *  @default First
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.first
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "first": "First page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sFirst": "First",
+	
+	
+				/**
+				 * Text to use when using the 'full_numbers' type of pagination for the
+				 * button to take the user to the last page.
+				 *  @type string
+				 *  @default Last
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.last
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "last": "Last page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sLast": "Last",
+	
+	
+				/**
+				 * Text to use for the 'next' pagination button (to take the user to the
+				 * next page).
+				 *  @type string
+				 *  @default Next
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.next
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "next": "Next page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sNext": "Next",
+	
+	
+				/**
+				 * Text to use for the 'previous' pagination button (to take the user to
+				 * the previous page).
+				 *  @type string
+				 *  @default Previous
+				 *
+				 *  @dtopt Language
+				 *  @name DataTable.defaults.language.paginate.previous
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "language": {
+				 *          "paginate": {
+				 *            "previous": "Previous page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sPrevious": "Previous"
+			},
+	
+			/**
+			 * This string is shown in preference to `zeroRecords` when the table is
+			 * empty of data (regardless of filtering). Note that this is an optional
+			 * parameter - if it is not given, the value of `zeroRecords` will be used
+			 * instead (either the default or given value).
+			 *  @type string
+			 *  @default No data available in table
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.emptyTable
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "emptyTable": "No data available in table"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sEmptyTable": "No data available in table",
+	
+	
+			/**
+			 * This string gives information to the end user about the information
+			 * that is current on display on the page. The following tokens can be
+			 * used in the string and will be dynamically replaced as the table
+			 * display updates. This tokens can be placed anywhere in the string, or
+			 * removed as needed by the language requires:
+			 *
+			 * * `\_START\_` - Display index of the first record on the current page
+			 * * `\_END\_` - Display index of the last record on the current page
+			 * * `\_TOTAL\_` - Number of records in the table after filtering
+			 * * `\_MAX\_` - Number of records in the table without filtering
+			 * * `\_PAGE\_` - Current page number
+			 * * `\_PAGES\_` - Total number of pages of data in the table
+			 *
+			 *  @type string
+			 *  @default Showing _START_ to _END_ of _TOTAL_ entries
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.info
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "info": "Showing page _PAGE_ of _PAGES_"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
+	
+	
+			/**
+			 * Display information string for when the table is empty. Typically the
+			 * format of this string should match `info`.
+			 *  @type string
+			 *  @default Showing 0 to 0 of 0 entries
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.infoEmpty
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "infoEmpty": "No entries to show"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoEmpty": "Showing 0 to 0 of 0 entries",
+	
+	
+			/**
+			 * When a user filters the information in a table, this string is appended
+			 * to the information (`info`) to give an idea of how strong the filtering
+			 * is. The variable _MAX_ is dynamically updated.
+			 *  @type string
+			 *  @default (filtered from _MAX_ total entries)
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.infoFiltered
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "infoFiltered": " - filtering from _MAX_ records"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoFiltered": "(filtered from _MAX_ total entries)",
+	
+	
+			/**
+			 * If can be useful to append extra information to the info string at times,
+			 * and this variable does exactly that. This information will be appended to
+			 * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are
+			 * being used) at all times.
+			 *  @type string
+			 *  @default <i>Empty string</i>
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.infoPostFix
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "infoPostFix": "All records shown are derived from real information."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoPostFix": "",
+	
+	
+			/**
+			 * This decimal place operator is a little different from the other
+			 * language options since DataTables doesn't output floating point
+			 * numbers, so it won't ever use this for display of a number. Rather,
+			 * what this parameter does is modify the sort methods of the table so
+			 * that numbers which are in a format which has a character other than
+			 * a period (`.`) as a decimal place will be sorted numerically.
+			 *
+			 * Note that numbers with different decimal places cannot be shown in
+			 * the same table and still be sortable, the table must be consistent.
+			 * However, multiple different tables on the page can use different
+			 * decimal place characters.
+			 *  @type string
+			 *  @default 
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.decimal
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "decimal": ","
+			 *          "thousands": "."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sDecimal": "",
+	
+	
+			/**
+			 * DataTables has a build in number formatter (`formatNumber`) which is
+			 * used to format large numbers that are used in the table information.
+			 * By default a comma is used, but this can be trivially changed to any
+			 * character you wish with this parameter.
+			 *  @type string
+			 *  @default ,
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.thousands
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "thousands": "'"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sThousands": ",",
+	
+	
+			/**
+			 * Detail the action that will be taken when the drop down menu for the
+			 * pagination length option is changed. The '_MENU_' variable is replaced
+			 * with a default select list of 10, 25, 50 and 100, and can be replaced
+			 * with a custom select box if required.
+			 *  @type string
+			 *  @default Show _MENU_ entries
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.lengthMenu
+			 *
+			 *  @example
+			 *    // Language change only
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "lengthMenu": "Display _MENU_ records"
+			 *        }
+			 *      } );
+			 *    } );
+			 *
+			 *  @example
+			 *    // Language and options change
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "lengthMenu": 'Display <select>'+
+			 *            '<option value="10">10</option>'+
+			 *            '<option value="20">20</option>'+
+			 *            '<option value="30">30</option>'+
+			 *            '<option value="40">40</option>'+
+			 *            '<option value="50">50</option>'+
+			 *            '<option value="-1">All</option>'+
+			 *            '</select> records'
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sLengthMenu": "Show _MENU_ entries",
+	
+	
+			/**
+			 * When using Ajax sourced data and during the first draw when DataTables is
+			 * gathering the data, this message is shown in an empty row in the table to
+			 * indicate to the end user the the data is being loaded. Note that this
+			 * parameter is not used when loading data by server-side processing, just
+			 * Ajax sourced data with client-side processing.
+			 *  @type string
+			 *  @default Loading...
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.loadingRecords
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "loadingRecords": "Please wait - loading..."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sLoadingRecords": "Loading...",
+	
+	
+			/**
+			 * Text which is displayed when the table is processing a user action
+			 * (usually a sort command or similar).
+			 *  @type string
+			 *  @default Processing...
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.processing
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "processing": "DataTables is currently busy"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sProcessing": "Processing...",
+	
+	
+			/**
+			 * Details the actions that will be taken when the user types into the
+			 * filtering input text box. The variable "_INPUT_", if used in the string,
+			 * is replaced with the HTML text box for the filtering input allowing
+			 * control over where it appears in the string. If "_INPUT_" is not given
+			 * then the input box is appended to the string automatically.
+			 *  @type string
+			 *  @default Search:
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.search
+			 *
+			 *  @example
+			 *    // Input text box will be appended at the end automatically
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "search": "Filter records:"
+			 *        }
+			 *      } );
+			 *    } );
+			 *
+			 *  @example
+			 *    // Specify where the filter should appear
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "search": "Apply filter _INPUT_ to table"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sSearch": "Search:",
+	
+	
+			/**
+			 * Assign a `placeholder` attribute to the search `input` element
+			 *  @type string
+			 *  @default 
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.searchPlaceholder
+			 */
+			"sSearchPlaceholder": "",
+	
+	
+			/**
+			 * All of the language information can be stored in a file on the
+			 * server-side, which DataTables will look up if this parameter is passed.
+			 * It must store the URL of the language file, which is in a JSON format,
+			 * and the object has the same properties as the oLanguage object in the
+			 * initialiser object (i.e. the above parameters). Please refer to one of
+			 * the example language files to see how this works in action.
+			 *  @type string
+			 *  @default <i>Empty string - i.e. disabled</i>
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.url
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "url": "http://www.sprymedia.co.uk/dataTables/lang.txt"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sUrl": "",
+	
+	
+			/**
+			 * Text shown inside the table records when the is no information to be
+			 * displayed after filtering. `emptyTable` is shown when there is simply no
+			 * information in the table at all (regardless of filtering).
+			 *  @type string
+			 *  @default No matching records found
+			 *
+			 *  @dtopt Language
+			 *  @name DataTable.defaults.language.zeroRecords
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "language": {
+			 *          "zeroRecords": "No records to display"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sZeroRecords": "No matching records found"
+		},
+	
+	
+		/**
+		 * This parameter allows you to have define the global filtering state at
+		 * initialisation time. As an object the `search` parameter must be
+		 * defined, but all other parameters are optional. When `regex` is true,
+		 * the search string will be treated as a regular expression, when false
+		 * (default) it will be treated as a straight string. When `smart`
+		 * DataTables will use it's smart filtering methods (to word match at
+		 * any point in the data), when false this will not be done.
+		 *  @namespace
+		 *  @extends DataTable.models.oSearch
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.search
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "search": {"search": "Initial search"}
+		 *      } );
+		 *    } )
+		 */
+		"oSearch": $.extend( {}, DataTable.models.oSearch ),
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * By default DataTables will look for the property `data` (or `aaData` for
+		 * compatibility with DataTables 1.9-) when obtaining data from an Ajax
+		 * source or for server-side processing - this parameter allows that
+		 * property to be changed. You can use Javascript dotted object notation to
+		 * get a data source for multiple levels of nesting.
+		 *  @type string
+		 *  @default data
+		 *
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.ajaxDataProp
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"sAjaxDataProp": "data",
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * You can instruct DataTables to load data from an external
+		 * source using this parameter (use aData if you want to pass data in you
+		 * already have). Simply provide a url a JSON object can be obtained from.
+		 *  @type string
+		 *  @default null
+		 *
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.ajaxSource
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"sAjaxSource": null,
+	
+	
+		/**
+		 * This initialisation variable allows you to specify exactly where in the
+		 * DOM you want DataTables to inject the various controls it adds to the page
+		 * (for example you might want the pagination controls at the top of the
+		 * table). DIV elements (with or without a custom class) can also be added to
+		 * aid styling. The follow syntax is used:
+		 *   <ul>
+		 *     <li>The following options are allowed:
+		 *       <ul>
+		 *         <li>'l' - Length changing</li>
+		 *         <li>'f' - Filtering input</li>
+		 *         <li>'t' - The table!</li>
+		 *         <li>'i' - Information</li>
+		 *         <li>'p' - Pagination</li>
+		 *         <li>'r' - pRocessing</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>The following constants are allowed:
+		 *       <ul>
+		 *         <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>
+		 *         <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>The following syntax is expected:
+		 *       <ul>
+		 *         <li>'&lt;' and '&gt;' - div elements</li>
+		 *         <li>'&lt;"class" and '&gt;' - div with a class</li>
+		 *         <li>'&lt;"#id" and '&gt;' - div with an ID</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>Examples:
+		 *       <ul>
+		 *         <li>'&lt;"wrapper"flipt&gt;'</li>
+		 *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>
+		 *       </ul>
+		 *     </li>
+		 *   </ul>
+		 *  @type string
+		 *  @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b>
+		 *    <"H"lfr>t<"F"ip> <i>(when `jQueryUI` is true)</i>
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.dom
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "dom": '&lt;"top"i&gt;rt&lt;"bottom"flp&gt;&lt;"clear"&gt;'
+		 *      } );
+		 *    } );
+		 */
+		"sDom": "lfrtip",
+	
+	
+		/**
+		 * DataTables features four different built-in options for the buttons to
+		 * display for pagination control:
+		 *
+		 * * `simple` - 'Previous' and 'Next' buttons only
+		 * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers
+		 * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons
+		 * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus
+		 *   page numbers
+		 *  
+		 * Further methods can be added using {@link DataTable.ext.oPagination}.
+		 *  @type string
+		 *  @default simple_numbers
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.pagingType
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "pagingType": "full_numbers"
+		 *      } );
+		 *    } )
+		 */
+		"sPaginationType": "simple_numbers",
+	
+	
+		/**
+		 * Enable horizontal scrolling. When a table is too wide to fit into a
+		 * certain layout, or you have a large number of columns in the table, you
+		 * can enable x-scrolling to show the table in a viewport, which can be
+		 * scrolled. This property can be `true` which will allow the table to
+		 * scroll horizontally when needed, or any CSS unit, or a number (in which
+		 * case it will be treated as a pixel measurement). Setting as simply `true`
+		 * is recommended.
+		 *  @type boolean|string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.scrollX
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollX": true,
+		 *        "scrollCollapse": true
+		 *      } );
+		 *    } );
+		 */
+		"sScrollX": "",
+	
+	
+		/**
+		 * This property can be used to force a DataTable to use more width than it
+		 * might otherwise do when x-scrolling is enabled. For example if you have a
+		 * table which requires to be well spaced, this parameter is useful for
+		 * "over-sizing" the table, and thus forcing scrolling. This property can by
+		 * any CSS unit, or a number (in which case it will be treated as a pixel
+		 * measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *
+		 *  @dtopt Options
+		 *  @name DataTable.defaults.scrollXInner
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollX": "100%",
+		 *        "scrollXInner": "110%"
+		 *      } );
+		 *    } );
+		 */
+		"sScrollXInner": "",
+	
+	
+		/**
+		 * Enable vertical scrolling. Vertical scrolling will constrain the DataTable
+		 * to the given height, and enable scrolling for any data which overflows the
+		 * current viewport. This can be used as an alternative to paging to display
+		 * a lot of data in a small area (although paging and scrolling can both be
+		 * enabled at the same time). This property can be any CSS unit, or a number
+		 * (in which case it will be treated as a pixel measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *
+		 *  @dtopt Features
+		 *  @name DataTable.defaults.scrollY
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "scrollY": "200px",
+		 *        "paginate": false
+		 *      } );
+		 *    } );
+		 */
+		"sScrollY": "",
+	
+	
+		/**
+		 * __Deprecated__ The functionality provided by this parameter has now been
+		 * superseded by that provided through `ajax`, which should be used instead.
+		 *
+		 * Set the HTTP method that is used to make the Ajax call for server-side
+		 * processing or Ajax sourced data.
+		 *  @type string
+		 *  @default GET
+		 *
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *  @name DataTable.defaults.serverMethod
+		 *
+		 *  @deprecated 1.10. Please use `ajax` for this functionality now.
+		 */
+		"sServerMethod": "GET",
+	
+	
+		/**
+		 * DataTables makes use of renderers when displaying HTML elements for
+		 * a table. These renderers can be added or modified by plug-ins to
+		 * generate suitable mark-up for a site. For example the Bootstrap
+		 * integration plug-in for DataTables uses a paging button renderer to
+		 * display pagination buttons in the mark-up required by Bootstrap.
+		 *
+		 * For further information about the renderers available see
+		 * DataTable.ext.renderer
+		 *  @type string|object
+		 *  @default null
+		 *
+		 *  @name DataTable.defaults.renderer
+		 *
+		 */
+		"renderer": null
+	};
+	
+	_fnHungarianMap( DataTable.defaults );
+	
+	
+	
+	/*
+	 * Developer note - See note in model.defaults.js about the use of Hungarian
+	 * notation and camel case.
+	 */
+	
+	/**
+	 * Column options that can be given to DataTables at initialisation time.
+	 *  @namespace
+	 */
+	DataTable.defaults.column = {
+		/**
+		 * Define which column(s) an order will occur on for this column. This
+		 * allows a column's ordering to take multiple columns into account when
+		 * doing a sort or use the data from a different column. For example first
+		 * name / last name columns make sense to do a multi-column sort over the
+		 * two columns.
+		 *  @type array|int
+		 *  @default null <i>Takes the value of the column index automatically</i>
+		 *
+		 *  @name DataTable.defaults.column.orderData
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderData": [ 0, 1 ], "targets": [ 0 ] },
+		 *          { "orderData": [ 1, 0 ], "targets": [ 1 ] },
+		 *          { "orderData": 2, "targets": [ 2 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "orderData": [ 0, 1 ] },
+		 *          { "orderData": [ 1, 0 ] },
+		 *          { "orderData": 2 },
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"aDataSort": null,
+		"iDataSort": -1,
+	
+	
+		/**
+		 * You can control the default ordering direction, and even alter the
+		 * behaviour of the sort handler (i.e. only allow ascending ordering etc)
+		 * using this parameter.
+		 *  @type array
+		 *  @default [ 'asc', 'desc' ]
+		 *
+		 *  @name DataTable.defaults.column.orderSequence
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderSequence": [ "asc" ], "targets": [ 1 ] },
+		 *          { "orderSequence": [ "desc", "asc", "asc" ], "targets": [ 2 ] },
+		 *          { "orderSequence": [ "desc" ], "targets": [ 3 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          { "orderSequence": [ "asc" ] },
+		 *          { "orderSequence": [ "desc", "asc", "asc" ] },
+		 *          { "orderSequence": [ "desc" ] },
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"asSorting": [ 'asc', 'desc' ],
+	
+	
+		/**
+		 * Enable or disable filtering on the data in this column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @name DataTable.defaults.column.searchable
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "searchable": false, "targets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "searchable": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bSearchable": true,
+	
+	
+		/**
+		 * Enable or disable ordering on this column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @name DataTable.defaults.column.orderable
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderable": false, "targets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "orderable": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bSortable": true,
+	
+	
+		/**
+		 * Enable or disable the display of this column.
+		 *  @type boolean
+		 *  @default true
+		 *
+		 *  @name DataTable.defaults.column.visible
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "visible": false, "targets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "visible": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bVisible": true,
+	
+	
+		/**
+		 * Developer definable function that is called whenever a cell is created (Ajax source,
+		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+		 * allowing you to modify the DOM element (add background colour for example) when the
+		 * element is available.
+		 *  @type function
+		 *  @param {element} td The TD node that has been created
+		 *  @param {*} cellData The Data for the cell
+		 *  @param {array|object} rowData The data for the whole row
+		 *  @param {int} row The row index for the aoData data store
+		 *  @param {int} col The column index for aoColumns
+		 *
+		 *  @name DataTable.defaults.column.createdCell
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [3],
+		 *          "createdCell": function (td, cellData, rowData, row, col) {
+		 *            if ( cellData == "1.7" ) {
+		 *              $(td).css('color', 'blue')
+		 *            }
+		 *          }
+		 *        } ]
+		 *      });
+		 *    } );
+		 */
+		"fnCreatedCell": null,
+	
+	
+		/**
+		 * This parameter has been replaced by `data` in DataTables to ensure naming
+		 * consistency. `dataProp` can still be used, as there is backwards
+		 * compatibility in DataTables for this option, but it is strongly
+		 * recommended that you use `data` in preference to `dataProp`.
+		 *  @name DataTable.defaults.column.dataProp
+		 */
+	
+	
+		/**
+		 * This property can be used to read data from any data source property,
+		 * including deeply nested objects / properties. `data` can be given in a
+		 * number of different ways which effect its behaviour:
+		 *
+		 * * `integer` - treated as an array index for the data source. This is the
+		 *   default that DataTables uses (incrementally increased for each column).
+		 * * `string` - read an object property from the data source. There are
+		 *   three 'special' options that can be used in the string to alter how
+		 *   DataTables reads the data from the source object:
+		 *    * `.` - Dotted Javascript notation. Just as you use a `.` in
+		 *      Javascript to read from nested objects, so to can the options
+		 *      specified in `data`. For example: `browser.version` or
+		 *      `browser.name`. If your object parameter name contains a period, use
+		 *      `\\` to escape it - i.e. `first\\.name`.
+		 *    * `[]` - Array notation. DataTables can automatically combine data
+		 *      from and array source, joining the data with the characters provided
+		 *      between the two brackets. For example: `name[, ]` would provide a
+		 *      comma-space separated list from the source array. If no characters
+		 *      are provided between the brackets, the original array source is
+		 *      returned.
+		 *    * `()` - Function notation. Adding `()` to the end of a parameter will
+		 *      execute a function of the name given. For example: `browser()` for a
+		 *      simple function on the data source, `browser.version()` for a
+		 *      function in a nested property or even `browser().version` to get an
+		 *      object property if the function called returns an object. Note that
+		 *      function notation is recommended for use in `render` rather than
+		 *      `data` as it is much simpler to use as a renderer.
+		 * * `null` - use the original data source for the row rather than plucking
+		 *   data directly from it. This action has effects on two other
+		 *   initialisation options:
+		 *    * `defaultContent` - When null is given as the `data` option and
+		 *      `defaultContent` is specified for the column, the value defined by
+		 *      `defaultContent` will be used for the cell.
+		 *    * `render` - When null is used for the `data` option and the `render`
+		 *      option is specified for the column, the whole data source for the
+		 *      row is used for the renderer.
+		 * * `function` - the function given will be executed whenever DataTables
+		 *   needs to set or get the data for a cell in the column. The function
+		 *   takes three parameters:
+		 *    * Parameters:
+		 *      * `{array|object}` The data source for the row
+		 *      * `{string}` The type call data requested - this will be 'set' when
+		 *        setting data or 'filter', 'display', 'type', 'sort' or undefined
+		 *        when gathering data. Note that when `undefined` is given for the
+		 *        type DataTables expects to get the raw data for the object back<
+		 *      * `{*}` Data to set when the second parameter is 'set'.
+		 *    * Return:
+		 *      * The return value from the function is not required when 'set' is
+		 *        the type of call, but otherwise the return is what will be used
+		 *        for the data requested.
+		 *
+		 * Note that `data` is a getter and setter option. If you just require
+		 * formatting of data for output, you will likely want to use `render` which
+		 * is simply a getter and thus simpler to use.
+		 *
+		 * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The
+		 * name change reflects the flexibility of this property and is consistent
+		 * with the naming of mRender. If 'mDataProp' is given, then it will still
+		 * be used by DataTables, as it automatically maps the old name to the new
+		 * if required.
+		 *
+		 *  @type string|int|function|null
+		 *  @default null <i>Use automatically calculated column index</i>
+		 *
+		 *  @name DataTable.defaults.column.data
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Read table data from objects
+		 *    // JSON structure for each row:
+		 *    //   {
+		 *    //      "engine": {value},
+		 *    //      "browser": {value},
+		 *    //      "platform": {value},
+		 *    //      "version": {value},
+		 *    //      "grade": {value}
+		 *    //   }
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajaxSource": "sources/objects.txt",
+		 *        "columns": [
+		 *          { "data": "engine" },
+		 *          { "data": "browser" },
+		 *          { "data": "platform" },
+		 *          { "data": "version" },
+		 *          { "data": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Read information from deeply nested objects
+		 *    // JSON structure for each row:
+		 *    //   {
+		 *    //      "engine": {value},
+		 *    //      "browser": {value},
+		 *    //      "platform": {
+		 *    //         "inner": {value}
+		 *    //      },
+		 *    //      "details": [
+		 *    //         {value}, {value}
+		 *    //      ]
+		 *    //   }
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajaxSource": "sources/deep.txt",
+		 *        "columns": [
+		 *          { "data": "engine" },
+		 *          { "data": "browser" },
+		 *          { "data": "platform.inner" },
+		 *          { "data": "platform.details.0" },
+		 *          { "data": "platform.details.1" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `data` as a function to provide different information for
+		 *    // sorting, filtering and display. In this case, currency (price)
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": function ( source, type, val ) {
+		 *            if (type === 'set') {
+		 *              source.price = val;
+		 *              // Store the computed dislay and filter values for efficiency
+		 *              source.price_display = val=="" ? "" : "$"+numberFormat(val);
+		 *              source.price_filter  = val=="" ? "" : "$"+numberFormat(val)+" "+val;
+		 *              return;
+		 *            }
+		 *            else if (type === 'display') {
+		 *              return source.price_display;
+		 *            }
+		 *            else if (type === 'filter') {
+		 *              return source.price_filter;
+		 *            }
+		 *            // 'sort', 'type' and undefined all just use the integer
+		 *            return source.price;
+		 *          }
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using default content
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": null,
+		 *          "defaultContent": "Click to edit"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using array notation - outputting a list from an array
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": "name[, ]"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 */
+		"mData": null,
+	
+	
+		/**
+		 * This property is the rendering partner to `data` and it is suggested that
+		 * when you want to manipulate data for display (including filtering,
+		 * sorting etc) without altering the underlying data for the table, use this
+		 * property. `render` can be considered to be the the read only companion to
+		 * `data` which is read / write (then as such more complex). Like `data`
+		 * this option can be given in a number of different ways to effect its
+		 * behaviour:
+		 *
+		 * * `integer` - treated as an array index for the data source. This is the
+		 *   default that DataTables uses (incrementally increased for each column).
+		 * * `string` - read an object property from the data source. There are
+		 *   three 'special' options that can be used in the string to alter how
+		 *   DataTables reads the data from the source object:
+		 *    * `.` - Dotted Javascript notation. Just as you use a `.` in
+		 *      Javascript to read from nested objects, so to can the options
+		 *      specified in `data`. For example: `browser.version` or
+		 *      `browser.name`. If your object parameter name contains a period, use
+		 *      `\\` to escape it - i.e. `first\\.name`.
+		 *    * `[]` - Array notation. DataTables can automatically combine data
+		 *      from and array source, joining the data with the characters provided
+		 *      between the two brackets. For example: `name[, ]` would provide a
+		 *      comma-space separated list from the source array. If no characters
+		 *      are provided between the brackets, the original array source is
+		 *      returned.
+		 *    * `()` - Function notation. Adding `()` to the end of a parameter will
+		 *      execute a function of the name given. For example: `browser()` for a
+		 *      simple function on the data source, `browser.version()` for a
+		 *      function in a nested property or even `browser().version` to get an
+		 *      object property if the function called returns an object.
+		 * * `object` - use different data for the different data types requested by
+		 *   DataTables ('filter', 'display', 'type' or 'sort'). The property names
+		 *   of the object is the data type the property refers to and the value can
+		 *   defined using an integer, string or function using the same rules as
+		 *   `render` normally does. Note that an `_` option _must_ be specified.
+		 *   This is the default value to use if you haven't specified a value for
+		 *   the data type requested by DataTables.
+		 * * `function` - the function given will be executed whenever DataTables
+		 *   needs to set or get the data for a cell in the column. The function
+		 *   takes three parameters:
+		 *    * Parameters:
+		 *      * {array|object} The data source for the row (based on `data`)
+		 *      * {string} The type call data requested - this will be 'filter',
+		 *        'display', 'type' or 'sort'.
+		 *      * {array|object} The full data source for the row (not based on
+		 *        `data`)
+		 *    * Return:
+		 *      * The return value from the function is what will be used for the
+		 *        data requested.
+		 *
+		 *  @type string|int|function|object|null
+		 *  @default null Use the data source value.
+		 *
+		 *  @name DataTable.defaults.column.render
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Create a comma separated list from an array of objects
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "ajaxSource": "sources/deep.txt",
+		 *        "columns": [
+		 *          { "data": "engine" },
+		 *          { "data": "browser" },
+		 *          {
+		 *            "data": "platform",
+		 *            "render": "[, ].name"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Execute a function to obtain data
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": null, // Use the full data source object for the renderer's source
+		 *          "render": "browserName()"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // As an object, extracting different data for the different types
+		 *    // This would be used with a data source such as:
+		 *    //   { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" }
+		 *    // Here the `phone` integer is used for sorting and type detection, while `phone_filter`
+		 *    // (which has both forms) is used for filtering for if a user inputs either format, while
+		 *    // the formatted phone number is the one that is shown in the table.
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": null, // Use the full data source object for the renderer's source
+		 *          "render": {
+		 *            "_": "phone",
+		 *            "filter": "phone_filter",
+		 *            "display": "phone_display"
+		 *          }
+		 *        } ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Use as a function to create a link from the data source
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "data": "download_link",
+		 *          "render": function ( data, type, full ) {
+		 *            return '<a href="'+data+'">Download</a>';
+		 *          }
+		 *        } ]
+		 *      } );
+		 *    } );
+		 */
+		"mRender": null,
+	
+	
+		/**
+		 * Change the cell type created for the column - either TD cells or TH cells. This
+		 * can be useful as TH cells have semantic meaning in the table body, allowing them
+		 * to act as a header for a row (you may wish to add scope='row' to the TH elements).
+		 *  @type string
+		 *  @default td
+		 *
+		 *  @name DataTable.defaults.column.cellType
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Make the first column use TH cells
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [ {
+		 *          "targets": [ 0 ],
+		 *          "cellType": "th"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 */
+		"sCellType": "td",
+	
+	
+		/**
+		 * Class to give to each cell in this column.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *
+		 *  @name DataTable.defaults.column.class
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "class": "my_class", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "class": "my_class" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sClass": "",
+	
+		/**
+		 * When DataTables calculates the column widths to assign to each column,
+		 * it finds the longest string in each column and then constructs a
+		 * temporary table and reads the widths from that. The problem with this
+		 * is that "mmm" is much wider then "iiii", but the latter is a longer
+		 * string - thus the calculation can go wrong (doing it properly and putting
+		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
+		 * a "work around" we provide this option. It will append its value to the
+		 * text that is found to be the longest string for the column - i.e. padding.
+		 * Generally you shouldn't need this!
+		 *  @type string
+		 *  @default <i>Empty string<i>
+		 *
+		 *  @name DataTable.defaults.column.contentPadding
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          {
+		 *            "contentPadding": "mmm"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sContentPadding": "",
+	
+	
+		/**
+		 * Allows a default value to be given for a column's data, and will be used
+		 * whenever a null data source is encountered (this can be because `data`
+		 * is set to null, or because the data source itself is null).
+		 *  @type string
+		 *  @default null
+		 *
+		 *  @name DataTable.defaults.column.defaultContent
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          {
+		 *            "data": null,
+		 *            "defaultContent": "Edit",
+		 *            "targets": [ -1 ]
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          {
+		 *            "data": null,
+		 *            "defaultContent": "Edit"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sDefaultContent": null,
+	
+	
+		/**
+		 * This parameter is only used in DataTables' server-side processing. It can
+		 * be exceptionally useful to know what columns are being displayed on the
+		 * client side, and to map these to database fields. When defined, the names
+		 * also allow DataTables to reorder information from the server if it comes
+		 * back in an unexpected order (i.e. if you switch your columns around on the
+		 * client-side, your server-side code does not also need updating).
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *
+		 *  @name DataTable.defaults.column.name
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "name": "engine", "targets": [ 0 ] },
+		 *          { "name": "browser", "targets": [ 1 ] },
+		 *          { "name": "platform", "targets": [ 2 ] },
+		 *          { "name": "version", "targets": [ 3 ] },
+		 *          { "name": "grade", "targets": [ 4 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "name": "engine" },
+		 *          { "name": "browser" },
+		 *          { "name": "platform" },
+		 *          { "name": "version" },
+		 *          { "name": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sName": "",
+	
+	
+		/**
+		 * Defines a data source type for the ordering which can be used to read
+		 * real-time information from the table (updating the internally cached
+		 * version) prior to ordering. This allows ordering to occur on user
+		 * editable elements such as form inputs.
+		 *  @type string
+		 *  @default std
+		 *
+		 *  @name DataTable.defaults.column.orderDataType
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "orderDataType": "dom-text", "targets": [ 2, 3 ] },
+		 *          { "type": "numeric", "targets": [ 3 ] },
+		 *          { "orderDataType": "dom-select", "targets": [ 4 ] },
+		 *          { "orderDataType": "dom-checkbox", "targets": [ 5 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          null,
+		 *          null,
+		 *          { "orderDataType": "dom-text" },
+		 *          { "orderDataType": "dom-text", "type": "numeric" },
+		 *          { "orderDataType": "dom-select" },
+		 *          { "orderDataType": "dom-checkbox" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sSortDataType": "std",
+	
+	
+		/**
+		 * The title of this column.
+		 *  @type string
+		 *  @default null <i>Derived from the 'TH' value for this column in the
+		 *    original HTML table.</i>
+		 *
+		 *  @name DataTable.defaults.column.title
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "title": "My column title", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "title": "My column title" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sTitle": null,
+	
+	
+		/**
+		 * The type allows you to specify how the data for this column will be
+		 * ordered. Four types (string, numeric, date and html (which will strip
+		 * HTML tags before ordering)) are currently available. Note that only date
+		 * formats understood by Javascript's Date() object will be accepted as type
+		 * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string',
+		 * 'numeric', 'date' or 'html' (by default). Further types can be adding
+		 * through plug-ins.
+		 *  @type string
+		 *  @default null <i>Auto-detected from raw data</i>
+		 *
+		 *  @name DataTable.defaults.column.type
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "type": "html", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "type": "html" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sType": null,
+	
+	
+		/**
+		 * Defining the width of the column, this parameter may take any CSS value
+		 * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not
+		 * been given a specific width through this interface ensuring that the table
+		 * remains readable.
+		 *  @type string
+		 *  @default null <i>Automatic</i>
+		 *
+		 *  @name DataTable.defaults.column.width
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using `columnDefs`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columnDefs": [
+		 *          { "width": "20%", "targets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using `columns`
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "columns": [
+		 *          { "width": "20%" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sWidth": null
+	};
+	
+	_fnHungarianMap( DataTable.defaults.column );
+	
+	
+	
+	/**
+	 * DataTables settings object - this holds all the information needed for a
+	 * given table, including configuration, data and current application of the
+	 * table options. DataTables does not have a single instance for each DataTable
+	 * with the settings attached to that instance, but rather instances of the
+	 * DataTable "class" are created on-the-fly as needed (typically by a
+	 * $().dataTable() call) and the settings object is then applied to that
+	 * instance.
+	 *
+	 * Note that this object is related to {@link DataTable.defaults} but this
+	 * one is the internal data store for DataTables's cache of columns. It should
+	 * NOT be manipulated outside of DataTables. Any configuration should be done
+	 * through the initialisation options.
+	 *  @namespace
+	 *  @todo Really should attach the settings object to individual instances so we
+	 *    don't need to create new instances on each $().dataTable() call (if the
+	 *    table already exists). It would also save passing oSettings around and
+	 *    into every single function. However, this is a very significant
+	 *    architecture change for DataTables and will almost certainly break
+	 *    backwards compatibility with older installations. This is something that
+	 *    will be done in 2.0.
+	 */
+	DataTable.models.oSettings = {
+		/**
+		 * Primary features of DataTables and their enablement state.
+		 *  @namespace
+		 */
+		"oFeatures": {
+	
+			/**
+			 * Flag to say if DataTables should automatically try to calculate the
+			 * optimum table and columns widths (true) or not (false).
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bAutoWidth": null,
+	
+			/**
+			 * Delay the creation of TR and TD elements until they are actually
+			 * needed by a driven page draw. This can give a significant speed
+			 * increase for Ajax source and Javascript source data, but makes no
+			 * difference at all fro DOM and server-side processing tables.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bDeferRender": null,
+	
+			/**
+			 * Enable filtering on the table or not. Note that if this is disabled
+			 * then there is no filtering at all on the table, including fnFilter.
+			 * To just remove the filtering input use sDom and remove the 'f' option.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bFilter": null,
+	
+			/**
+			 * Table information element (the 'Showing x of y records' div) enable
+			 * flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bInfo": null,
+	
+			/**
+			 * Present a user control allowing the end user to change the page size
+			 * when pagination is enabled.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bLengthChange": null,
+	
+			/**
+			 * Pagination enabled or not. Note that if this is disabled then length
+			 * changing must also be disabled.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bPaginate": null,
+	
+			/**
+			 * Processing indicator enable flag whenever DataTables is enacting a
+			 * user request - typically an Ajax request for server-side processing.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bProcessing": null,
+	
+			/**
+			 * Server-side processing enabled flag - when enabled DataTables will
+			 * get all data from the server for every draw - there is no filtering,
+			 * sorting or paging done on the client-side.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bServerSide": null,
+	
+			/**
+			 * Sorting enablement flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSort": null,
+	
+			/**
+			 * Multi-column sorting
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSortMulti": null,
+	
+			/**
+			 * Apply a class to the columns which are being sorted to provide a
+			 * visual highlight or not. This can slow things down when enabled since
+			 * there is a lot of DOM interaction.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSortClasses": null,
+	
+			/**
+			 * State saving enablement flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bStateSave": null
+		},
+	
+	
+		/**
+		 * Scrolling settings for a table.
+		 *  @namespace
+		 */
+		"oScroll": {
+			/**
+			 * When the table is shorter in height than sScrollY, collapse the
+			 * table container down to the height of the table (when true).
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bCollapse": null,
+	
+			/**
+			 * Width of the scrollbar for the web-browser's platform. Calculated
+			 * during table initialisation.
+			 *  @type int
+			 *  @default 0
+			 */
+			"iBarWidth": 0,
+	
+			/**
+			 * Viewport width for horizontal scrolling. Horizontal scrolling is
+			 * disabled if an empty string.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 */
+			"sX": null,
+	
+			/**
+			 * Width to expand the table to when using x-scrolling. Typically you
+			 * should not need to use this.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 *  @deprecated
+			 */
+			"sXInner": null,
+	
+			/**
+			 * Viewport height for vertical scrolling. Vertical scrolling is disabled
+			 * if an empty string.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 */
+			"sY": null
+		},
+	
+		/**
+		 * Language information for the table.
+		 *  @namespace
+		 *  @extends DataTable.defaults.oLanguage
+		 */
+		"oLanguage": {
+			/**
+			 * Information callback function. See
+			 * {@link DataTable.defaults.fnInfoCallback}
+			 *  @type function
+			 *  @default null
+			 */
+			"fnInfoCallback": null
+		},
+	
+		/**
+		 * Browser support parameters
+		 *  @namespace
+		 */
+		"oBrowser": {
+			/**
+			 * Indicate if the browser incorrectly calculates width:100% inside a
+			 * scrolling element (IE6/7)
+			 *  @type boolean
+			 *  @default false
+			 */
+			"bScrollOversize": false,
+	
+			/**
+			 * Determine if the vertical scrollbar is on the right or left of the
+			 * scrolling container - needed for rtl language layout, although not
+			 * all browsers move the scrollbar (Safari).
+			 *  @type boolean
+			 *  @default false
+			 */
+			"bScrollbarLeft": false
+		},
+	
+	
+		"ajax": null,
+	
+	
+		/**
+		 * Array referencing the nodes which are used for the features. The
+		 * parameters of this object match what is allowed by sDom - i.e.
+		 *   <ul>
+		 *     <li>'l' - Length changing</li>
+		 *     <li>'f' - Filtering input</li>
+		 *     <li>'t' - The table!</li>
+		 *     <li>'i' - Information</li>
+		 *     <li>'p' - Pagination</li>
+		 *     <li>'r' - pRocessing</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aanFeatures": [],
+	
+		/**
+		 * Store data information - see {@link DataTable.models.oRow} for detailed
+		 * information.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoData": [],
+	
+		/**
+		 * Array of indexes which are in the current display (after filtering etc)
+		 *  @type array
+		 *  @default []
+		 */
+		"aiDisplay": [],
+	
+		/**
+		 * Array of indexes for display - no filtering
+		 *  @type array
+		 *  @default []
+		 */
+		"aiDisplayMaster": [],
+	
+		/**
+		 * Store information about each column that is in use
+		 *  @type array
+		 *  @default []
+		 */
+		"aoColumns": [],
+	
+		/**
+		 * Store information about the table's header
+		 *  @type array
+		 *  @default []
+		 */
+		"aoHeader": [],
+	
+		/**
+		 * Store information about the table's footer
+		 *  @type array
+		 *  @default []
+		 */
+		"aoFooter": [],
+	
+		/**
+		 * Store the applied global search information in case we want to force a
+		 * research or compare the old search to a new one.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @namespace
+		 *  @extends DataTable.models.oSearch
+		 */
+		"oPreviousSearch": {},
+	
+		/**
+		 * Store the applied search for each column - see
+		 * {@link DataTable.models.oSearch} for the format that is used for the
+		 * filtering information for each column.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoPreSearchCols": [],
+	
+		/**
+		 * Sorting that is applied to the table. Note that the inner arrays are
+		 * used in the following manner:
+		 * <ul>
+		 *   <li>Index 0 - column number</li>
+		 *   <li>Index 1 - current sorting direction</li>
+		 * </ul>
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @todo These inner arrays should really be objects
+		 */
+		"aaSorting": null,
+	
+		/**
+		 * Sorting that is always applied to the table (i.e. prefixed in front of
+		 * aaSorting).
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"aaSortingFixed": [],
+	
+		/**
+		 * Classes to use for the striping of a table.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"asStripeClasses": null,
+	
+		/**
+		 * If restoring a table - we should restore its striping classes as well
+		 *  @type array
+		 *  @default []
+		 */
+		"asDestroyStripes": [],
+	
+		/**
+		 * If restoring a table - we should restore its width
+		 *  @type int
+		 *  @default 0
+		 */
+		"sDestroyWidth": 0,
+	
+		/**
+		 * Callback functions array for every time a row is inserted (i.e. on a draw).
+		 *  @type array
+		 *  @default []
+		 */
+		"aoRowCallback": [],
+	
+		/**
+		 * Callback functions for the header on each draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoHeaderCallback": [],
+	
+		/**
+		 * Callback function for the footer on each draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoFooterCallback": [],
+	
+		/**
+		 * Array of callback functions for draw callback functions
+		 *  @type array
+		 *  @default []
+		 */
+		"aoDrawCallback": [],
+	
+		/**
+		 * Array of callback functions for row created function
+		 *  @type array
+		 *  @default []
+		 */
+		"aoRowCreatedCallback": [],
+	
+		/**
+		 * Callback functions for just before the table is redrawn. A return of
+		 * false will be used to cancel the draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoPreDrawCallback": [],
+	
+		/**
+		 * Callback functions for when the table has been initialised.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoInitComplete": [],
+	
+	
+		/**
+		 * Callbacks for modifying the settings to be stored for state saving, prior to
+		 * saving state.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateSaveParams": [],
+	
+		/**
+		 * Callbacks for modifying the settings that have been stored for state saving
+		 * prior to using the stored values to restore the state.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoadParams": [],
+	
+		/**
+		 * Callbacks for operating on the settings object once the saved state has been
+		 * loaded
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoaded": [],
+	
+		/**
+		 * Cache the table ID for quick access
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sTableId": "",
+	
+		/**
+		 * The TABLE node for the main table
+		 *  @type node
+		 *  @default null
+		 */
+		"nTable": null,
+	
+		/**
+		 * Permanent ref to the thead element
+		 *  @type node
+		 *  @default null
+		 */
+		"nTHead": null,
+	
+		/**
+		 * Permanent ref to the tfoot element - if it exists
+		 *  @type node
+		 *  @default null
+		 */
+		"nTFoot": null,
+	
+		/**
+		 * Permanent ref to the tbody element
+		 *  @type node
+		 *  @default null
+		 */
+		"nTBody": null,
+	
+		/**
+		 * Cache the wrapper node (contains all DataTables controlled elements)
+		 *  @type node
+		 *  @default null
+		 */
+		"nTableWrapper": null,
+	
+		/**
+		 * Indicate if when using server-side processing the loading of data
+		 * should be deferred until the second draw.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bDeferLoading": false,
+	
+		/**
+		 * Indicate if all required information has been read in
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bInitialised": false,
+	
+		/**
+		 * Information about open rows. Each object in the array has the parameters
+		 * 'nTr' and 'nParent'
+		 *  @type array
+		 *  @default []
+		 */
+		"aoOpenRows": [],
+	
+		/**
+		 * Dictate the positioning of DataTables' control elements - see
+		 * {@link DataTable.model.oInit.sDom}.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default null
+		 */
+		"sDom": null,
+	
+		/**
+		 * Which type of pagination should be used.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default two_button
+		 */
+		"sPaginationType": "two_button",
+	
+		/**
+		 * The state duration (for `stateSave`) in seconds.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type int
+		 *  @default 0
+		 */
+		"iStateDuration": 0,
+	
+		/**
+		 * Array of callback functions for state saving. Each array element is an
+		 * object with the following parameters:
+		 *   <ul>
+		 *     <li>function:fn - function to call. Takes two parameters, oSettings
+		 *       and the JSON string to save that has been thus far created. Returns
+		 *       a JSON string to be inserted into a json object
+		 *       (i.e. '"param": [ 0, 1, 2]')</li>
+		 *     <li>string:sName - name of callback</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateSave": [],
+	
+		/**
+		 * Array of callback functions for state loading. Each array element is an
+		 * object with the following parameters:
+		 *   <ul>
+		 *     <li>function:fn - function to call. Takes two parameters, oSettings
+		 *       and the object stored. May return false to cancel state loading</li>
+		 *     <li>string:sName - name of callback</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoad": [],
+	
+		/**
+		 * State that was saved. Useful for back reference
+		 *  @type object
+		 *  @default null
+		 */
+		"oSavedState": null,
+	
+		/**
+		 * State that was loaded. Useful for back reference
+		 *  @type object
+		 *  @default null
+		 */
+		"oLoadedState": null,
+	
+		/**
+		 * Source url for AJAX data for the table.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default null
+		 */
+		"sAjaxSource": null,
+	
+		/**
+		 * Property from a given object from which to read the table data from. This
+		 * can be an empty string (when not server-side processing), in which case
+		 * it is  assumed an an array is given directly.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 */
+		"sAjaxDataProp": null,
+	
+		/**
+		 * Note if draw should be blocked while getting data
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bAjaxDataGet": true,
+	
+		/**
+		 * The last jQuery XHR object that was used for server-side data gathering.
+		 * This can be used for working with the XHR information in one of the
+		 * callbacks
+		 *  @type object
+		 *  @default null
+		 */
+		"jqXHR": null,
+	
+		/**
+		 * JSON returned from the server in the last Ajax request
+		 *  @type object
+		 *  @default undefined
+		 */
+		"json": undefined,
+	
+		/**
+		 * Data submitted as part of the last Ajax request
+		 *  @type object
+		 *  @default undefined
+		 */
+		"oAjaxData": undefined,
+	
+		/**
+		 * Function to get the server-side data.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 */
+		"fnServerData": null,
+	
+		/**
+		 * Functions which are called prior to sending an Ajax request so extra
+		 * parameters can easily be sent to the server
+		 *  @type array
+		 *  @default []
+		 */
+		"aoServerParams": [],
+	
+		/**
+		 * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if
+		 * required).
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 */
+		"sServerMethod": null,
+	
+		/**
+		 * Format numbers for display.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 */
+		"fnFormatNumber": null,
+	
+		/**
+		 * List of options that can be used for the user selectable length menu.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"aLengthMenu": null,
+	
+		/**
+		 * Counter for the draws that the table does. Also used as a tracker for
+		 * server-side processing
+		 *  @type int
+		 *  @default 0
+		 */
+		"iDraw": 0,
+	
+		/**
+		 * Indicate if a redraw is being done - useful for Ajax
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bDrawing": false,
+	
+		/**
+		 * Draw index (iDraw) of the last error when parsing the returned data
+		 *  @type int
+		 *  @default -1
+		 */
+		"iDrawError": -1,
+	
+		/**
+		 * Paging display length
+		 *  @type int
+		 *  @default 10
+		 */
+		"_iDisplayLength": 10,
+	
+		/**
+		 * Paging start point - aiDisplay index
+		 *  @type int
+		 *  @default 0
+		 */
+		"_iDisplayStart": 0,
+	
+		/**
+		 * Server-side processing - number of records in the result set
+		 * (i.e. before filtering), Use fnRecordsTotal rather than
+		 * this property to get the value of the number of records, regardless of
+		 * the server-side processing setting.
+		 *  @type int
+		 *  @default 0
+		 *  @private
+		 */
+		"_iRecordsTotal": 0,
+	
+		/**
+		 * Server-side processing - number of records in the current display set
+		 * (i.e. after filtering). Use fnRecordsDisplay rather than
+		 * this property to get the value of the number of records, regardless of
+		 * the server-side processing setting.
+		 *  @type boolean
+		 *  @default 0
+		 *  @private
+		 */
+		"_iRecordsDisplay": 0,
+	
+		/**
+		 * Flag to indicate if jQuery UI marking and classes should be used.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 */
+		"bJUI": null,
+	
+		/**
+		 * The classes to use for the table
+		 *  @type object
+		 *  @default {}
+		 */
+		"oClasses": {},
+	
+		/**
+		 * Flag attached to the settings object so you can check in the draw
+		 * callback if filtering has been done in the draw. Deprecated in favour of
+		 * events.
+		 *  @type boolean
+		 *  @default false
+		 *  @deprecated
+		 */
+		"bFiltered": false,
+	
+		/**
+		 * Flag attached to the settings object so you can check in the draw
+		 * callback if sorting has been done in the draw. Deprecated in favour of
+		 * events.
+		 *  @type boolean
+		 *  @default false
+		 *  @deprecated
+		 */
+		"bSorted": false,
+	
+		/**
+		 * Indicate that if multiple rows are in the header and there is more than
+		 * one unique cell per column, if the top one (true) or bottom one (false)
+		 * should be used for sorting / title by DataTables.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 */
+		"bSortCellsTop": null,
+	
+		/**
+		 * Initialisation object that is used for the table
+		 *  @type object
+		 *  @default null
+		 */
+		"oInit": null,
+	
+		/**
+		 * Destroy callback functions - for plug-ins to attach themselves to the
+		 * destroy so they can clean up markup and events.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoDestroyCallback": [],
+	
+	
+		/**
+		 * Get the number of records in the current record set, before filtering
+		 *  @type function
+		 */
+		"fnRecordsTotal": function ()
+		{
+			return _fnDataSource( this ) == 'ssp' ?
+				this._iRecordsTotal * 1 :
+				this.aiDisplayMaster.length;
+		},
+	
+		/**
+		 * Get the number of records in the current record set, after filtering
+		 *  @type function
+		 */
+		"fnRecordsDisplay": function ()
+		{
+			return _fnDataSource( this ) == 'ssp' ?
+				this._iRecordsDisplay * 1 :
+				this.aiDisplay.length;
+		},
+	
+		/**
+		 * Get the display end point - aiDisplay index
+		 *  @type function
+		 */
+		"fnDisplayEnd": function ()
+		{
+			var
+				len      = this._iDisplayLength,
+				start    = this._iDisplayStart,
+				calc     = start + len,
+				records  = this.aiDisplay.length,
+				features = this.oFeatures,
+				paginate = features.bPaginate;
+	
+			if ( features.bServerSide ) {
+				return paginate === false || len === -1 ?
+					start + records :
+					Math.min( start+len, this._iRecordsDisplay );
+			}
+			else {
+				return ! paginate || calc>records || len===-1 ?
+					records :
+					calc;
+			}
+		},
+	
+		/**
+		 * The DataTables object for this table
+		 *  @type object
+		 *  @default null
+		 */
+		"oInstance": null,
+	
+		/**
+		 * Unique identifier for each instance of the DataTables object. If there
+		 * is an ID on the table node, then it takes that value, otherwise an
+		 * incrementing internal counter is used.
+		 *  @type string
+		 *  @default null
+		 */
+		"sInstance": null,
+	
+		/**
+		 * tabindex attribute value that is added to DataTables control elements, allowing
+		 * keyboard navigation of the table and its controls.
+		 */
+		"iTabIndex": 0,
+	
+		/**
+		 * DIV container for the footer scrolling table if scrolling
+		 */
+		"nScrollHead": null,
+	
+		/**
+		 * DIV container for the footer scrolling table if scrolling
+		 */
+		"nScrollFoot": null,
+	
+		/**
+		 * Last applied sort
+		 *  @type array
+		 *  @default []
+		 */
+		"aLastSort": [],
+	
+		/**
+		 * Stored plug-in instances
+		 *  @type object
+		 *  @default {}
+		 */
+		"oPlugins": {}
+	};
+
+	/**
+	 * Extension object for DataTables that is used to provide all extension
+	 * options.
+	 *
+	 * Note that the `DataTable.ext` object is available through
+	 * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is
+	 * also aliased to `jQuery.fn.dataTableExt` for historic reasons.
+	 *  @namespace
+	 *  @extends DataTable.models.ext
+	 */
+	
+	
+	/**
+	 * DataTables extensions
+	 * 
+	 * This namespace acts as a collection area for plug-ins that can be used to
+	 * extend DataTables capabilities. Indeed many of the build in methods
+	 * use this method to provide their own capabilities (sorting methods for
+	 * example).
+	 *
+	 * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy
+	 * reasons
+	 *
+	 *  @namespace
+	 */
+	DataTable.ext = _ext = {
+		/**
+		 * Element class names
+		 *
+		 *  @type object
+		 *  @default {}
+		 */
+		classes: {},
+	
+	
+		/**
+		 * Error reporting.
+		 * 
+		 * How should DataTables report an error. Can take the value 'alert' or
+		 * 'throw'
+		 *
+		 *  @type string
+		 *  @default alert
+		 */
+		errMode: "alert",
+	
+	
+		/**
+		 * Feature plug-ins.
+		 * 
+		 * This is an array of objects which describe the feature plug-ins that are
+		 * available to DataTables. These feature plug-ins are then available for
+		 * use through the `dom` initialisation option.
+		 * 
+		 * Each feature plug-in is described by an object which must have the
+		 * following properties:
+		 * 
+		 * * `fnInit` - function that is used to initialise the plug-in,
+		 * * `cFeature` - a character so the feature can be enabled by the `dom`
+		 *   instillation option. This is case sensitive.
+		 *
+		 * The `fnInit` function has the following input parameters:
+		 *
+		 * 1. `{object}` DataTables settings object: see
+		 *    {@link DataTable.models.oSettings}
+		 *
+		 * And the following return is expected:
+		 * 
+		 * * {node|null} The element which contains your feature. Note that the
+		 *   return may also be void if your plug-in does not require to inject any
+		 *   DOM elements into DataTables control (`dom`) - for example this might
+		 *   be useful when developing a plug-in which allows table control via
+		 *   keyboard entry
+		 *
+		 *  @type array
+		 *
+		 *  @example
+		 *    $.fn.dataTable.ext.features.push( {
+		 *      "fnInit": function( oSettings ) {
+		 *        return new TableTools( { "oDTSettings": oSettings } );
+		 *      },
+		 *      "cFeature": "T"
+		 *    } );
+		 */
+		feature: [],
+	
+	
+		/**
+		 * Row searching.
+		 * 
+		 * This method of searching is complimentary to the default type based
+		 * searching, and a lot more comprehensive as it allows you complete control
+		 * over the searching logic. Each element in this array is a function
+		 * (parameters described below) that is called for every row in the table,
+		 * and your logic decides if it should be included in the searching data set
+		 * or not.
+		 *
+		 * Searching functions have the following input parameters:
+		 *
+		 * 1. `{object}` DataTables settings object: see
+		 *    {@link DataTable.models.oSettings}
+		 * 2. `{array|object}` Data for the row to be processed (same as the
+		 *    original format that was passed in as the data source, or an array
+		 *    from a DOM data source
+		 * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which
+		 *    can be useful to retrieve the `TR` element if you need DOM interaction.
+		 *
+		 * And the following return is expected:
+		 *
+		 * * {boolean} Include the row in the searched result set (true) or not
+		 *   (false)
+		 *
+		 * Note that as with the main search ability in DataTables, technically this
+		 * is "filtering", since it is subtractive. However, for consistency in
+		 * naming we call it searching here.
+		 *
+		 *  @type array
+		 *  @default []
+		 *
+		 *  @example
+		 *    // The following example shows custom search being applied to the
+		 *    // fourth column (i.e. the data[3] index) based on two input values
+		 *    // from the end-user, matching the data in a certain range.
+		 *    $.fn.dataTable.ext.search.push(
+		 *      function( settings, data, dataIndex ) {
+		 *        var min = document.getElementById('min').value * 1;
+		 *        var max = document.getElementById('max').value * 1;
+		 *        var version = data[3] == "-" ? 0 : data[3]*1;
+		 *
+		 *        if ( min == "" && max == "" ) {
+		 *          return true;
+		 *        }
+		 *        else if ( min == "" && version < max ) {
+		 *          return true;
+		 *        }
+		 *        else if ( min < version && "" == max ) {
+		 *          return true;
+		 *        }
+		 *        else if ( min < version && version < max ) {
+		 *          return true;
+		 *        }
+		 *        return false;
+		 *      }
+		 *    );
+		 */
+		search: [],
+	
+	
+		/**
+		 * Internal functions, exposed for used in plug-ins.
+		 * 
+		 * Please note that you should not need to use the internal methods for
+		 * anything other than a plug-in (and even then, try to avoid if possible).
+		 * The internal function may change between releases.
+		 *
+		 *  @type object
+		 *  @default {}
+		 */
+		internal: {},
+	
+	
+		/**
+		 * Legacy configuration options. Enable and disable legacy options that
+		 * are available in DataTables.
+		 *
+		 *  @type object
+		 */
+		legacy: {
+			/**
+			 * Enable / disable DataTables 1.9 compatible server-side processing
+			 * requests
+			 *
+			 *  @type boolean
+			 *  @default null
+			 */
+			ajax: null
+		},
+	
+	
+		/**
+		 * Pagination plug-in methods.
+		 * 
+		 * Each entry in this object is a function and defines which buttons should
+		 * be shown by the pagination rendering method that is used for the table:
+		 * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the
+		 * buttons are displayed in the document, while the functions here tell it
+		 * what buttons to display. This is done by returning an array of button
+		 * descriptions (what each button will do).
+		 *
+		 * Pagination types (the four built in options and any additional plug-in
+		 * options defined here) can be used through the `paginationType`
+		 * initialisation parameter.
+		 *
+		 * The functions defined take two parameters:
+		 *
+		 * 1. `{int} page` The current page index
+		 * 2. `{int} pages` The number of pages in the table
+		 *
+		 * Each function is expected to return an array where each element of the
+		 * array can be one of:
+		 *
+		 * * `first` - Jump to first page when activated
+		 * * `last` - Jump to last page when activated
+		 * * `previous` - Show previous page when activated
+		 * * `next` - Show next page when activated
+		 * * `{int}` - Show page of the index given
+		 * * `{array}` - A nested array containing the above elements to add a
+		 *   containing 'DIV' element (might be useful for styling).
+		 *
+		 * Note that DataTables v1.9- used this object slightly differently whereby
+		 * an object with two functions would be defined for each plug-in. That
+		 * ability is still supported by DataTables 1.10+ to provide backwards
+		 * compatibility, but this option of use is now decremented and no longer
+		 * documented in DataTables 1.10+.
+		 *
+		 *  @type object
+		 *  @default {}
+		 *
+		 *  @example
+		 *    // Show previous, next and current page buttons only
+		 *    $.fn.dataTableExt.oPagination.current = function ( page, pages ) {
+		 *      return [ 'previous', page, 'next' ];
+		 *    };
+		 */
+		pager: {},
+	
+	
+		renderer: {
+			pageButton: {},
+			header: {}
+		},
+	
+	
+		/**
+		 * Ordering plug-ins - custom data source
+		 * 
+		 * The extension options for ordering of data available here is complimentary
+		 * to the default type based ordering that DataTables typically uses. It
+		 * allows much greater control over the the data that is being used to
+		 * order a column, but is necessarily therefore more complex.
+		 * 
+		 * This type of ordering is useful if you want to do ordering based on data
+		 * live from the DOM (for example the contents of an 'input' element) rather
+		 * than just the static string that DataTables knows of.
+		 * 
+		 * The way these plug-ins work is that you create an array of the values you
+		 * wish to be ordering for the column in question and then return that
+		 * array. The data in the array much be in the index order of the rows in
+		 * the table (not the currently ordering order!). Which order data gathering
+		 * function is run here depends on the `dt-init columns.orderDataType`
+		 * parameter that is used for the column (if any).
+		 *
+		 * The functions defined take two parameters:
+		 *
+		 * 1. `{object}` DataTables settings object: see
+		 *    {@link DataTable.models.oSettings}
+		 * 2. `{int}` Target column index
+		 *
+		 * Each function is expected to return an array:
+		 *
+		 * * `{array}` Data for the column to be ordering upon
+		 *
+		 *  @type array
+		 *
+		 *  @example
+		 *    // Ordering using `input` node values
+		 *    $.fn.dataTable.ext.order['dom-text'] = function  ( settings, col )
+		 *    {
+		 *      return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+		 *        return $('input', td).val();
+		 *      } );
+		 *    }
+		 */
+		order: {},
+	
+	
+		/**
+		 * Type based plug-ins.
+		 *
+		 * Each column in DataTables has a type assigned to it, either by automatic
+		 * detection or by direct assignment using the `type` option for the column.
+		 * The type of a column will effect how it is ordering and search (plug-ins
+		 * can also make use of the column type if required).
+		 *
+		 * @namespace
+		 */
+		type: {
+			/**
+			 * Type detection functions.
+			 *
+			 * The functions defined in this object are used to automatically detect
+			 * a column's type, making initialisation of DataTables super easy, even
+			 * when complex data is in the table.
+			 *
+			 * The functions defined take two parameters:
+			 *
+		     *  1. `{*}` Data from the column cell to be analysed
+		     *  2. `{settings}` DataTables settings object. This can be used to
+		     *     perform context specific type detection - for example detection
+		     *     based on language settings such as using a comma for a decimal
+		     *     place. Generally speaking the options from the settings will not
+		     *     be required
+			 *
+			 * Each function is expected to return:
+			 *
+			 * * `{string|null}` Data type detected, or null if unknown (and thus
+			 *   pass it on to the other type detection functions.
+			 *
+			 *  @type array
+			 *
+			 *  @example
+			 *    // Currency type detection plug-in:
+			 *    $.fn.dataTable.ext.type.detect.push(
+			 *      function ( data, settings ) {
+			 *        // Check the numeric part
+			 *        if ( ! $.isNumeric( data.substring(1) ) ) {
+			 *          return null;
+			 *        }
+			 *
+			 *        // Check prefixed by currency
+			 *        if ( data.charAt(0) == '$' || data.charAt(0) == '&pound;' ) {
+			 *          return 'currency';
+			 *        }
+			 *        return null;
+			 *      }
+			 *    );
+			 */
+			detect: [],
+	
+	
+			/**
+			 * Type based search formatting.
+			 *
+			 * The type based searching functions can be used to pre-format the
+			 * data to be search on. For example, it can be used to strip HTML
+			 * tags or to de-format telephone numbers for numeric only searching.
+			 *
+			 * Note that is a search is not defined for a column of a given type,
+			 * no search formatting will be performed.
+			 * 
+			 * Pre-processing of searching data plug-ins - When you assign the sType
+			 * for a column (or have it automatically detected for you by DataTables
+			 * or a type detection plug-in), you will typically be using this for
+			 * custom sorting, but it can also be used to provide custom searching
+			 * by allowing you to pre-processing the data and returning the data in
+			 * the format that should be searched upon. This is done by adding
+			 * functions this object with a parameter name which matches the sType
+			 * for that target column. This is the corollary of <i>afnSortData</i>
+			 * for searching data.
+			 *
+			 * The functions defined take a single parameter:
+			 *
+		     *  1. `{*}` Data from the column cell to be prepared for searching
+			 *
+			 * Each function is expected to return:
+			 *
+			 * * `{string|null}` Formatted string that will be used for the searching.
+			 *
+			 *  @type object
+			 *  @default {}
+			 *
+			 *  @example
+			 *    $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) {
+			 *      return d.replace(/\n/g," ").replace( /<.*?>/g, "" );
+			 *    }
+			 */
+			search: {},
+	
+	
+			/**
+			 * Type based ordering.
+			 *
+			 * The column type tells DataTables what ordering to apply to the table
+			 * when a column is sorted upon. The order for each type that is defined,
+			 * is defined by the functions available in this object.
+			 *
+			 * Each ordering option can be described by three properties added to
+			 * this object:
+			 *
+			 * * `{type}-pre` - Pre-formatting function
+			 * * `{type}-asc` - Ascending order function
+			 * * `{type}-desc` - Descending order function
+			 *
+			 * All three can be used together, only `{type}-pre` or only
+			 * `{type}-asc` and `{type}-desc` together. It is generally recommended
+			 * that only `{type}-pre` is used, as this provides the optimal
+			 * implementation in terms of speed, although the others are provided
+			 * for compatibility with existing Javascript sort functions.
+			 *
+			 * `{type}-pre`: Functions defined take a single parameter:
+			 *
+		     *  1. `{*}` Data from the column cell to be prepared for ordering
+			 *
+			 * And return:
+			 *
+			 * * `{*}` Data to be sorted upon
+			 *
+			 * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort
+			 * functions, taking two parameters:
+			 *
+		     *  1. `{*}` Data to compare to the second parameter
+		     *  2. `{*}` Data to compare to the first parameter
+			 *
+			 * And returning:
+			 *
+			 * * `{*}` Ordering match: <0 if first parameter should be sorted lower
+			 *   than the second parameter, ===0 if the two parameters are equal and
+			 *   >0 if the first parameter should be sorted height than the second
+			 *   parameter.
+			 * 
+			 *  @type object
+			 *  @default {}
+			 *
+			 *  @example
+			 *    // Numeric ordering of formatted numbers with a pre-formatter
+			 *    $.extend( $.fn.dataTable.ext.type.order, {
+			 *      "string-pre": function(x) {
+			 *        a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" );
+			 *        return parseFloat( a );
+			 *      }
+			 *    } );
+			 *
+			 *  @example
+			 *    // Case-sensitive string ordering, with no pre-formatting method
+			 *    $.extend( $.fn.dataTable.ext.order, {
+			 *      "string-case-asc": function(x,y) {
+			 *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+			 *      },
+			 *      "string-case-desc": function(x,y) {
+			 *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+			 *      }
+			 *    } );
+			 */
+			order: {}
+		},
+	
+		/**
+		 * Unique DataTables instance counter
+		 *
+		 * @type int
+		 * @private
+		 */
+		_unique: 0,
+	
+	
+		//
+		// Depreciated
+		// The following properties are retained for backwards compatiblity only.
+		// The should not be used in new projects and will be removed in a future
+		// version
+		//
+	
+		/**
+		 * Version check function.
+		 *  @type function
+		 *  @depreciated Since 1.10
+		 */
+		fnVersionCheck: DataTable.fnVersionCheck,
+	
+	
+		/**
+		 * Index for what 'this' index API functions should use
+		 *  @type int
+		 *  @deprecated Since v1.10
+		 */
+		iApiIndex: 0,
+	
+	
+		/**
+		 * jQuery UI class container
+		 *  @type object
+		 *  @deprecated Since v1.10
+		 */
+		oJUIClasses: {},
+	
+	
+		/**
+		 * Software version
+		 *  @type string
+		 *  @deprecated Since v1.10
+		 */
+		sVersion: DataTable.version
+	};
+	
+	
+	//
+	// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts
+	//
+	$.extend( _ext, {
+		afnFiltering: _ext.search,
+		aTypes:       _ext.type.detect,
+		ofnSearch:    _ext.type.search,
+		oSort:        _ext.type.order,
+		afnSortData:  _ext.order,
+		aoFeatures:   _ext.feature,
+		oApi:         _ext.internal,
+		oStdClasses:  _ext.classes,
+		oPagination:  _ext.pager
+	} );
+	
+	
+	$.extend( DataTable.ext.classes, {
+		"sTable": "dataTable",
+		"sNoFooter": "no-footer",
+	
+		/* Paging buttons */
+		"sPageButton": "paginate_button",
+		"sPageButtonActive": "current",
+		"sPageButtonDisabled": "disabled",
+	
+		/* Striping classes */
+		"sStripeOdd": "odd",
+		"sStripeEven": "even",
+	
+		/* Empty row */
+		"sRowEmpty": "dataTables_empty",
+	
+		/* Features */
+		"sWrapper": "dataTables_wrapper",
+		"sFilter": "dataTables_filter",
+		"sInfo": "dataTables_info",
+		"sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */
+		"sLength": "dataTables_length",
+		"sProcessing": "dataTables_processing",
+	
+		/* Sorting */
+		"sSortAsc": "sorting_asc",
+		"sSortDesc": "sorting_desc",
+		"sSortable": "sorting", /* Sortable in both directions */
+		"sSortableAsc": "sorting_asc_disabled",
+		"sSortableDesc": "sorting_desc_disabled",
+		"sSortableNone": "sorting_disabled",
+		"sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */
+	
+		/* Filtering */
+		"sFilterInput": "",
+	
+		/* Page length */
+		"sLengthSelect": "",
+	
+		/* Scrolling */
+		"sScrollWrapper": "dataTables_scroll",
+		"sScrollHead": "dataTables_scrollHead",
+		"sScrollHeadInner": "dataTables_scrollHeadInner",
+		"sScrollBody": "dataTables_scrollBody",
+		"sScrollFoot": "dataTables_scrollFoot",
+		"sScrollFootInner": "dataTables_scrollFootInner",
+	
+		/* Misc */
+		"sHeaderTH": "",
+		"sFooterTH": "",
+	
+		// Deprecated
+		"sSortJUIAsc": "",
+		"sSortJUIDesc": "",
+		"sSortJUI": "",
+		"sSortJUIAscAllowed": "",
+		"sSortJUIDescAllowed": "",
+		"sSortJUIWrapper": "",
+		"sSortIcon": "",
+		"sJUIHeader": "",
+		"sJUIFooter": ""
+	} );
+	
+	
+	(function() {
+	
+	// Reused strings for better compression. Closure compiler appears to have a
+	// weird edge case where it is trying to expand strings rather than use the
+	// variable version. This results in about 200 bytes being added, for very
+	// little preference benefit since it this run on script load only.
+	var _empty = '';
+	_empty = '';
+	
+	var _stateDefault = _empty + 'ui-state-default';
+	var _sortIcon     = _empty + 'css_right ui-icon ui-icon-';
+	var _headerFooter = _empty + 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix';
+	
+	$.extend( DataTable.ext.oJUIClasses, DataTable.ext.classes, {
+		/* Full numbers paging buttons */
+		"sPageButton":         "fg-button ui-button "+_stateDefault,
+		"sPageButtonActive":   "ui-state-disabled",
+		"sPageButtonDisabled": "ui-state-disabled",
+	
+		/* Features */
+		"sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+
+			"ui-buttonset-multi paging_", /* Note that the type is postfixed */
+	
+		/* Sorting */
+		"sSortAsc":            _stateDefault+" sorting_asc",
+		"sSortDesc":           _stateDefault+" sorting_desc",
+		"sSortable":           _stateDefault+" sorting",
+		"sSortableAsc":        _stateDefault+" sorting_asc_disabled",
+		"sSortableDesc":       _stateDefault+" sorting_desc_disabled",
+		"sSortableNone":       _stateDefault+" sorting_disabled",
+		"sSortJUIAsc":         _sortIcon+"triangle-1-n",
+		"sSortJUIDesc":        _sortIcon+"triangle-1-s",
+		"sSortJUI":            _sortIcon+"carat-2-n-s",
+		"sSortJUIAscAllowed":  _sortIcon+"carat-1-n",
+		"sSortJUIDescAllowed": _sortIcon+"carat-1-s",
+		"sSortJUIWrapper":     "DataTables_sort_wrapper",
+		"sSortIcon":           "DataTables_sort_icon",
+	
+		/* Scrolling */
+		"sScrollHead": "dataTables_scrollHead "+_stateDefault,
+		"sScrollFoot": "dataTables_scrollFoot "+_stateDefault,
+	
+		/* Misc */
+		"sHeaderTH":  _stateDefault,
+		"sFooterTH":  _stateDefault,
+		"sJUIHeader": _headerFooter+" ui-corner-tl ui-corner-tr",
+		"sJUIFooter": _headerFooter+" ui-corner-bl ui-corner-br"
+	} );
+	
+	}());
+	
+	
+	
+	var extPagination = DataTable.ext.pager;
+	
+	function _numbers ( page, pages ) {
+		var
+			numbers = [],
+			buttons = extPagination.numbers_length,
+			half = Math.floor( buttons / 2 ),
+			i = 1;
+	
+		if ( pages <= buttons ) {
+			numbers = _range( 0, pages );
+		}
+		else if ( page <= half ) {
+			numbers = _range( 0, buttons-2 );
+			numbers.push( 'ellipsis' );
+			numbers.push( pages-1 );
+		}
+		else if ( page >= pages - 1 - half ) {
+			numbers = _range( pages-(buttons-2), pages );
+			numbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6
+			numbers.splice( 0, 0, 0 );
+		}
+		else {
+			numbers = _range( page-1, page+2 );
+			numbers.push( 'ellipsis' );
+			numbers.push( pages-1 );
+			numbers.splice( 0, 0, 'ellipsis' );
+			numbers.splice( 0, 0, 0 );
+		}
+	
+		numbers.DT_el = 'span';
+		return numbers;
+	}
+	
+	
+	$.extend( extPagination, {
+		simple: function ( page, pages ) {
+			return [ 'previous', 'next' ];
+		},
+	
+		full: function ( page, pages ) {
+			return [  'first', 'previous', 'next', 'last' ];
+		},
+	
+		simple_numbers: function ( page, pages ) {
+			return [ 'previous', _numbers(page, pages), 'next' ];
+		},
+	
+		full_numbers: function ( page, pages ) {
+			return [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];
+		},
+	
+		// For testing and plug-ins to use
+		_numbers: _numbers,
+		numbers_length: 7
+	} );
+	
+	
+	$.extend( true, DataTable.ext.renderer, {
+		pageButton: {
+			_: function ( settings, host, idx, buttons, page, pages ) {
+				var classes = settings.oClasses;
+				var lang = settings.oLanguage.oPaginate;
+				var btnDisplay, btnClass, counter=0;
+	
+				var attach = function( container, buttons ) {
+					var i, ien, node, button;
+					var clickHandler = function ( e ) {
+						_fnPageChange( settings, e.data.action, true );
+					};
+	
+					for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+						button = buttons[i];
+	
+						if ( $.isArray( button ) ) {
+							var inner = $( '<'+(button.DT_el || 'div')+'/>' )
+								.appendTo( container );
+							attach( inner, button );
+						}
+						else {
+							btnDisplay = '';
+							btnClass = '';
+	
+							switch ( button ) {
+								case 'ellipsis':
+									container.append('<span>&hellip;</span>');
+									break;
+	
+								case 'first':
+									btnDisplay = lang.sFirst;
+									btnClass = button + (page > 0 ?
+										'' : ' '+classes.sPageButtonDisabled);
+									break;
+	
+								case 'previous':
+									btnDisplay = lang.sPrevious;
+									btnClass = button + (page > 0 ?
+										'' : ' '+classes.sPageButtonDisabled);
+									break;
+	
+								case 'next':
+									btnDisplay = lang.sNext;
+									btnClass = button + (page < pages-1 ?
+										'' : ' '+classes.sPageButtonDisabled);
+									break;
+	
+								case 'last':
+									btnDisplay = lang.sLast;
+									btnClass = button + (page < pages-1 ?
+										'' : ' '+classes.sPageButtonDisabled);
+									break;
+	
+								default:
+									btnDisplay = button + 1;
+									btnClass = page === button ?
+										classes.sPageButtonActive : '';
+									break;
+							}
+	
+							if ( btnDisplay ) {
+								node = $('<a>', {
+										'class': classes.sPageButton+' '+btnClass,
+										'aria-controls': settings.sTableId,
+										'data-dt-idx': counter,
+										'tabindex': settings.iTabIndex,
+										'id': idx === 0 && typeof button === 'string' ?
+											settings.sTableId +'_'+ button :
+											null
+									} )
+									.html( btnDisplay )
+									.appendTo( container );
+	
+								_fnBindAction(
+									node, {action: button}, clickHandler
+								);
+	
+								counter++;
+							}
+						}
+					}
+				};
+	
+				// IE9 throws an 'unknown error' if document.activeElement is used
+				// inside an iframe or frame. Try / catch the error. Not good for
+				// accessibility, but neither are frames.
+				try {
+					// Because this approach is destroying and recreating the paging
+					// elements, focus is lost on the select button which is bad for
+					// accessibility. So we want to restore focus once the draw has
+					// completed
+					var activeEl = $(document.activeElement).data('dt-idx');
+	
+					attach( $(host).empty(), buttons );
+	
+					if ( activeEl !== null ) {
+						$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
+					}
+				}
+				catch (e) {}
+			}
+		}
+	} );
+	
+	
+	
+	var __numericReplace = function ( d, decimalPlace, re1, re2 ) {
+		if ( !d || d === '-' ) {
+			return -Infinity;
+		}
+	
+		// If a decimal place other than `.` is used, it needs to be given to the
+		// function so we can detect it and replace with a `.` which is the only
+		// decimal place Javascript recognises - it is not locale aware.
+		if ( decimalPlace ) {
+			d = _numToDecimal( d, decimalPlace );
+		}
+	
+		if ( d.replace ) {
+			if ( re1 ) {
+				d = d.replace( re1, '' );
+			}
+	
+			if ( re2 ) {
+				d = d.replace( re2, '' );
+			}
+		}
+	
+		return d * 1;
+	};
+	
+	
+	// Add the numeric 'deformatting' functions for sorting. This is done in a
+	// function to provide an easy ability for the language options to add
+	// additional methods if a non-period decimal place is used.
+	function _addNumericSort ( decimalPlace ) {
+		$.each(
+			{
+				// Plain numbers
+				"num": function ( d ) {
+					return __numericReplace( d, decimalPlace );
+				},
+	
+				// Formatted numbers
+				"num-fmt": function ( d ) {
+					return __numericReplace( d, decimalPlace, _re_formatted_numeric );
+				},
+	
+				// HTML numeric
+				"html-num": function ( d ) {
+					return __numericReplace( d, decimalPlace, _re_html );
+				},
+	
+				// HTML numeric, formatted
+				"html-num-fmt": function ( d ) {
+					return __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );
+				}
+			},
+			function ( key, fn ) {
+				_ext.type.order[ key+decimalPlace+'-pre' ] = fn;
+			}
+		);
+	}
+	
+	
+	// Default sort methods
+	$.extend( _ext.type.order, {
+		// Dates
+		"date-pre": function ( d ) {
+			return Date.parse( d ) || 0;
+		},
+	
+		// html
+		"html-pre": function ( a ) {
+			return _empty(a) ?
+				'' :
+				a.replace ?
+					a.replace( /<.*?>/g, "" ).toLowerCase() :
+					a+'';
+		},
+	
+		// string
+		"string-pre": function ( a ) {
+			// This is a little complex, but faster than always calling toString,
+			// http://jsperf.com/tostring-v-check
+			return _empty(a) ?
+				'' :
+				typeof a === 'string' ?
+					a.toLowerCase() :
+					! a.toString ?
+						'' :
+						a.toString();
+		},
+	
+		// string-asc and -desc are retained only for compatibility with the old
+		// sort methods
+		"string-asc": function ( x, y ) {
+			return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+		},
+	
+		"string-desc": function ( x, y ) {
+			return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+		}
+	} );
+	
+	
+	// Numeric sorting types - order doesn't matter here
+	_addNumericSort( '' );
+	
+	
+	// Built in type detection. See model.ext.aTypes for information about
+	// what is required from this methods.
+	$.extend( DataTable.ext.type.detect, [
+		// Plain numbers - first since V8 detects some plain numbers as dates
+		// e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...).
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _isNumber( d, decimal ) ? 'num'+decimal : null;
+		},
+	
+		// Dates (only those recognised by the browser's Date.parse)
+		function ( d, settings )
+		{
+			// V8 will remove any unknown characters at the start and end of the
+			// expression, leading to false matches such as `$245.12` or `10%` being
+			// a valid date. See forum thread 18941 for detail.
+			if ( d && ( ! _re_date_start.test(d) || ! _re_date_end.test(d) ) ) {
+				return null;
+			}
+			var parsed = Date.parse(d);
+			return (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;
+		},
+	
+		// Formatted numbers
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;
+		},
+	
+		// HTML numeric
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;
+		},
+	
+		// HTML numeric, formatted
+		function ( d, settings )
+		{
+			var decimal = settings.oLanguage.sDecimal;
+			return _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;
+		},
+	
+		// HTML (this is strict checking - there must be html)
+		function ( d, settings )
+		{
+			return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ?
+				'html' : null;
+		}
+	] );
+	
+	
+	
+	// Filter formatting functions. See model.ext.ofnSearch for information about
+	// what is required from these methods.
+	
+	
+	$.extend( DataTable.ext.type.search, {
+		html: function ( data ) {
+			return _empty(data) ?
+				data :
+				typeof data === 'string' ?
+					data
+						.replace( _re_new_lines, " " )
+						.replace( _re_html, "" ) :
+					'';
+		},
+	
+		string: function ( data ) {
+			return _empty(data) ?
+				data :
+				typeof data === 'string' ?
+					data.replace( _re_new_lines, " " ) :
+					data;
+		}
+	} );
+	
+	
+	
+	$.extend( true, DataTable.ext.renderer, {
+		header: {
+			_: function ( settings, cell, column, classes ) {
+				// No additional mark-up required
+				// Attach a sort listener to update on sort - note that using the
+				// `DT` namespace will allow the event to be removed automatically
+				// on destroy, while the `dt` namespaced event is the one we are
+				// listening for
+				$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {
+					if ( settings !== ctx ) { // need to check this this is the host
+						return;               // table, not a nested one
+					}
+	
+					var colIdx = column.idx;
+	
+					cell
+						.removeClass(
+							column.sSortingClass +' '+
+							classes.sSortAsc +' '+
+							classes.sSortDesc
+						)
+						.addClass( columns[ colIdx ] == 'asc' ?
+							classes.sSortAsc : columns[ colIdx ] == 'desc' ?
+								classes.sSortDesc :
+								column.sSortingClass
+						);
+				} );
+			},
+	
+			jqueryui: function ( settings, cell, column, classes ) {
+				var colIdx = column.idx;
+	
+				$('<div/>')
+					.addClass( classes.sSortJUIWrapper )
+					.append( cell.contents() )
+					.append( $('<span/>')
+						.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )
+					)
+					.appendTo( cell );
+	
+				// Attach a sort listener to update on sort
+				$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {
+					if ( settings !== ctx ) {
+						return;
+					}
+	
+					cell
+						.removeClass( classes.sSortAsc +" "+classes.sSortDesc )
+						.addClass( columns[ colIdx ] == 'asc' ?
+							classes.sSortAsc : columns[ colIdx ] == 'desc' ?
+								classes.sSortDesc :
+								column.sSortingClass
+						);
+	
+					cell
+						.find( 'span.'+classes.sSortIcon )
+						.removeClass(
+							classes.sSortJUIAsc +" "+
+							classes.sSortJUIDesc +" "+
+							classes.sSortJUI +" "+
+							classes.sSortJUIAscAllowed +" "+
+							classes.sSortJUIDescAllowed
+						)
+						.addClass( columns[ colIdx ] == 'asc' ?
+							classes.sSortJUIAsc : columns[ colIdx ] == 'desc' ?
+								classes.sSortJUIDesc :
+								column.sSortingClassJUI
+						);
+				} );
+			}
+		}
+	} );
+	
+	/*
+	 * Public helper functions. These aren't used internally by DataTables, or
+	 * called by any of the options passed into DataTables, but they can be used
+	 * externally by developers working with DataTables. They are helper functions
+	 * to make working with DataTables a little bit easier.
+	 */
+	
+	/**
+	 * Helpers for `columns.render`.
+	 *
+	 * The options defined here can be used with the `columns.render` initialisation
+	 * option to provide a display renderer. The following functions are defined:
+	 *
+	 * * `number` - Will format numeric data (defined by `columns.data`) for
+	 *   display, retaining the original unformatted data for sorting and filtering.
+	 *   It takes 4 parameters:
+	 *   * `string` - Thousands grouping separator
+	 *   * `string` - Decimal point indicator
+	 *   * `integer` - Number of decimal points to show
+	 *   * `string` (optional) - Prefix.
+	 *
+	 * @example
+	 *   // Column definition using the number renderer
+	 *   {
+	 *     data: "salary",
+	 *     render: $.fn.dataTable.render.number( '\'', '.', 0, '$' )
+	 *   }
+	 *
+	 * @namespace
+	 */
+	DataTable.render = {
+		number: function ( thousands, decimal, precision, prefix ) {
+			return {
+				display: function ( d ) {
+					var negative = d < 0 ? '-' : '';
+					d = Math.abs( parseFloat( d ) );
+	
+					var intPart = parseInt( d, 10 );
+					var floatPart = precision ?
+						decimal+(d - intPart).toFixed( precision ).substring( 2 ):
+						'';
+	
+					return negative + (prefix||'') +
+						intPart.toString().replace(
+							/\B(?=(\d{3})+(?!\d))/g, thousands
+						) +
+						floatPart;
+				}
+			};
+		}
+	};
+	
+	
+	/*
+	 * This is really a good bit rubbish this method of exposing the internal methods
+	 * publicly... - To be fixed in 2.0 using methods on the prototype
+	 */
+	
+	
+	/**
+	 * Create a wrapper function for exporting an internal functions to an external API.
+	 *  @param {string} fn API function name
+	 *  @returns {function} wrapped function
+	 *  @memberof DataTable#internal
+	 */
+	function _fnExternApiFunc (fn)
+	{
+		return function() {
+			var args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat(
+				Array.prototype.slice.call(arguments)
+			);
+			return DataTable.ext.internal[fn].apply( this, args );
+		};
+	}
+	
+	
+	/**
+	 * Reference to internal functions for use by plug-in developers. Note that
+	 * these methods are references to internal functions and are considered to be
+	 * private. If you use these methods, be aware that they are liable to change
+	 * between versions.
+	 *  @namespace
+	 */
+	$.extend( DataTable.ext.internal, {
+		_fnExternApiFunc: _fnExternApiFunc,
+		_fnBuildAjax: _fnBuildAjax,
+		_fnAjaxUpdate: _fnAjaxUpdate,
+		_fnAjaxParameters: _fnAjaxParameters,
+		_fnAjaxUpdateDraw: _fnAjaxUpdateDraw,
+		_fnAjaxDataSrc: _fnAjaxDataSrc,
+		_fnAddColumn: _fnAddColumn,
+		_fnColumnOptions: _fnColumnOptions,
+		_fnAdjustColumnSizing: _fnAdjustColumnSizing,
+		_fnVisibleToColumnIndex: _fnVisibleToColumnIndex,
+		_fnColumnIndexToVisible: _fnColumnIndexToVisible,
+		_fnVisbleColumns: _fnVisbleColumns,
+		_fnGetColumns: _fnGetColumns,
+		_fnColumnTypes: _fnColumnTypes,
+		_fnApplyColumnDefs: _fnApplyColumnDefs,
+		_fnHungarianMap: _fnHungarianMap,
+		_fnCamelToHungarian: _fnCamelToHungarian,
+		_fnLanguageCompat: _fnLanguageCompat,
+		_fnBrowserDetect: _fnBrowserDetect,
+		_fnAddData: _fnAddData,
+		_fnAddTr: _fnAddTr,
+		_fnNodeToDataIndex: _fnNodeToDataIndex,
+		_fnNodeToColumnIndex: _fnNodeToColumnIndex,
+		_fnGetCellData: _fnGetCellData,
+		_fnSetCellData: _fnSetCellData,
+		_fnSplitObjNotation: _fnSplitObjNotation,
+		_fnGetObjectDataFn: _fnGetObjectDataFn,
+		_fnSetObjectDataFn: _fnSetObjectDataFn,
+		_fnGetDataMaster: _fnGetDataMaster,
+		_fnClearTable: _fnClearTable,
+		_fnDeleteIndex: _fnDeleteIndex,
+		_fnInvalidateRow: _fnInvalidateRow,
+		_fnGetRowElements: _fnGetRowElements,
+		_fnCreateTr: _fnCreateTr,
+		_fnBuildHead: _fnBuildHead,
+		_fnDrawHead: _fnDrawHead,
+		_fnDraw: _fnDraw,
+		_fnReDraw: _fnReDraw,
+		_fnAddOptionsHtml: _fnAddOptionsHtml,
+		_fnDetectHeader: _fnDetectHeader,
+		_fnGetUniqueThs: _fnGetUniqueThs,
+		_fnFeatureHtmlFilter: _fnFeatureHtmlFilter,
+		_fnFilterComplete: _fnFilterComplete,
+		_fnFilterCustom: _fnFilterCustom,
+		_fnFilterColumn: _fnFilterColumn,
+		_fnFilter: _fnFilter,
+		_fnFilterCreateSearch: _fnFilterCreateSearch,
+		_fnEscapeRegex: _fnEscapeRegex,
+		_fnFilterData: _fnFilterData,
+		_fnFeatureHtmlInfo: _fnFeatureHtmlInfo,
+		_fnUpdateInfo: _fnUpdateInfo,
+		_fnInfoMacros: _fnInfoMacros,
+		_fnInitialise: _fnInitialise,
+		_fnInitComplete: _fnInitComplete,
+		_fnLengthChange: _fnLengthChange,
+		_fnFeatureHtmlLength: _fnFeatureHtmlLength,
+		_fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate,
+		_fnPageChange: _fnPageChange,
+		_fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing,
+		_fnProcessingDisplay: _fnProcessingDisplay,
+		_fnFeatureHtmlTable: _fnFeatureHtmlTable,
+		_fnScrollDraw: _fnScrollDraw,
+		_fnApplyToChildren: _fnApplyToChildren,
+		_fnCalculateColumnWidths: _fnCalculateColumnWidths,
+		_fnThrottle: _fnThrottle,
+		_fnConvertToWidth: _fnConvertToWidth,
+		_fnScrollingWidthAdjust: _fnScrollingWidthAdjust,
+		_fnGetWidestNode: _fnGetWidestNode,
+		_fnGetMaxLenString: _fnGetMaxLenString,
+		_fnStringToCss: _fnStringToCss,
+		_fnScrollBarWidth: _fnScrollBarWidth,
+		_fnSortFlatten: _fnSortFlatten,
+		_fnSort: _fnSort,
+		_fnSortAria: _fnSortAria,
+		_fnSortListener: _fnSortListener,
+		_fnSortAttachListener: _fnSortAttachListener,
+		_fnSortingClasses: _fnSortingClasses,
+		_fnSortData: _fnSortData,
+		_fnSaveState: _fnSaveState,
+		_fnLoadState: _fnLoadState,
+		_fnSettingsFromNode: _fnSettingsFromNode,
+		_fnLog: _fnLog,
+		_fnMap: _fnMap,
+		_fnBindAction: _fnBindAction,
+		_fnCallbackReg: _fnCallbackReg,
+		_fnCallbackFire: _fnCallbackFire,
+		_fnLengthOverflow: _fnLengthOverflow,
+		_fnRenderer: _fnRenderer,
+		_fnDataSource: _fnDataSource,
+		_fnRowAttributes: _fnRowAttributes,
+		_fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant
+		                                // in 1.10, so this dead-end function is
+		                                // added to prevent errors
+	} );
+	
+
+	// jQuery access
+	$.fn.dataTable = DataTable;
+
+	// Legacy aliases
+	$.fn.dataTableSettings = DataTable.settings;
+	$.fn.dataTableExt = DataTable.ext;
+
+	// With a capital `D` we return a DataTables API instance rather than a
+	// jQuery object
+	$.fn.DataTable = function ( opts ) {
+		return $(this).dataTable( opts ).api();
+	};
+
+	// All properties that are available to $.fn.dataTable should also be
+	// available on $.fn.DataTable
+	$.each( DataTable, function ( prop, val ) {
+		$.fn.DataTable[ prop ] = val;
+	} );
+
+
+	// Information about events fired by DataTables - for documentation.
+	/**
+	 * Draw event, fired whenever the table is redrawn on the page, at the same
+	 * point as fnDrawCallback. This may be useful for binding events or
+	 * performing calculations when the table is altered at all.
+	 *  @name DataTable#draw.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Search event, fired when the searching applied to the table (using the
+	 * built-in global search, or column filters) is altered.
+	 *  @name DataTable#search.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Page change event, fired when the paging of the table is altered.
+	 *  @name DataTable#page.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Order event, fired when the ordering applied to the table is altered.
+	 *  @name DataTable#order.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * DataTables initialisation complete event, fired when the table is fully
+	 * drawn, including Ajax data loaded, if Ajax data is required.
+	 *  @name DataTable#init.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The JSON object request from the server - only
+	 *    present if client-side Ajax sourced data is used</li></ol>
+	 */
+
+	/**
+	 * State save event, fired when the table has changed state a new state save
+	 * is required. This event allows modification of the state saving object
+	 * prior to actually doing the save, including addition or other state
+	 * properties (for plug-ins) or modification of a DataTables core property.
+	 *  @name DataTable#stateSaveParams.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The state information to be saved
+	 */
+
+	/**
+	 * State load event, fired when the table is loading state from the stored
+	 * data, but prior to the settings object being modified by the saved state
+	 * - allowing modification of the saved state is required or loading of
+	 * state for a plug-in.
+	 *  @name DataTable#stateLoadParams.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The saved state information
+	 */
+
+	/**
+	 * State loaded event, fired when state has been loaded from stored data and
+	 * the settings object has been modified by the loaded data.
+	 *  @name DataTable#stateLoaded.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The saved state information
+	 */
+
+	/**
+	 * Processing event, fired when DataTables is doing some kind of processing
+	 * (be it, order, searcg or anything else). It can be used to indicate to
+	 * the end user that there is something happening, or that something has
+	 * finished.
+	 *  @name DataTable#processing.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {boolean} bShow Flag for if DataTables is doing processing or not
+	 */
+
+	/**
+	 * Ajax (XHR) event, fired whenever an Ajax request is completed from a
+	 * request to made to the server for new data. This event is called before
+	 * DataTables processed the returned data, so it can also be used to pre-
+	 * process the data returned from the server, if needed.
+	 *
+	 * Note that this trigger is called in `fnServerData`, if you override
+	 * `fnServerData` and which to use this event, you need to trigger it in you
+	 * success function.
+	 *  @name DataTable#xhr.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 *  @param {object} json JSON returned from the server
+	 *
+	 *  @example
+	 *     // Use a custom property returned from the server in another DOM element
+	 *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {
+	 *       $('#status').html( json.status );
+	 *     } );
+	 *
+	 *  @example
+	 *     // Pre-process the data returned from the server
+	 *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {
+	 *       for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) {
+	 *         json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two;
+	 *       }
+	 *       // Note no return - manipulate the data directly in the JSON object.
+	 *     } );
+	 */
+
+	/**
+	 * Destroy event, fired when the DataTable is destroyed by calling fnDestroy
+	 * or passing the bDestroy:true parameter in the initialisation object. This
+	 * can be used to remove bound events, added DOM nodes, etc.
+	 *  @name DataTable#destroy.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Page length change event, fired when number of records to show on each
+	 * page (the length) is changed.
+	 *  @name DataTable#length.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 *  @param {integer} len New length
+	 */
+
+	/**
+	 * Column sizing has changed.
+	 *  @name DataTable#column-sizing.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Column visibility has changed.
+	 *  @name DataTable#column-visibility.dt
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 *  @param {int} column Column index
+	 *  @param {bool} vis `false` if column now hidden, or `true` if visible
+	 */
+
+	return $.fn.dataTable;
+}));
+
+}(window, document));
+
diff --git a/public/admin/js/DataTables/media/js/jquery.dataTables.min.js b/public/admin/js/DataTables/media/js/jquery.dataTables.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..c5936e583503c19bcc8def17f991b3547c4f0d02
--- /dev/null
+++ b/public/admin/js/DataTables/media/js/jquery.dataTables.min.js
@@ -0,0 +1,155 @@
+/*! DataTables 1.10.1
+ * ©2008-2014 SpryMedia Ltd - datatables.net/license
+ */
+(function(za,O,l){var N=function(h){function T(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()),d[c]=e,"o"===b[1]&&T(a[e])});a._hungarianMap=d}function G(a,b,c){a._hungarianMap||T(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==l&&(c||b[d]===l))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),G(a[d],b[d],c)):b[d]=b[e]})}function N(a){var b=p.defaults.oLanguage,c=a.sZeroRecords;
+!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&D(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&D(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&cb(a)}function db(a){w(a,"ordering","bSort");w(a,"orderMulti","bSortMulti");w(a,"orderClasses","bSortClasses");w(a,"orderCellsTop","bSortCellsTop");w(a,"order","aaSorting");w(a,"orderFixed","aaSortingFixed");w(a,"paging","bPaginate");
+w(a,"pagingType","sPaginationType");w(a,"pageLength","iDisplayLength");w(a,"searching","bFilter");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&G(p.models.oSearch,a[b])}function eb(a){w(a,"orderable","bSortable");w(a,"orderData","aDataSort");w(a,"orderSequence","asSorting");w(a,"orderDataType","sortDataType")}function fb(a){var a=a.oBrowser,b=h("<div/>").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",top:1,left:1,width:100,
+overflow:"scroll"}).append(h('<div class="test"/>').css({width:"100%",height:10}))).appendTo("body"),c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==c.offset().left;b.remove()}function gb(a,b,c,d,e,f){var g,j=!1;c!==l&&(g=c,j=!0);for(;d!==e;)a.hasOwnProperty(d)&&(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Aa(a,b){var c=p.defaults.column,d=a.aoColumns.length,c=h.extend({},p.models.oColumn,c,{nTh:b?b:O.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:
+"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},p.models.oSearch,c[d]);fa(a,d,null)}function fa(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==l&&null!==c&&(eb(c),G(p.defaults.column,c),c.mDataProp!==l&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&
+!c.sClass&&(c.sClass=c.className),h.extend(b,c),D(b,c,"sWidth","sWidthOrig"),"number"===typeof c.iDataSort&&(b.aDataSort=[c.iDataSort]),D(b,c,"aDataSort"));var g=b.mData,j=U(g),i=b.mRender?U(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b.fnGetData=function(a,b,c){var d=j(a,b,l,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return Ba(g)(a,b,c)};a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));
+a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function V(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ca(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=
+a.oScroll;(""!==b.sY||""!==b.sX)&&W(a);u(a,null,"column-sizing",[a])}function ga(a,b){var c=X(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function Y(a,b){var c=X(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function Z(a){return X(a,"bVisible").length}function X(a,b){var c=[];h.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Da(a){var b=a.aoColumns,c=a.aoData,d=p.ext.type.detect,e,f,g,j,i,h,m,n,k;e=0;for(f=b.length;e<f;e++)if(m=b[e],k=[],!m.sType&&m._sManualType)m.sType=
+m._sManualType;else if(!m.sType){g=0;for(j=d.length;g<j;g++){i=0;for(h=c.length;i<h&&!(k[i]===l&&(k[i]=A(a,i,e,"type")),n=d[g](k[i],a),!n||"html"===n);i++);if(n){m.sType=n;break}}m.sType||(m.sType="string")}}function hb(a,b,c,d){var e,f,g,j,i,o,m=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){o=b[e];var n=o.targets!==l?o.targets:o.aTargets;h.isArray(n)||(n=[n]);f=0;for(g=n.length;f<g;f++)if("number"===typeof n[f]&&0<=n[f]){for(;m.length<=n[f];)Aa(a);d(n[f],o)}else if("number"===typeof n[f]&&0>n[f])d(m.length+
+n[f],o);else if("string"===typeof n[f]){j=0;for(i=m.length;j<i;j++)("_all"==n[f]||h(m[j].nTh).hasClass(n[f]))&&d(j,o)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function I(a,b,c,d){var e=a.aoData.length,f=h.extend(!0,{},p.models.oRow,{src:c?"dom":"data"});f._aData=b;a.aoData.push(f);for(var b=a.aoColumns,f=0,g=b.length;f<g;f++)c&&Ea(a,e,f,A(a,e,f)),b[f].sType=null;a.aiDisplayMaster.push(e);(c||!a.oFeatures.bDeferRender)&&Fa(a,e,c,d);return e}function ha(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,
+e){c=ia(a,e);return I(a,c.data,e,c.cells)})}function A(a,b,c,d){var e=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,c=f.fnGetData(g,d,{settings:a,row:b,col:c});if(c===l)return a.iDrawError!=e&&null===j&&(P(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b,4),a.iDrawError=e),j;if((c===g||null===c)&&null!==j)c=j;else if("function"===typeof c)return c.call(g);return null===c&&"display"==d?"":c}function Ea(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,
+d,{settings:a,row:b,col:c})}function Ga(a){return h.map(a.match(/(\\.|[^\.])+/g),function(a){return a.replace(/\\./g,".")})}function U(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=U(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==l?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var g,
+j;if(""!==f){j=Ga(f);for(var i=0,h=j.length;i<h;i++){f=j[i].match($);g=j[i].match(Q);if(f){j[i]=j[i].replace($,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");i=0;for(h=a.length;i<h;i++)g.push(c(a[i],b,j));a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(Q,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===l)return l;a=a[j[i]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function Ba(a){if(h.isPlainObject(a))return Ba(a._);
+if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=Ga(e),f;f=e[e.length-1];for(var g,j,i=0,h=e.length-1;i<h;i++){g=e[i].match($);j=e[i].match(Q);if(g){e[i]=e[i].replace($,"");a[e[i]]=[];f=e.slice();f.splice(0,i+1);g=f.join(".");j=0;for(h=d.length;j<h;j++)f={},b(f,d[j],g),a[e[i]].push(f);return}j&&(e[i]=e[i].replace(Q,""),a=a[e[i]](d));if(null===
+a[e[i]]||a[e[i]]===l)a[e[i]]={};a=a[e[i]]}if(f.match(Q))a[f.replace(Q,"")](d);else a[f.replace($,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ha(a){return C(a.aoData,"_aData")}function ja(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0}function ka(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===l&&a.splice(d,1)}function la(a,b,c,d){var e=a.aoData[b],f;if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=
+ia(a,e).data;else{var g=e.anCells,j;if(g){c=0;for(f=g.length;c<f;c++){for(j=g[c];j.childNodes.length;)j.removeChild(j.firstChild);g[c].innerHTML=A(a,b,c,"display")}}}e._aSortData=null;e._aFilterData=null;a=a.aoColumns;if(d!==l)a[d].sType=null;else{c=0;for(f=a.length;c<f;c++)a[c].sType=null}Ia(e)}function ia(a,b){var c=[],d=[],e=b.firstChild,f,g,j,i=0,o,m=a.aoColumns,n=function(a,b,c){"string"===typeof a&&(b=a.indexOf("@"),-1!==b&&(a=a.substring(b+1),j["@"+a]=c.getAttribute(a)))},k=function(a){g=m[i];
+o=h.trim(a.innerHTML);g&&g._bAttrSrc?(j={display:o},n(g.mData.sort,j,a),n(g.mData.type,j,a),n(g.mData.filter,j,a),c.push(j)):c.push(o);i++};if(e)for(;e;){f=e.nodeName.toUpperCase();if("TD"==f||"TH"==f)k(e),d.push(e);e=e.nextSibling}else{d=b.anCells;e=0;for(f=d.length;e<f;e++)k(d[e])}return{data:c,cells:d}}function Fa(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],j,i,h,m,n;if(null===e.nTr){j=c||O.createElement("tr");e.nTr=j;e.anCells=g;j._DT_RowIndex=b;Ia(e);m=0;for(n=a.aoColumns.length;m<n;m++){h=a.aoColumns[m];
+i=c?d[m]:O.createElement(h.sCellType);g.push(i);if(!c||h.mRender||h.mData!==m)i.innerHTML=A(a,b,m,"display");h.sClass&&(i.className+=" "+h.sClass);h.bVisible&&!c?j.appendChild(i):!h.bVisible&&c&&i.parentNode.removeChild(i);h.fnCreatedCell&&h.fnCreatedCell.call(a.oInstance,i,A(a,b,m),f,b,m)}u(a,"aoRowCreatedCallback",null,[j,f,b])}e.nTr.setAttribute("role","row")}function Ia(a){var b=a.nTr,c=a._aData;if(b){c.DT_RowId&&(b.id=c.DT_RowId);if(c.DT_RowClass){var d=c.DT_RowClass.split(" ");a.__rowc=a.__rowc?
+Ja(a.__rowc.concat(d)):d;h(b).removeClass(a.__rowc.join(" ")).addClass(c.DT_RowClass)}c.DT_RowData&&h(b).data(c.DT_RowData)}}function ib(a){var b,c,d,e,f,g=a.nTHead,j=a.nTFoot,i=0===h("th, td",g).length,o=a.oClasses,m=a.aoColumns;i&&(e=h("<tr/>").appendTo(g));b=0;for(c=m.length;b<c;b++)f=m[b],d=h(f.nTh).addClass(f.sClass),i&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Ka(a,f.nTh,b))),f.sTitle!=d.html()&&
+d.html(f.sTitle),La(a,"header")(a,d,f,o);i&&aa(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(o.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(o.sFooterTH);if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=m[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ba(a,b,c){var d,e,f,g=[],j=[],i=a.aoColumns.length,o;if(b){c===l&&(c=!1);d=0;for(e=b.length;d<e;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&
+!c&&g[d].splice(f,1);j.push([])}d=0;for(e=g.length;d<e;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(o=i=1,j[d][f]===l){a.appendChild(g[d][f].cell);for(j[d][f]=1;g[d+i]!==l&&g[d][f].cell==g[d+i][f].cell;)j[d+i][f]=1,i++;for(;g[d][f+o]!==l&&g[d][f].cell==g[d][f+o].cell;){for(c=0;c<i;c++)j[d+c][f+o]=1;o++}h(g[d][f].cell).attr("rowspan",i).attr("colspan",o)}}}}function K(a){var b=u(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))B(a,!1);else{var b=
+[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==z(a),i=a.aiDisplay;a.bDrawing=!0;g!==l&&-1!==g&&(a._iDisplayStart=j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,o=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,B(a,!1);else if(j){if(!a.bDestroying&&!jb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:o;for(j=j?0:g;j<f;j++){var m=i[j],n=a.aoData[m];null===n.nTr&&Fa(a,m);m=n.nTr;if(0!==e){var k=d[c%e];n._sRowStripe!=
+k&&(h(m).removeClass(n._sRowStripe).addClass(k),n._sRowStripe=k)}u(a,"aoRowCallback",null,[m,n._aData,c,j]);b.push(m);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==z(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":e?d[0]:""}).append(h("<td />",{valign:"top",colSpan:Z(a),"class":a.oClasses.sRowEmpty}).html(c))[0];u(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ha(a),g,o,i]);u(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],
+Ha(a),g,o,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));u(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function L(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&kb(a);d?ca(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;K(a);a._drawHold=!1}function lb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),d=a.oFeatures,e=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});
+a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,o,m,n,k=0;k<f.length;k++){g=null;j=f[k];if("<"==j){i=h("<div/>")[0];o=f[k+1];if("'"==o||'"'==o){m="";for(n=2;f[k+n]!=o;)m+=f[k+n],n++;"H"==m?m=b.sJUIHeader:"F"==m&&(m=b.sJUIFooter);-1!=m.indexOf(".")?(o=m.split("."),i.id=o[0].substr(1,o[0].length-1),i.className=o[1]):"#"==m.charAt(0)?i.id=m.substr(1,m.length-1):i.className=m;k+=n}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==
+j&&d.bPaginate&&d.bLengthChange)g=mb(a);else if("f"==j&&d.bFilter)g=nb(a);else if("r"==j&&d.bProcessing)g=ob(a);else if("t"==j)g=pb(a);else if("i"==j&&d.bInfo)g=qb(a);else if("p"==j&&d.bPaginate)g=rb(a);else if(0!==p.ext.feature.length){i=p.ext.feature;n=0;for(o=i.length;n<o;n++)if(j==i[n].cFeature){g=i[n].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),e.append(g))}c.replaceWith(e)}function aa(a,b){var c=h(b).children("tr"),d,e,f,g,j,i,o,m,n,k;a.splice(0,a.length);f=0;for(i=c.length;f<
+i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){m=1*e.getAttribute("colspan");n=1*e.getAttribute("rowspan");m=!m||0===m||1===m?1:m;n=!n||0===n||1===n?1:n;g=0;for(j=a[f];j[g];)g++;o=g;k=1===m?!0:!1;for(j=0;j<m;j++)for(g=0;g<n;g++)a[f+g][o+j]={cell:e,unique:k},a[f+g].nTr=d}e=e.nextSibling}}}function ma(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],aa(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<
+g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function na(a,b,c){u(a,"aoServerParams","serverParams",[b]);if(b&&h.isArray(b)){var d={},e=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,g=a.ajax,j=a.oInstance;if(h.isPlainObject(g)&&g.data){f=g.data;var i=h.isFunction(f)?f(b):f,b=h.isFunction(f)&&i?i:h.extend(!0,b,i);delete g.data}i={data:b,success:function(b){var d=b.error||b.sError;
+d&&a.oApi._fnLog(a,0,d);a.json=b;u(a,null,"xhr",[a,b]);c(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=a.oApi._fnLog;"parsererror"==c?d(a,0,"Invalid JSON response",1):4===b.readyState&&d(a,0,"Ajax error",7);B(a,!1)}};a.oAjaxData=b;u(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),c,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(i,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,
+b,c,a):(a.jqXHR=h.ajax(h.extend(i,g)),g.data=f)}function jb(a){return a.bAjaxDataGet?(a.iDraw++,B(a,!0),na(a,sb(a),function(b){tb(a,b)}),!1):!0}function sb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,o,m,n=R(a);g=a._iDisplayStart;i=!1!==d.bPaginate?a._iDisplayLength:-1;var k=function(a,b){j.push({name:a,value:b})};k("sEcho",a.iDraw);k("iColumns",c);k("sColumns",C(b,"sName").join(","));k("iDisplayStart",g);k("iDisplayLength",i);var l={draw:a.iDraw,
+columns:[],order:[],start:g,length:i,search:{value:e.sSearch,regex:e.bRegex}};for(g=0;g<c;g++)o=b[g],m=f[g],i="function"==typeof o.mData?"function":o.mData,l.columns.push({data:i,name:o.sName,searchable:o.bSearchable,orderable:o.bSortable,search:{value:m.sSearch,regex:m.bRegex}}),k("mDataProp_"+g,i),d.bFilter&&(k("sSearch_"+g,m.sSearch),k("bRegex_"+g,m.bRegex),k("bSearchable_"+g,o.bSearchable)),d.bSort&&k("bSortable_"+g,o.bSortable);d.bFilter&&(k("sSearch",e.sSearch),k("bRegex",e.bRegex));d.bSort&&
+(h.each(n,function(a,b){l.order.push({column:b.col,dir:b.dir});k("iSortCol_"+a,b.col);k("sSortDir_"+a,b.dir)}),k("iSortingCols",n.length));b=p.ext.legacy.ajax;return null===b?a.sAjaxSource?j:l:b?j:l}function tb(a,b){var c=b.sEcho!==l?b.sEcho:b.draw,d=b.iTotalRecords!==l?b.iTotalRecords:b.recordsTotal,e=b.iTotalDisplayRecords!==l?b.iTotalDisplayRecords:b.recordsFiltered;if(c){if(1*c<a.iDraw)return;a.iDraw=1*c}ja(a);a._iRecordsTotal=parseInt(d,10);a._iRecordsDisplay=parseInt(e,10);c=oa(a,b);d=0;for(e=
+c.length;d<e;d++)I(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;K(a);a._bInitComplete||pa(a,b);a.bAjaxDataGet=!0;B(a,!1)}function oa(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==l?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?U(c)(b):b}function nb(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",
+{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!this.value?"":this.value;b!=e.sSearch&&(ca(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,K(a))},i=h("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT","ssp"===z(a)?Ma(f,400):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",
+function(b,c){if(a===c)try{i[0]!==O.activeElement&&i.val(e.sSearch)}catch(d){}});return b[0]}function ca(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};Da(a);if("ssp"!=z(a)){ub(a,b.sSearch,c,b.bEscapeRegex!==l?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)vb(a,e[b].sSearch,b,e[b].bEscapeRegex!==l?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);
+wb(a)}else f(b);a.bFiltered=!0;u(a,null,"search",[a])}function wb(a){for(var b=p.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<g;f++){for(var j=[],i=0,h=c.length;i<h;i++)e=c[i],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData,i)&&j.push(e);c.length=0;c.push.apply(c,j)}}function vb(a,b,c,d,e,f){if(""!==b)for(var g=a.aiDisplay,d=Na(b,d,e,f),e=g.length-1;0<=e;e--)b=a.aoData[g[e]]._aFilterData[c],d.test(b)||g.splice(e,1)}function ub(a,b,c,d,e,f){var d=Na(b,d,e,f),e=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,
+g;0!==p.ext.search.length&&(c=!0);g=xb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(g||c||e.length>b.length||0!==b.indexOf(e)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)d.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Na(a,b,c,d){a=b?a:Oa(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||"",function(a){return'"'===a.charAt(0)?a.match(/^"(.*)"$/)[1]:a}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function Oa(a){return a.replace(Vb,"\\$1")}function xb(a){var b=
+a.aoColumns,c,d,e,f,g,j,i,h,m=p.ext.type.search;c=!1;d=0;for(f=a.aoData.length;d<f;d++)if(h=a.aoData[d],!h._aFilterData){j=[];e=0;for(g=b.length;e<g;e++)if(c=b[e],c.bSearchable?(i=A(a,d,e,"filter"),i=m[c.sType]?m[c.sType](i):null!==i?i:""):i="",i)i.indexOf&&-1!==i.indexOf("&")&&(qa.innerHTML=i,i=Wb?qa.textContent:qa.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join("  ");c=!0}return c}function yb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,
+caseInsensitive:a.bCaseInsensitive}}function zb(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function qb(a){var b=a.sTableId,c=a.aanFeatures.i,d=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Ab,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Ab(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+
+1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Bb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,d,e,f,g,j));h(b).html(j)}}function Bb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,
+f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/e)))}function ra(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;if(a.bInitialised){lb(a);ib(a);ba(a,a.aoHeader);ba(a,a.aoFooter);B(a,!0);c.bAutoWidth&&Ca(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=s(f.sWidth));L(a);e=z(a);"ssp"!=e&&("ajax"==e?na(a,[],function(c){var f=oa(a,c);for(b=0;b<f.length;b++)I(a,f[b]);a.iInitDisplayStart=d;L(a);B(a,!1);pa(a,c)},a):(B(a,!1),
+pa(a)))}else setTimeout(function(){ra(a)},200)}function pa(a,b){a._bInitComplete=!0;b&&V(a);u(a,"aoInitComplete","init",[a,b])}function Pa(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Qa(a);u(a,null,"length",[a,c])}function mb(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=h.isArray(d[0]),f=e?d[0]:d,d=e?d[1]:d,e=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)e[0][g]=new Option(d[g],f[g]);var i=h("<div><label/></div>").addClass(b.sLength);
+a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Pa(a,h(this).val());K(a)});h(a.nTable).bind("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function rb(a){var b=a.sPaginationType,c=p.ext.pager[b],d="function"===typeof c,e=function(a){K(a)},b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+
+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),m=-1===i,b=m?0:Math.ceil(b/i),i=m?1:Math.ceil(h/i),h=c(b,i),n,m=0;for(n=f.p.length;m<n;m++)La(a,"pageButton")(a,f.p[m],m,h,b,i)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Ra(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==
+b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:P(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(u(a,null,"page",[a]),c&&K(a));return b}function ob(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function B(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");u(a,null,"processing",[a,b])}function pb(a){var b=h(a.nTable);b.attr("role",
+"grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),o=h(b[0].cloneNode(!1)),m=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");m.length||(m=null);c=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:s(d):"100%"}).append(h("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",
+width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append(b.children("thead")))).append("top"===j?g:null)).append(h("<div/>",{"class":f.sScrollBody}).css({overflow:"auto",height:!e?null:s(e),width:!d?null:s(d)}).append(b));m&&c.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:s(d):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(o.removeAttr("id").css("margin-left",0).append(b.children("tfoot")))).append("bottom"===j?g:
+null));var b=c.children(),n=b[0],f=b[1],k=m?b[2]:null;d&&h(f).scroll(function(){var a=this.scrollLeft;n.scrollLeft=a;m&&(k.scrollLeft=a)});a.nScrollHead=n;a.nScrollBody=f;a.nScrollFoot=k;a.aoDrawCallback.push({fn:W,sName:"scrolling"});return c[0]}function W(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,f=b.iBarWidth,g=h(a.nScrollHead),j=g[0].style,i=g.children("div"),o=i[0].style,m=i.children("table"),i=a.nScrollBody,n=h(i),k=i.style,l=h(a.nScrollFoot).children("div"),p=l.children("table"),r=h(a.nTHead),
+q=h(a.nTable),da=q[0],M=da.style,J=a.nTFoot?h(a.nTFoot):null,u=a.oBrowser,v=u.bScrollOversize,y,t,x,w,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};q.children("thead, tfoot").remove();z=r.clone().prependTo(q);y=r.find("tr");x=z.find("tr");z.find("th, td").removeAttr("tabindex");J&&(w=J.clone().prependTo(q),t=J.find("tr"),w=w.find("tr"));c||(k.width="100%",g[0].style.width="100%");h.each(ma(a,z),function(b,c){D=
+ga(a,b);c.style.width=a.aoColumns[D].sWidth});J&&F(function(a){a.style.width=""},w);b.bCollapse&&""!==e&&(k.height=n[0].offsetHeight+r[0].offsetHeight+"px");g=q.outerWidth();if(""===c){if(M.width="100%",v&&(q.find("tbody").height()>i.offsetHeight||"scroll"==n.css("overflow-y")))M.width=s(q.outerWidth()-f)}else""!==d?M.width=s(d):g==n.width()&&n.height()<q.height()?(M.width=s(g-f),q.outerWidth()>g-f&&(M.width=s(g))):M.width=s(g);g=q.outerWidth();F(E,x);F(function(a){C.push(a.innerHTML);A.push(s(h(a).css("width")))},
+x);F(function(a,b){a.style.width=A[b]},y);h(x).height(0);J&&(F(E,w),F(function(a){B.push(s(h(a).css("width")))},w),F(function(a,b){a.style.width=B[b]},t),h(w).height(0));F(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+C[b]+"</div>";a.style.width=A[b]},x);J&&F(function(a,b){a.innerHTML="";a.style.width=B[b]},w);if(q.outerWidth()<g){t=i.scrollHeight>i.offsetHeight||"scroll"==n.css("overflow-y")?g+f:g;if(v&&(i.scrollHeight>i.offsetHeight||"scroll"==n.css("overflow-y")))M.width=
+s(t-f);(""===c||""!==d)&&P(a,1,"Possible column misalignment",6)}else t="100%";k.width=s(t);j.width=s(t);J&&(a.nScrollFoot.style.width=s(t));!e&&v&&(k.height=s(da.offsetHeight+f));e&&b.bCollapse&&(k.height=s(e),b=c&&da.offsetWidth>i.offsetWidth?f:0,da.offsetHeight<i.offsetHeight&&(k.height=s(da.offsetHeight+b)));b=q.outerWidth();m[0].style.width=s(b);o.width=s(b);m=q.height()>i.clientHeight||"scroll"==n.css("overflow-y");u="padding"+(u.bScrollbarLeft?"Left":"Right");o[u]=m?f+"px":"0px";J&&(p[0].style.width=
+s(b),l[0].style.width=s(b),l[0].style[u]=m?f+"px":"0px");n.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)i.scrollTop=0}function F(a,b,c){for(var d=0,e=0,f=b.length,g,j;e<f;){g=b[e].firstChild;for(j=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,d):a(g,d),d++),g=g.nextSibling,j=c?j.nextSibling:null;e++}}function Ca(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,f=d.sX,g=d.sXInner,j=c.length,d=X(a,"bVisible"),i=h("th",a.nTHead),o=b.getAttribute("width"),m=b.parentNode,n=!1,k,l;for(k=0;k<
+d.length;k++)l=c[d[k]],null!==l.sWidth&&(l.sWidth=Cb(l.sWidthOrig,m),n=!0);if(!n&&!f&&!e&&j==Z(a)&&j==i.length)for(k=0;k<j;k++)c[k].sWidth=s(i.eq(k).width());else{j=h(b).clone().empty().css("visibility","hidden").removeAttr("id").append(h(a.nTHead).clone(!1)).append(h(a.nTFoot).clone(!1)).append(h("<tbody><tr/></tbody>"));j.find("tfoot th, tfoot td").css("width","");var p=j.find("tbody tr"),i=ma(a,j.find("thead")[0]);for(k=0;k<d.length;k++)l=c[d[k]],i[k].style.width=null!==l.sWidthOrig&&""!==l.sWidthOrig?
+s(l.sWidthOrig):"";if(a.aoData.length)for(k=0;k<d.length;k++)n=d[k],l=c[n],h(Db(a,n)).clone(!1).append(l.sContentPadding).appendTo(p);j.appendTo(m);f&&g?j.width(g):f?(j.css("width","auto"),j.width()<m.offsetWidth&&j.width(m.offsetWidth)):e?j.width(m.offsetWidth):o&&j.width(o);Eb(a,j[0]);if(f){for(k=g=0;k<d.length;k++)l=c[d[k]],e=h(i[k]).outerWidth(),g+=null===l.sWidthOrig?e:parseInt(l.sWidth,10)+e-h(i[k]).width();j.width(s(g));b.style.width=s(g)}for(k=0;k<d.length;k++)if(l=c[d[k]],e=h(i[k]).width())l.sWidth=
+s(e);b.style.width=s(j.css("width"));j.remove()}o&&(b.style.width=s(o));if((o||f)&&!a._reszEvt)h(za).bind("resize.DT-"+a.sInstance,Ma(function(){V(a)})),a._reszEvt=!0}function Ma(a,b){var c=b||200,d,e;return function(){var b=this,g=+new Date,j=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=l;a.apply(b,j)},c)):d?(d=g,a.apply(b,j)):d=g}}function Cb(a,b){if(!a)return 0;var c=h("<div/>").css("width",s(a)).appendTo(b||O.body),d=c[0].offsetWidth;c.remove();return d}function Eb(a,b){var c=
+a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(h(b).outerWidth()-c)}function Db(a,b){var c=Fb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("<td/>").html(A(a,c,b,"display"))[0]:d.anCells[b]}function Fb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=A(a,f,b,"display")+"",c=c.replace(Xb,""),c.length>d&&(d=c.length,e=f);return e}function s(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Gb(){if(!p.__scrollbarWidth){var a=
+h("<p/>").css({width:"100%",height:200,padding:0})[0],b=h("<div/>").css({position:"absolute",top:0,left:0,width:200,height:150,padding:0,overflow:"hidden",visibility:"hidden"}).append(a).appendTo("body"),c=a.offsetWidth;b.css("overflow","scroll");a=a.offsetWidth;c===a&&(a=b[0].clientWidth);b.remove();p.__scrollbarWidth=c-a}return p.__scrollbarWidth}function R(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var o=[];f=function(a){a.length&&!h.isArray(a[0])?o.push(a):o.push.apply(o,
+a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<o.length;a++){i=o[a][0];f=e[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=e[g].sType||"string",d.push({src:i,col:g,dir:o[a][1],index:o[a][2],type:j,formatter:p.ext.type.order[j+"-pre"]})}return d}function kb(a){var b,c,d=[],e=p.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;Da(a);h=R(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Hb(a,j.col);if("ssp"!=z(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)d[i[b]]=
+b;g===h.length?i.sort(function(a,b){var c,e,g,j,i=h.length,l=f[a]._aSortData,p=f[b]._aSortData;for(g=0;g<i;g++)if(j=h[g],c=l[j.col],e=p[j.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):i.sort(function(a,b){var c,g,j,i,l=h.length,p=f[a]._aSortData,r=f[b]._aSortData;for(j=0;j<l;j++)if(i=h[j],c=p[i.col],g=r[i.col],i=e[i.type+"-"+i.dir]||e["string-"+i.dir],c=i(c,g),0!==c)return c;c=d[a];g=d[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Ib(a){for(var b,c,
+d=a.aoColumns,e=R(a),a=a.oLanguage.oAria,f=0,g=d.length;f<g;f++){c=d[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(i.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=j[e[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",b)}}function Sa(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a){var b=a._idx;b===l&&(b=h.inArray(a[1],
+f));return b+1>=f.length?0:b+1};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,C(e,"0")),-1!==c?(b=g(e[c]),e[c][1]=f[b],e[c]._idx=b):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);L(a);"function"==typeof d&&d(a)}function Ka(a,b,c,d){var e=a.aoColumns[c];Ta(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(B(a,!0),setTimeout(function(){Sa(a,c,b.shiftKey,
+d);"ssp"!==z(a)&&B(a,!1)},0)):Sa(a,c,b.shiftKey,d))})}function sa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=R(a),e=a.oFeatures,f,g;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)g=b[e].src,h(C(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3));e=0;for(f=d.length;e<f;e++)g=d[e].src,h(C(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Hb(a,b){var c=a.aoColumns[b],d=p.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,Y(a,b)));for(var f,g=p.ext.type.order[c.sType+
+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[j]:A(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function ta(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:yb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:yb(a.aoPreSearchCols[d])}})};u(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=
+b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Jb(a){var b,c,d=a.aoColumns;if(a.oFeatures.bStateSave){var e=a.fnStateLoadCallback.call(a.oInstance,a);if(e&&e.time&&(b=u(a,"aoStateLoadParams","stateLoadParams",[a,e]),-1===h.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&e.time<+new Date-1E3*b)&&d.length===e.columns.length))){a.oLoadedState=h.extend(!0,{},e);a._iDisplayStart=e.start;a.iInitDisplayStart=e.start;a._iDisplayLength=e.length;a.aaSorting=[];h.each(e.order,function(b,c){a.aaSorting.push(c[0]>=
+d.length?[0,c[1]]:c)});h.extend(a.oPreviousSearch,zb(e.search));b=0;for(c=e.columns.length;b<c;b++){var f=e.columns[b];d[b].bVisible=f.visible;h.extend(a.aoPreSearchCols[b],zb(f.search))}u(a,"aoStateLoaded","stateLoaded",[a,e])}}}function ua(a){var b=p.settings,a=h.inArray(a,C(b,"nTable"));return-1!==a?b[a]:null}function P(a,b,c,d){c="DataTables warning: "+(null!==a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)za.console&&
+console.log&&console.log(c);else if(a=p.ext,"alert"==(a.sErrMode||a.errMode))alert(c);else throw Error(c);}function D(a,b,c,d){h.isArray(c)?h.each(c,function(c,d){h.isArray(d)?D(a,b,d[0],d[1]):D(a,b,d)}):(d===l&&(d=c),b[c]!==l&&(a[d]=b[c]))}function Kb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e],h.isPlainObject(d)?(h.isPlainObject(a[e])||(a[e]={}),h.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&h.isArray(d)?d.slice():d);return a}function Ta(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();
+c(b)}).bind("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function x(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function u(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&h(a.nTable).trigger(c+".dt",d);return e}function Qa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;c===a.fnRecordsDisplay()&&(b=c-d);if(-1===d||0>b)b=0;a._iDisplayStart=b}function La(a,b){var c=
+a.renderer,d=p.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function z(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Ua(a,b){var c=[],c=Lb.numbers_length,d=Math.floor(c/2);b<=c?c=S(0,b):a<=d?(c=S(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=S(b-(c-2),b):(c=S(a-1,a+2),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function cb(a){h.each({num:function(b){return va(b,
+a)},"num-fmt":function(b){return va(b,a,Va)},"html-num":function(b){return va(b,a,wa)},"html-num-fmt":function(b){return va(b,a,wa,Va)}},function(b,c){t.type.order[b+a+"-pre"]=c})}function Mb(a){return function(){var b=[ua(this[p.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return p.ext.internal[a].apply(this,b)}}var p,t,q,r,v,Wa={},Nb=/[\r\n]/g,wa=/<.*?>/g,Yb=/^[\w\+\-]/,Zb=/[\w\+\-]$/,Vb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Va=/[',$\u00a3\u20ac\u00a5%\u2009\u202F]/g,
+H=function(a){return!a||!0===a||"-"===a?!0:!1},Ob=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Pb=function(a,b){Wa[b]||(Wa[b]=RegExp(Oa(b),"g"));return"string"===typeof a?a.replace(/\./g,"").replace(Wa[b],"."):a},Xa=function(a,b,c){var d="string"===typeof a;b&&d&&(a=Pb(a,b));c&&d&&(a=a.replace(Va,""));return H(a)||!isNaN(parseFloat(a))&&isFinite(a)},Qb=function(a,b,c){return H(a)?!0:!(H(a)||"string"===typeof a)?null:Xa(a.replace(wa,""),b,c)?!0:null},C=function(a,b,c){var d=
+[],e=0,f=a.length;if(c!==l)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},xa=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==l)for(;f<g;f++)e.push(a[b[f]][c][d]);else for(;f<g;f++)e.push(a[b[f]][c]);return e},S=function(a,b){var c=[],d;b===l?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Ja=function(a){var b=[],c,d,e=a.length,f,g=0;d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b},w=function(a,
+b,c){a[b]!==l&&(a[c]=a[b])},$=/\[.*?\]$/,Q=/\(\)$/,qa=h("<div>")[0],Wb=qa.textContent!==l,Xb=/<.*?>/g;p=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new q(ua(this[t.iApiIndex])):new q(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===l||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=
+function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===l||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&W(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===l||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===l||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(!a)};
+this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===l?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==l){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==l||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==l?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();
+return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===l||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===l||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return ua(this[t.iApiIndex])};
+this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===l||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===l||e)&&h.columns.adjust();(d===l||d)&&h.draw();return 0};this.fnVersionCheck=t.fnVersionCheck;var b=this,c=a===l,d=this.length;c&&(a={});this.oApi=this.internal=t.internal;for(var e in p.ext.internal)e&&(this[e]=Mb(e));this.each(function(){var e={},g=1<d?Kb(e,a,!0):
+a,j=0,i,o=this.getAttribute("id"),e=!1,m=p.defaults;if("table"!=this.nodeName.toLowerCase())P(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{db(m);eb(m.column);G(m,m,!0);G(m.column,m.column,!0);G(m,g);var n=p.settings,j=0;for(i=n.length;j<i;j++){if(n[j].nTable==this){i=g.bRetrieve!==l?g.bRetrieve:m.bRetrieve;if(c||i)return n[j].oInstance;if(g.bDestroy!==l?g.bDestroy:m.bDestroy){n[j].oInstance.fnDestroy();break}else{P(n[j],0,"Cannot reinitialise DataTable",3);return}}if(n[j].sTableId==
+this.id){n.splice(j,1);break}}if(null===o||""===o)this.id=o="DataTables_Table_"+p.ext._unique++;var k=h.extend(!0,{},p.models.oSettings,{nTable:this,oApi:b.internal,oInit:g,sDestroyWidth:h(this)[0].style.width,sInstance:o,sTableId:o});n.push(k);k.oInstance=1===b.length?b:h(this).dataTable();db(g);g.oLanguage&&N(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=h.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);g=Kb(h.extend(!0,{},m),g);D(k.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));
+D(k,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);D(k.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],
+["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);D(k.oLanguage,g,"fnInfoCallback");x(k,"aoDrawCallback",g.fnDrawCallback,"user");x(k,"aoServerParams",g.fnServerParams,"user");x(k,"aoStateSaveParams",g.fnStateSaveParams,"user");x(k,"aoStateLoadParams",g.fnStateLoadParams,"user");x(k,"aoStateLoaded",g.fnStateLoaded,"user");x(k,"aoRowCallback",g.fnRowCallback,"user");x(k,"aoRowCreatedCallback",g.fnCreatedRow,"user");x(k,"aoHeaderCallback",g.fnHeaderCallback,"user");x(k,"aoFooterCallback",g.fnFooterCallback,
+"user");x(k,"aoInitComplete",g.fnInitComplete,"user");x(k,"aoPreDrawCallback",g.fnPreDrawCallback,"user");o=k.oClasses;g.bJQueryUI?(h.extend(o,p.ext.oJUIClasses,g.oClasses),g.sDom===m.sDom&&"lfrtip"===m.sDom&&(k.sDom='<"H"lfr>t<"F"ip>'),k.renderer)?h.isPlainObject(k.renderer)&&!k.renderer.header&&(k.renderer.header="jqueryui"):k.renderer="jqueryui":h.extend(o,p.ext.classes,g.oClasses);h(this).addClass(o.sTable);if(""!==k.oScroll.sX||""!==k.oScroll.sY)k.oScroll.iBarWidth=Gb();!0===k.oScroll.sX&&(k.oScroll.sX=
+"100%");k.iInitDisplayStart===l&&(k.iInitDisplayStart=g.iDisplayStart,k._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(k.bDeferLoading=!0,j=h.isArray(g.iDeferLoading),k._iRecordsDisplay=j?g.iDeferLoading[0]:g.iDeferLoading,k._iRecordsTotal=j?g.iDeferLoading[1]:g.iDeferLoading);""!==g.oLanguage.sUrl?(k.oLanguage.sUrl=g.oLanguage.sUrl,h.getJSON(k.oLanguage.sUrl,null,function(a){N(a);G(m.oLanguage,a);h.extend(true,k.oLanguage,g.oLanguage,a);ra(k)}),e=!0):h.extend(!0,k.oLanguage,g.oLanguage);
+null===g.asStripeClasses&&(k.asStripeClasses=[o.sStripeOdd,o.sStripeEven]);var j=k.asStripeClasses,r=h("tbody tr:eq(0)",this);-1!==h.inArray(!0,h.map(j,function(a){return r.hasClass(a)}))&&(h("tbody tr",this).removeClass(j.join(" ")),k.asDestroyStripes=j.slice());var n=[],q,j=this.getElementsByTagName("thead");0!==j.length&&(aa(k.aoHeader,j[0]),n=ma(k));if(null===g.aoColumns){q=[];j=0;for(i=n.length;j<i;j++)q.push(null)}else q=g.aoColumns;j=0;for(i=q.length;j<i;j++)Aa(k,n?n[j]:null);hb(k,g.aoColumnDefs,
+q,function(a,b){fa(k,a,b)});if(r.length){var s=function(a,b){return a.getAttribute("data-"+b)?b:null};h.each(ia(k,r[0]).cells,function(a,b){var c=k.aoColumns[a];if(c.mData===a){var d=s(b,"sort")||s(b,"order"),e=s(b,"filter")||s(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:l,type:d!==null?a+".@data-"+d:l,filter:e!==null?a+".@data-"+e:l};fa(k,a)}}})}var t=k.oFeatures;g.bStateSave&&(t.bStateSave=!0,Jb(k,g),x(k,"aoDrawCallback",ta,"state_save"));if(g.aaSorting===
+l){n=k.aaSorting;j=0;for(i=n.length;j<i;j++)n[j][1]=k.aoColumns[j].asSorting[0]}sa(k);t.bSort&&x(k,"aoDrawCallback",function(){if(k.bSorted){var a=R(k),b={};h.each(a,function(a,c){b[c.src]=c.dir});u(k,null,"order",[k,a,b]);Ib(k)}});x(k,"aoDrawCallback",function(){(k.bSorted||z(k)==="ssp"||t.bDeferRender)&&sa(k)},"sc");fb(k);j=h(this).children("caption").each(function(){this._captionSide=h(this).css("caption-side")});i=h(this).children("thead");0===i.length&&(i=h("<thead/>").appendTo(this));k.nTHead=
+i[0];i=h(this).children("tbody");0===i.length&&(i=h("<tbody/>").appendTo(this));k.nTBody=i[0];i=h(this).children("tfoot");if(0===i.length&&0<j.length&&(""!==k.oScroll.sX||""!==k.oScroll.sY))i=h("<tfoot/>").appendTo(this);0===i.length||0===i.children().length?h(this).addClass(o.sNoFooter):0<i.length&&(k.nTFoot=i[0],aa(k.aoFooter,k.nTFoot));if(g.aaData)for(j=0;j<g.aaData.length;j++)I(k,g.aaData[j]);else(k.bDeferLoading||"dom"==z(k))&&ha(k,h(k.nTBody).children("tr"));k.aiDisplay=k.aiDisplayMaster.slice();
+k.bInitialised=!0;!1===e&&ra(k)}});b=null;return this};var Rb=[],y=Array.prototype,$b=function(a){var b,c,d=p.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};
+q=function(a,b){if(!this instanceof q)throw"DT API must be constructed as a new object";var c=[],d=function(a){(a=$b(a))&&c.push.apply(c,a)};if(h.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=Ja(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector={rows:null,cols:null,opts:null};q.extend(this,this,Rb)};p.Api=q;q.prototype={concat:y.concat,context:[],each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=
+this.context;return b.length>a?new q(b[a],this[a]):null},filter:function(a){var b=[];if(y.filter)b=y.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new q(this.context,b)},flatten:function(){var a=[];return new q(this.context,a.concat.apply(a,this.toArray()))},join:y.join,indexOf:y.indexOf||function(a,b){for(var c=b||0,d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c){var d=[],e,f,g,h,i,o=this.context,
+m,n,k=this.selector;"string"===typeof a&&(c=b,b=a,a=!1);f=0;for(g=o.length;f<g;f++)if("table"===b)e=c(o[f],f),e!==l&&d.push(e);else if("columns"===b||"rows"===b)e=c(o[f],this[f],f),e!==l&&d.push(e);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){n=this[f];"column-rows"===b&&(m=Ya(o[f],k.opts));h=0;for(i=n.length;h<i;h++)e=n[h],e="cell"===b?c(o[f],e.row,e.column,f,h):c(o[f],e,f,h,m),e!==l&&d.push(e)}return d.length?(a=new q(o,a?d.concat.apply([],d):d),b=a.selector,b.rows=k.rows,b.cols=
+k.cols,b.opts=k.opts,a):this},lastIndexOf:y.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(y.map)b=y.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new q(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:y.pop,push:y.push,reduce:y.reduce||function(a,b){return gb(this,a,b,0,this.length,1)},reduceRight:y.reduceRight||function(a,b){return gb(this,
+a,b,this.length-1,-1,-1)},reverse:y.reverse,selector:null,shift:y.shift,sort:y.sort,splice:y.splice,toArray:function(){return y.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},unique:function(){return new q(this.context,Ja(this))},unshift:y.unshift};q.extend=function(a,b,c){if(b&&(b instanceof q||b.__dt_wrapper)){var d,e,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);q.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<e;d++)f=c[d],b[f.name]=
+"function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,q.extend(a,b[f.name],f.propExt)}};q.register=r=function(a,b){if(h.isArray(a))for(var c=0,d=a.length;c<d;c++)q.register(a[c],b);else for(var e=a.split("."),f=Rb,g,j,c=0,d=e.length;c<d;c++){g=(j=-1!==e[c].indexOf("()"))?e[c].replace("()",""):e[c];var i;a:{i=0;for(var o=f.length;i<o;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===d-1?i.val=b:f=j?i.methodExt:
+i.propExt}};q.registerPlural=v=function(a,b,c){q.register(a,c);q.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof q?a.length?h.isArray(a[0])?new q(a.context,a[0]):a[0]:l:a})};r("tables()",function(a){var b;if(a){b=q;var c=this.context;if("number"===typeof a)a=[c[a]];else var d=h.map(c,function(a){return a.nTable}),a=h(d).filter(a).map(function(){var a=h.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=this;return b});r("table()",function(a){var a=this.tables(a),
+b=a.context;return b.length?new q(b[0]):a});v("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable})});v("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody})});v("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead})});v("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot})});v("tables().containers()",
+"table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper})});r("draw()",function(a){return this.iterator("table",function(b){L(b,!1===a)})});r("page()",function(a){return a===l?this.page.info().page:this.iterator("table",function(b){Ra(b,a)})});r("page.info()",function(){if(0===this.context.length)return l;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,
+end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d}});r("page.len()",function(a){return a===l?0!==this.context.length?this.context[0]._iDisplayLength:l:this.iterator("table",function(b){Pa(b,a)})});var Sb=function(a,b,c){"ssp"==z(a)?L(a,b):(B(a,!0),na(a,[],function(c){ja(a);for(var c=oa(a,c),d=0,g=c.length;d<g;d++)I(a,c[d]);L(a,b);B(a,!1)}));if(c){var d=new q(a);d.one("draw",function(){c(d.ajax.json())})}};r("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});
+r("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});r("ajax.reload()",function(a,b){return this.iterator("table",function(c){Sb(c,!1===b,a)})});r("ajax.url()",function(a){var b=this.context;if(a===l){if(0===b.length)return l;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});r("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Sb(c,
+!1===b,a)})});var Za=function(a,b){var c=[],d,e,f,g,j,i;if(!a||"string"===typeof a||a.length===l)a=[a];f=0;for(g=a.length;f<g;f++){e=a[f]&&a[f].split?a[f].split(","):[a[f]];j=0;for(i=e.length;j<i;j++)(d=b("string"===typeof e[j]?h.trim(e[j]):e[j]))&&d.length&&c.push.apply(c,d)}return c},$a=function(a){a||(a={});a.filter&&!a.search&&(a.search=a.filter);return{search:a.search||"none",order:a.order||"current",page:a.page||"all"}},ab=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=
+a[b],a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ya=function(a,b){var c,d,e,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;d=b.order;e=b.page;if("ssp"==z(a))return"removed"===j?[]:S(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(g[c])}else if("current"==d||"applied"==d)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c<d;c++)"none"==
+j?f.push(c):(e=h.inArray(c,g),(-1===e&&"removed"==j||0<=e&&"applied"==j)&&f.push(c))}return f};r("rows()",function(a,b){a===l?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=b;return Za(a,function(a){var b=Ob(a);if(b!==null&&!e)return[b];var j=Ya(c,e);if(b!==null&&h.inArray(b,j)!==-1)return[b];if(!a)return j;for(var b=[],i=0,o=j.length;i<o;i++)b.push(c.aoData[j[i]].nTr);return a.nodeName&&h.inArray(a,b)!==-1?[a._DT_RowIndex]:h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()})});
+c.selector.rows=a;c.selector.opts=b;return c});r("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||l})});r("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return xa(a.aoData,b,"_aData")})});v("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData})});v("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,
+c){la(b,c,a)})});v("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b})});v("rows().remove()","row().remove()",function(){var a=this;return this.iterator("row",function(b,c,d){var e=b.aoData;e.splice(c,1);for(var f=0,g=e.length;f<g;f++)null!==e[f].nTr&&(e[f].nTr._DT_RowIndex=f);h.inArray(c,b.aiDisplay);ka(b.aiDisplayMaster,c);ka(b.aiDisplay,c);ka(a[d],c,!1);Qa(b)})});r("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;
+for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ha(b,c)[0]):h.push(I(b,c));return h}),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r("row()",function(a,b){return ab(this.rows(a,b))});r("row().data()",function(a){var b=this.context;if(a===l)return b.length&&this.length?b[0].aoData[this[0]]._aData:l;b[0].aoData[this[0]]._aData=a;la(b[0],this[0],"data");return this});r("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||
+null:null});r("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ha(b,a)[0]:I(b,a)});return this.row(b[0])});var bb=function(a){var b=a.context;b.length&&a.length&&(a=b[0].aoData[a[0]],a._details&&(a._details.remove(),a._detailsShow=l,a._details=l))},Tb=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();
+var e=c[0],f=new q(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<C(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,d=Z(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,
+b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&bb(g[c])}))}}};r("row().child()",function(a,b){var c=this.context;if(a===l)return c.length&&this.length?c[0].aoData[this[0]]._details:l;if(!0===a)this.child.show();else if(!1===a)bb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(a.nodeName&&"tr"===a.nodeName.toLowerCase())e.push(a);else{var c=h("<tr><td/></tr>").addClass(b);h("td",c).addClass(b).html(a)[0].colSpan=Z(d);e.push(c[0])}};if(h.isArray(a)||
+a instanceof h)for(var g=0,j=a.length;g<j;g++)f(a[g],b);else f(a,b);c._details&&c._details.remove();c._details=h(e);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});r(["row().child.show()","row().child().show()"],function(){Tb(this,!0);return this});r(["row().child.hide()","row().child().hide()"],function(){Tb(this,!1);return this});r(["row().child.remove()","row().child().remove()"],function(){bb(this);return this});r("row().child.isShown()",function(){var a=this.context;return a.length&&
+this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var ac=/^(.*):(name|visIdx|visible)$/;r("columns()",function(a,b){a===l?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(b){var c=a,f=b.aoColumns,g=C(f,"sName"),j=C(f,"nTh");return Za(c,function(a){var c=Ob(a);if(a==="")return S(f.length);if(c!==null)return[c>=0?c:f.length+c];var e=typeof a==="string"?a.match(ac):"";if(e)switch(e[2]){case "visIdx":case "visible":a=parseInt(e[1],10);if(a<0){c=h.map(f,function(a,
+b){return a.bVisible?b:null});return[c[c.length+a]]}return[ga(b,a)];case "name":return h.map(g,function(a,b){return a===e[1]?b:null})}else return h(j).filter(a).map(function(){return h.inArray(this,j)}).toArray()})});c.selector.cols=a;c.selector.opts=b;return c});v("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh})});v("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf})});
+v("columns().data()","column().data()",function(){return this.iterator("column-rows",function(a,b,c,d,e){for(var c=[],d=0,f=e.length;d<f;d++)c.push(A(a,e[d],b,""));return c})});v("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return xa(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)})});v("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return xa(a.aoData,e,"anCells",b)})});v("columns().visible()",
+"column().visible()",function(a){return this.iterator("column",function(b,c){var d;if(a===l)d=b.aoColumns[c].bVisible;else{var e=b.aoColumns;d=e[c];var f=b.aoData,g,j,i;if(a===l)d=d.bVisible;else{if(d.bVisible!==a){if(a){var o=h.inArray(!0,C(e,"bVisible"),c+1);g=0;for(j=f.length;g<j;g++)i=f[g].nTr,e=f[g].anCells,i&&i.insertBefore(e[c],e[o]||null)}else h(C(b.aoData,"anCells",c)).detach();d.bVisible=a;ba(b,b.aoHeader);ba(b,b.aoFooter);V(b);(b.oScroll.sX||b.oScroll.sY)&&W(b);u(b,null,"column-visibility",
+[b,c,a]);ta(b)}d=void 0}}return d})});v("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?Y(b,c):c})});r("columns.adjust()",function(){return this.iterator("table",function(a){V(a)})});r("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return ga(c,b);if("fromData"===a||"toVisible"===a)return Y(c,b)}});r("column()",function(a,b){return ab(this.columns(a,b))});r("cells()",
+function(a,b,c){h.isPlainObject(a)&&(typeof a.row!==l?(c=b,b=null):(c=a,a=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===l)return this.iterator("table",function(b){var d=a,e=$a(c),f=b.aoData,g=Ya(b,e),e=xa(f,g,"anCells"),i=h([].concat.apply([],e)),j,m=b.aoColumns.length,o,p,r,q;return Za(d,function(a){if(a===null||a===l){o=[];p=0;for(r=g.length;p<r;p++){j=g[p];for(q=0;q<m;q++)o.push({row:j,column:q})}return o}return h.isPlainObject(a)?[a]:i.filter(a).map(function(a,b){j=b.parentNode._DT_RowIndex;
+return{row:j,column:h.inArray(b,f[j].anCells)}}).toArray()})});var d=this.columns(b,c),e=this.rows(a,c),f,g,j,i,o,m=this.iterator("table",function(a,b){f=[];g=0;for(j=e[b].length;g<j;g++){i=0;for(o=d[b].length;i<o;i++)f.push({row:e[b][g],column:d[b][i]})}return f});h.extend(m.selector,{cols:b,rows:a,opts:c});return m});v("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return a.aoData[b].anCells[c]})});r("cells().data()",function(){return this.iterator("cell",
+function(a,b,c){return A(a,b,c)})});v("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]})});v("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:Y(a,c)}})});r(["cells().invalidate()","cell().invalidate()"],function(a){var b=this.selector;this.rows(b.rows,b.opts).invalidate(a);return this});r("cell()",function(a,b,
+c){return ab(this.cells(a,b,c))});r("cell().data()",function(a){var b=this.context,c=this[0];if(a===l)return b.length&&c.length?A(b[0],c[0].row,c[0].column):l;Ea(b[0],c[0].row,c[0].column,a);la(b[0],c[0].row,"data",c[0].column);return this});r("order()",function(a,b){var c=this.context;if(a===l)return 0!==c.length?c[0].aaSorting:l;"number"===typeof a?a=[[a,b]]:h.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});r("order.listener()",
+function(a,b,c){return this.iterator("table",function(d){Ka(d,a,b,c)})});r(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];h.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});r("search()",function(a,b,c,d){var e=this.context;return a===l?0!==e.length?e[0].oPreviousSearch.sSearch:l:this.iterator("table",function(e){e.oFeatures.bFilter&&ca(e,h.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:
+c,bCaseInsensitive:null===d?!0:d}),1)})});r(["columns().search()","column().search()"],function(a,b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===l)return g[f].sSearch;e.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ca(e,e.oPreviousSearch,1))})});r("state()",function(){return this.context.length?this.context[0].oSavedState:null});r("state.clear()",function(){return this.iterator("table",
+function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});r("state.save()",function(){return this.iterator("table",function(a){ta(a)})});p.versionCheck=p.fnVersionCheck=function(a){for(var b=p.version.split("."),a=a.split("."),c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};p.isDataTable=p.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(p.settings,
+function(a,e){if(e.nTable===b||e.nScrollHead===b||e.nScrollFoot===b)c=!0});return c};p.tables=p.fnTables=function(a){return jQuery.map(p.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable})};p.camelToHungarian=G;r("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){r(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var d=
+h(this.tables().nodes());d[b].apply(d,a);return this})});r("clear()",function(){return this.iterator("table",function(a){ja(a)})});r("settings()",function(){return new q(this.context,this.context)});r("data()",function(){return this.iterator("table",function(a){return C(a.aoData,"_aData")}).flatten()});r("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),l=h(b.nTableWrapper),
+m=h.map(b.aoData,function(a){return a.nTr}),n;b.bDestroying=!0;u(b,"aoDestroyCallback","destroy",[b]);a||(new q(b)).columns().visible(!0);l.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(za).unbind(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j));i.detach();l.detach();b.aaSorting=[];b.aaSortingFixed=[];sa(b);h(m).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+
+" "+d.sSortableDesc+" "+d.sSortableNone);b.bJUI&&(h("th span."+d.sSortIcon+", td span."+d.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+d.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(e,b.nTableReinsertBefore);f.children().detach();f.append(m);i.css("width",b.sDestroyWidth).removeClass(d.sTable);(n=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%n])});c=h.inArray(b,p.settings);-1!==c&&p.settings.splice(c,
+1)})});p.version="1.10.1";p.settings=[];p.models={};p.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};p.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null};p.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,
+sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};p.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,
+bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},
+fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",
+sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},p.models.oSearch),sAjaxDataProp:"data",
+sAjaxSource:null,sDom:"lfrtip",sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null};T(p.defaults);p.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};T(p.defaults.column);p.models.oSettings={oFeatures:{bAutoWidth:null,
+bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,
+asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,
+bAjaxDataGet:!0,jqXHR:null,json:l,oAjaxData:l,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==z(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==z(this)?1*this._iRecordsDisplay:
+this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{}};p.ext=t={classes:{},errMode:"alert",feature:[],search:[],internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],
+search:{},order:{}},_unique:0,fnVersionCheck:p.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:p.version};h.extend(t,{afnFiltering:t.search,aTypes:t.type.detect,ofnSearch:t.type.search,oSort:t.type.order,afnSortData:t.order,aoFeatures:t.feature,oApi:t.internal,oStdClasses:t.classes,oPagination:t.pager});h.extend(p.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",
+sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",
+sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var ya="",ya="",E=ya+"ui-state-default",ea=ya+"css_right ui-icon ui-icon-",Ub=ya+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(p.ext.oJUIClasses,p.ext.classes,{sPageButton:"fg-button ui-button "+
+E,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:E+" sorting_asc",sSortDesc:E+" sorting_desc",sSortable:E+" sorting",sSortableAsc:E+" sorting_asc_disabled",sSortableDesc:E+" sorting_desc_disabled",sSortableNone:E+" sorting_disabled",sSortJUIAsc:ea+"triangle-1-n",sSortJUIDesc:ea+"triangle-1-s",sSortJUI:ea+"carat-2-n-s",sSortJUIAscAllowed:ea+"carat-1-n",sSortJUIDescAllowed:ea+
+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+E,sScrollFoot:"dataTables_scrollFoot "+E,sHeaderTH:E,sFooterTH:E,sJUIHeader:Ub+" ui-corner-tl ui-corner-tr",sJUIFooter:Ub+" ui-corner-bl ui-corner-br"});var Lb=p.ext.pager;h.extend(Lb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(a,b){return["previous",Ua(a,b),"next"]},full_numbers:function(a,b){return["first",
+"previous",Ua(a,b),"next","last"]},_numbers:Ua,numbers_length:7});h.extend(!0,p.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i,l,m=0,n=function(b,d){var k,p,r,q,s=function(b){Ra(a,b.data.action,true)};k=0;for(p=d.length;k<p;k++){q=d[k];if(h.isArray(q)){r=h("<"+(q.DT_el||"div")+"/>").appendTo(b);n(r,q)}else{l=i="";switch(q){case "ellipsis":b.append("<span>&hellip;</span>");break;case "first":i=j.sFirst;l=q+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":i=
+j.sPrevious;l=q+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":i=j.sNext;l=q+(e<f-1?"":" "+g.sPageButtonDisabled);break;case "last":i=j.sLast;l=q+(e<f-1?"":" "+g.sPageButtonDisabled);break;default:i=q+1;l=e===q?g.sPageButtonActive:""}if(i){r=h("<a>",{"class":g.sPageButton+" "+l,"aria-controls":a.sTableId,"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof q==="string"?a.sTableId+"_"+q:null}).html(i).appendTo(b);Ta(r,{action:q},s);m++}}}};try{var k=h(O.activeElement).data("dt-idx");n(h(b).empty(),
+d);k!==null&&h(b).find("[data-dt-idx="+k+"]").focus()}catch(p){}}}});var va=function(a,b,c,d){if(!a||"-"===a)return-Infinity;b&&(a=Pb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(t.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return H(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return H(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,
+b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});cb("");h.extend(p.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Xa(a,c)?"num"+c:null},function(a){if(a&&(!Yb.test(a)||!Zb.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||H(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Xa(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Qb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Qb(a,
+c,!0)?"html-num-fmt"+c:null},function(a){return H(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(p.ext.type.search,{html:function(a){return H(a)?a:"string"===typeof a?a.replace(Nb," ").replace(wa,""):""},string:function(a){return H(a)?a:"string"===typeof a?a.replace(Nb," "):a}});h.extend(!0,p.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?
+d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){var e=c.idx;h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(f,g,h,i){if(a===g){b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(i[e]=="asc"?d.sSortAsc:i[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+
+" "+d.sSortJUIDescAllowed).addClass(i[e]=="asc"?d.sSortJUIAsc:i[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});p.render={number:function(a,b,c,d){return{display:function(e){var f=0>e?"-":"",e=Math.abs(parseFloat(e)),g=parseInt(e,10),e=c?b+(e-g).toFixed(c).substring(2):"";return f+(d||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+e}}}};h.extend(p.ext.internal,{_fnExternApiFunc:Mb,_fnBuildAjax:na,_fnAjaxUpdate:jb,_fnAjaxParameters:sb,_fnAjaxUpdateDraw:tb,_fnAjaxDataSrc:oa,_fnAddColumn:Aa,
+_fnColumnOptions:fa,_fnAdjustColumnSizing:V,_fnVisibleToColumnIndex:ga,_fnColumnIndexToVisible:Y,_fnVisbleColumns:Z,_fnGetColumns:X,_fnColumnTypes:Da,_fnApplyColumnDefs:hb,_fnHungarianMap:T,_fnCamelToHungarian:G,_fnLanguageCompat:N,_fnBrowserDetect:fb,_fnAddData:I,_fnAddTr:ha,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==l?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:A,_fnSetCellData:Ea,_fnSplitObjNotation:Ga,_fnGetObjectDataFn:U,
+_fnSetObjectDataFn:Ba,_fnGetDataMaster:Ha,_fnClearTable:ja,_fnDeleteIndex:ka,_fnInvalidateRow:la,_fnGetRowElements:ia,_fnCreateTr:Fa,_fnBuildHead:ib,_fnDrawHead:ba,_fnDraw:K,_fnReDraw:L,_fnAddOptionsHtml:lb,_fnDetectHeader:aa,_fnGetUniqueThs:ma,_fnFeatureHtmlFilter:nb,_fnFilterComplete:ca,_fnFilterCustom:wb,_fnFilterColumn:vb,_fnFilter:ub,_fnFilterCreateSearch:Na,_fnEscapeRegex:Oa,_fnFilterData:xb,_fnFeatureHtmlInfo:qb,_fnUpdateInfo:Ab,_fnInfoMacros:Bb,_fnInitialise:ra,_fnInitComplete:pa,_fnLengthChange:Pa,
+_fnFeatureHtmlLength:mb,_fnFeatureHtmlPaginate:rb,_fnPageChange:Ra,_fnFeatureHtmlProcessing:ob,_fnProcessingDisplay:B,_fnFeatureHtmlTable:pb,_fnScrollDraw:W,_fnApplyToChildren:F,_fnCalculateColumnWidths:Ca,_fnThrottle:Ma,_fnConvertToWidth:Cb,_fnScrollingWidthAdjust:Eb,_fnGetWidestNode:Db,_fnGetMaxLenString:Fb,_fnStringToCss:s,_fnScrollBarWidth:Gb,_fnSortFlatten:R,_fnSort:kb,_fnSortAria:Ib,_fnSortListener:Sa,_fnSortAttachListener:Ka,_fnSortingClasses:sa,_fnSortData:Hb,_fnSaveState:ta,_fnLoadState:Jb,
+_fnSettingsFromNode:ua,_fnLog:P,_fnMap:D,_fnBindAction:Ta,_fnCallbackReg:x,_fnCallbackFire:u,_fnLengthOverflow:Qa,_fnRenderer:La,_fnDataSource:z,_fnRowAttributes:Ia,_fnCalculateEnd:function(){}});h.fn.dataTable=p;h.fn.dataTableSettings=p.settings;h.fn.dataTableExt=p.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(p,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],N):"object"===typeof exports?N(require("jquery")):
+jQuery&&!jQuery.fn.dataTable&&N(jQuery)})(window,document);
diff --git a/public/admin/js/DataTables/media/js/jquery.js b/public/admin/js/DataTables/media/js/jquery.js
new file mode 100644
index 0000000000000000000000000000000000000000..d1608e37ffa979b8689bfb868ad8b061b191f6f6
--- /dev/null
+++ b/public/admin/js/DataTables/media/js/jquery.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
+if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
+},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.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 contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
\ No newline at end of file
diff --git a/public/admin/js/DataTables/package.json b/public/admin/js/DataTables/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..a88bbb6451929d8c3e9a426194a5fbb2681c6efe
--- /dev/null
+++ b/public/admin/js/DataTables/package.json
@@ -0,0 +1,30 @@
+{
+	"name": "DataTables",
+	"version": "1.10.1",
+	"title": "DataTables",
+	"author": {
+		"name": "Allan Jardine",
+		"url": "http://sprymedia.co.uk"
+	},
+	"licenses": [
+		{
+			"type": "MIT",
+			"url": "http://datatables.net/license"
+		}
+	],
+	"dependencies": {
+		"jquery": ">=1.7"
+	},
+	"description": "DataTables enhances HTML tables with the ability to sort, filter and page the data in the table very easily. It provides a comprehensive API and set of configuration options, allowing you to consume data from virtually any data source.",
+	"keywords": [
+		"DataTables",
+		"DataTable",
+		"table",
+		"grid",
+		"filter",
+		"sort",
+		"page",
+		"internationalisable"
+	],
+	"homepage": "http://datatables.net"
+}
diff --git a/public/opac/css/global.css b/public/opac/css/global.css
index 397be9f75c2691f8d527ea6423de7360ecf0aca2..4e5c32c1548f077421c2ff591bd6a831a598ead5 100644
--- a/public/opac/css/global.css
+++ b/public/opac/css/global.css
@@ -1323,7 +1323,7 @@ body.abonne_multimedia-hold-view .actions a {
 
 .recherche_actions {
     margin-top: 10px;
-		clear: both;
+    clear: both;
 }
 
 
@@ -1403,6 +1403,15 @@ body.abonne_multimedia-hold-view .actions a {
     width: 100%;
 }
 
+.liste_mur .article_wrapper {
+    display: inline-block;
+    vertical-align: top;
+    min-height: 250px;
+    width: 200px;
+    margin: 40px auto 0px auto;
+    border: 5px solid transparent;
+}
+
 .liste_mur .notice_wrapper,
 .domains.liste_mur > div > div {
     float: left;
@@ -1414,18 +1423,19 @@ body.abonne_multimedia-hold-view .actions a {
 
 
 .domains.liste_mur > div {
-		clear: both;
-		text-align: center;
+    clear: both;
+    text-align: center;
 } 
 
 
 .domains.liste_mur a img {
-		height: 86px;
+    height: 86px;
 }
 
 
 .liste_mur .notice .icone_support, 
 .liste_mur .notice_wrapper a img,
+.liste_mur article a img,
 .liste_mur .notice .nothumbnail_wrapper,
 .liste_mur .notice_wrapper {
     -webkit-transition: all 0.3s ease-out;
@@ -1503,7 +1513,7 @@ body.abonne_multimedia-hold-view .actions a {
 }
 
 
-.liste_mur .notice a img,
+
 .liste_mur .notice .nothumbnail_wrapper {
     width: 100px !important;
     height: auto !important;
@@ -1528,6 +1538,7 @@ body.abonne_multimedia-hold-view .actions a {
     box-shadow: 0px 10px 30px rgba(0,0,0,0.5);
 }
 
+
 .liste_mur .nothumbnail img {
     position: absolute;
     top:0px;
@@ -1536,16 +1547,24 @@ body.abonne_multimedia-hold-view .actions a {
 }
 
 
+
+.liste_mur .article_wrapper img {
+    display: inline;
+    clear: both;
+
+}
+
+
 .liste_mur.children_domains>div>a>img,
 .liste_mur.breadcrumb_domains>div>a>img,
 .domains .breadcrumb .separator {
-  height: 100px;
+    height: 100px;
 }
 
 .liste_mur.children_domains>div,
 .liste_mur.breadcrumb_domains>div {
-  text-align: center;
-  margin: 0 5px;
+    text-align: center;
+    margin: 0 5px;
 }
 
 .domains.liste_mur > div > div {
@@ -1640,24 +1659,24 @@ div.entete_notice {
 .vignette_info dd {
     text-align:left;
     overflow:visible;
-		padding-left: 90px;
+    padding-left: 90px;
 }
 
 
 .detail.block_info_notice dd {
-		float: left;
-		padding-left: 0px;
-		margin-left: 0px;
-		max-width: 400px;
+    float: left;
+    padding-left: 0px;
+    margin-left: 0px;
+    max-width: 400px;
 }
 
 .detail.block_info_notice dt {
-		clear: left;
+    clear: left;
 }
 
 
 .block_info_notice {
-		clear: left;
+    clear: left;
 }
 
 .blocs_notice {
@@ -1771,6 +1790,19 @@ div.suggestion-achat-liste dl{
     margin-top:5px;
 }
 
+.vignette_lien_panier { 
+    clear:both;
+    float: right;
+    margin-top:5px;
+}
+
+.vignette_lien_panier a {
+    display: block;
+    background: url(../../admin/images/picto/paniers_16.png) no-repeat center  center;
+    height: 16px;
+    width: 16px;
+}
+
 .vignette_support, .vignette_info, .vignette_titre, .vignette_auteur {
     margin-left:100px;
     margin-top:5px;
@@ -2742,4 +2774,25 @@ a.loan-export {
 
 .ui-widget {
     font: inherit;
+}
+
+
+.calendar .liste_mur article {
+    display: inline-block;
+    width: 33%;
+    box-sizing: border-box;
+}
+
+
+.article_info_date span{
+    display:none;
+}
+
+.article_info_others span {
+    display:none;
+}
+
+
+[data-name="last-name"] {
+    display: none;
 }
\ No newline at end of file
diff --git a/public/opac/css/print.css b/public/opac/css/print.css
index 378073c896ba52b0870d5ae3d617b81e84ad48a2..cc7bfc00e08606287a761745607da1b3866b83e6 100644
--- a/public/opac/css/print.css
+++ b/public/opac/css/print.css
@@ -10,30 +10,30 @@
 .article_edit,
 .rss,
 .configuration_module {
-		display: none !important;
+    display: none;
 }
 
 
 .colMilieu,
 .colContenu {
-		width: 100% !important;
-		max-width: 100% !important;
+    width: 100% ;
+    max-width: 100% ;
 }
 
 
 .liste_vignette {
-		margin-bottom: 10px !important;
+    margin-bottom: 10px ;
 }
 
 .view_notice table .onglet {
-		display:none !important;
+    display:none ;
 }
 
 .notice_bloc_titre {
-		font-size: 1.1em !important;
+    font-size: 1.1em ;
 }
 
 
 a {
-		text-decoration: none !important;
+    text-decoration: none ;
 }
\ No newline at end of file
diff --git a/public/opac/js/calendrier.js b/public/opac/js/calendrier.js
index c5fc20a230402c0b643ad3965e03350cbe17c94c..e748f64089a67431408e67841f6d678b6e63b9ae 100644
--- a/public/opac/js/calendrier.js
+++ b/public/opac/js/calendrier.js
@@ -1,8 +1,14 @@
 var ajaxify_calendars = function () {
-  var month_link = $("a.calendar_title_month_clickable:first-child, a.calendar_title_month_clickable:last-child, .calendar .month_list a");
+  var month_link = $("a.calendar_title_month_clickable:first-child, a.calendar_title_month_clickable:last-child, .calendar .month_list a:not(.no_event)");
 
   month_link.click(function(event) {
     var url = $(this).attr('href');
+    
+    if(!url) {
+      event.preventDefault();
+      return false;
+    }
+    
     if (url == '#')
       url = $(this).jqmData('href');
 
@@ -11,7 +17,12 @@ var ajaxify_calendars = function () {
     event.preventDefault();
   });
 
-  $('.calendar').bind('swiperight', 
+  var month_no_event = $('.calendar .month_list a.no_event');
+  month_no_event.click(function(event) {
+    event.preventDefault();
+  });
+
+    $('.calendar').bind('swiperight', 
 											function () {
 												$("a.calendar_title_month_clickable:first-child").click();
 											}); 
@@ -33,6 +44,7 @@ var ajaxify_calendars = function () {
   $('.auto_resize').removeClass('auto_resize');
   if (undefined != window.calendrierAfterLoad)
     calendrierAfterLoad();
+
 };
 
 $(ajaxify_calendars);
diff --git a/scripts/update_numerique_premium_visibility.php b/scripts/update_numerique_premium_visibility.php
new file mode 100644
index 0000000000000000000000000000000000000000..5fc9ceef6a67da9c42af806ee9e7b3941de6f869
--- /dev/null
+++ b/scripts/update_numerique_premium_visibility.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+require('console.php');
+setupOpac();
+
+$sql = "UPDATE album SET visible = 0 WHERE url_origine LIKE '%numeriquepremium.com%';";
+sqlExecute($sql);
+
+if ($argc <= 1) {
+  echo "Usage: $argv[0] URL [URL...]\n";
+  exit;
+}
+array_shift($argv);
+
+foreach ($argv as $url) {
+  process_url($url);
+}
+
+function process_url($url) {
+  file_put_contents('/tmp/marc.mrc', file_get_contents($url));
+  exec('yaz-marcdump /tmp/marc.mrc | grep ^073 | cut -c 11-', $output);
+
+  $sql = "UPDATE album SET visible = 1 WHERE id_origine IN (" . implode(',', $output) . ");";
+  sqlExecute($sql);
+}
+
+?>
diff --git a/tests/application/modules/admin/controllers/AccueilControllerCalendarTest.php b/tests/application/modules/admin/controllers/AccueilControllerCalendarTest.php
index 2c17e682c1019f48bf511e61a740ae554fde9caa..a96104c6dbc040602b002a7346c951c8c6fec974 100644
--- a/tests/application/modules/admin/controllers/AccueilControllerCalendarTest.php
+++ b/tests/application/modules/admin/controllers/AccueilControllerCalendarTest.php
@@ -40,13 +40,20 @@ class Admin_AccueilControllerCalendarTestWithDefaultDiaporamaNavigation extends
 																												'display_mode' => 'Summary',
 																												'display_order' => 'EventDebut',
 																												'display_cat_select' => '',
-																												'id_categorie' => ''
+																			'id_categorie' => '',
+																			'event_filter' => 'none'
 																				]])
 			->beCurrentProfil();
 
 		$this->dispatch('admin/accueil/calendrier?config=accueil&id_profil=1&id_module=1&type_module=CALENDRIER', true);
 	}
 
+	
+	/** @test */
+	public function settingsEventFilterToDisplayShouldBePresent() {
+		$this->assertXPath('//td[contains(text(),"Filtre")]/following-sibling::td/select[@name="event_filter"]/option[@value="none"][@selected="selected"]', $this->_response->getBody());
+	}
+
 
 	/** @test */
 	public function selectDisplayModeShouldBeDisplay() {
diff --git a/tests/application/modules/admin/controllers/AccueilControllerConfigMenuVerticalTest.php b/tests/application/modules/admin/controllers/AccueilControllerConfigMenuVerticalTest.php
index d1d2dd6946633058350155f082494aa0de342434..ee8342a96eb7644f64ed40742aea743eaa1c1c4a 100644
--- a/tests/application/modules/admin/controllers/AccueilControllerConfigMenuVerticalTest.php
+++ b/tests/application/modules/admin/controllers/AccueilControllerConfigMenuVerticalTest.php
@@ -132,10 +132,24 @@ class AccueilControllerConfigMenuVerticalWithIdProfilInPrefsTest extends Accueil
 		$this->assertXPath('//input[@type="checkbox"][@name="afficher_titre"][not(@checked)]');
 	}
 
+
 	/** @test */
 	public function menuNatureShouldBeSelected() {
 		$this->assertXPathContentContains('//select[@name="menu"]//option[@value="34-3"][@selected="selected"]', 'Menu nature');
 	}
+
+
+	/** @test */
+	function newHtmlShouldNotBeChecked() {
+		$this->assertXPath('//input[@type="checkbox"][@name="new_html"][not(@checked)]');
+	}	
+
+	
+	/** @test */
+	function newHtmlLabelShouldBeAsExpected() {
+		$this->assertXPathContentContains('//td', 'Html simplifié');
+	}	
+	
 }
 
 ?>
\ No newline at end of file
diff --git a/tests/application/modules/admin/controllers/AccueilControllerFormationsTest.php b/tests/application/modules/admin/controllers/AccueilControllerFormationsTest.php
index 0f0273eb6904f164abc59144f2f281f5844c7f48..75327f51686632372266bab342097db1f0a9e99a 100644
--- a/tests/application/modules/admin/controllers/AccueilControllerFormationsTest.php
+++ b/tests/application/modules/admin/controllers/AccueilControllerFormationsTest.php
@@ -78,9 +78,10 @@ class Admin_AccueilControllerFormationsPostTest extends Admin_AbstractController
 			
 	/** @test */
 	public function formations1And2ShouldHaveBeenSaved() {
-		$this->assertEquals('1;2', 
-												Class_Profil::getCurrentProfil()
-												->getModuleAccueilConfig(1)['preferences']['selected_formations']);
+		$this->assertEquals(
+			'1;2', 
+			Class_Profil::getCurrentProfil()
+			->getModuleAccueilConfig(1, 'FORMATIONS_WIDGET')['preferences']['selected_formations']);
 	}
 }
 ?>
\ No newline at end of file
diff --git a/tests/application/modules/admin/controllers/AccueilControllerTest.php b/tests/application/modules/admin/controllers/AccueilControllerTest.php
index af6541dbe9e00b01f3866a43c52bb412b47b6a48..4fba35e68953f0bb6deb590acd13f4c29b0bc4b2 100644
--- a/tests/application/modules/admin/controllers/AccueilControllerTest.php
+++ b/tests/application/modules/admin/controllers/AccueilControllerTest.php
@@ -92,35 +92,39 @@ class AccueilControllerBoite2ColPostTest extends AccueilControllerBoite2ColTestC
 
 	/** @test */
 	public function moduleKiosqueShouldHaveBeenCreated() {
-		$this->assertEquals('KIOSQUE', $this->_getModuleTypeOf(1000));
+		$this->assertEquals('KIOSQUE', $this->_getModuleTypeOf(1000, 'KIOSQUE'));
 	}
 
 
 	/** @test */
 	public function moduleKiosqueShouldHaveBeenAddedToBox() {
-		$this->assertEquals(1000, $this->_getModulePrefOf(3, 'col_gauche_module_id'));
+		$this->assertEquals(
+			1000, $this->_getModulePrefOf(3, 'col_gauche_module_id', 'CONTENEUR_DEUX_COLONNES'));
 	}
 
 
 	/** @test */
 	public function moduleTagsShouldHaveBeenCreated() {
-		$this->assertEquals('TAGS', $this->_getModuleTypeOf(1001));
+		$this->assertEquals('TAGS', $this->_getModuleTypeOf(1001, 'TAGS'));
 	}
 
 
 	/** @test */
 	public function moduleTagsShouldHaveBeenAddedToBox() {
-		$this->assertEquals(1001, $this->_getModulePrefOf(3, 'col_droite_module_id'));
+		$this->assertEquals(
+			1001, $this->_getModulePrefOf(3, 'col_droite_module_id', 'CONTENEUR_DEUX_COLONNES'));
 	}
 
 
-	protected function _getModuleTypeOf($id_module) {
-		return $this->profil_biologie->getModuleAccueilConfig($id_module)['type_module'];
+	protected function _getModuleTypeOf($id_module, $type) {
+		return $this->profil_biologie
+			->getModuleAccueilConfig($id_module, $type)['type_module'];
 	}
 
 
-	protected function _getModulePrefOf($id_module, $pref) {
-		return $this->profil_biologie->getModuleAccueilConfig($id_module)['preferences'][$pref];
+	protected function _getModulePrefOf($id_module, $pref, $type) {
+		return $this->profil_biologie
+			->getModuleAccueilConfig($id_module, $type)['preferences'][$pref];
 	}
 }
 
@@ -584,7 +588,8 @@ class AccueilControllerConfigBoiteLoginPostTest extends AccueilControllerConfigB
 												 'profil_redirect' => 678,
 												 'profil_logout_redirect' => 345]);
 
-		$this->_prefs = Class_Profil::getCurrentProfil()->getModuleAccueilPreferences(32);
+		$this->_prefs = Class_Profil::getCurrentProfil()
+			->getModuleAccueilPreferences(32, 'LOGIN');
 	}
 
 
@@ -662,7 +667,7 @@ extends AccueilControllerWithParentProfileConfigBoiteLoginTestCase {
 
 		$this->_prefs = Class_Profil::getCurrentProfil()
 			->getParentProfil()
-			->getModuleAccueilPreferences(32);
+			->getModuleAccueilPreferences(32, 'LOGIN');
 	}
 
 
@@ -706,7 +711,7 @@ class AccueilControllerPostConfigBoiteKiosqueProfilLognesTestCase extends Admin_
 
 	/** @test */
 	public function titleShouldBeTitreDuKiosque() {
-		$this->assertEquals('titre du /kiosque', Class_Profil::getCurrentProfil()->getModuleAccueilConfig(32)['preferences']['titre']);
+		$this->assertEquals('titre du /kiosque', Class_Profil::getCurrentProfil()->getModuleAccueilConfig(32, 'KIOSQUE')['preferences']['titre']);
 	}
 }
 
@@ -1066,7 +1071,8 @@ class AccueilControllerWidgetDomainPostConfigurationTest extends Admin_AbstractC
 
 		$this->postDispatch('/admin/accueil/domain-browser?config=accueil&id_profil=2&id_module=5&type_module=DOMAIN_BROWSER', 
 			$this->pref_list);
-		$this->pref=Class_Profil::getCurrentProfil()->getModuleAccueilConfig(5)['preferences'];
+		$this->pref = Class_Profil::getCurrentProfil()
+			->getModuleAccueilConfig(5, 'DOMAIN_BROWSER')['preferences'];
 
 	}
 
diff --git a/tests/application/modules/admin/controllers/BatchControllerTest.php b/tests/application/modules/admin/controllers/BatchControllerTest.php
index c56604fb3585f24ab39f3dd14ace54eb44d5dac2..4159354c61347009a6ce81b875bd2f4823005fcd 100644
--- a/tests/application/modules/admin/controllers/BatchControllerTest.php
+++ b/tests/application/modules/admin/controllers/BatchControllerTest.php
@@ -76,12 +76,6 @@ class BatchControllerWithBatchInDb extends BatchControllerTestCase {
 	public function batchActionShouldRunMyTask() {
 		$this->assertXPath('//a[contains(@href, "batch/run")]');
 	}
-
-
-	/** @test */
-	public function batchActionShouldRunAjaxMyTask() {
-		$this->assertXPath('//a[contains(@href, "batch/run-ajax")]');
-	}
 }
 
 
@@ -219,4 +213,26 @@ class BatchControllerRunMoissonnageVodeclicTest extends BatchControllerTestCase
 
 }
 
+
+
+class BatchControllerRunAjaxAutocompleteTest extends BatchControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->fixture('Class_Batch', ['id' => 42, 'type' => 'AUTOCOMPLETE_RECORD_TITLE']);
+		$this->dispatch('/admin/batch', true);
+	}
+
+
+	/** @test */
+	public function batchActionShouldRunAjaxMyTask() {
+		$this->assertXPath('//a[contains(@href, "batch/run-ajax/id/42")]');
+	}
+
+
+	/** @test */
+	public function batchActionShouldNotRunSimpleMyTask() {
+		$this->assertNotXPath('//a[contains(@href, "batch/run/id/42")]');
+	}
+}
+
 ?>
diff --git a/tests/application/modules/admin/controllers/CatalogueControllerTest.php b/tests/application/modules/admin/controllers/CatalogueControllerTest.php
index 552b332ca821f845408b8fa874bc225314dc2905..3dab132da37064174f3e1f3ccf2b16647b427207 100644
--- a/tests/application/modules/admin/controllers/CatalogueControllerTest.php
+++ b/tests/application/modules/admin/controllers/CatalogueControllerTest.php
@@ -1026,9 +1026,10 @@ class CatalogueControllerAddCatalogueToAdultesPostTest extends AdminCatalogueCon
 
 	/** @test **/
 	public function boiteKiosqueShouldBeUpdatedToNewCatalogue78() {
-		$this->assertEquals( 78, 
-												 Class_Profil::getCurrentProfil()
-												 ->getModuleAccueilPreferences(10)['id_catalogue']);
+		$this->assertEquals(
+			78, 
+			Class_Profil::getCurrentProfil()
+			->getModuleAccueilPreferences(10, 'KIOSQUE')['id_catalogue']);
 	}
 }
 
diff --git a/tests/application/modules/admin/controllers/CmsControllerTest.php b/tests/application/modules/admin/controllers/CmsControllerTest.php
index 00f14be96b8f5c7aa7f99d98c00a0210bd035332..b2a73c7e34834c869a03efac2b97c96d4f94b85d 100644
--- a/tests/application/modules/admin/controllers/CmsControllerTest.php
+++ b/tests/application/modules/admin/controllers/CmsControllerTest.php
@@ -134,13 +134,16 @@ abstract class CmsControllerTestCase extends Admin_AbstractControllerTestCase {
 
 
 	public function setupArticles() {
-		$cat_a_la_une = Class_ArticleCategorie::newInstanceWithId(23, ['libelle' => 'A la Une']);
+		$cat_a_la_une = $this->fixture('Class_ArticleCategorie',
+																	 ['id' => 23, 
+																		'libelle' => 'A la Une']);
 		$this->annecy->setArticleCategories([$cat_a_la_une]);
 
-		$this->cat_evenements = Class_ArticleCategorie::newInstanceWithId(34, 
-																																			['libelle' => 'Evènements',
-																																			 'parent_categorie' => $cat_a_la_une,
-																																			 'sous_categories' => []]);
+		$this->cat_evenements = $this->fixture('Class_ArticleCategorie',
+																					 ['id' => 34, 
+																						'libelle' => 'Evènements',
+																						'parent_categorie' => $cat_a_la_une,
+																						'sous_categories' => []]);
 		$cat_a_la_une->setSousCategories([$this->cat_evenements]);
 
 
@@ -1926,6 +1929,8 @@ class CmsControllerArticleNewTraductionPostTest extends CmsControllerTestCase {
 }
 
 
+
+
 class CmsControllerDeleteArticleTest extends CmsControllerTestCase {
 	public function setUp() {
 		parent::setUp();
@@ -1987,6 +1992,7 @@ class CmsControllerForceDeleteArticleTest extends CmsControllerTestCase {
 
 
 
+
 class CmsControllerCategorieEvenementTest extends CmsControllerTestCase {
 
 	/** @test */
@@ -2007,6 +2013,14 @@ class CmsControllerCategorieEvenementTest extends CmsControllerTestCase {
 	}
 
 
+	/** @test */
+	public function addCategorieCancelButtonShouldLinkToIndexIdCat34() {
+		$this->dispatch('/admin/cms/catadd/id/34');
+		$this->assertXPath("//div[contains(@onclick, '/admin/cms/index/id_cat/34')]", 
+											 $this->_response->getBody());
+	}
+
+
 	/** @test */
 	function editCategorieShouldDisplayAllCat() {
 		$this->dispatch('/admin/cms/catedit/id/34');
@@ -2016,16 +2030,22 @@ class CmsControllerCategorieEvenementTest extends CmsControllerTestCase {
 	}
 
 
+	/** @test */
+	public function editCategorieCancelButtonShouldLinkToIndexIdCat34() {
+		$this->dispatch('/admin/cms/catedit/id/34');
+		$this->assertXPath("//div[contains(@onclick, '/admin/cms/index/id_cat/34')]", 
+											 $this->_response->getBody());
+	}
+
+
 	/** @test */
 	function postAddCategorieShouldRedirectWithIdCat() {
-		$this
-			->getRequest()
-			->setMethod('POST')
-			->setPost(array('libelle' => 'concerts',
-											'id_cat_mere' => 34));
-		$this->dispatch('/admin/cms/catadd/id/34');
+		$this->postDispatch('/admin/cms/catadd/id/34',
+												['libelle' => 'concerts', 
+												 'id_cat_mere' => 34]);
 
-		$this->assertEquals('/admin/cms/index/id_cat/34', $this->getResponseLocation());
+
+		$this->assertEquals('/admin/cms/index/id_cat/35', $this->getResponseLocation());
 
 		$new_cat = $this->categorie_wrapper->getFirstAttributeForLastCallOn('save');
 		$this->assertEquals('concerts', $new_cat->getLibelle());
@@ -2052,6 +2072,7 @@ class CmsControllerCategorieEvenementTest extends CmsControllerTestCase {
 
 
 
+
 class CmsControllerCategorieNotFoundTest extends CmsControllerTestCase {
 	/** @test */
 	function deleteShouldRedirectToAdminCms() {
@@ -2108,7 +2129,10 @@ class CmsControllerNewsAddToCatALaUneInNewsModuleActionTest extends CmsControlle
 
 	/** @test **/
 	public function boiteNewsShouldDisplayArticleConcert() {
-		$this->assertEquals( 4, Class_Profil::getCurrentProfil()->getModuleAccueilPreferences(10)['id_items']);
+		$this->assertEquals(
+			4, 
+			Class_Profil::getCurrentProfil()
+			->getModuleAccueilPreferences(10, 'NEWS')['id_items']);
 	}
 
 
@@ -2118,8 +2142,10 @@ class CmsControllerNewsAddToCatALaUneInNewsModuleActionTest extends CmsControlle
 	}
 }
 
-class CmsControllerWithOptionPublicationDirecteWorkflowTest extends CmsControllerTestCase {
 
+
+
+class CmsControllerWithOptionPublicationDirecteWorkflowTest extends CmsControllerTestCase {
 	public function setup() {
 		parent::setup();
 		Class_Users::beVolatile();
diff --git a/tests/application/modules/admin/controllers/IndexControllerTest.php b/tests/application/modules/admin/controllers/IndexControllerTest.php
index 0195250b1726b2f56c29386c46754ea50e7225f0..6785e26082f45702c475f624d07cd74cc9680d93 100644
--- a/tests/application/modules/admin/controllers/IndexControllerTest.php
+++ b/tests/application/modules/admin/controllers/IndexControllerTest.php
@@ -20,6 +20,29 @@
  */
 require_once 'AdminAbstractControllerTestCase.php';
 
+
+class IndexControllerIndexTest extends Admin_AbstractControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->dispatch('/admin/index/index', true);
+	}
+
+
+	/** @test */
+	public function linkToGoogleGroupShouldBePresent() {
+		$this->assertXPathContentContains(
+			'//a[contains(@href, "utilisateurs-bokeh")]', 'Google group Bokeh');
+	}
+
+
+	/** @test */
+	public function embedForumShouldBePresent() {
+		$this->assertXPathContentContains('//script', 'embed/?place=forum/utilisateurs-bokeh');
+	}
+}
+
+
+
 class IndexControllerHeartBeatTest extends Admin_AbstractControllerTestCase {
 	/** @test */
 	public function adminPageShouldContainsHeartbeatScript() {
diff --git a/tests/application/modules/admin/controllers/ModulesControllerTest.php b/tests/application/modules/admin/controllers/ModulesControllerTest.php
index 81e24a318f1710e529458e1abfbdc6215b76126b..e76dca9dc6157b32d55a5894ba9ebe10bccd2f09 100644
--- a/tests/application/modules/admin/controllers/ModulesControllerTest.php
+++ b/tests/application/modules/admin/controllers/ModulesControllerTest.php
@@ -481,7 +481,8 @@ class ModulesControllerChangeKiosqueSelectionPostSaveIdPanierTest extends Admin_
 		$this->postDispatch('/admin/modules/kiosque-change-data/id_module/3', 
 												['id_panier'=> 5,
 												 'id_catalogue' => 0]);
-		$this->saved_preferences = Class_Profil::getFirstAttributeForLastCallOn('save')->getModuleAccueilPreferences(3);
+		$this->saved_preferences = Class_Profil::getFirstAttributeForLastCallOn('save')
+			->getModuleAccueilPreferences(3, 'KIOSQUE');
 	}
 
 
@@ -545,7 +546,8 @@ class ModulesControllerChangeKiosqueSelectionPostSaveIdCatalogueTest extends Mod
 		$this->postDispatch('/admin/modules/kiosque-change-data/id_module/3', 
 												['id_catalogue' => 5,
 												 'id_panier' => 0]);
-		$this->saved_preferences = Class_Profil::getFirstAttributeForLastCallOn('save')->getModuleAccueilPreferences(3);
+		$this->saved_preferences = Class_Profil::getFirstAttributeForLastCallOn('save')
+			->getModuleAccueilPreferences(3, 'KIOSQUE');
 	}
 
 
@@ -572,7 +574,8 @@ class ModulesControllerChangeKiosqueSelectionPostSaveNullPanierTest extends Modu
 		$this->postDispatch('/admin/modules/kiosque-change-data/id_module/3', 
 												['id_panier' => 0,
 												 'id_catalogue' => 0]);
-		$this->saved_preferences = Class_Profil::getFirstAttributeForLastCallOn('save')->getModuleAccueilPreferences(3);
+		$this->saved_preferences = Class_Profil::getFirstAttributeForLastCallOn('save')
+			->getModuleAccueilPreferences(3, 'KIOSQUE');
 	}
 
 
diff --git a/tests/application/modules/admin/controllers/OpdsControllerTest.php b/tests/application/modules/admin/controllers/OpdsControllerTest.php
index a063ac74bae38f739bde2ed99a1e8b66f2c52127..d95bc5ef717b02cd5590fe5e377e4a4b54e635d0 100644
--- a/tests/application/modules/admin/controllers/OpdsControllerTest.php
+++ b/tests/application/modules/admin/controllers/OpdsControllerTest.php
@@ -648,8 +648,7 @@ class OPDSFeedFromFeedbooksFixtures {
     <opds:indirectAcquisition type="application/epub+zip"/>
   </opds:indirectAcquisition>
 </link>
-<link type="application/atom+xml;type=entry;profile=opds-catalog" href="http://www.feedbooks.com/item/4141.atom" rel="alternate" title="Full entry"/>
-</entry>
+<link type="application/atom+xml;type=entry;profile=opds-catalog" href="http://www.feedbooks.com/item/4141.atom" rel="alternate" title="Full entry"></link>
 <entry>
 <title>Always a Bridesmaid</title>
 <id>http://www.feedbooks.com/item/429288</id>
diff --git a/tests/application/modules/admin/controllers/ProfilControllerPageAccueilTest.php b/tests/application/modules/admin/controllers/ProfilControllerPageAccueilTest.php
index 6d1e1c35f44206b0b164e29c687de0c9d3035c5e..54950a8f3f5cae6e7a2e1c2c7182cc3dbdbf6e84 100644
--- a/tests/application/modules/admin/controllers/ProfilControllerPageAccueilTest.php
+++ b/tests/application/modules/admin/controllers/ProfilControllerPageAccueilTest.php
@@ -64,7 +64,6 @@ abstract class Admin_ProfilControllerPageAccueilJeunesseTestCase extends Admin_A
 																						'type_module' => 'MULTIMEDIA',
 																						'preferences' => []],
 
-
 																	 '13' => ['division' => 1,
 																						'type_module' => 'HISTORIQUE_RECHERCHES',
 																						'preferences' => []],
@@ -76,6 +75,7 @@ abstract class Admin_ProfilControllerPageAccueilJeunesseTestCase extends Admin_A
 																	 '666' => ['division' => 1,
 																						 'type_module' => 'WRONG',
 																						 'preferences' => []],
+
 																	 '789' => ['division' => 1,
 																						 'type_module' => 'LOGIN',
 																						 'preferences' => ['titre'=>'Connection']]]];
@@ -245,7 +245,7 @@ class Admin_ProfilControllerPageAccueilJeunesseTest extends Admin_ProfilControll
 	 * @test 
 	 */
 	public function shouldPutDefaultNewsPrefereces($profil_jeunesse) {
-		$news = $profil_jeunesse->getModuleAccueilConfig(2);
+		$news = $profil_jeunesse->getModuleAccueilConfig(2, 'NEWS');
 		$this->assertEquals(1, $news['division']);
 		$this->assertEquals('NEWS', $news['type_module']);
 		$this->assertEquals('Articles', $news['preferences']['titre']);
@@ -257,7 +257,7 @@ class Admin_ProfilControllerPageAccueilJeunesseTest extends Admin_ProfilControll
 	 * @test 
 	 */
 	public function shouldKeepKiosquePrefereces($profil_jeunesse) {
-		$kiosque = $profil_jeunesse->getModuleAccueilConfig(3);
+		$kiosque = $profil_jeunesse->getModuleAccueilConfig(3, 'KIOSQUE');
 		$this->assertEquals(12, $kiosque['preferences']['nb_notices']);
 		$this->assertEquals(36, $kiosque['preferences']['nb_analyse']);
 
@@ -271,7 +271,7 @@ class Admin_ProfilControllerPageAccueilJeunesseTest extends Admin_ProfilControll
 	 * @test 
 	 */
 	public function shouldKeepRechSimpleInBanniere($profil_jeunesse) {
-		$rech = $profil_jeunesse->getModuleAccueilConfig(1);
+		$rech = $profil_jeunesse->getModuleAccueilConfig(1, 'RECH_SIMPLE');
 		$this->assertEquals(4, $rech['division']);
 	}
 
@@ -298,7 +298,7 @@ class Admin_ProfilControllerPageAccueilJeunesseTest extends Admin_ProfilControll
 	 * @test 
 	 */
 	public function boiteDeuxColonnesShouldGetIdFourAndDefaultValues($profil_jeunesse) {
-		$b2cols = $profil_jeunesse->getModuleAccueilConfig(4);
+		$b2cols = $profil_jeunesse->getModuleAccueilConfig(4, 'CONTENEUR_DEUX_COLONNES');
 		$this->assertEquals(2, $b2cols['division']);
 		$this->assertEquals('CONTENEUR_DEUX_COLONNES', $b2cols['type_module']);
 		$this->assertEquals('NEWS', $b2cols['preferences']['col_gauche_type']);
@@ -546,16 +546,18 @@ class Admin_ProfilControllerPageAccueilJeunesseConfigNewslettersTest extends Adm
 
 
 class Admin_ProfilControllerPageAccueilJeunesseConfigEmptyNewsletterTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase {
-
 	public function setup() {
 		parent::setup();
-		$this->dispatch('admin/accueil/newsletters?config=admin&id_profil=7&type_module=NEWSLETTERS&id_module=11',true);
+		$this->dispatch('admin/accueil/newsletters?config=admin&id_profil=7&type_module=NEWSLETTERS&id_module=10', true);
 
 	}
 
+
 	/** @test */
 	public function titreInputShouldHaveValueMesNewsletters() {
-		$this->assertXPath('//input[@name="titre"][@value="Lettres d\'informations"]',$this->_response->getBody());
+		$this->assertXPath(
+			'//input[@name="titre"][@value="Lettres d\'informations"]',
+			$this->_response->getBody());
 	}
 }
 
@@ -593,13 +595,12 @@ class Admin_ProfilControllerPageAccueilJeunesseConfigMultimediaTest extends Admi
 
 
 class Admin_ProfilControllerPageAccueilJeunesseConfigEmptyMultimediaTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase {
-
 	public function setup() {
 		parent::setup();
-		$this->dispatch('admin/accueil/multimedia?config=admin&id_profil=7&type_module=MULTIMEDIA&id_module=11',true);
-
+		$this->dispatch('admin/accueil/multimedia?config=admin&id_profil=7&type_module=MULTIMEDIA&id_module=12', true);
 	}
 
+
 	/** @test */
 	public function titreInputShouldHaveValuePostesMultimedia() {
 		$this->assertXPath('//input[@name="titre"][@value="Postes multimédia"]');
@@ -686,11 +687,13 @@ class Admin_ProfilControllerPageAccueilJeunesseConfigPanierTest extends Admin_Pr
 		$this->dispatch('admin/accueil/panier?config=admin&id_profil=7&type_module=PANIER&id_module=81&proprietes=boite=/titre=Panier/',true);
 	}
 
+
 	/** @test */
 	public function actionShouldBePanier() {
 		$this->assertAction('panier');
 	}
 
+
 	/** @test */
 	public function titleShouldBeProprieteDuModulePanier() {
 		$this->assertXPathContentContains('//h1','Propriétés du module Panier');
@@ -707,22 +710,22 @@ class Admin_ProfilControllerPageAccueilJeunesseConfigPanierTest extends Admin_Pr
 	public function titreInputShouldHaveValuePanier() {
 		$this->assertXPath('//input[@name="titre"][@value="Panier"]');
 	}
-
 }
 
 
 
 class Admin_ProfilControllerPageAccueilJeunesseConfigEmptyPanierTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase {
-
 	public function setup() {
 		parent::setup();
-		$this->dispatch('admin/accueil/panier?config=admin&id_profil=7&type_module=PANIER&id_module=81',true);
-
+		$this->dispatch('admin/accueil/panier?config=admin&id_profil=7&type_module=PANIER&id_module=81', true);
 	}
 
+
 	/** @test */
-	public function titreInputShouldHaveValueMesReservations() {
-		$this->assertXPath('//input[@name="titre"][@value="Panier"]');
+	public function titreInputShouldHaveValuePanier() {
+		$this->assertXPath(
+			'//input[@name="titre"][@value="Panier"]', 
+			$this->_response->getBody());
 	}
 }
 
diff --git a/tests/application/modules/admin/controllers/UserGroupControllerTest.php b/tests/application/modules/admin/controllers/UserGroupControllerTest.php
index bd115237ff21968da6873b1e772460d01aefb975..f075bbb7b3ae4c713b582d8911c797354510a2a9 100644
--- a/tests/application/modules/admin/controllers/UserGroupControllerTest.php
+++ b/tests/application/modules/admin/controllers/UserGroupControllerTest.php
@@ -719,57 +719,56 @@ class Admin_UserGroupControllerWrongIdsTest extends Admin_UserGroupControllerTes
 
 
 class Admin_UserGroupControllerRessourcesNumeriquesTest extends Admin_UserGroupControllerTestCase {
-	/** @test */
-	public function editArteGroupShouldBeVisible() {
-		RessourcesNumeriquesFixtures::activateArteVod();
-		$this->dispatch('admin/usergroup/edit/id/6', true);
-
-		$this->assertXPathContentContains('//label','ARTE',$this->_response->getBody());
-	}
-
-
-
-	/** @test */
-	public function editVodeclicGroupShouldBeVisible() {
-		RessourcesNumeriquesFixtures::activateVodeclic();
+	public function datas() {
+		return [
+			['ArteVod', 'ARTE'],
+			['Vodeclic', 'Vodéclic'],
+			['Numilog', 'Numilog'],
+			['CVS', 'CVS'],
+			['ToutApprendre', 'Tout Apprendre'],
+			['MusicMe', 'Music Me'],
+			['NumeriquePremium', 'Numérique Premium'],
+			['Lekiosk', 'Lekiosk.com'],
+		];
+	}
+
+
+	/** 
+	 * @test
+	 * @dataProvider datas
+	 */
+	public function ressourceActivatedShouldBeVisible($type, $label) {
+		call_user_func(['RessourcesNumeriquesFixtures', 'activate' . $type]);
 		$this->dispatch('admin/usergroup/edit/id/6', true);
-		$this->assertXPathContentContains('//label','Vodéclic',$this->_response->getBody());
-	
+		$this->assertXPathContentContains('//label', $label, $this->_response->getBody());
 	}
 
 
-	/** @test */
-	public function editNumilogGroupShouldBeVisible() {
-
-		Class_AdminVar::newInstanceWithId('NUMILOG_URL',['valeur' => 'http://numilogurl/action']);
+	/** 
+	 * @test
+	 * @dataProvider datas
+	 */
+	public function ressourceDeactivatedShouldNotBeVisible($type, $label) {
+		call_user_func(['RessourcesNumeriquesFixtures', 'deactivate' . $type]);
 		$this->dispatch('admin/usergroup/edit/id/6', true);
-		$this->assertXPathContentContains('//label','Numilog',$this->_response->getBody());
-	
+		$this->assertNotXPathContentContains('//label', $label, $this->_response->getBody());
 	}
 
 
-
 	/** @test */
-	public function editCVSGroupShouldBeVisible() {
-		RessourcesNumeriquesFixtures::activateCVS();
+	public function editCyberlibrisGroupShouldBeVisible() {
+		RessourcesNumeriquesFixtures::activateCyberlibris();
 		$this->dispatch('admin/usergroup/edit/id/6', true);
-		$this->assertXPathContentContains('//label','CVS',$this->_response->getBody());
-	
+		$this->assertXPathContentContains('//label','Cyberlibris',$this->_response->getBody());	
 	}
 
 
-
-
 	/** @test */
 	public function editToutApprendreGroupShouldBeVisible() {
-		RessourcesNumeriquesFixtures::activateCVS();
+		RessourcesNumeriquesFixtures::activateToutApprendre();
 		$this->dispatch('admin/usergroup/edit/id/6', true);
-		$this->assertXPathContentContains('//label','Tout Apprendre',$this->_response->getBody());
-	
+		$this->assertXPathContentContains('//label','Tout Apprendre',$this->_response->getBody());	
 	}
-
-
-
 }
 
 
diff --git a/tests/application/modules/opac/controllers/AbonneControllerFicheTest.php b/tests/application/modules/opac/controllers/AbonneControllerFicheTest.php
index 1984885600029fb07e8c1dda0931ec56462688c4..8c0b59584a9170642feee414ed7f4915cdcbdb54 100644
--- a/tests/application/modules/opac/controllers/AbonneControllerFicheTest.php
+++ b/tests/application/modules/opac/controllers/AbonneControllerFicheTest.php
@@ -23,8 +23,9 @@ abstract class AbstractAbonneControllerFicheTest extends AbstractControllerTestC
 	public function setUp() {
 		parent::setUp();
 		$this->marcus = Class_Users::newInstanceWithId(10,
-																									 ['prenom' => 'Marcus',
-																										'nom' => 'Miller']);
+		['prenom' => 'Marcus',
+		'nom' => 'Miller',
+		'pseudo' => '']);
 		ZendAfi_Auth::getInstance()->logUser($this->marcus);
 	}
 }
@@ -89,6 +90,18 @@ class AbonneControllerFicheAsAbonneTest extends AbstractAbonneControllerFicheTes
 	public function linkToLogoutShouldBePresent() {
 		$this->assertXPath('//a[contains(@href, "/auth/logout")]');
 	}
+
+
+	/** @test */
+	public function marcusFirstNameShouldBePresent() {
+		$this->assertXPathContentContains('//div[@class="abonneTitre"]', 'Marcus');
+	}
+
+	
+		/** @test */
+	public function marcusLastNameShouldBePresent() {
+		$this->assertXPathContentContains('//div[@class="abonneTitre"]//span[@data-name="last-name"]', 'Miller');
+	}
 }
 
 
diff --git a/tests/application/modules/opac/controllers/AbonneControllerFormationsTest.php b/tests/application/modules/opac/controllers/AbonneControllerFormationsTest.php
index 2fd9a93b85a4a9309333965cfe75494b8d94f1d1..2ee9af6d840d3c1884af6d6b3505c2017cab4e36 100644
--- a/tests/application/modules/opac/controllers/AbonneControllerFormationsTest.php
+++ b/tests/application/modules/opac/controllers/AbonneControllerFormationsTest.php
@@ -346,8 +346,8 @@ class AbonneControllerFormationsListTest extends AbstractAbonneControllerFormati
 
 
 	/** @test */
-	public function barreNavShouldContainsAccueilThatLinksToProfilFourtyTwo() {
-		$this->assertXPathContentContains('//div[@class="barre_nav"]//a[contains(@href, "index/index?id_profil=42")]', 
+	public function barreNavShouldContainsAccueilThatLinksToProfilOne() {
+		$this->assertXPathContentContains('//div[@class="barre_nav"]//a[contains(@href, "index/index?id_profil=1")]', 
 																			'Accueil');
 	}
 }
diff --git a/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php b/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
index d46eccbf2e9af89671ab49a49665a4d1cbd66d97..f7df2434016dca6c6c6ae0dd4e476ac63160cc79 100644
--- a/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
+++ b/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
@@ -159,7 +159,14 @@ class AbonneControllerPretsExportTwoPretsTest extends AbonneControllerPretsListT
 class AbonneControllerPretsListTwoPretsTest extends AbonneControllerPretsListTwoPretsTestCase {
 	public function setUp() {
 		parent::setUp();
-		$this->dispatch('/opac/abonne/prets');
+		$this->dispatch('/opac/abonne/prets', true);
+	}
+
+	
+	/** @test */
+	public function returnToMyHomeShouldBePresent() {
+		$this->assertXPathContentContains('//a[contains(@href, "/abonne/fiche")]',
+		utf8_encode('Retour à mon compte'));
 	}
 
 
diff --git a/tests/application/modules/opac/controllers/AuthControllerTest.php b/tests/application/modules/opac/controllers/AuthControllerTest.php
index 3646ec660acf36a72a307cdad5e121c1dc0de145..d4a34017ca532ae6774f9b19a24a3799c6b84457 100644
--- a/tests/application/modules/opac/controllers/AuthControllerTest.php
+++ b/tests/application/modules/opac/controllers/AuthControllerTest.php
@@ -574,6 +574,74 @@ class AuthControllerNoLoggedTest extends AuthControllerNobodyLoggedTestCase {
 }
 
 
+
+class AuthControllerUserIsLoggedTest extends PortailWithOneLoginModuleTestCase {
+	public function setUp() {
+		parent::setUp();
+		$marcus = $this->fixture('Class_Users',
+		['id' => 1,
+		'pseudo' => '',
+		'login' => 'sysadm',
+		'password' => 'sysadmPassword',
+		'nom' => 'Miller',
+		'prenom' => 'Marcus']);
+		ZendAfi_Auth::getInstance()->logUser($marcus);
+		$this->dispatch('/opac/auth/login',true);
+	}
+
+	/** @test */
+	public function bienvenueMarcusMillerShouldBePresent() {
+		$this->assertXPath('//div//div[@class="welcome"][contains(text(),"Bienvenue Marcus")]//span[@data-name="last-name"][contains(text(), "Miller")]');		
+	}
+}
+
+class AuthControllerUserNameIsEscaped extends PortailWithOneLoginModuleTestCase {
+	public function setUp() {
+		parent::setUp();
+		$marcus = $this->fixture('Class_Users',
+		['id' => 1,
+		'pseudo' => '',
+		'login' => 'sysadm',
+		'password' => 'sysadmPassword',
+		'nom' => '<script>Miller',
+		'prenom' => '<script>Marcus']);
+		ZendAfi_Auth::getInstance()->logUser($marcus);
+		$this->dispatch('/opac/auth/login',true);
+	}
+
+	/** @test */
+	public function userNameShouldBeEscaped() {
+		$this->assertXPathContentContains("//div[@class='welcome']", "Bienvenue &lt;script&gt;Marcus");
+	}
+
+	/** @test */
+	public function userSurNameShouldBeEscaped() {
+		$this->assertXPathContentContains("//span[@data-name='last-name']", "&lt;script&gt;Miller");
+	}
+	
+
+}
+
+class AuthControllerPseudoIsEscaped extends PortailWithOneLoginModuleTestCase {
+	public function setUp() {
+		parent::setUp();
+		$marcus = $this->fixture('Class_Users',
+		['id' => 1,
+		'pseudo' => '<script>pseudo',
+		'login' => 'sysadm',
+		'password' => 'sysadmPassword',
+		'nom' => 'Miller',
+		'prenom' => 'Marcus']);
+		ZendAfi_Auth::getInstance()->logUser($marcus);
+		$this->dispatch('/opac/auth/login',true);
+	}
+
+	/** @test */
+	public function userPseudoShouldBeEscaped() {
+		$this->assertXPathContentContains("//div[@class='welcome']", "Bienvenue &lt;script&gt;pseudo");
+	}
+}
+
 class AuthControllerAdminIsLoggedTest extends PortailWithOneLoginModuleTestCase {
 	public function setUp() {
 		parent::setUp();
@@ -591,7 +659,7 @@ class AuthControllerAdminIsLoggedTest extends PortailWithOneLoginModuleTestCase
 
 
 	public function testBoiteLoginDisplaysBienvenueSysadm() {
-		$this->assertQueryContentContains('#boite_login .welcome', 'Bienvenue sysadm',$this->_response->getBody());
+		$this->assertQueryContentContains('#boite_login .welcome', 'Bienvenue sysadm');
 	}
 
 
diff --git a/tests/application/modules/opac/controllers/CasServerControllerTest.php b/tests/application/modules/opac/controllers/CasServerControllerTest.php
index 5aaa827bbed24d6bc8274664a49f06d9839dc9ac..055acafccef78a2e7d1a5c642fabf3a51c837a6d 100644
--- a/tests/application/modules/opac/controllers/CasServerControllerTest.php
+++ b/tests/application/modules/opac/controllers/CasServerControllerTest.php
@@ -18,8 +18,7 @@
  * along with AFI-OPAC 2.0; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
-require_once 'AbstractControllerTestCase.php';
-require_once 'application/modules/opac/controllers/CasServerController.php';
+
 
 class CasServerControllerValidateActionTest extends AbstractControllerTestCase {
 	protected $session_file_contents_logged;
@@ -38,7 +37,7 @@ class CasServerControllerValidateActionTest extends AbstractControllerTestCase {
 	/** @test */
 	public function requestWithNoTicketShouldRespondinvalidRequestFailureXML() {		
 		$this->dispatch('/opac/cas-server/validate?service=http://test.com');
-			$this->assertContains('<cas:authenticationFailure code="INVALID_REQUEST">',$this->_response->getBody());
+		$this->assertContains('<cas:authenticationFailure code="INVALID_REQUEST">',$this->_response->getBody());
 	}
 
 
@@ -77,6 +76,59 @@ class CasServerControllerValidateActionTest extends AbstractControllerTestCase {
 		$this->assertContains('<cas:user>300</cas:user>',$this->_response->getBody());
 		$this->assertContains('<cas:proxyGrantingTicket>',$this->_response->getBody());
 	}
+
+
+	/** 
+	 * see http://www.jasig.org/cas/protocol#validate-cas-1.0
+	 * @test 
+	 */
+	public function validateOnCasOneZeroWithValidTicketShouldAnswerYesLF() {
+		$this->dispatch(
+			'/opac/cas-server-v10/validate?ticket=ST-'.md5(Zend_Session::getId().'300').'&service=http://test.com', 
+			true);
+		$this->assertEquals('yes'.chr(10), $this->_response->getBody());
+	}
+
+
+	/**  @test  */
+	public function validateOnCasOneZeroWithInValidTicketShouldAnswerNoLF() {
+		$this->dispatch(
+			'/opac/cas-server-v10/validate?ticket=zork&service=http://test.com', 
+			true);
+		$this->assertEquals('no'.chr(10), $this->_response->getBody());
+	}
+
+
+	/** @test */
+	public function loginOnCasOneZeroShouldRedirectToServiceWithTicket() {
+		$this->dispatch('/opac/cas-server-v10/login?service=http://test.com', true);
+		$this->assertRedirectTo(
+			'http://test.com?ticket='.(new Class_CasTicket())->getTicketForCurrentUser(),
+			$this->getResponseLocation());
+	}
+
+
+	/** @test */
+	public function loginOnCasOneZeroWithoutOpenedSessionShouldDisplayLoginForm() {
+		ZendAfi_Auth::getInstance()->clearIdentity();
+		$this->dispatch('/opac/cas-server-v10/login?service=http://test.com', true);
+		$this->assertXPath('//form//input[@name="password"]');
+	}
+
+
+	/** @test */
+	public function logoutOnCasOneZeroShouldClearIdentityAndDisplayThatYouHaveBeenDisconnected() {
+		$this->dispatch('/opac/cas-server-v10/logout', true);
+		$this->assertXPathContentContains('//p', 'Vous avez été déconnecté');
+		$this->assertEmpty(ZendAfi_Auth::getInstance()->getIdentity());
+	}
+
+
+	/** @test */
+	public function logoutOnCasOneZeroWithUrlParamShouldRedirectToIt() {
+		$this->dispatch('/opac/cas-server-v10/logout?url=http://go-out.com', true);
+		$this->assertRedirectTo('http://go-out.com');
+	}
 }
 
 
@@ -116,3 +168,5 @@ class CasServerControllerMusicMeValidateActionTest extends AbstractControllerTes
 	}
 
 }
+
+?>
\ No newline at end of file
diff --git a/tests/application/modules/opac/controllers/CmsControllerTest.php b/tests/application/modules/opac/controllers/CmsControllerTest.php
index 372e4ed34fe837ef45bdd69c8fd9de227742b023..07bb1c09c9fa118165a9a7fb99ec01a1bac83ab6 100644
--- a/tests/application/modules/opac/controllers/CmsControllerTest.php
+++ b/tests/application/modules/opac/controllers/CmsControllerTest.php
@@ -780,7 +780,7 @@ class CmsControllerArticleViewTest extends CmsControllerWithFeteDeLaFriteTestCas
 	 * @group pagetitles
 	 */
 	public function pageArticleviewBarreNavShouldContainsLinkToCurrentProfil() {
-	  $this->assertXPathContentContains('//div[@class="barre_nav"]/span/a[contains(@href,"/index/index?id_profil=2")]','Accueil');
+	  $this->assertXPathContentContains('//div[@class="barre_nav"]/span/a[contains(@href,"/index/index?id_profil=1")]','Accueil');
 	}
 
 
@@ -1383,4 +1383,4 @@ class CmsControllerCategorieViewTest extends CmsControllerListTestCase {
 	protected function _dispatchHook() {
 		$this->dispatch('/cms/categorieview');
 	}
-}
\ No newline at end of file
+}
diff --git a/tests/application/modules/opac/controllers/ModulesControllerTest.php b/tests/application/modules/opac/controllers/ModulesControllerTest.php
index 8b0855b84497fd7df5656199de9c460cda73fd06..a67b8ae2f61b64b3a135b7a945b3c10c0f82b109 100644
--- a/tests/application/modules/opac/controllers/ModulesControllerTest.php
+++ b/tests/application/modules/opac/controllers/ModulesControllerTest.php
@@ -20,59 +20,80 @@
  */
 require_once 'AbstractControllerTestCase.php';
 
-class ModulesControllerCVSTest extends AbstractControllerTestCase {
-	public function setUp() {
-		parent::setUp();
-		RessourcesNumeriquesFixtures::activateCVS();
+
+class ModulesControllerLoginRequiredTest extends AbstractControllerTestCase {
+	public function datas() {
+		return [
+			['CVS', 'cvs'],
+			['Vodeclic', 'vodeclic'],
+			['ToutApprendre', 'toutapprendre'],
+			['LeKiosk', 'lekiosk']
+		];
 	}
 
 
-	/** @test */
-	public function cvsUrlWithoutUserShouldBeLoginPage() {
+	/** 
+	 * @test 
+	 * @dataProvider datas
+	 */
+	public function withoutLoginShouldRedirectToLogin($type, $action) {
+		call_user_func(['RessourcesNumeriquesFixtures', 'activate'.$type]);
 		ZendAfi_Auth::getInstance()->clearIdentity();
-		$this->dispatch('/opac/modules/cvs');
+		$this->dispatch('/opac/modules/' . $action);
 		$this->assertContains('/auth/login',$this->_response->getBody());
-	
 	}
 }
 
 
 
-
-class ModulesControllerVodeclicTest extends AbstractControllerTestCase {
+class ModulesControllerLeKioskUserWithoutGroupTest extends AbstractControllerTestCase {
 	public function setUp() {
 		parent::setUp();
-		Class_AdminVar::newInstanceWithId('VODECLIC_KEY', ['valeur' => 1234]);
-		Class_AdminVar::newInstanceWithId('VODECLIC_ID', ['valeur' => 'afi']);
-		Class_AdminVar::newInstanceWithId('VODECLIC_BIB_ID', ['valeur' => '12']);
+		RessourcesNumeriquesFixtures::activateLeKiosk();
+		$this->dispatch('/opac/modules/lekiosk', true);
 	}
 
 
 	/** @test */
-	public function vodeclicUrlWithoutUserShouldBeLoginPage() {
-		ZendAfi_Auth::getInstance()->clearIdentity();
-		$this->dispatch('/opac/modules/vodeclic');
-		$this->assertContains('/auth/login',$this->_response->getBody());
+	public function shouldHaveAccessForbiddenMessage() {
+		$this->assertFlashMessengerContentContains('Votre abonnement ne permet pas');
 	}
 }
 
 
 
+class ModulesControllerLeKioskUserWithGroupWithoutRightTest extends AbstractControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+		RessourcesNumeriquesFixtures::activateLeKiosk();
+		$group = $this->fixture('Class_UserGroup', ['id' => 1]);
+		Class_Users::getIdentity()->setUserGroups([$group]);
+		$this->dispatch('/opac/modules/lekiosk', true);
+	}
+
+
+	/** @test */
+	public function shouldHaveAccessForbiddenMessage() {
+		$this->assertFlashMessengerContentContains('Votre abonnement ne permet pas');
+	}
+}
+
 
 
-class ModulesControllerToutApprendreTest extends AbstractControllerTestCase {
+class ModulesControllerLeKioskUserWithGroupWithRightTest extends AbstractControllerTestCase {
 	public function setUp() {
 		parent::setUp();
-		RessourcesNumeriquesFixtures::activateToutApprendre();
+		RessourcesNumeriquesFixtures::activateLeKiosk();
+		$group = $this->fixture('Class_UserGroup', ['id' => 1])
+									->addRight(Class_UserGroup::RIGHT_ACCES_LEKIOSK);
+		Class_Users::getIdentity()->setUserGroups([$group]);
+		$this->dispatch('/opac/modules/lekiosk', true);
 	}
 
 
 	/** @test */
-	public function toutapprendreUrlWithoutUserShouldBeLoginPage() {
-		ZendAfi_Auth::getInstance()->clearIdentity();
-		$this->dispatch('/opac/modules/toutapprendre');
-		$this->assertContains('/auth/login',$this->_response->getBody());
-
+	public function shouldHaveAccessForbiddenMessage() {
+		$this->assertContains('http://pro.lekiosk.com', $this->_response->getBody());
 	}
 }
 
@@ -84,6 +105,7 @@ class ModulesControllerArteVodTest extends AbstractControllerTestCase {
 		RessourcesNumeriquesFixtures::activateArteVod();
 	}
 
+
 	/** @test */
 	public function arteVodUrlWithoutUserShouldBeHomePage() {
 		ZendAfi_Auth::getInstance()->clearIdentity();
@@ -107,9 +129,19 @@ class ModulesControllerNumilogTest extends AbstractControllerTestCase {
 		ZendAfi_Auth::getInstance()->clearIdentity();
 		$this->dispatch('/opac/modules/numilog');
 		$this->assertRedirectTo('http://numilogurl/action');
-	
 	}
 }
 
+class ModulesControllerNumeriquepremiumTest extends AbstractControllerTestCase {
+  public function setUp() {
+    parent::setUp();
+    $this->postDispatch('/opac/modules/numeriquepremium', ['url' => 'http://foo/']);
+  }
+
+  /** @test */
+  public function numeriquepremiumShouldContainScript() {
+    $this->assertXPathContentContains('//script', 'http://foo/', $this->_response->getBody());
+  }
+}
 
-?>
\ No newline at end of file
+?>
diff --git a/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php b/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
index 679692f442173b33dedb71e5867939a806531e79..b3fd37dbc4cf14dcb5d9a82f336bc6b3220c3147 100644
--- a/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
+++ b/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
@@ -411,10 +411,12 @@ class NoticeAjaxControllerExemplairesTest extends AbstractControllerTestCase {
 
 		ZendAfi_Auth::getInstance()->clearIdentity();
 
-		$this->_notice = Class_Notice::getLoader()
-			->newInstanceWithId(123)
+		$this->_notice = Class_Notice::newInstanceWithId(123)
 			->beLivreNumerique()
-			->setExemplaires(array());
+			->setExemplaires([]);
+
+
+		Class_Profil::getCurrentProfil()->setCfgNotice([]);
 		
 		$mock_sql = Storm_Test_ObjectWrapper::on(Zend_Registry::get('sql'));
 		Zend_Registry::set('sql', $mock_sql);
@@ -437,7 +439,7 @@ class NoticeAjaxControllerExemplairesTest extends AbstractControllerTestCase {
 						 false)
 			->answers($exemplaires);
 
-		$this->dispatch('noticeajax/exemplaires/id/123/id_notice/8');
+		$this->dispatch('noticeajax/exemplaires/id/123/id_notice/8', true);
 	}
 
 
diff --git a/tests/application/modules/opac/controllers/PanierControllerTest.php b/tests/application/modules/opac/controllers/PanierControllerTest.php
index 48e2d85a5cc7a8ed708602f490a8b4e069e0a25a..3fb709afb6f9eea1bd0a0f2f15be001bf8b2e080 100644
--- a/tests/application/modules/opac/controllers/PanierControllerTest.php
+++ b/tests/application/modules/opac/controllers/PanierControllerTest.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+ * Copyright (c) 2012, Agence Franテδァaise Informatique (AFI). All rights reserved.
  *
  * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
  * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
@@ -61,53 +61,58 @@ abstract class PanierControllerTestCase extends AbstractControllerTestCase {
 		Class_PanierNotice::beVolatile();
 		Class_PanierNoticeCatalogue::beVolatile();
 
-		$this->manon = Class_Users::newInstanceWithId(23, ['pseudo' => 'ManonL', 
-																											 'nom' => 'Afond',
-																											 'login' => 'man',
-																											 'password' => '123']);
+		$this->manon = $this->fixture('Class_Users', [
+			'id' => 23,
+			'pseudo' => 'ManonL', 
+			'nom' => 'Afond',
+			'login' => 'man',
+			'password' => '123']);
 
-		$this->manon->save();
 		ZendAfi_Auth::getInstance()->logUser($this->manon);
-		$group = Class_UserGroup::newInstanceWithId(280)
-			->setLibelle('Referent')
-			->setUsers([$this->manon])
-			->setRights([]);
-		$group->save();
-
-		$this->panier_bd = Class_PanierNotice::newInstanceWithId(2,
-																														 ['id_panier' => 1,
-																															'libelle' => 'Mes BD',
-																															'date_maj' => '10/02/2011',
-																															'notices' => 'COMBAT ORDINAIRE;BLACKSAD',
-																															'user' => $this->manon]);
-		$this->panier_bd->save();
-
-		$this->panier_orphelin = Class_PanierNotice::newInstanceWithId(9995,
-																																	 ['libelle' => 'Orphelin',
-																																		'date_maj' => '25/05/2010',
-																																		'user' => null]);
-																																		
-		$this->panier_orphelin->save();
-
-		$this->panier_romans = Class_PanierNotice::newInstanceWithId(15,
-																																 ['id_panier' => 2,
-																																	'libelle' => 'Mes Romans',
-																																	'date_maj' => '25/05/2010',
-																																	'notices' => 'MONTESPAN',
-																																	'user' => $this->manon]);
-		$this->panier_romans->save();
-		$montespan = Class_Notice::newInstanceWithId(4,
-																								 ['titre_principal' => 'Le Montespan',
-																									'auteur_principal' => 'Jean Teulé',
-																									'clef_alpha' => 'MONTESPAN',
-																									'unimarc' => '00445nam0 2200181   450 0010008000000100028000081000041000361010008000771020007000851050018000922000032001102100026001422150038001687000022002068010022002289020007002509030006002570507356  a978-2-260-01723-3d22 ?  a20080612d||||    uuuy0frey0103    ba| afre  aFR  ay|||||||000|y1 aMontespan (Le)fJean Teulé  aPariscJulliardd2008  a333 p.cjaq. ill. en coul.d21 cm 1aTeulébJean4070 0aFRbBMVc20080612  arh  aG']);
-
-		$combat_ordinaire = Class_Notice::newInstanceWithId(10,
-																												['titre_principal' => 'Le combat ordinaire',
-																												 'clef_alpha' => 'COMBAT ORDINAIRE']);
+		$group = $this->fixture('Class_UserGroup', [
+			'id' => 280,
+			'libelle' => 'Referent',
+			'users' => [$this->manon],
+			'rights' => []]);
+
+		$this->panier_bd = $this->fixture('Class_PanierNotice', [
+			'id' => 2,
+			'id_panier' => 1,
+			'libelle' => 'Mes BD',
+			'date_maj' => '10/02/2011',
+			'notices' => 'COMBAT ORDINAIRE;BLACKSAD',
+			'user' => $this->manon]);
+
+		$this->panier_orphelin = $this->fixture('Class_PanierNotice', [
+			'id' => 9995,
+			'libelle' => 'Orphelin',
+			'date_maj' => '25/05/2010',
+			'user' => null]);
+
+		$this->panier_romans = $this->fixture('Class_PanierNotice', [
+			'id' => 15,
+			'id_panier' => 2,
+			'libelle' => 'Mes Romans',
+			'date_maj' => '25/05/2010',
+			'notices' => 'MONTESPAN',
+			'user' => $this->manon]);
+
+		$montespan = $this->fixture('Class_Notice', [
+			'id' => 4,
+			'titre_principal' => 'Le Montespan',
+			'auteur_principal' => 'Jean Teulテδゥ',
+			'clef_alpha' => 'MONTESPAN',
+			'unimarc' => '00445nam0 2200181   450 0010008000000100028000081000041000361010008000771020007000851050018000922000032001102100026001422150038001687000022002068010022002289020007002509030006002570507356  a978-2-260-01723-3d22 ?  a20080612d||||    uuuy0frey0103    ba| afre  aFR  ay|||||||000|y1 aMontespan (Le)fJean Teulテδゥ  aPariscJulliardd2008  a333 p.cjaq. ill. en coul.d21 cm 1aTeulテδゥbJean4070 0aFRbBMVc20080612  arh  aG']);
+
+		$combat_ordinaire = $this->fixture('Class_Notice', [
+			'id' => 10,
+			'titre_principal' => 'Le combat ordinaire',
+			'clef_alpha' => 'COMBAT ORDINAIRE']);
 			
-		$blacksad = Class_Notice::newInstanceWithId(12, ['titre_principal' => 'Blacksad',
-																										 'clef_alpha' => 'BLACKSAD']);
+		$blacksad = $this->fixture('Class_Notice', [
+			'id' => 12, 
+			'titre_principal' => 'Blacksad',
+			'clef_alpha' => 'BLACKSAD']);
 
 		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Notice')
 			->whenCalled('findAllBy')
@@ -115,8 +120,6 @@ abstract class PanierControllerTestCase extends AbstractControllerTestCase {
 							'order' => 'FIELD(clef_alpha, "MONTESPAN")'])
 			->answers([$montespan]);
 
-
-
 		$this->panier_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_PanierNotice')
 			->whenCalled('save')->answers(true)
 			->whenCalled('delete')->answers(true)
@@ -127,9 +130,6 @@ abstract class PanierControllerTestCase extends AbstractControllerTestCase {
 			->with(['role' => 'user', 'model' => $this->manon])
 			->answers([$this->panier_bd, $this->panier_romans]);
 
-
-		
-
 		$panier_domaine_histoire = Class_PanierNoticeCatalogue::newInstanceWithId(71);
 		$panier_domaine_histoire
 			->setPanierNotice(Class_PanierNotice::newInstanceWithId(38, 
@@ -738,18 +738,17 @@ class PanierControllerModifierCataloguePanierWithoutDomainesTest extends PanierC
 
 
 class PanierControllerExportUnimarcTest extends PanierControllerTestCase {
-
 	public function setUp() {
 		parent::setUp();
-
 		$this->dispatch('/panier/export-unimarc/id_panier/15', true);
 	}
 
 
 	/** @test */
 	public function bodyShouldReturnUnimarcISO2709() {
-		$this->assertEquals('00445nam0 22001811  450 0010008000000100028000081000041000361010008000771020007000851050018000922000032001102100026001422150038001687000022002068010022002289020007002509030006002570507356  a978-2-260-01723-3d22 ?  a20080612d||||    uuuy0frey0103    ba| afre  aFR  ay|||||||000|y1 aMontespan (Le)fJean TeulÄA©  aPariscJulliardd2008  a333 p.cjaq. ill. en coul.d21 cm 1aTeulÄA©bJean4070 0aFRbBMVc20080612  arh  ',
-												$this->_response->getBody());
+		$this->assertSame(
+			'00457nam0 22001811  450 0010008000000100028000081000041000361010008000771020007000851050018000922000038001102100026001482150038001747000028002128010022002409020007002629030006002690507356  a978-2-260-01723-3d22 ?  a20080612d||||    uuuy0frey0103    ba| afre  aFR  ay|||||||000|y1 aMontespan (Le)fJean Teulテδゥ  aPariscJulliardd2008  a333 p.cjaq. ill. en coul.d21 cm 1aTeulテδゥbJean4070 0aFRbBMVc20080612  arh  aG',
+			$this->_response->getBody());
 	}
 
 
@@ -778,7 +777,7 @@ class PanierControllerExportListeTest extends PanierControllerTestCase {
 
 	/** @test */
 	public function bodyShouldReturnListe() {
-		$this->assertContains('Montespan (Le)	Jean Teulé	Julliard', 
+		$this->assertContains('Montespan (Le)	Jean Teulテδゥ	Julliard', 
 													$this->_response->getBody());
 	}
 
@@ -1179,7 +1178,7 @@ class PanierControllerAjouterNoticeDansBoitePanierTest extends AbstractControlle
 
 		$notice = Class_Notice::newInstanceWithId(4,
 																		['titre_principal' => 'Le Montespan',
-																		 'auteur_principal' => 'Jean Teulé',
+																		 'auteur_principal' => 'Jean Teulテゥ',
 																		 'clef_alpha' => 'MONTESPAN']);
 																	
 		$notice->save();
@@ -1453,7 +1452,7 @@ class PanierControllerCreerPanierAjaxPostActionTest extends AbstractControllerTe
 
 		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Catalogue')
 			->whenCalled('findAllBy')
-			->answers([Class_Catalogue::newInstanceWithId(45, ['libelle' => 'Nouveautés']),
+			->answers([Class_Catalogue::newInstanceWithId(45, ['libelle' => 'Nouveautテゥs']),
 								 Class_Catalogue::newInstanceWithId(56, ['libelle' => 'Musique']),
 								 Class_Catalogue::newInstanceWithId(78, ['libelle' => 'Loisirs'])]);
 
diff --git a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
index b0f6daea7cf21db39f8cbbc7da968e67fbef9c8d..be3ff317bd86141e600317e111c8c0d8cff598f8 100644
--- a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
+++ b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
@@ -1075,7 +1075,9 @@ class ProfilOptionsControllerProfilJeunesseViewPageJeuxTest extends ProfilOption
 
 	/** @test */
 	public function boiteKiosqueTitleShouldLinkToMenuCatalogue() {
-		$this->assertXPath("//div[@class='boite kiosque']//div//a[contains(@href, 'recherche/simple/titre/Kiosque/style_liste/cube/nb_notices/20/only_img/1/aleatoire/1/tri/date_creation+desc/nb_analyse/50/op_hauteur_img/90/op_transition//op_largeur_img/0/rss_avis/1/id_catalogue/0/id_panier/0/boite/boite_de_la_division_gauche')]");
+		$this->assertXPath(
+			"//div[@class='boite kiosque']//div//a[contains(@href, 'recherche/simple/titre/Kiosque/style_liste/cube/nb_notices/20/only_img/1/aleatoire/1/tri/date_creation+desc/nb_analyse/50/op_hauteur_img/90/op_transition//op_largeur_img/0/op_auto/0/op_scroll/1/rss_avis/1/id_catalogue/0/id_panier/0/boite/boite_de_la_division_gauche')]", 
+			$this->_response->getBody());
 	}
 
 
@@ -1204,7 +1206,7 @@ class ProfilOptionsControllerViewProfilJeunesseAccueilTest extends ProfilOptions
 
 	/** @test */
 	function headerCssJeunesseShouldBeIncluded() {
-		$this->assertXPath('//link[@rel="stylesheet"][@type="text/css"][contains(@href, "afi-opac3/userfiles/jeunesse.css")]');
+		$this->assertXPath('//link[@rel="stylesheet"][@media="all"][@type="text/css"][contains(@href, "afi-opac3/userfiles/jeunesse.css")]');
 	}
 
 
@@ -1488,12 +1490,13 @@ class ProfilOptionsControllerProfilBoiteCalendarWithCalendarDisplayedAndModeSimp
 }
 
 
+
+
 class ProfilOptionsControllerProfilBoiteCalendarWithCalendarDisplayedWithModeSimpleAndCatOption extends ProfilOptionsControllerProfilBoiteCalendarTestCase {
-	
 	public function setup() {
 		parent::setup();
 
-	$cfg_accueil = ['modules' => ['45' => ['division' => '1',
+		$cfg_accueil = ['modules' => ['45' => ['division' => '1',
 																					 'type_module' => 'CALENDAR',
 																					 'preferences' => ['display_calendar' => '1',
 																														 'mode-affichage' => 'simple',
@@ -1517,6 +1520,43 @@ class ProfilOptionsControllerProfilBoiteCalendarWithCalendarDisplayedWithModeSim
 
 
 
+
+class ProfilOptionsControllerProfilBoiteCalendarWithCalendarDisplayedWithModeWallAndCatOption extends ProfilOptionsControllerProfilBoiteCalendarTestCase {
+	public function setup() {
+		parent::setup();
+
+		$cfg_accueil = ['modules' => ['45' => ['division' => '1',
+																					 'type_module' => 'CALENDAR',
+																					 'preferences' => ['display_calendar' => '1',
+																														 'mode-affichage' => 'wall',
+																														 'display_event_info' => 'cat']]]];
+
+		$this->profil_with_calendar = Class_Profil::getCurrentProfil()
+			->setBrowser('opac')
+			->setTitreSite('Test Calendar')
+			->setLibelle('Profil Portail')
+			->setCfgAccueil($cfg_accueil);
+
+		$this->dispatch('/opac');
+	}
+
+
+	/** @test **/
+	public function boiteCalendarLiShouldContainsCalendarEventCatWithFiestaAAnnecy() {
+		$this->assertXPathContentContains('//span[@class="event_cat"]', 'Fiesta à Annecy');
+	}
+
+
+	/** @test */
+	public function pageShouldBeHTML5Valid() {
+		$this->assertHTML5();
+	}
+}
+
+
+
+
+
 class ProfilOptionsControllerProfilBoiteCalendarWithCalendarDisplayedWithModeSimpleAndBibOption extends ProfilOptionsControllerProfilBoiteCalendarTestCase {
 	
 	public function setup() {
@@ -1792,4 +1832,217 @@ class ProfilOptionsControllerWithFormationExpiredTest extends AbstractController
 		$this->assertNotXpathContentContains('//div[@class="boite formations_widget"]//ul/li/ul/li/dl/dd', 'dogfighting tricks');
 	}
 }
+
+
+
+
+class ProfilOptionsControllerWithMenuVerticalWidgetAndNewHtmlTest extends AbstractControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+		
+		$cfg_menu = ['V' => ['libelle' => 'vertical menu',
+			'picto' => 'vide.gif',
+			'menus' => [
+				['type_menu' => 'MENU',
+				'libelle' => 'News',
+				'picto' => 'bookmark.png',
+				'preferences' => [],
+				'sous_menus' => [																			 
+					['type_menu' => 'PROFIL',
+					'libelle' => 'OPAC 3 is now Bokeh',
+					'preferences' => ['clef_profil' => 22],
+					'picto' => 'vide.gif' ],
+					['type_menu' => 'PROFIL',
+					'libelle' => 'Bokeh World Tour',
+					'preferences' => ['clef_profil' => 230],
+					'picto' => 'vide.gif' ]]],
+				['type_menu' => 'MENU',
+				'libelle' => 'FAQ',
+				'picto' => 'bookmark.png',
+				'preferences' => [],
+				'sous_menus' => [																			 
+					['type_menu' => 'PROFIL',
+					'libelle' => 'Bokeh ?',
+					'preferences' => ['clef_profil' => 22],
+					'picto' => 'vide.gif' ],
+					['type_menu' => 'PROFIL',
+					'libelle' => 'Biquette ?',
+					'preferences' => ['clef_profil' => 230],
+					'picto' => 'vide.gif' ]]]]]];
+		
+		$cfg_accueil = ['modules' => ['1' => ['division' => '1',
+				'type_module' => 'MENU_VERTICAL',
+				'preferences' => ['afficher_titre' => '1',
+				'menu_deplie' => 0,
+				'new_html' => 1,
+				'menu' => 'V']]]];
+		
+		Class_Profil::getCurrentProfil()
+			->setBrowser('opac')
+			->setTitreSite('Test new html for menu vertical')
+			->setLibelle('Profil Portail')
+			->setCfgMenus($cfg_menu)
+			->setCfgAccueil($cfg_accueil);
+
+		$this->dispatch('/opac');
+	}
+
+	
+	/** @test */
+	public function pageShouldBeHtml5Valid() {
+		$this->assertHtml5($this->_response->getBody());
+	}
+
+	
+	/** @test */
+	public function menuWrapperShouldContainsOnly2Menus() {
+		$this->assertXPathCount('//div[@class="menu_wrapper"]/ul/li', 2);
+	}
+	
+
+	/** @test */
+	public function menuNewsShouldContainsOpac3IsNowBokeh() {
+		$this->assertXPathContentContains('//div/ul/li[1]/ul/li[1]/a', 'OPAC 3 is now Bokeh');
+	}
+
+	
+	/** @test */
+	public function menuNewsShouldContainsBokehWorldTour() {
+		$this->assertXPathContentContains('//div/ul/li[1]/ul/li[2]/a', 'Bokeh World Tour');
+	}
+
+
+	/** @test */
+	public function menuFaqShouldContainsBokeh() {
+		$this->assertXPathContentContains('//div/ul/li[2]/ul/li[1]/a', 'Bokeh ?');
+	}
+
+}
+
+
+
+abstract class ProfilOptionsControllerProfilBoiteCalendarWithFilterTestCase extends AbstractControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+				Class_Article::beVolatile();
+		
+		$article_mars = $this->fixture('Class_Article',
+		['id' => 1,
+		'titre' => 'News from Mars',
+		'contenu' => 'Hey! Hello from Mars.',
+		'event_date' => '01/03/2050']);
+
+		$article_october = $this->fixture('Class_Article',
+		['id' => 2,
+		'titre' => 'News from October',
+		'contenu' => 'In october ... ',
+		'event_date' => '01/10/2050']);
+
+		
+		ZendAfi_View_Helper_CalendarContent::setTimeSource(new TimeSourceForTest('2050-03-01 14:14:14'));
+		
+		Class_AdminVar::beVolatile();
+		
+		Storm_Test_ObjectWrapper::onloaderOfModel('Class_Article')
+			->whenCalled('getArticlesByPreferences')
+			->with(['display_order' => 'EventDebut',
+			'id_categorie' => '',
+			'events_only' => true,
+			'event_date' => '2050-03',
+			'id_bib' => 0,
+			'published' => true,
+			'event_end_after' => '2050-03-01'])
+			->answers([$article_mars])
+->whenCalled('getArticlesByPreferences')
+			->with(['display_order' => 'EventDebut',
+			'id_categorie' => '',
+			'events_only' => true,
+			'event_date' => '2050-03',
+			'id_bib' => 0,
+			'published' => true])
+			->answers([$article_mars])
+
+->whenCalled('getArticlesByPreferences')
+			->with(['display_order' => 'EventDebut',
+			'id_categorie' => '',
+			'events_only' => true,
+			'event_date' => '',
+			'id_bib' => 0,
+			'published' => true,
+			'event_start_after' => '2050-03',
+			'event_end_after' => '',
+			'limit' => 3])
+			->answers([$article_october])
+			->beStrict();
+	}
+}
+
+
+
+class ProfilOptionsControllerProfilBoiteCalendarWithFilterOnMonthsTest extends ProfilOptionsControllerProfilBoiteCalendarWithFilterTestCase {
+
+	public function setup() {
+		parent::setup();
+
+		$cfg_accueil = ['modules' => ['45' => ['division' => '1',
+				'type_module' => 'CALENDAR',
+				'preferences' => ['display_calendar' => '0',
+				'mode-affichage' => 'wall',
+				'event_filter' => 'month']]]];
+
+		$this->profil_with_calendar = Class_Profil::getCurrentProfil()
+			->setBrowser('opac')
+			->setTitreSite('Test Calendar')
+			->setLibelle('Profil Portail')
+			->setCfgAccueil($cfg_accueil);
+		
+		$this->dispatch('/opac');
+	}
+
+
+	/** @test */
+	public function boiteCalendarShouldBeDisplay() {
+		$this->assertXPath('//div[contains(@class,"calendar")]');
+	}
+
+
+	/** @test **/
+	public function articleFromOctoberShouldNotBePresent() {
+		$this->assertNotXPath('//article//header//a[contains(text(), "News from October")]');
+	}
+}
+
+
+
+class ProfilOptionsControllerProfilBoiteCalendarWithNoFilterTest extends ProfilOptionsControllerProfilBoiteCalendarWithFilterTestCase {
+
+	public function setup() {
+		parent::setup();
+
+		$cfg_accueil = ['modules' => ['45' => ['division' => '1',
+				'type_module' => 'CALENDAR',
+				'preferences' => ['display_calendar' => '0',
+				'mode-affichage' => 'wall',
+				'event_filter' => 'none']]]];
+
+		$this->profil_with_calendar = Class_Profil::getCurrentProfil()
+			->setBrowser('opac')
+			->setTitreSite('Test Calendar')
+			->setLibelle('Profil Portail')
+			->setCfgAccueil($cfg_accueil);
+		
+		$this->dispatch('/opac');
+	}
+	
+	/** @test **/
+	public function boiteCalendarShouldBeDisplay() {
+		$this->assertXPath('//div[contains(@class,"calendar")]');
+	}
+
+
+	/** @test **/
+	public function articleFromOctoberShouldBePresent() {
+		$this->assertXPath('//article//header//a[contains(text(), "News from October")]');
+	}
+}
 ?>
\ No newline at end of file
diff --git a/tests/application/modules/opac/controllers/RechercheControllerTest.php b/tests/application/modules/opac/controllers/RechercheControllerTest.php
index 0b2d06f7222b960cdc2cbd45ae252b1c890be349..fa58cb98476cdb39e69869f942ee029c8dd8e3fa 100644
--- a/tests/application/modules/opac/controllers/RechercheControllerTest.php
+++ b/tests/application/modules/opac/controllers/RechercheControllerTest.php
@@ -927,6 +927,21 @@ class RechercheControllerSimpleActionWithListeFormatVignettesTest extends Recher
 		parent::setUp();
 		$this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facette/B1/page/2', true);
 	}
+
+
+
+	/** @test */
+	public function withOutLoggedUserPopupLoginShouldBeInitialized() {
+		$this->assertXPathContentContains('//script', 'initializePopups');
+	}
+
+
+	/** @test */
+	public function linkAddToCartShouldBePresent() {
+		$this->assertXPath('//div[@class="vignette_lien_panier"]//a[contains(@href, "/panier/ajout-ajax/id_notice/")][@data-popup="true"]');
+	}
+
+
 	/** @test */
 	public function pageShouldContainsDivListeVignette() {
 		$this->assertXPath('//div[@class="liste_vignettes"]');
@@ -1615,7 +1630,7 @@ class RechercheControllerAjoutNoticePanierUrlWithMurConfigTest extends Recherche
 
 	/** @test */
 	public function withOutLoggedUserPopupLoginShouldBeInitialized() {
-		$this->assertXPathContentContains('//script', 'initializePopups', $this->_response->getBody());
+		$this->assertXPathContentContains('//script', 'initializePopups');
 	}
 
 
diff --git a/tests/fixtures/cyberlibris_oai.xml b/tests/fixtures/cyberlibris_oai.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2c43dbf47b26f55df652f4c38e004b8c213acde2
--- /dev/null
+++ b/tests/fixtures/cyberlibris_oai.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+<responseDate>2014-07-01T15:40:47Z</responseDate>
+<request verb="ListRecords" metadataPrefix="oai_dc" >http://oai-bibliovox.cyberlibris.fr/oai.aspx</request>
+<ListRecords>
+<record>
+<header>
+<identifier>oai:cyberlibris.fr:9782100497416</identifier>
+<datestamp>2009-08-19</datestamp>
+</header>
+<metadata>
+<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+<dc:title>L'Art de diriger Tome 1  : Management - Strat&#233;gie Ed. 3</dc:title>
+<dc:creator>Papin, Robert</dc:creator>
+<dc:publisher>Dunod</dc:publisher>
+<dc:contributor></dc:contributor>
+<dc:date>2006</dc:date>
+<dc:language>fre</dc:language>
+<dc:identifier>http://www.bibliovox.com/bookdetails.aspx?docID=10177808</dc:identifier>
+<dc:rights> copyrighted </dc:rights>
+</oai_dc:dc>
+</metadata>
+</record>
+<record>
+<header>
+<identifier>oai:cyberlibris.fr:9782711787234</identifier>
+<datestamp>2009-08-19</datestamp>
+</header>
+<metadata>
+<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+<dc:title>Cr&#233;er ou reprendre un commerce 2e &#233;dition</dc:title>
+<dc:creator>Thiollet, Jean-Pierre</dc:creator>
+<dc:publisher>Vuibert</dc:publisher>
+<dc:contributor></dc:contributor>
+<dc:date>2007</dc:date>
+<dc:language>fre</dc:language>
+<dc:identifier>http://www.bibliovox.com/bookdetails.aspx?docID=10177809</dc:identifier>
+<dc:rights> copyrighted </dc:rights>
+</oai_dc:dc>
+</metadata>
+</record>
+<record>
+<header>
+<identifier>oai:cyberlibris.fr:9782711787043</identifier>
+<datestamp>2009-08-19</datestamp>
+</header>
+<metadata>
+<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+<dc:title>Cr&#233;ation d'entreprise : bien choisir son associ&#233;</dc:title>
+<dc:creator>Cazard, Xavier</dc:creator>
+<dc:publisher>Vuibert</dc:publisher>
+<dc:contributor>Villey, St&#233;phane</dc:contributor>
+<dc:date>2007</dc:date>
+<dc:language>fre</dc:language>
+<dc:identifier>http://www.bibliovox.com/bookdetails.aspx?docID=10177811</dc:identifier>
+<dc:rights> copyrighted </dc:rights>
+</oai_dc:dc>
+</metadata>
+</record>
+<resumptionToken expirationDate="2014-07-03T14:16:14Z" completeListSize="14523" cursor="0">f0a442d7-b9fc-4b02-881a-318b573cef60</resumptionToken>
+</ListRecords>
+</OAI-PMH>
diff --git a/tests/fixtures/cyberlibris_oai_fin.xml b/tests/fixtures/cyberlibris_oai_fin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e7681e3d526cd5fdc9b579687176b79c1c4615d8
--- /dev/null
+++ b/tests/fixtures/cyberlibris_oai_fin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+<responseDate>2014-07-01T15:40:47Z</responseDate>
+<request verb="ListRecords" metadataPrefix="oai_dc" >http://oai-bibliovox.cyberlibris.fr/oai.aspx</request>
+<ListRecords>
+<record>
+<header>
+<identifier>oai:cyberlibris.fr:9782914453752</identifier>
+<datestamp>2009-08-19</datestamp>
+</header>
+<metadata>
+<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+<dc:title>L'islam et la science</dc:title>
+<dc:creator>Renan, Ernest</dc:creator>
+<dc:publisher>L'Archange Minotaure</dc:publisher>
+<dc:contributor></dc:contributor>
+<dc:date>2007</dc:date>
+<dc:language>fre</dc:language>
+<dc:identifier>http://www.bibliovox.com/bookdetails.aspx?docID=10185250</dc:identifier>
+<dc:rights> copyrighted </dc:rights>
+</oai_dc:dc>
+</metadata>
+</record>
+</ListRecords>
+</OAI-PMH>
diff --git a/tests/library/Class/CommSigbTest.php b/tests/library/Class/CommSigbTest.php
index 88b8c0e82db60497617ff05bb8843b40ffb54d5e..1d2712f2cd4c003051e90ebe777ebfcd43e5a8f3 100644
--- a/tests/library/Class/CommSigbTest.php
+++ b/tests/library/Class/CommSigbTest.php
@@ -588,4 +588,4 @@ class CommSigbWithNotAbonneTest extends Storm_Test_ModelTestCase {
 }
 
 
-?>
\ No newline at end of file
+?>
diff --git a/tests/library/Class/LeKioskLinkTest.php b/tests/library/Class/LeKioskLinkTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..fa1a02e8d7eaab4f7c422bd0ee1397cd012d628c
--- /dev/null
+++ b/tests/library/Class/LeKioskLinkTest.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class LeKioskLinkTest extends Storm_Test_ModelTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->fixture('Class_Profil', [
+			'id' => 1,
+			'libelle' => 'portail',
+			'mail_site' => '']);
+
+		Class_AdminVar::newInstanceWithId('LEKIOSK_ID', ['valeur' => '29']);
+	}
+
+
+	/** @test */
+	public function urlForMyemailAtLekioskDotComShouldBeAsExpected() {
+		$expected = 'http://pro.lekiosk.com/lekiosque.authenticate.aspx?email=1671f18f515f49271985280397c1c2bc48e1bfa31a3b638cb22e510e4953d65e&id=29&AccessHash=e6715cdcc53d6d2b130f4025ea44b67872eb5455';
+		$this->assertEquals(
+			$expected, 
+			Class_LeKioskLink::newFor('myemail@lekiosk.com')->url()
+		);
+	}
+
+
+	/** @test */
+	public function withoutMailShouldBeAsExpected() {
+		$expected = 'http://pro.lekiosk.com/lekiosque.authenticate.aspx?email=18ca3d8ad40255ce09d5d20debc1e069&id=29&AccessHash=b78f9cd4198878b85de383ccddd27ab286fc47f6';
+		$this->assertEquals($expected, Class_LeKioskLink::newFor('')->url());
+	}
+
+
+  /** @test */
+	public function withEmptyUserMailShouldGetSiteOrProfileMail() {
+		Class_Profil::find(1)->setMailSite('toto@example.com');
+		$expected = 'http://pro.lekiosk.com/lekiosque.authenticate.aspx?email=76903fe54055ab757db99c2370d89970e25c5b33b5a69cafc108c0031685af88&id=29&AccessHash=c5d56beb8fbd723bc562739cbc3f70ed43a79b9e';
+		$this->assertEquals($expected, Class_LeKioskLink::newFor('')->url());
+	}
+}
+?>
\ No newline at end of file
diff --git a/tests/library/Class/MigrationTest.php b/tests/library/Class/MigrationTest.php
index efc72e96a96de95e76ec8d8d683508297314c508..5d8a0bb8b35c85f97e959b587a188dc5a1ce3b99 100644
--- a/tests/library/Class/MigrationTest.php
+++ b/tests/library/Class/MigrationTest.php
@@ -24,6 +24,9 @@ abstract class MigrationTestCase extends Storm_Test_ModelTestCase {
 
 	public function setUp() {
 		parent::setUp();
+		
+		Class_Migration_ScriptPatchs::setEcho('none');
+		
 		$this->fixture('Class_CosmoVar', ['id' => 'patch_level',
 																			'valeur' => 10 ] );
 		$this->_old_sql = Zend_Registry::get('sql');
diff --git a/tests/library/Class/ProfilTest.php b/tests/library/Class/ProfilTest.php
index 120ffb72230ac5af5f37cc016b75e2ab23ed41d8..f6af4b716cef76f039969bc3d93feb580129636e 100644
--- a/tests/library/Class/ProfilTest.php
+++ b/tests/library/Class/ProfilTest.php
@@ -24,6 +24,7 @@ class ProfilVideTest extends ModelTestCase {
 		$this->profil_vide = new Class_Profil();
 	}
 
+
 	/** @test */
 	public function cfgAccueilShouldReturnArrayWithModules() {
 		$this->assertEquals(['page_css' => null,
@@ -32,26 +33,33 @@ class ProfilVideTest extends ModelTestCase {
 												$this->profil_vide->getCfgAccueilAsArray());
 	}
 
+
 	/** @test */
 	public function shouldBeValid() {
 		$this->assertTrue($this->profil_vide->isValid());
 	}
 
+
 	/** @test */
 	public function getBibLibelleShouldReturnEmptyString() {
 		$this->assertEquals('', $this->profil_vide->getBibLibelle());
 	}
 
+
 	/** @test */
 	public function getModuleAccueilPreferencesShouldReturnEmptyArray() {
-		$this->assertEquals(array(), $this->profil_vide->getModuleAccueilPreferences(1));
+		$this->assertEquals([], $this->profil_vide->getModuleAccueilPreferences(1, ''));
 	}
 
+
 	/** @test */
 	public function profilZonesTitreShouldReturn200_E_H_I() {
-		$this->assertEquals(['200$e', '200$h', '200$i'], Class_Profil::getCurrentProfil()->getZonesTitre());
+		$this->assertEquals(
+			['200$e', '200$h', '200$i'], 
+			Class_Profil::getCurrentProfil()->getZonesTitre());
 	}
 
+
 	/** @test **/
 	public function profilVidePathShouldBeSlahProfil() {
 		$this->assertEquals('/** nouveau profil **', $this->profil_vide->getPath());
@@ -1253,7 +1261,7 @@ extends Storm_Test_ModelTestCase {
 
 		$this->prepareProfile();
 
-		$config = $this->_profil->getModuleAccueilConfig(1);
+		$config = $this->_profil->getModuleAccueilConfig(1, 'LOGIN');
 		$config['preferences']['profil_redirect'] = 123;
 
 		$this->_profil->updateModuleConfigAccueil(1, $config);
@@ -1263,8 +1271,9 @@ extends Storm_Test_ModelTestCase {
 	protected function prepareProfile() {}
 
 
-	protected function getPreferenceOfModule($profil, $id_module, $preference) {
-		return $profil->getModuleAccueilConfig($id_module)['preferences'][$preference];
+	protected function getPreferenceOfModule($profil, $id_module, $type, $preference) {
+		return $profil
+			->getModuleAccueilConfig($id_module, $type)['preferences'][$preference];
 	}
 }
 
@@ -1275,9 +1284,9 @@ class ProfilUpdateConfigAccueilOnModuleInBannerTest
 extends ProfilUpdateConfigAccueilOnModuleInBannerTestCase {
 	/** @test */
 	public function profilRedirectShouldBeUpdated() {
-		$this->assertEquals(123, 
-												$this->getPreferenceOfModule($this->_profil, 
-																										 1, 'profil_redirect'));
+		$this->assertEquals(
+			123, 
+			$this->getPreferenceOfModule($this->_profil, 1, 'LOGIN', 'profil_redirect'));
 	}
 }
 
@@ -1293,9 +1302,9 @@ extends ProfilUpdateConfigAccueilOnModuleInBannerTestCase {
 
 	/** @test */
 	public function profilRedirectShouldBeUpdatedInParent() {
-		$this->assertEquals(123, 
-												$this->getPreferenceOfModule($this->_profil->getParentProfil(), 
-																										 1, 'profil_redirect'));
+		$this->assertEquals(
+			123, 
+			$this->getPreferenceOfModule($this->_profil->getParentProfil(), 1, 'LOGIN', 'profil_redirect'));
 	}
 }
 
@@ -1312,7 +1321,7 @@ class ProfilGetModuleAccueilConfigTest extends Storm_Test_ModelTestCase {
 		$this->_profil = $this->fixture('Class_Profil', ['id' => 2,
 																										 'parent_profil' => $this->_parent]);
 
-		$this->_module_config = $this->_profil->getModuleAccueilConfig(1);
+		$this->_module_config = $this->_profil->getModuleAccueilConfig(1, 'LOGIN');
 	}
 
 
diff --git a/tests/library/Class/RessourcesNumeriquesFixtures.php b/tests/library/Class/RessourcesNumeriquesFixtures.php
index d31cd1b87af1fbf641e8bfa17cee8d0542217836..a184d5f7424d4221a6f231acfcf1980cba4e8193 100644
--- a/tests/library/Class/RessourcesNumeriquesFixtures.php
+++ b/tests/library/Class/RessourcesNumeriquesFixtures.php
@@ -25,9 +25,12 @@ class RessourcesNumeriquesFixtures {
 		self::deactivateVodeclic();
 		self::deactivateArteVod();
 		self::deactivateNumilog();
+		self::deactivateCyberlibris();
 		self::deactivateNumeriquePremium();
 		self::deactivateTypo3();
 		self::disableCVS();
+		self::deactivateLekiosk();
+		self::deactivateMusicMe();
 	}
 
 
@@ -36,9 +39,12 @@ class RessourcesNumeriquesFixtures {
 		self::activateVodeclic();
 		self::activateArteVod();
 		self::activateNumilog();
+		self::activateCyberlibris();
 		self::activateNumeriquePremium();
 		self::activateTypo3();
-		self::activateCVS();		
+		self::activateCVS();
+		self::activateLekiosk();
+		self::activateMusicMe();
 	}
 
 
@@ -61,6 +67,10 @@ class RessourcesNumeriquesFixtures {
 		Class_AdminVar::newInstanceWithId('CVS_SOURCEPASSWORD',['valeur' => '']);
 	}
 
+	public static function deactivateCVS() {
+		self::disableCVS();
+	}
+
 	public static function activateToutApprendre() {
 		Class_AdminVar::newInstanceWithId('TOUTAPPRENDRE_BIB_ID', ['valeur' => '2100']);
 		Class_AdminVar::newInstanceWithId('TOUTAPPRENDRE_KEY', ['valeur' => '1111']);
@@ -85,6 +95,17 @@ class RessourcesNumeriquesFixtures {
 	}
 
 
+	public static function activateCyberlibris() {
+		Class_AdminVar::newInstanceWithId('CYBERLIBRIS_URL', ['valeur' => 'http://oai-bibliovox.cyberlibris.fr/oai.
+aspx']);
+	}
+
+
+	public static function deactivateCyberlibris() {
+		Class_AdminVar::newInstanceWithId('CYBERLIBRIS_URL', ['valeur' => '']);
+	}
+
+
 	public static function activateArteVod() {
 		Class_AdminVar::newInstanceWithId('ARTE_VOD',['valeur' => '1']);
 		Class_AdminVar::newInstanceWithId('ARTE_VOD_LOGIN',['valeur' => 'user']);
@@ -140,5 +161,15 @@ class RessourcesNumeriquesFixtures {
 	public static function deactivateTypo3() {
 		Class_AdminVar::newInstanceWithId('URL_TYPO3',['valeur'=> '']);
 	}
+
+
+	public static function activateLekiosk() {
+		Class_AdminVar::newInstanceWithId('LEKIOSK_ID', ['valeur' => '100']);
+	}
+
+
+	public static function deactivateLekiosk() {
+		Class_AdminVar::newInstanceWithId('LEKIOSK_ID', ['valeur' => '']);
+	}
 }
 ?>
\ No newline at end of file
diff --git a/tests/library/Class/Systeme/ModulesMenu/CvsTest.php b/tests/library/Class/Systeme/ModulesMenu/CvsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..0c13050ff7b679383ff7d88f577c134d4ebe9ae5
--- /dev/null
+++ b/tests/library/Class/Systeme/ModulesMenu/CvsTest.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Class_Systeme_ModulesMenu_CvsTest extends Storm_Test_ModelTestCase {
+	public function setUp() {
+		parent::setUp();
+		RessourcesNumeriquesFixtures::activate();
+		$this->menu = new Class_Systeme_ModulesMenu_CVS();
+		$this->user = $this->fixture('Class_Users', [
+			'id'=> 34 ,
+			'password' => 'toto' ,
+			'login' => '34',
+			'idabon' => 34,
+			'pseudo' => 'toto',
+			'date_debut' => '1999-02-10',
+			'date_fin' => '2025-09-12',
+			'user_groups' => [$this->fixture('Class_UserGroup', [
+				'id' => 20, 
+				'libelle' => 'Cvs'
+			])->addRight(Class_UserGroup::RIGHT_ACCES_CVS)]
+		])->beAbonneSIGB();
+
+		ZendAfi_Auth::getInstance()->logUser($this->user);
+		Zend_Registry::get('translate')->setLocale('fr');
+	}
+
+
+  /** @test */
+	public function withUserNotInGroupShouldReturnJsAlert() {
+		$this->user->setUserGroups([]);
+		$this->menu->getDynamiqueUrl();
+		$this->assertContains('Merci de contacter la médiathèque', $this->menu->getMessage());
+	}
+
+
+	/** @test */
+	public function urlWithAbonnementInvalidShouldBeJSAlertAbonnementInvalid() {
+		$this->user->setDateFin('2000-03-01');
+		$url = $this->menu->getDynamiqueUrl();		
+		$this->assertContains('Votre abonnement ne permet pas', $this->menu->getMessage());
+	}
+}
+?>
\ No newline at end of file
diff --git a/tests/library/Class/Systeme/ModulesMenu/MusicMeTest.php b/tests/library/Class/Systeme/ModulesMenu/MusicMeTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..1695c42c3af368004af0a181b6350eed1c657ddf
--- /dev/null
+++ b/tests/library/Class/Systeme/ModulesMenu/MusicMeTest.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Class_Systeme_ModulesMenu_MusicMeTest extends Storm_Test_ModelTestCase {
+	public function setUp() {
+		parent::setUp();
+		RessourcesNumeriquesFixtures::activate();
+		$this->menu = new Class_Systeme_ModulesMenu_MusicMe();
+		$this->user = $this->fixture('Class_Users', [
+			'id'=> 34 ,
+			'password' => 'toto' ,
+			'login' => '34',
+			'idabon' => 34,
+			'date_debut' => '1999-02-10',
+			'date_fin' => '2025-09-12',
+			'user_groups' => [$this->fixture('Class_UserGroup', [
+				'id' => 20, 
+				'libelle' => 'MusicMe'
+			])->addRight(Class_UserGroup::RIGHT_ACCES_MUSICME)]
+		])->beAbonneSIGB();
+		ZendAfi_Auth::getInstance()->logUser($this->user);
+		Zend_Registry::get('translate')->setLocale('fr');
+	}
+
+
+	/** @test */
+	public function urlWithUserLoggedShouldBeLink() {
+		$this->assertContains('musicme', $this->menu->getDynamiqueUrl());
+	}
+
+
+	/** @test */
+	public function urlWithAbonnementInvalidShouldBeJSAlertAbonnementInvalid() {
+		$this->user->setDateFin('2000-03-01');
+		$url = $this->menu->getDynamiqueUrl();		
+		$this->assertContains('Votre abonnement ne permet pas', $this->menu->getMessage());
+	}
+}
+?>
\ No newline at end of file
diff --git a/tests/library/Class/Systeme/ModulesMenu/NumilogTest.php b/tests/library/Class/Systeme/ModulesMenu/NumilogTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..52e4c506528e41298d88c31816eddba27233d45f
--- /dev/null
+++ b/tests/library/Class/Systeme/ModulesMenu/NumilogTest.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Class_Systeme_ModulesMenu_NumilogTest extends Storm_Test_ModelTestCase {
+	public function setUp() {
+		parent::setUp();
+		RessourcesNumeriquesFixtures::activate();
+		$this->menu = new Class_Systeme_ModulesMenu_Numilog();
+		$this->user = $this->fixture('Class_Users', [
+			'id'=> 34 ,
+			'password' => 'toto' ,
+			'login' => '34',
+			'idabon' => 34,
+			'date_debut' => '1999-02-10',
+			'date_fin' => '2025-09-12',
+			'user_groups' => [$this->fixture('Class_UserGroup', [
+				'id' => 20, 
+				'libelle' => 'Numilog'
+			])->addRight(Class_UserGroup::RIGHT_ACCES_NUMILOG)]
+		])->beAbonneSIGB();
+
+		ZendAfi_Auth::getInstance()->logUser($this->user);
+	}
+
+
+	/** @test */
+	public function withUserLoggedShouldBeLink() {
+		$this->assertContains('numilog', $this->menu->getDynamiqueUrl());
+	}
+
+
+	/** @test */
+	public function withAbonnementInvalidShouldBeLink() {
+		$this->assertContains('numilog', $this->menu->getDynamiqueUrl());
+	}
+}
+?>
\ No newline at end of file
diff --git a/tests/library/Class/Systeme/ModulesMenu/ToutApprendreTest.php b/tests/library/Class/Systeme/ModulesMenu/ToutApprendreTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..8c06c457ee42e3b40a43fd36a94d83b879bca16b
--- /dev/null
+++ b/tests/library/Class/Systeme/ModulesMenu/ToutApprendreTest.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Class_Systeme_ModulesMenu_ToutApprendreTest extends Storm_Test_ModelTestCase {
+	public function setUp() {
+		parent::setUp();
+		RessourcesNumeriquesFixtures::activate();
+		$this->menu = new Class_Systeme_ModulesMenu_ToutApprendre();
+		$this->user = $this->fixture('Class_Users', [
+			'id'=> 34 ,
+			'password' => 'toto' ,
+			'login' => '34',
+			'idabon' => 34,
+			'date_debut' => '1999-02-10',
+			'date_fin' => '2025-09-12',
+			'user_groups' => [$this->fixture('Class_UserGroup', [
+				'id' => 20, 
+				'libelle' => 'ToutApprendre'
+			])->addRight(Class_UserGroup::RIGHT_ACCES_TOUTAPPRENDRE)]
+		])->beAbonneSIGB();
+		ZendAfi_Auth::getInstance()->logUser($this->user);
+		Zend_Registry::get('translate')->setLocale('fr');
+	}
+
+
+	/** @test */
+	public function urlWithUserLoggedShouldBeLink() {
+		$this->assertContains('toutapprendre', $this->menu->getDynamiqueUrl());
+	}
+
+
+	/** @test */
+	public function urlWithAbonnementInvalidShouldBeJSAlertAbonnementInvalid() {
+		$this->user->setDateFin('2000-03-01');
+		$url = $this->menu->getDynamiqueUrl();		
+		$this->assertContains('Votre abonnement est terminé', $this->menu->getMessage());
+	}
+}
+?>
\ No newline at end of file
diff --git a/tests/library/Class/Systeme/ModulesMenu/VodeclicTest.php b/tests/library/Class/Systeme/ModulesMenu/VodeclicTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..bafa109963513fd8cd20b081babe28b994d67fee
--- /dev/null
+++ b/tests/library/Class/Systeme/ModulesMenu/VodeclicTest.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Class_Systeme_ModulesMenu_VodeclicTest extends Storm_Test_ModelTestCase {
+	public function setUp() {
+		parent::setUp();
+		RessourcesNumeriquesFixtures::activate();
+		$this->menu = new Class_Systeme_ModulesMenu_Vodeclic();
+		$this->user = $this->fixture('Class_Users', [
+			'id'=> 34 ,
+			'password' => 'toto' ,
+			'login' => '34',
+			'idabon' => 34,
+			'date_debut' => '1999-02-10',
+			'date_fin' => '2025-09-12',
+			'user_groups' => [$this->fixture('Class_UserGroup', [
+				'id' => 20, 
+				'libelle' => 'Vodeclic'
+			])->addRight(Class_UserGroup::RIGHT_ACCES_VODECLIC)]
+		])->beAbonneSIGB();
+		ZendAfi_Auth::getInstance()->logUser($this->user);
+	}
+
+
+	/** @test */
+	public function withUserLoggedShouldBeLink() {
+		$this->assertContains('vodeclic', $this->menu->getDynamiqueUrl());
+	}
+
+
+	/** @test */
+	public function withAbonnementInvalidShouldBeJSAlertAbonnementInvalid() {
+		$this->user->setDateFin('2000-03-01');
+		$this->menu->getDynamiqueUrl();
+		$this->assertContains('Votre abonnement est terminé', $this->menu->getMessage());
+	}
+}
+?>
\ No newline at end of file
diff --git a/tests/library/Class/Systeme/ModulesMenuTest.php b/tests/library/Class/Systeme/ModulesMenuTest.php
index 020961a892f363f474f8e11c74635561796e8e51..fafcdb933551ffa40df690ecc7db56c0612afaff 100644
--- a/tests/library/Class/Systeme/ModulesMenuTest.php
+++ b/tests/library/Class/Systeme/ModulesMenuTest.php
@@ -19,300 +19,132 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
 
-class ModulesMenuTest extends Storm_Test_ModelTestCase {
-	public function setUp() {
-		parent::setUp();
-		RessourcesNumeriquesFixtures::activateVodeclic();
-		RessourcesNumeriquesFixtures::activateCVS();
-		RessourcesNumeriquesFixtures::activateArteVod();
-		Class_AdminVar::newInstanceWithId('MULTIMEDIA_KEY', ['valeur' => 'zork']);
-		Class_AdminVar::newInstanceWithId('WEBKIOSK_KEY', ['valeur' => 'zork']);	
-		Class_AdminVar::newInstanceWithId('WEBKIOSK_RESERVATION_URL', ['valeur' => 'zork']);	
-		RessourcesNumeriquesFixtures::activateNumilog();
-		RessourcesNumeriquesFixtures::activateMusicMe();
-		RessourcesNumeriquesFixtures::activateToutApprendre();
 
-		// For Class_Url a router need to be initialized
-		Zend_Controller_Front::getInstance()
-			->getRouter()
-			->route(new Zend_Controller_Request_Http('http://localhost/'));
-		
-		$this->module_menu = new Class_Systeme_ModulesMenu();
-
-		$http_client = Storm_Test_ObjectWrapper::mock();
-		Class_CVSLink::setDefaultHttpClient($http_client);
-		$http_client
-			->whenCalled('postData')
-			->answers('');
-	}
-
-
-	/** @test */
-	public function menuShouldContainsVodeclic() {
-		$module_menu = new Class_Systeme_ModulesMenu();
-		$this->assertContains('modules/vodeclic', $module_menu->getUrl('VODECLIC', [])['url']);
-	}
-
-
-	/** @test */
-	public function menuShouldNotContainsVodeclicWhenDisabled() {
-		$menu = $this->module_menu->getFonction('VODECLIC');
-		$this->assertEquals('Lien vers Vodeclic', $menu->getLibelle());
-	}
-
-
-	/** @test */
-	public function menuShouldNotContainsMusicMeWhenDisabled() {
-		$menu = $this->module_menu->getFonction('MUSICME');
-		$this->assertEquals('Lien vers MusicMe', $menu->getLibelle());
+abstract class ModulesMenuBibNumeriqueTestCase extends Storm_Test_ModelTestCase {
+	public function availableServices() {
+		return [
+			['VODECLIC', 'Vodeclic'],
+			['MUSICME', 'MusicMe'],
+			['LEKIOSK', 'LeKiosk'],
+			['TOUTAPPRENDRE', 'Tout Apprendre'],
+			['NUMILOG', 'Numilog'],
+			['ARTEVOD', 'ArteVod'],
+			['CVS', 'CVS']
+		];
 	}
+}
 
 
 
-	/** @test */
-	public function cvsUrlShouldBeStaticPage() {
-		ZendAfi_Auth::getInstance()->clearIdentity();
-		$this->assertContains('/modules/cvs', 
-													$this->module_menu->getUrl('CVS', [])['url']);
+class ModulesMenuBibNumeriqueActivatedComboTest extends ModulesMenuBibNumeriqueTestCase {
+	public function setUp() {
+		parent::setUp();
+		RessourcesNumeriquesFixtures::activate();
+		$this->html = (new Class_Systeme_ModulesMenu())->getComboFonctions(0, false, '');
 	}
 
 
-	/** @test */
-	public function arteUrlShouldBeStaticPage() {
-		ZendAfi_Auth::getInstance()->clearIdentity();
-		$this->assertContains('/modules/artevod', 
-													$this->module_menu->getUrl('ARTEVOD', [])['url']);
+	/** 
+	 * @test 
+	 * @dataProvider availableServices
+	 */
+	public function shouldContainsLinkToService($type, $label) {
+		$this->assertContains('Lien vers ' . $label, $this->html);
 	}
+}
 
 
 
-	/** @test */
-	public function numilogUrlShouldBeStaticPage() {
+class ModulesMenuBibNumeriqueActivatedUrlsTest extends ModulesMenuBibNumeriqueTestCase {
+	public function setUp() {
+		parent::setUp();
+		RessourcesNumeriquesFixtures::activate();
 		ZendAfi_Auth::getInstance()->clearIdentity();
-		$this->assertContains('/modules/numilog', 
-													$this->module_menu->getUrl('NUMILOG', [])['url']);
-	}
-
-
-	protected function _logUserGaston() {
-		$this->group_multimedia = $this->fixture('Class_UserGroup',
-																						 ['id' => 20, 
-																							'libelle' => 'Multimedia'])
-			->addRight(Class_UserGroup::RIGHT_ACCES_ARTEVOD);
-
-		$gaston = $this->fixture('Class_Users', ['id'=>34 ,'password' => 'toto' ,'login' => '34']);
-		$gaston
-			->setIdabon(34)
-			->setNom('Lagaffe')
-			->setPrenom('Gaston')
-			->setPseudo('gaffe')
-			->setUserGroups([])
-			->beInvite();
-		$gaston->save();
-		ZendAfi_Auth::getInstance()->logUser($gaston);
-		return $gaston;
-	}
-
-
-	/** @test */
-	public function vodeclicUrlWithUserLoggedShouldBeVodeclicSSO() {
-		$this->group_vodeclic = $this->fixture('Class_UserGroup',
-																						 ['id' => 20, 
-																							'libelle' => 'Multimedia'])
-			->addRight(Class_UserGroup::RIGHT_ACCES_VODECLIC);
-
-		$this->_logUserGaston()
-			->beAbonneSIGB()
-			->setDateDebut('1999-02-10')
-			->setDateFin('2025-09-12')
-			->setUserGroups([$this->group_vodeclic]);
-		$vodeclic= new Class_Systeme_ModulesMenu_Vodeclic();
-		
-		$url = $vodeclic->getDynamiqueUrl();
-		$this->assertContains('vodeclic', $url);
-
-	}
-
-
-	/** @test */
-	public function musicMeUrlWithUserLoggedShouldBeMusicMeSSO() {
-		$this->group_musicme = $this->fixture('Class_UserGroup',
-																						 ['id' => 20, 
-																							'libelle' => 'Multimedia'])
-			->addRight(Class_UserGroup::RIGHT_ACCES_MUSICME);
-
-		$this->_logUserGaston()
-			->beAbonneSIGB()
-			->setDateDebut('1999-02-10')
-			->setDateFin('2025-09-12')
-			->setUserGroups([$this->group_musicme]);
-		$musicme= new Class_Systeme_ModulesMenu_MusicMe();
-		
-		$url = $musicme->getDynamiqueUrl();
-		$this->assertContains('musicme', $url);
-
+		$this->module_menu = new Class_Systeme_ModulesMenu();
 	}
 
 
-	/** @test */
-	public function toutapprendreUrlWithUserLoggedShouldBeToutApprendreSSO() {
-		$this->group_toutapprendre = $this->fixture('Class_UserGroup',
-																						 ['id' => 20, 
-																							'libelle' => 'Multimedia'])
-			->addRight(Class_UserGroup::RIGHT_ACCES_TOUTAPPRENDRE);
-
-		$this->_logUserGaston()
-			->beAbonneSIGB()
-			->setDateDebut('1999-02-10')
-			->setDateFin('2025-09-12')
-			->setUserGroups([$this->group_toutapprendre]);
-		$toutapprendre= new Class_Systeme_ModulesMenu_ToutApprendre();
-		
-		$url = $toutapprendre->getDynamiqueUrl();
-		$this->assertContains('toutapprendre', $url);
-
+	/** 
+	 * @test 
+	 * @dataProvider availableServices
+	 */
+	public function viaFunctionShouldLinkGenericUrl($type, $label) {
+		$this->assertContains(
+			'/modules/' . strtolower($type), 
+			$this->module_menu->getFonction($type)->getUrl());
 	}
 
 
-	/** @test */
-	public function vodeclicUrlWithAbonnementInvalidShouldBeJSAlertAbonnementInvalid() {
-		$this->_logUserGaston();
-		$vodeclic= new Class_Systeme_ModulesMenu_Vodeclic();
-		$url = $vodeclic->getDynamiqueUrl();
-		
-		$this->assertContains('Votre abonnement est terminé', $vodeclic->getMessage());
-
+	/** 
+	 * @test 
+	 * @dataProvider availableServices
+	 */
+	public function directCallShouldLinkGenericUrl($type, $label) {
+		$this->assertContains(
+			'/modules/' . strtolower($type), 
+			$this->module_menu->getUrl($type, [])['url']);
 	}
+}
 
- 
-  /** @test */
-	public function cvsUrlWithUserNotValidShouldReturnJsAlert() {
-		$this->_logUserGaston()
-			->beAbonneSIGB()
-			->setDateDebut('1999-02-10')
-			->setDateFin('2025-09-12')
-			->setUserGroups([$this->group_multimedia]);
-		$cvs = new Class_Systeme_ModulesMenu_CVS();
-		$menu_url = $cvs->getDynamiqueUrl();
-		$this->assertContains('Merci de contacter la médiathèque', $cvs->getMessage());
-	}
 
 
- 
-/** @test */
-	public function cvsUrlWithUserNotInMultimediaGroupShouldReturnJsAlert() {
-		$this->_logUserGaston()
-			->beAbonneSIGB()
-			->setDateDebut('1999-02-10')
-			->setDateFin('2025-09-12')
-			->setUserGroups([]);
-		$cvs = new Class_Systeme_ModulesMenu_CVS();
-		$menu_url = $cvs->getDynamiqueUrl();
-		$this->assertContains('Merci de contacter la médiathèque', $cvs->getMessage());
+class ModulesMenuBibNumeriqueDeactivatedComboTest extends ModulesMenuBibNumeriqueTestCase {
+	public function setUp() {
+		parent::setUp();
+		RessourcesNumeriquesFixtures::deactivate();
+		$this->html = (new Class_Systeme_ModulesMenu())->getComboFonctions(0, false, '');
 	}
 
 
-	/** @test */
-	public function cvsUrlWithAbonnementInvalidShouldBeJSAlertAbonnementInvalid() {
-		$this->_logUserGaston()
-			->beAbonneSIGB()
-			->setDateFin('2001-09-12')
-			->setUserGroups([$this->group_multimedia]);
-		$cvs = new Class_Systeme_ModulesMenu_CVS();
-		$menu_url = $cvs->getDynamiqueUrl();
-		$this->assertContains('Votre abonnement ne permet pas', $cvs->getMessage());
-
+	/** 
+	 * @test 
+	 * @dataProvider availableServices
+	 */
+	public function shouldNotContainsLinkToService($type, $label) {
+		$this->assertNotContains('Lien vers ' . $label, $this->html);
 	}
+}
 
 
-	/** @test */
-	public function numilogUrlWithAbonnementInvalidShouldReturnDefaultNumilogUrl() {
-		$this->_logUserGaston();
-		$numilog = new Class_Systeme_ModulesMenu_Numilog();
-		$url = $numilog->getDynamiqueUrl();
-		$this->assertContains('http://numilogurl/action', $url);
 
+class ModulesMenuTest extends Storm_Test_ModelTestCase {
+	public function setUp() {
+		parent::setUp();
+		Zend_Controller_Front::getInstance()
+			->getRouter()
+			->route(new Zend_Controller_Request_Http('http://localhost/'));
 	}
 
 
 	/** @test */
 	public function reserverPosteUrlShouldBeAbonneReservations() {
-		$this->assertContains('/abonne/multimedia-hold-location',
-													$this->module_menu->getUrl('RESERVER_POSTE', [])['url']);
-	}
-
-	/** @test */
-	public function menuShouldContainsToutApprendre() {
-		$this->module_menu = new Class_Systeme_ModulesMenu();
-		$menu = $this->module_menu->getFonction('TOUTAPPRENDRE');
-		$this->assertContains('/modules/toutapprendre', $menu->getUrl());
-	}
-
-
-	/** @test */
-	public function menuShouldNotContainsToutApprendreWhenDeactivated() {
-		RessourcesNumeriquesFixtures::deactivateToutApprendre();
-		$this->module_menu = new Class_Systeme_ModulesMenu();
-		$menu = $this->module_menu->getFonction('TOUTAPPRENDRE');
-		$this->assertNotContains('/modules/toutapprendre', $menu->getUrl());
-	}
-
-
-  /** @test */
-	public function toutapprendreUrlShouldBeStaticPage() {
-		ZendAfi_Auth::getInstance()->clearIdentity();
-		$this->assertContains('/modules/toutapprendre',
-													$this->module_menu->getUrl('TOUTAPPRENDRE', [])['url']);
-	}
-
-
-
-	/** @test */
-	public function menuShouldContainsMusicMe() {
-		$this->module_menu = new Class_Systeme_ModulesMenu();
-		$menu = $this->module_menu->getFonction('MUSICME');
-		$this->assertContains('/modules/musicme', $menu->getUrl());
-	}
-
-
-	/** @test */
-	public function menuShouldNotContainsMusicMeWhenDeactivated() {
-		RessourcesNumeriquesFixtures::deactivateMusicMe();
-		$this->module_menu = new Class_Systeme_ModulesMenu();
-		$menu = $this->module_menu->getFonction('MUSICME');
-		$this->assertNotContains('/modules/musicme', $menu->getUrl());
-	}
-
-
-  /** @test */
-	public function musicmeUrlShouldBeStaticPage() {
-		ZendAfi_Auth::getInstance()->clearIdentity();
-		$this->assertContains('/modules/musicme',
-													$this->module_menu->getUrl('MUSICME', [])['url']);
+		Class_AdminVar::newInstanceWithId('MULTIMEDIA_KEY', ['valeur' => 'zork']);
+		$this->assertContains(
+			'/abonne/multimedia-hold-location',
+			(new Class_Systeme_ModulesMenu())->getUrl('RESERVER_POSTE', [])['url']);
 	}
 
 
 	/** @test */
 	public function menuFilsRssShouldSeparateItemsWithSemiColon() {
-		$url = $this->module_menu->getFonction('RSS')->getUrl(['id_items' => '1-5-10']);
+		$url = (new Class_Systeme_ModulesMenu())->getFonction('RSS')->getUrl(['id_items' => '1-5-10']);
 		$this->assertcontains('/rss/main/liste_flux/'.urlencode('1;5;10'),	$url);
 	}
 
 
 	/** @test */
 	public function menuWebkioskReservationWithWebkioskActivatedAndAbonneShouldLinkToReservationURLWithSSO() {
-		$url = $this->module_menu->getFonction('WEBKIOSK_RESERVATION')->getUrl();
+		Class_AdminVar::newInstanceWithId('WEBKIOSK_KEY', ['valeur' => 'zork']);
+		Class_AdminVar::newInstanceWithId('WEBKIOSK_RESERVATION_URL', ['valeur' => 'zork']);
+		$url = (new Class_Systeme_ModulesMenu())->getFonction('WEBKIOSK_RESERVATION')->getUrl();
 		$this->assertContains('/abonne/webkiosk-reservation', $url);
 	}
 
 
 	/** @test */
 	public function menuSuggestionAchatShouldContainsLinkToSuggestionAchat() {
-		$url = $this->module_menu->getFonction('SUGGESTION_ACHAT')->getUrl([]);
+		$url = (new Class_Systeme_ModulesMenu())->getFonction('SUGGESTION_ACHAT')->getUrl([]);
 		$this->assertcontains('/abonne/suggestion-achat',	$url);
 	}
-
 }
-
-
 ?>
\ No newline at end of file
diff --git a/tests/library/Class/Systeme/PergameServiceTest.php b/tests/library/Class/Systeme/PergameServiceTest.php
index 3f94df2ffa12a98e648c77af3327b613597658ac..11d4bedc1d2f093657052185d46cbb8bebbecd83 100644
--- a/tests/library/Class/Systeme/PergameServiceTest.php
+++ b/tests/library/Class/Systeme/PergameServiceTest.php
@@ -264,7 +264,7 @@ extends PergameServiceReserverExemplaireValidUserTestCase {
 
 	/** @test */
 	public function shouldReturnMaxHoldError() {
-		$this->assertPopupContains('nombre maximum de réservations');
+		$this->assertEquals(['erreur' => 'La réservation est impossible car vous avez atteint le nombre maximum de réservations sur votre carte.'], $this->response);
 	}
 }
 
@@ -288,7 +288,7 @@ extends PergameServiceReserverExemplaireValidUserTestCase {
 
 	/** @test */
 	public function shouldReturnMaxHoldError() {
-		$this->assertPopupContains('nombre maximum de réservations pour ce document');
+		$this->assertEquals(['erreur' => 'La réservation est impossible car le nombre maximum de réservations pour ce document a été atteint (3).'], $this->response);
 	}
 }
 
diff --git a/tests/library/Class/TypeDocTest.php b/tests/library/Class/TypeDocTest.php
index 3f37112d3fbf54166a5a52ce415b24eb27115ead..3bb288d39ae550dabea58e095ebfa82a3aabe6ed 100644
--- a/tests/library/Class/TypeDocTest.php
+++ b/tests/library/Class/TypeDocTest.php
@@ -91,19 +91,13 @@ class TypeDocTest extends Storm_Test_ModelTestCase {
 
 	/** @test */
 	public function saveNewInstancesVideoAndCDShouldUpdateTypesDocsVar() {
-		Class_TypeDoc::getLoader()
-			->newInstance()
-			->setLabel('videos')
-			->save();
-
-		Class_TypeDoc::getLoader()
-			->newInstance()
-			->setLabel('CD')
-			->save();
+		$current_max = Class_TypeDoc::getCurrentMaxId();
+		Class_TypeDoc::newInstance()->setLabel('videos')->save();
+		Class_TypeDoc::newInstance()->setLabel('CD')->save();
 
-		$this->assertContains("107:Vidéos à la demande\r\n108:Cours en ligne\r\n109:Enregistrement audio\r\n110:Numérique Premium\r\n111:videos\r\n112:CD",
-												$this->cosmo_types->getListe(),
-												'Current value: '.$this->cosmo_types->getListe());
+		$this->assertContains(
+			($current_max + 1) . ":videos\r\n" . ($current_max + 2) . ":CD", 
+			$this->cosmo_types->getListe());
 	}
 
 
@@ -137,6 +131,30 @@ class TypeDocTest extends Storm_Test_ModelTestCase {
 	public function loaderFind999ShouldReturnNull() {
 		$this->assertEquals(null, Class_TypeDoc::getLoader()->find(999));
 	}
+
+	/** @test */
+	public function addLabelInListShouldWork() {
+		Class_CosmoVar::AddLabelInList('types_docs', 111, 'Cyberlibris');
+		$this->assertContains('111:Cyberlibris', $this->cosmo_types->getListe());
+	}
+
+
+	/** @test */
+	public function couldnotAddLabelIfAlreadyExists() {
+		Class_CosmoVar::AddLabelInList('types_docs', 111, 'Cyberlibris');
+		Class_CosmoVar::AddLabelInList('types_docs', 111, 'Cyberlibris');
+		$this->assertEquals('0:non identifié\r\n1:livres\r\n2:périodiques\r\n111:Cyberlibris', $this->cosmo_types->getListe());
+	}
+
+
+	/** @test */
+	public function ifLabelExistsShouldUpdateLabel() {
+		Class_CosmoVar::AddLabelInList('types_docs', 111, 'Cyberlibris');
+		Class_CosmoVar::AddLabelInList('types_docs', 111, 'Other');
+		$this->assertContains('111:Other', $this->cosmo_types->getListe());
+	}
+
+
 }
 
 ?>
\ No newline at end of file
diff --git a/tests/library/Class/UsersTest.php b/tests/library/Class/UsersTest.php
index 16de7b7fde52ee1ed5cfa6a1d4267569a92742f1..f670644860eab8bdb6f8a4ad91d92c3cb2695e6d 100644
--- a/tests/library/Class/UsersTest.php
+++ b/tests/library/Class/UsersTest.php
@@ -236,7 +236,8 @@ class UsersTestSave extends ModelTestCase {
 							'mobile' => '',
 							'civilite' => 0,
 							'ordreabon' => '',
-							'id_panier_courant' => 0]);
+			'id_panier_courant' => 0,
+			'pseudo' => '']);
 
 		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Newsletter')
 			->whenCalled('findAllBy')
@@ -284,8 +285,9 @@ class UsersTestSave extends ModelTestCase {
 							'mobile' => '',
 							'civilite' => 0,
 							'ordreabon' => '',
-							'id_panier_courant' => 0],
-						 'id_user=\'34\'');
+							'id_panier_courant' => 0,
+			'pseudo' => ''],
+			'id_user=\'34\'');
 
 		Class_Users::getLoader()
 			->newFromRow(UserFixtures::truffaz())
diff --git a/tests/library/Class/WebService/CyberlibrisTest.php b/tests/library/Class/WebService/CyberlibrisTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..488040580da3f54dd848ebf3e1098b11a7678dae
--- /dev/null
+++ b/tests/library/Class/WebService/CyberlibrisTest.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class CyberlibrisHarvestSaveTest extends  Storm_Test_ModelTestCase {
+	public function setUp() {
+		parent::setUp();
+
+		Class_AdminVar::newInstanceWithId('CYBERLIBRIS_URL', ['valeur' => 'http://oai-bibliovox.cyberlibris.fr/oai.aspx']); 
+
+		Class_Album::beVolatile();
+
+		$catalogue_xml = file_get_contents(realpath(dirname(__FILE__)). '/../../../fixtures/cyberlibris_oai.xml');
+		$catalogue_xml_fin = file_get_contents(realpath(dirname(__FILE__)). '/../../../fixtures/cyberlibris_oai_fin.xml');
+
+		$this->_http_client = $this->mock();
+		$this->_http_client
+			->whenCalled('open_url')
+			->with('http://oai-bibliovox.cyberlibris.fr/oai.aspx?verb=ListRecords&metadataPrefix=oai_dc')
+			->answers($catalogue_xml)
+			->whenCalled('open_url')
+			->with('http://oai-bibliovox.cyberlibris.fr/oai.aspx?verb=ListRecords&resumptionToken=f0a442d7-b9fc-4b02-881a-318b573cef60')
+			->answers($catalogue_xml_fin)
+			->beStrict();
+
+		$this->onLoaderOfModel('Class_Album')->whenCalled('deleteBy')->answers(true);
+
+		$this->_service = new Class_WebService_BibNumerique_Cyberlibris();
+		Class_WebService_BibNumerique_Cyberlibris::setDefaultHttpClient($this->_http_client);
+		$this->_service->harvest('');
+	}
+
+
+	/** @test */
+	public function nameShouldBeCyberLibris() {
+		$this->assertEquals('Cyberlibris', $this->_service->getName());
+	}
+
+
+	/** @test */
+	public function shouldBeEnabled() {
+		$this->assertTrue($this->_service->isEnabled());
+	}
+
+
+	/** @test */
+	public function shouldHaveSaved4Albums() {
+		$this->assertEquals(4, count(Class_Album::findAll()));
+	}
+
+
+	/** @test */
+	public function firstAlbumShouldNotHavePoster() {
+		$this->assertEquals('', Class_Album::find(1)->getPoster());
+	}
+
+
+	/** @test */
+	public function secondBookShouldBe() {
+		$this->assertContains('reprendre un commerce', Class_Album::find(2)->getTitre());
+	}
+
+
+	/** @test */
+	public function lastBookAuthorShouldBeRenanErnest() {
+		$this->assertEquals('Renan, Ernest', Class_Album::find(4)->getAuthorsNames()[0]);
+	}
+
+
+	/** @test */
+	public function idShouldBeSet() {
+		$this->assertEquals('10185250', Class_Album::find(4)->getIdOrigine());
+	}
+
+
+	/** @test */
+	public function firstAlbumExternalURIShouldBeSet() {
+		$this->assertEquals('http://www.bibliovox.com/bookdetails.aspx?docID=10177808', Class_Album::find(1)->getExternalUri());
+	}
+
+
+	/** @test */
+	public function shouldAttemptToDeleteNonHarvested() {
+		$this->assertEquals(
+			"url_origine=\"http://oai-bibliovox.cyberlibris.fr/oai.aspx\" and id_origine not in ('10177808', '10177809', '10177811', '10185250')",
+			Class_Album::getLoader()->getAttributesForLastCallOn('deleteBy')[0]['where']);
+	}
+}
+
+
+?>
\ No newline at end of file
diff --git a/tests/library/Class/WebService/NumeriquePremiumTest.php b/tests/library/Class/WebService/NumeriquePremiumTest.php
index 4df8b28709bb8c1d686ba527e4be23f5f003bdfb..bbb908aa6a52384a177ef089608ed18166c9ca9b 100644
--- a/tests/library/Class/WebService/NumeriquePremiumTest.php
+++ b/tests/library/Class/WebService/NumeriquePremiumTest.php
@@ -80,5 +80,11 @@ class Class_WebService_NumeriquePremiumHarvestTest extends Storm_Test_ModelTestC
 		$this->assertEquals('http://www.numeriquepremium.com/content/books/9782841004577',$this->album_politique->getExternalUri());
 	}
 
+  /** @test */
+  public function urlVignetteShouldBeNumeriquePremiumCom() {
+    $this->assertEquals('http://www.numeriquepremium.com/docserver/covers/9782841004577_large.jpg', $this->album_politique->getPoster());
+
+  }
+
 }
-?>
\ No newline at end of file
+?>
diff --git a/tests/library/Class/WebService/SIGB/GetPatronInfoFrancoisMorel.xml b/tests/library/Class/WebService/SIGB/GetPatronInfoFrancoisMorel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..60de13e6f1ce0501bcf21835191117cec8577a17
--- /dev/null
+++ b/tests/library/Class/WebService/SIGB/GetPatronInfoFrancoisMorel.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<GetPatronInfo><patronId>5352</patronId><barcode>7942236</barcode><lastName>MOREL</lastName><firstName>François</firstName><displayOrder>1</displayOrder><birthDate>1970-01-01</birthDate><phoneNumber>XX XX XX XX XX</phoneNumber><town>Amityville</town><zipcode>0666</zipcode><address>12&#29;6 Elm Street
+</address><endDate>2015-03-19</endDate><mail></mail><loans><loan><bibId>186567</bibId><itemId>72958</itemId><title>Le garçon qui voulait devenir un être humain</title><author>Jorn Riel</author><locationLabel>Médiathèque </locationLabel><loanDate>2014-06-25</loanDate><dueDate>2014-07-25</dueDate></loan><loan><bibId>186564</bibId><itemId>72955</itemId><title>Le garçon qui voulait devenir un être humain</title><author>Jorn Riel</author><locationLabel>Médiathèque </locationLabel><loanDate>2014-06-25</loanDate><dueDate>2014-07-25</dueDate></loan><loan><bibId>279034</bibId><itemId>111089</itemId><title>La vieille qui voulait tuer le bon Dieu</title><author>Nadine Monfils</author><locationLabel>Médiathèque </locationLabel><loanDate>2014-07-04</loanDate><dueDate>2014-08-03</dueDate></loan><loan><bibId>273559</bibId><itemId>111718</itemId><title>Un fleuve de fumée</title><author>Amitav Ghosh</author><locationLabel>Médiathèque </locationLabel><loanDate>2014-07-04</loanDate><dueDate>2014-08-03</dueDate></loan><loan><bibId>198354</bibId><itemId>83017</itemId><title>Demoiselles des Lumières</title><author>Jean Diwo</author><locationLabel>Médiathèque </locationLabel><loanDate>2014-07-04</loanDate><dueDate>2014-08-03</dueDate></loan><loan><bibId>230310</bibId><itemId>91620</itemId><title>Le naufrage</title><author>Eric Roussel</author><locationLabel>Médiathèque </locationLabel><loanDate>2014-07-04</loanDate><dueDate>2014-08-03</dueDate></loan></loans><holds><hold><bibId>280792</bibId><itemId>112771</itemId><title>Le livre du roi</title><author>Arnaldur Indriòason</author><locationLabel>Médiathèque </locationLabel><priority>1</priority><available>0</available><availabilityDate>11/08/2014</availabilityDate></hold><hold><bibId>152968</bibId><itemId>42029</itemId><title>L'énigme de Ravejouls</title><author>Alain Gandy</author><locationLabel>Médiathèque </locationLabel><priority>1</priority><available>0</available><availabilityDate>24/07/2014</availabilityDate></hold></holds><suggests/></GetPatronInfo>
diff --git a/tests/library/Class/WebService/SIGB/NanookFixtures.php b/tests/library/Class/WebService/SIGB/NanookFixtures.php
index b6f09761ee47c18b7faa12c1a755ac3b5df465bb..77b3765fcb67c0fe9db410b7d950c7c4c6d02597 100644
--- a/tests/library/Class/WebService/SIGB/NanookFixtures.php
+++ b/tests/library/Class/WebService/SIGB/NanookFixtures.php
@@ -335,6 +335,17 @@ class NanookFixtures {
 </GetPatronInfo>';
 	}
 
+	public static function xmlAuthenticatePatronFrancoisMorel() {
+		return '<?xml version="1.0" encoding="utf-8"?>
+<AuthenticatePatron>
+  <patronId>5352</patronId>
+</AuthenticatePatron>';
+	}
+
+  public static function xmlGetPatronInfoFrancoisMorel() {
+    return file_get_contents(dirname(__FILE__) . '/GetPatronInfoFrancoisMorel.xml');
+  }
+
 
 
 	/** @return string */
@@ -366,10 +377,10 @@ class NanookFixtures {
 			</head>
 			<body>
 				<h1>Etat HTTP 404 - </h1>
-				<HR size="1" noshade="noshade">
+				<HR size="1" noshade="noshade"/>
 				<p><b>type</b> Rapport d\'état</p><p><b>message</b> <u></u></p>
 				<p><b>description</b> <u>La ressource demandée () n\'est pas disponible.</u></p>
-				<HR size="1" noshade="noshade">
+				<HR size="1" noshade="noshade"/>
 				<h3>Apache Tomcat/6.0.32</h3>
 			</body>
 		</html>';
@@ -392,4 +403,4 @@ class NanookFixtures {
   <patronId>555</patronId>
 </AuthenticatePatron>';
 	}
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/WebService/SIGB/NanookTest.php b/tests/library/Class/WebService/SIGB/NanookTest.php
index f47c22127d4beaed610f984a6c4c1d6d57010278..718ac43426d7d9e9473a94ddbf10dd35c060003a 100644
--- a/tests/library/Class/WebService/SIGB/NanookTest.php
+++ b/tests/library/Class/WebService/SIGB/NanookTest.php
@@ -674,6 +674,40 @@ class NanookGetEmprunteurChristelDelpeyrouxTest extends NanookTestCase {
 	}
 }
 
+class NanookGetEmprunteurFrancoisMorelTest extends NanookTestCase {
+	/** @var Class_WebService_SIGB_Emprunteur */
+	protected $_emprunteur;
+
+
+	public function setUp() {
+		parent::setUp();
+
+		$this->_mock_web_client
+			->whenCalled('open_url')
+			->with('http://localhost:8080/afi_Nanook/ilsdi/service/AuthenticatePatron/username/7942236/password/1900')
+			->answers(NanookFixtures::xmlAuthenticatePatronFrancoisMorel())
+
+			->whenCalled('open_url')
+			->with('http://localhost:8080/afi_Nanook/ilsdi/service/GetPatronInfo/patronId/5352')
+			->answers(NanookFixtures::xmlGetPatronInfoFrancoisMorel());
+
+		$this->_user = Class_Users::newInstance(['id_sigb' => 5352,
+																								 'login' => 7942236,
+																								 'password' => 1900]);
+		$this->_emprunteur = $this->_service->getEmprunteur($this->_user);
+		$this->_emprunteur->updateUser($this->_user);
+
+		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Exemplaire')
+			->whenCalled('findFirstBy')
+			->answers(null);
+	}
+
+  /** @test */
+  public function getEmpruntsShouldReturnsAllLoans() {
+    $loans = $this->_emprunteur->getEmprunts();
+    $this->assertEquals(6, count($loans));
+  }
+}
 
 
 
@@ -1011,4 +1045,4 @@ class NanookSaveEmprunteurUpdatePatronErrorTest extends NanookTestCase {
 	
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/tests/library/Class/WebService/SIGB/OrpheeFixtures.php b/tests/library/Class/WebService/SIGB/OrpheeFixtures.php
index aed90d90bafaf63f882b12939b1315bb88f1cd2a..72fc38206d766175565bffa33747980f23c89d61 100644
--- a/tests/library/Class/WebService/SIGB/OrpheeFixtures.php
+++ b/tests/library/Class/WebService/SIGB/OrpheeFixtures.php
@@ -150,7 +150,7 @@ class OrpheeFixtures {
 					<![CDATA[1]]>
 				</sit>
 				<lib_sit>
-					<![CDATA[en rayon]]>
+					<![CDATA[En rayon]]>
 				</lib_sit>
 				<loc>
 					<![CDATA[5]]>
@@ -389,4 +389,4 @@ renouvellement -->
 </datas> ';
 	}
 }
-?>
\ No newline at end of file
+?>
diff --git a/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php b/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php
index bd809f844cb60506a2e0dd8a5904548c3ea9e090..9949122a00a36084afa766b3eae3e8a13b80573c 100644
--- a/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php
+++ b/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php
@@ -70,6 +70,7 @@ class OrpheeServiceGetServiceTest extends Storm_Test_ModelTestCase {
 abstract class OrpheeServiceTestCase extends Storm_Test_ModelTestCase {
 	protected $_search_client;
 	protected $_orphee;
+	protected $_orphee_allow_hold_avail;
 	protected $_henry_dupont;
 
 	public function setUp(){
@@ -87,6 +88,11 @@ abstract class OrpheeServiceTestCase extends Storm_Test_ModelTestCase {
 
 		$this->_beforeOrpheeServiceCreate();
 		$this->_orphee = new Class_WebService_SIGB_Orphee_ServiceForTesting($this->_search_client);
+		$allow_hold_available_items=true;
+		$this->_orphee_allow_hold_avail = Class_WebService_SIGB_Orphee_Service::getService('tests/fixtures/orphee.wsdl', null, $allow_hold_available_items);
+		$this->_orphee_allow_hold_avail->setSearchClient($this->_search_client);
+		$this->_orphee_allow_hold_avail->isConnected();
+
 		$this->_henry_dupont = Class_Users::getLoader()
 			->newInstanceWithId(2)
 			->setLogin('10900000753');
@@ -270,6 +276,20 @@ class OrpheeServiceTestGetLstDmntWithMillenium extends OrpheeServiceTestCase {
 		$this->assertEquals('27/03/2012', $exemplaire->getDateRetour());
 	}
 
+	/** @test */
+	public function exemplaireByCodeBarre00106001488142WithAllowHoldAvailShouldNotBeEmpty() {
+		$exemplaire = $this->_orphee_allow_hold_avail->getExemplaire('frOr1301700727', '00106001488142');
+		$this->assertNotEmpty($exemplaire);
+		return $exemplaire;
+	}
+
+	/**
+	 * @test 
+	 * @depends exemplaireByCodeBarre00106001488142WithAllowHoldAvailShouldNotBeEmpty
+	 */
+	public function firstExemplaireWithAllowHoldAvailShouldBeReservable($exemplaire) {
+		$this->assertTrue($exemplaire->isReservable());
+	}
 	
 	/** @test */
 	public function exemplaireByCodeBarre00106001488155ShouldNotBeEmpty() {
@@ -293,7 +313,7 @@ class OrpheeServiceTestGetLstDmntWithMillenium extends OrpheeServiceTestCase {
 	 * @depends exemplaireByCodeBarre00106001488155ShouldNotBeEmpty
 	 */
 	public function secondExemplaireDisponibiliteShouldBeEnRayon($exemplaire) {
-		$this->assertEquals('en rayon', $exemplaire->getDisponibilite());
+		$this->assertEquals('En rayon', $exemplaire->getDisponibilite());
 	}
 
 	
@@ -305,6 +325,21 @@ class OrpheeServiceTestGetLstDmntWithMillenium extends OrpheeServiceTestCase {
 		$this->assertFalse($exemplaire->isReservable());
 	}
 
+	/** @test */
+	public function exemplaireByCodeBarre00106001488155WithAllowHoldAvailShouldNotBeEmpty() {
+		$exemplaire = $this->_orphee_allow_hold_avail->getExemplaire('frOr1301700727', '00106001488155');
+		$this->assertNotEmpty($exemplaire);
+		return $exemplaire;
+	}
+
+	/**
+	 * @test
+	 * @depends exemplaireByCodeBarre00106001488155WithAllowHoldAvailShouldNotBeEmpty
+	 */
+	public function secondExemplaireWithAllowHoldAvailShouldBeReservable($exemplaire) {
+		$this->assertTrue($exemplaire->isReservable());
+	}
+
 }
 
 
@@ -1127,4 +1162,4 @@ class OrpheeServiceProlongetPretTest extends OrpheeServiceTestCase {
 	}	
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php b/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php
index cf987b43b669256b065e530a4ea0c97d73d79bbf..d866eb135d66e21b36609539892e686ba62e35de 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/CalendarTest.php
@@ -906,4 +906,81 @@ class CalendarHelperWithDiaporamaNavigationModeTest extends CalendarViewHelperTe
 	}
 
 }
+
+
+
+
+class CalendarHelperWithWallNavigationModeTest extends CalendarViewHelperTestCase {
+	protected $_head_script;
+
+	public function setUp() {
+		parent::setUp();
+
+		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
+			->whenCalled('getArticlesByPreferences')
+			->answers([$this->fixture('Class_Article', 
+									 [ 'id' => 8,
+										 'titre' => 'Bokeh en prod !',
+										 'events_debut' => '2013-08-21',
+										 'events_fin' => '2013-09-01',
+										 'categorie' => '',
+										 'contenu' => 'toto'
+										 ])]);
+
+
+
+		
+		$params = ['type_module' => 'CALENDRIER',
+							 'division' => 2,
+							 'preferences' => ['titre' => 'Agenda',
+																 'rss_avis' => false,
+																 'nb_events' => 3,
+																 'rss_avis' => 0,
+																 'display_calendar' => 0,
+																 'display_event_info' => 'bib',
+																 'display_mode' => 'Summary',
+																 'display_order' => 'EventDebut',
+																 'display_cat_select' => '',
+																 'id_categorie' => '',
+																 'mode-affichage' => 'wall',
+																 'op_navigation_window_width' => '350', 
+																 'op_navigation_window_height' => '250',
+																 'op_navigation_mode' => 'next_previous']];
+		
+		$helper = new ZendAfi_View_Helper_Accueil_Calendar(12, $params);
+		$helper->setView(new ZendAfi_Controller_Action_Helper_View());
+		$this->html = $helper->getBoite();
+		$this->_head_script = Class_ScriptLoader::getInstance()->html();
+
+	}
+ 
+	/** @test */
+	public function shouldDisplayArticle() {
+		$this->assertXPath($this->html,
+											 '//article',
+											 $this->html
+			);
+	}
+
+
+	/** @test */
+	public function shouldContainsDaySelector() {
+		$this->assertXPath( $this->html,
+												"//span[contains(@class,'event_start_date_day')]"
+	
+			);
+	}
+
+
+
+	/** @test */
+	public function shouldContainsMonthSelector() {
+		$this->assertXPath( $this->html,
+												"//span[contains(@class,'event_start_date_month')]"
+	
+			);
+	}
+
+
+}
 ?>
\ No newline at end of file
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php b/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php
index 86a87019940e6a5b8c2ae2dd801a44a44d5f7feb..c1bce55ee9ce84502bbc07cc68810cbf53418d0f 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php
@@ -489,8 +489,9 @@ class ZendAfi_View_Helper_Accueil_KiosqueTitle extends ViewHelperTestCase {
 
 	/** @test */
 	public function titleShouldContainEncodedSlashesInUrl() {
-		$this->assertContains('/recherche/simple/titre/Title+with+%2F+slash/style_liste/mur/nb_notices/20/only_img/1/aleatoire/1/tri/date_creation+desc/nb_analyse/50/op_hauteur_img/0/op_transition//op_largeur_img/0/rss_avis/1/id_catalogue/0/id_panier/0">Title with / slash</a>',
-													$this->_helper->getTitre());
+		$this->assertContains(
+			'/recherche/simple/titre/Title+with+%2F+slash/style_liste/mur/nb_notices/20/only_img/1/aleatoire/1/tri/date_creation+desc/nb_analyse/50/op_hauteur_img/0/op_transition//op_largeur_img/0/op_auto/0/op_scroll/1/rss_avis/1/id_catalogue/0/id_panier/0">Title with / slash</a>',
+			$this->_helper->getTitre());
 	}
 
 }
diff --git a/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php b/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php
index adf721543c80aa149edb1467d75bbfc079412525..bf6c128c8a0724d630ce3f9dc869aa44c23d27dd 100644
--- a/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php
+++ b/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php
@@ -186,12 +186,11 @@ class ZendAfi_View_Helper_RenderAlbumNumeriquePremiumTest extends ZendAfi_View_H
 		ZendAfi_Auth::getInstance()->logUser($logged_user);
 
 		$html = $this->_helper->renderAlbum($this->book);
-		$this->assertXPathContentContains($html,
-																			'//a[@href="http://www.numeriquepremium.com/content/books/9782760622173"]', 
-																			utf8_encode('Accéder au document Numérique Premium'));
+		$this->assertXPath($html,
+      '//input[@type="hidden"][@name="url"][@value="http://www.numeriquepremium.com/content/books/9782760622173"]');
 	}
 
 }
 
 
-?>
\ No newline at end of file
+?>