From 46e34e606900a60c977816ddc1f94e608defbd0e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 29 Jun 2011 12:58:32 +0000 Subject: [PATCH 01/13] Fix: Style --- .../jquery/plugins/jnotify/jquery.jnotify-alt.min.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css b/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css index 1ae36413379..9c588ebd3f5 100755 --- a/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css +++ b/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css @@ -24,7 +24,7 @@ left: 0; width: 100%; height: 100%; - background-color: #4c4c4c; + background-color: #e3f0db; filter: alpha(opacity=90); -moz-opacity: 0.90; opacity: 0.90; @@ -70,7 +70,7 @@ /* notification type == "error" */ .jnotify-container .jnotify-notification-error .jnotify-background { - background-color: #d79eac; + background-color: #d79eac !important; } .jnotify-container .jnotify-notification-error .jnotify-close, @@ -80,7 +80,7 @@ /* notification type == "warning" */ .jnotify-container .jnotify-notification-warning .jnotify-background { - background-color: #fff7d1; + background-color: #fff7d1 !important; } .jnotify-container .jnotify-notification-warning .jnotify-close, From 4f68fc0c23b025879be480f33c8232313405beef Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 29 Jun 2011 13:04:34 +0000 Subject: [PATCH 02/13] Fix: Style --- .../includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css b/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css index 9c588ebd3f5..ac68529042a 100755 --- a/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css +++ b/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css @@ -60,7 +60,7 @@ padding: 20px; text-align: left; color: #fff; - font: bold 1.4em Arial,Helvetica,sans-serif; + font: bold 1.2em verdana, arial, helvetica; line-height: 1.2em; } From 092a3b6dd618f66007fc7fe4871199176b715de1 Mon Sep 17 00:00:00 2001 From: Philippe Grand Date: Wed, 29 Jun 2011 15:48:02 +0000 Subject: [PATCH 03/13] To change a bill owner if mistaking This parameters should be used for troubleshooting using FACTURE_CHANGE_THIRDPARTY --- htdocs/compta/facture.php | 32 ++++++++++++++++++---- htdocs/core/class/html.form.class.php | 38 ++++++++++++++++++++++++++- 2 files changed, 64 insertions(+), 6 deletions(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index fe73e96e1dd..6cfaa6df2d9 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -26,7 +26,7 @@ * \file htdocs/compta/facture.php * \ingroup facture * \brief Page to create/see an invoice - * \version $Id$ + * \version $Id: facture.php,v 1.839 2011/06/29 15:48:02 grandoc Exp $ */ require('../main.inc.php'); @@ -232,6 +232,14 @@ if ($action == 'valid') } } +if ($action == 'set_thirdparty') +{ + $object->updateObjectField('facture',$id,'fk_soc',$socid); + + Header('Location: '.$_SERVER["PHP_SELF"].'?facid='.$id); + exit; +} + if ($action == 'classin') { $object->fetch($id); @@ -2063,10 +2071,24 @@ else print ''; // Third party + print ''; + print ''; print ''; - print ''; - print ''; + print ''; + print '
'.$langs->trans('Company').''.$soc->getNomUrl(1,'compta'); - print '   ('.$langs->trans('OtherBills').')
'; + if ($conf->global->FACTURE_CHANGE_THIRDPARTY && $action != 'editthirdparty' && $object->brouillon && $user->rights->facture->creer) + print 'id.'">'.img_edit($langs->trans('SetLinkToThirdParty'),1).'
'; + print ''; + if ($action == 'editthirdparty') + { + $html->form_thirdparty($_SERVER['PHP_SELF'].'?facid='.$object->id,$object->socid,'socid'); + } + else + { + print '  '.$soc->getNomUrl(1,'compta'); + print '   ('.$langs->trans('OtherBills').')'; + } + print ''; // Type print ''.$langs->trans('Type').''; @@ -3174,5 +3196,5 @@ else $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/06/29 15:48:02 $ - $Revision: 1.839 $'); ?> diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 771c5b471bc..5f47437f830 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -31,7 +31,7 @@ * \file htdocs/core/class/html.form.class.php * \ingroup core * \brief File of class with all html predefined components - * \version $Id: html.form.class.php,v 1.183 2011/06/29 11:22:36 eldy Exp $ + * \version $Id: html.form.class.php,v 1.184 2011/06/29 15:48:03 grandoc Exp $ */ @@ -2511,6 +2511,42 @@ class Form } } } + +/** + * \brief Affiche formulaire de selection des tiers + * \param page Page + * \param selected Id contact pre-selectionne + * \param htmlname Nom du formulaire select + */ + function form_thirdparty($page, $selected='', $htmlname='socid') + { + global $langs; + + if ($htmlname != "none") + { + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print '
'; + $num=$this->select_societes($selected , $htmlname); + print '
'; + } + else + { + if ($selected) + { + require_once(DOL_DOCUMENT_ROOT ."/societe/class/societe.class.php"); + $soc = new Societe($this->db); + $soc->fetch($selected); + print $soc->getNomUrl($langs); + } else { + print " "; + } + } + } /** * \brief Affiche formulaire de selection de l'adresse From e381abf410542d811aeb767dbaee63cf4228d7b8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 29 Jun 2011 17:55:32 +0000 Subject: [PATCH 04/13] Serious enhancement of expenses module --- .../deplacement/class/deplacement.class.php | 34 +++- htdocs/compta/deplacement/fiche.php | 41 ++-- htdocs/compta/deplacement/index.php | 191 ++++++++++++------ htdocs/compta/deplacement/list.php | 129 ++++++++++++ htdocs/compta/dons/class/don.class.php | 23 ++- htdocs/compta/dons/index.php | 12 +- htdocs/compta/index.php | 84 +++++--- htdocs/includes/menus/init_menu_auguria.sql | 7 +- htdocs/includes/menus/standard/eldy.lib.php | 6 +- .../install/mysql/migration/3.0.0-3.1.0.sql | 4 +- htdocs/install/mysql/tables/llx_don.sql | 5 +- htdocs/langs/en_US/boxes.lang | 2 + htdocs/langs/en_US/trips.lang | 3 +- htdocs/langs/fr_FR/boxes.lang | 2 + htdocs/langs/fr_FR/trips.lang | 1 + 15 files changed, 409 insertions(+), 135 deletions(-) create mode 100755 htdocs/compta/deplacement/list.php diff --git a/htdocs/compta/deplacement/class/deplacement.class.php b/htdocs/compta/deplacement/class/deplacement.class.php index 85dd52a7573..7161e07e5cf 100644 --- a/htdocs/compta/deplacement/class/deplacement.class.php +++ b/htdocs/compta/deplacement/class/deplacement.class.php @@ -22,7 +22,7 @@ * \file htdocs/compta/deplacement/class/deplacement.class.php * \ingroup deplacement * \brief File of class to manage trips - * \version $Id$ + * \version $Id: deplacement.class.php,v 1.9 2011/06/29 17:55:34 eldy Exp $ */ require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php"); @@ -328,6 +328,38 @@ class Deplacement extends CommonObject return $result; } + + /** + * List of types + */ + function listOfTypes($active=1) + { + global $conf,$langs; + + $ret=array(); + + $sql = "SELECT id, code, libelle as label"; + $sql.= " FROM ".MAIN_DB_PREFIX."c_type_fees"; + $sql.= " WHERE active = ".$active; + + dol_syslog("Deplacement::listOfTypes sql=".$sql, LOG_DEBUG); + $result = $this->db->query($sql) ; + if ( $result ) + { + $num = $this->db->num_rows($result); + $i=0; + while ($i < $num) + { + $obj = $this->db->fetch_object($result); + $ret[$obj->id]=array('code'=>$obj->code, 'label'=>(($langs->trans($obj->code)!=$obj->code)?$langs->trans($obj->code):$obj->label)); + $i++; + } + } + else dol_print_error($this->db); + + return $ret; + } + } ?> diff --git a/htdocs/compta/deplacement/fiche.php b/htdocs/compta/deplacement/fiche.php index 4f7737c5f30..c49a853ea4a 100644 --- a/htdocs/compta/deplacement/fiche.php +++ b/htdocs/compta/deplacement/fiche.php @@ -21,7 +21,7 @@ /** * \file htdocs/compta/deplacement/fiche.php * \brief Page to show a trip card - * \version $Id$ + * \version $Id: fiche.php,v 1.55 2011/06/29 17:55:33 eldy Exp $ */ require("../../main.inc.php"); @@ -212,15 +212,18 @@ if ($_GET["action"] == 'create') print $html->select_date($datec?$datec:-1,'','','','','add',1,1); print ''; + // Km + print ''.$langs->trans("FeesKilometersOrAmout").''; + + // Company print ""; print ''.$langs->trans("CompanyVisited").''; print $html->select_societes($_POST["socid"]?$_POST["socid"]:$_GET["socid"],'socid','',1); print ''; - print ''.$langs->trans("FeesKilometersOrAmout").''; - print ''; + print ''; - print '
    '; + print '
    '; print ''; @@ -282,17 +285,19 @@ else print $html->select_users($_POST["fk_user"]?$_POST["fk_user"]:$deplacement->fk_user,'fk_user',0); print ''; - // Where - print ""; - print ''.$langs->trans("CompanyVisited").''; - print $html->select_societes($soc->id,'socid','',1); - print ''; - // Date print ''.$langs->trans("Date").''; print $html->select_date($deplacement->date,'','','','','update'); print ''; - print ''.$langs->trans("FeesKilometersOrAmout").''; + + // Km + print ''.$langs->trans("FeesKilometersOrAmout").''; + + // Where + print ""; + print ''.$langs->trans("CompanyVisited").''; + print $html->select_societes($soc->id,'socid','',1); + print ''; print ''; @@ -336,12 +341,6 @@ else print $userfee->getNomUrl(1); print ''; - // Where - print ''.$langs->trans("CompanyVisited").''; - print ''; - if ($soc->id) print $soc->getNomUrl(1); - print ''; - // Date print ''.$langs->trans("Date").''; print dol_print_date($deplacement->date,'day'); @@ -350,6 +349,12 @@ else // Km/Price print ''.$langs->trans("FeesKilometersOrAmout").''.$deplacement->km.''; + // Where + print ''.$langs->trans("CompanyVisited").''; + print ''; + if ($soc->id) print $soc->getNomUrl(1); + print ''; + // Project if ($conf->projet->enabled) { @@ -428,5 +433,5 @@ print ''; $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/06/29 17:55:33 $ - $Revision: 1.55 $'); ?> diff --git a/htdocs/compta/deplacement/index.php b/htdocs/compta/deplacement/index.php index 762baeea921..994e9e814e2 100644 --- a/htdocs/compta/deplacement/index.php +++ b/htdocs/compta/deplacement/index.php @@ -20,9 +20,9 @@ */ /** - \file htdocs/compta/deplacement/index.php - \brief Page liste des deplacements - \version $Id$ + * \file htdocs/compta/deplacement/index.php + * \brief Page list of expenses + * \version $Id: index.php,v 1.44 2011/06/29 17:55:33 eldy Exp $ */ require("../../main.inc.php"); @@ -56,74 +56,143 @@ $limit = $conf->liste_limit; $tripandexpense_static=new Deplacement($db); -llxHeader(); +//$help_url='EN:Module_Donations|FR:Module_Dons|ES:Módulo_Subvenciones'; +$help_url=''; +llxHeader('',$langs->trans("ListOfFees"),$help_url); -$sql = "SELECT s.nom, s.rowid as socid,"; // Ou -$sql.= " d.rowid, d.type, d.dated as dd, d.km, "; // Comment -$sql.= " u.name, u.firstname"; // Qui -$sql.= " FROM ".MAIN_DB_PREFIX."user as u"; -$sql.= ", ".MAIN_DB_PREFIX."deplacement as d"; -$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON d.fk_soc = s.rowid"; -if (!$user->rights->societe->client->voir && !$socid) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc"; -$sql.= " WHERE d.fk_user = u.rowid"; -$sql.= " AND d.entity = ".$conf->entity; -if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND sc.fk_user = " .$user->id; -if ($socid) $sql.= " AND s.rowid = ".$socid; -$sql.= $db->order($sortfield,$sortorder); -$sql.= $db->plimit($limit + 1 ,$offset); -//print $sql; -$resql=$db->query($sql); -if ($resql) + + +$totalnb=0; +$sql = "SELECT count(d.rowid) as nb, sum(d.km) as km, d.type"; +$sql.= " FROM ".MAIN_DB_PREFIX."deplacement as d"; +$sql.= " GROUP BY d.type"; +$sql.= " ORDER BY d.type"; + +$result = $db->query($sql); +if ($result) { - $num = $db->num_rows($resql); - - print_barre_liste($langs->trans("ListOfFees"), $page, "index.php","&socid=$socid",$sortfield,$sortorder,'',$num); - + $num = $db->num_rows($result); $i = 0; - print ''; - print ""; - print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"d.rowid","","&socid=$socid",'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Type"),$_SERVER["PHP_SELF"],"d.type","","&socid=$socid",'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"d.dated","","&socid=$socid",'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","","&socid=$socid",'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Person"),$_SERVER["PHP_SELF"],"u.name","","&socid=$socid",'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("FeesKilometersOrAmout"),$_SERVER["PHP_SELF"],"d.km","","&socid=$socid",'align="right"',$sortfield,$sortorder); - print_liste_field_titre('',$_SERVER["PHP_SELF"], ''); - print "\n"; - - $var=true; - while ($i < min($num,$limit)) + while ($i < $num) { - $objp = $db->fetch_object($resql); - - $soc = new Societe($db); - if ($objp->socid) $soc->fetch($objp->socid); - - $var=!$var; - print ''; - print ''; - print ''; - print ''; - if ($objp->socid) print ''; - else print ''; - print ''; - print ''; - - print ''; - print "\n"; + $objp = $db->fetch_object($result); + $somme[$objp->type] = $objp->km; + $nb[$objp->type] = $objp->nb; + $totalnb += $objp->nb; $i++; } - - print "
'.img_object($langs->trans("ShowTrip"),"trip").' '.$objp->rowid.''.$langs->trans($objp->type).''.dol_print_date($db->jdate($objp->dd),'day').''.$soc->getNomUrl(1).' '.img_object($langs->trans("ShowUser"),"user").' '.$objp->firstname.' '.$objp->name.''.$objp->km.''.$tripandexpense_static->getLibStatut(5).'
"; - $db->free($resql); -} -else -{ + $db->free($result); +} else { dol_print_error($db); } + + +print_fiche_titre($langs->trans("ExpensesArea")); + +print ''; + +// Left area +print '
'; + + + +print ''; +print ''; +print ''; +print "\n"; + +$listoftype=$tripandexpense_static->listOfTypes(); +foreach ($listoftype as $typefee) +{ + $dataseries[]=array('label'=>$typefee['label'],'values'=>array(0=>(isset($nb[$typefee['code']])?$nb[$typefee['code']]:0))); +} + +if ($conf->use_javascript_ajax) +{ + print ''; +} + +print ''; +print ''; +print ''; +print ''; + +print '
'.$langs->trans("Statistics").'
'; + $data=array('series'=>$dataseries); + dol_print_graph('stats',300,180,$data,1,'pie',1); + print '
'.$langs->trans("Total").''.$totalnb.'
'; + + +// Right area +print '
'; + +$max=10; + +$langs->load("boxes"); + +$sql = "SELECT u.rowid as uid, u.name, u.firstname, d.rowid, d.dated as date, d.tms as dm, d.km"; +$sql.= " FROM ".MAIN_DB_PREFIX."deplacement as d, ".MAIN_DB_PREFIX."user as u"; +if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."societe_commerciaux as sc"; +$sql.= " WHERE u.rowid = d.fk_user"; +$sql.= " AND d.entity = ".$conf->entity; +if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND d.fk_soc = s. rowid AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; +if ($socid) $sql.= " AND d.fk_soc = ".$socid; +$sql.= $db->order("d.tms","DESC"); +$sql.= $db->plimit($max, 0); + +$result = $db->query($sql); +if ($result) +{ + $var=false; + $num = $db->num_rows($result); + + $i = 0; + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + if ($num) + { + $total_ttc = $totalam = $total = 0; + + $deplacementstatic=new Deplacement($db); + $userstatic=new User($db); + while ($i < $num && $i < $max) + { + $objp = $db->fetch_object($result); + $deplacementstatic->ref=$objp->rowid; + $deplacementstatic->id=$objp->rowid; + $userstatic->id=$objp->uid; + $userstatic->nom=$objp->name; + $userstatic->prenom=$objp->firstname; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + $var=!$var; + $i++; + } + + } + else + { + print ''; + } + print '
'.$langs->trans("BoxTitleLastModifiedExpenses",min($max,$num)).''.$langs->trans("FeesKilometersOrAmout").''.$langs->trans("DateModificationShort").' 
'.$deplacementstatic->getNomUrl(1).''.$userstatic->getNomUrl(1).''.$objp->km.''.dol_print_date($db->jdate($objp->dm),'day').''.$deplacementstatic->LibStatut($objp->fk_statut,3).'
'.$langs->trans("None").'

'; +} +else dol_print_error($db); + + $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/06/29 17:55:33 $ - $Revision: 1.44 $'); ?> diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php new file mode 100755 index 00000000000..404e0afb5f4 --- /dev/null +++ b/htdocs/compta/deplacement/list.php @@ -0,0 +1,129 @@ + + * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2004 Eric Seigne + * Copyright (C) 2005-2009 Regis Houssin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/** + * \file htdocs/compta/deplacement/list.php + * \brief Page list of expenses + * \version $Id: list.php,v 1.1 2011/06/29 17:55:33 eldy Exp $ + */ + +require("../../main.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/compta/tva/class/tva.class.php"); +require_once(DOL_DOCUMENT_ROOT."/compta/deplacement/class/deplacement.class.php"); + +$langs->load("companies"); +$langs->load("users"); +$langs->load("trips"); + +// Security check +$socid = $_GET["socid"]?$_GET["socid"]:''; +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'deplacement','',''); + +$sortfield = GETPOST("sortfield",'alpha'); +$sortorder = GETPOST("sortorder",'alpha'); +$page = GETPOST("page",'int'); +if ($page == -1) { $page = 0; } +$offset = $conf->liste_limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +if (! $sortorder) $sortorder="DESC"; +if (! $sortfield) $sortfield="d.dated"; +$limit = $conf->liste_limit; + + +/* + * View + */ + +$tripandexpense_static=new Deplacement($db); + +llxHeader(); + +$sql = "SELECT s.nom, s.rowid as socid,"; // Ou +$sql.= " d.rowid, d.type, d.dated as dd, d.km, "; // Comment +$sql.= " u.name, u.firstname"; // Qui +$sql.= " FROM ".MAIN_DB_PREFIX."user as u"; +$sql.= ", ".MAIN_DB_PREFIX."deplacement as d"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON d.fk_soc = s.rowid"; +if (!$user->rights->societe->client->voir && !$socid) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc"; +$sql.= " WHERE d.fk_user = u.rowid"; +$sql.= " AND d.entity = ".$conf->entity; +if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND sc.fk_user = " .$user->id; +if ($socid) $sql.= " AND s.rowid = ".$socid; +$sql.= $db->order($sortfield,$sortorder); +$sql.= $db->plimit($limit + 1 ,$offset); + +//print $sql; +$resql=$db->query($sql); +if ($resql) +{ + $num = $db->num_rows($resql); + + print_barre_liste($langs->trans("ListOfFees"), $page, $_SERVER["PHP_SELF"],"&socid=$socid",$sortfield,$sortorder,'',$num); + + $i = 0; + print ''; + print ""; + print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"d.rowid","","&socid=$socid",'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Type"),$_SERVER["PHP_SELF"],"d.type","","&socid=$socid",'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"d.dated","","&socid=$socid",'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Person"),$_SERVER["PHP_SELF"],"u.name","","&socid=$socid",'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","","&socid=$socid",'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("FeesKilometersOrAmout"),$_SERVER["PHP_SELF"],"d.km","","&socid=$socid",'align="right"',$sortfield,$sortorder); + print_liste_field_titre('',$_SERVER["PHP_SELF"], ''); + print "\n"; + + $var=true; + while ($i < min($num,$limit)) + { + $objp = $db->fetch_object($resql); + + $soc = new Societe($db); + if ($objp->socid) $soc->fetch($objp->socid); + + $var=!$var; + print ''; + print ''; + print ''; + print ''; + print ''; + if ($objp->socid) print ''; + else print ''; + print ''; + + print ''; + print "\n"; + + $i++; + } + + print "
'.img_object($langs->trans("ShowTrip"),"trip").' '.$objp->rowid.''.$langs->trans($objp->type).''.dol_print_date($db->jdate($objp->dd),'day').''.img_object($langs->trans("ShowUser"),"user").' '.$objp->firstname.' '.$objp->name.''.$soc->getNomUrl(1).' '.$objp->km.''.$tripandexpense_static->getLibStatut(5).'
"; + $db->free($resql); +} +else +{ + dol_print_error($db); +} +$db->close(); + +llxFooter('$Date: 2011/06/29 17:55:33 $ - $Revision: 1.1 $'); +?> diff --git a/htdocs/compta/dons/class/don.class.php b/htdocs/compta/dons/class/don.class.php index 47aa79c1060..94ea39a56b2 100644 --- a/htdocs/compta/dons/class/don.class.php +++ b/htdocs/compta/dons/class/don.class.php @@ -22,7 +22,7 @@ * \file htdocs/compta/dons/class/don.class.php * \ingroup don * \brief Fichier de la classe des dons - * \version $Id$ + * \version $Id: don.class.php,v 1.10 2011/06/29 17:55:34 eldy Exp $ */ require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php"); @@ -310,6 +310,8 @@ class Don extends CommonObject $sql.= ", fk_user_valid"; $sql.= ", datedon"; $sql.= ", email"; + $sql.= ", phone"; + $sql.= ", phone_mobile"; $sql.= ") VALUES ("; $sql.= " '".$this->db->idate($now)."'"; $sql.= ", ".$conf->entity; @@ -328,7 +330,9 @@ class Don extends CommonObject $sql.= ", ".$user->id; $sql.= ", null"; $sql.= ", '".$this->db->idate($this->date)."'"; - $sql.= ", '".$this->email."'"; + $sql.= ", '".$this->db->escape($this->email)."'"; + $sql.= ", '".$this->db->escape($this->phone)."'"; + $sql.= ", '".$this->db->escape($this->phone_mobile)."'"; $sql.= ")"; dol_syslog("Don::create sql=".$sql, LOG_DEBUG); @@ -367,6 +371,8 @@ class Don extends CommonObject $sql .= ",note='".$this->db->escape($this->note)."'"; $sql .= ",datedon='".$this->db->idate($this->date)."'"; $sql .= ",email='".$this->email."'"; + $sql .= ",phone='".$this->phone."'"; + $sql .= ",phone_mobile='".$this->phone_mobile."'"; $sql .= ",fk_statut=".$this->statut; $sql .= " WHERE rowid = $this->id"; @@ -383,9 +389,9 @@ class Don extends CommonObject } } - /* - * Suppression du don de la base - * @param rowid id du don a supprimer + /** + * Delete a donation + * @param rowid Id of donation to delete */ function delete($rowid) { @@ -413,7 +419,8 @@ class Don extends CommonObject /** * Load donation from database - * @param rowid Id of donation toload + * @param rowid Id of donation to load + * @param ref Ref of donation to load * @return int <0 if KO, >0 if OK */ function fetch($rowid,$ref='') @@ -421,7 +428,7 @@ class Don extends CommonObject global $conf; $sql = "SELECT d.rowid, d.datec, d.tms as datem, d.datedon,"; - $sql.= " d.prenom, d.nom, d.societe, d.amount, d.fk_statut, d.adresse, d.cp, d.ville, d.pays, d.public, d.amount, d.fk_paiement, d.note, cp.libelle, d.email, d.fk_don_projet,"; + $sql.= " d.prenom, d.nom, d.societe, d.amount, d.fk_statut, d.adresse, d.cp, d.ville, d.pays, d.public, d.amount, d.fk_paiement, d.note, cp.libelle, d.email, d.phone, d.phone_mobile, d.fk_don_projet,"; $sql.= " p.title as project_label"; $sql.= " FROM ".MAIN_DB_PREFIX."don as d"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = d.fk_don_projet"; @@ -451,6 +458,8 @@ class Don extends CommonObject $this->zip = $obj->cp; $this->town = $obj->ville; $this->email = $obj->email; + $this->phone = $obj->phone; + $this->phone_mobile = $obj->phone_mobile; $this->pays = $obj->pays; $this->projet = $obj->project_label; $this->fk_project = $obj->fk_don_projet; diff --git a/htdocs/compta/dons/index.php b/htdocs/compta/dons/index.php index 972d21b33f3..eded37ea345 100644 --- a/htdocs/compta/dons/index.php +++ b/htdocs/compta/dons/index.php @@ -21,7 +21,7 @@ * \file htdocs/compta/dons/index.php * \ingroup don * \brief Home page of donation module - * \version $Id$ + * \version $Id: index.php,v 1.28 2011/06/29 17:55:33 eldy Exp $ */ require("../../main.inc.php"); @@ -43,10 +43,11 @@ $donation_static=new Don($db); * View */ -llxHeader('',$langs->trans("Donations"),'EN:Module_Donations|FR:Module_Dons|ES:Módulo_Subvenciones'); - $donstatic=new Don($db); +$help_url='EN:Module_Donations|FR:Module_Dons|ES:Módulo_Subvenciones'; +llxHeader('',$langs->trans("Donations"),$help_url); + $sql = "SELECT count(d.rowid) as nb, sum(d.amount) as somme , d.fk_statut"; $sql.= " FROM ".MAIN_DB_PREFIX."don as d"; $sql.= " GROUP BY d.fk_statut"; @@ -133,8 +134,7 @@ print "
"; print ''; - -$max=5; +$max=10; /* * Last modified proposals @@ -202,5 +202,5 @@ print ''; $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/06/29 17:55:33 $ - $Revision: 1.28 $'); ?> diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index 69946ae386d..2b7d3eaa2d2 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -22,7 +22,7 @@ * \file htdocs/compta/index.php * \ingroup compta * \brief Main page of accountancy area - * \version $Id$ + * \version $Id: index.php,v 1.181 2011/06/29 17:55:34 eldy Exp $ */ require('../main.inc.php'); @@ -474,20 +474,17 @@ if ($conf->fournisseur->enabled && $user->rights->fournisseur->facture->lire) -// Last customers -if ($conf->societe->enabled && $user->rights->societe->lire) +// Last donations +if ($conf->don->enabled && $user->rights->societe->lire) { - include_once(DOL_DOCUMENT_ROOT.'/societe/class/client.class.php'); + include_once(DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'); $langs->load("boxes"); + $donationstatic=new Don($db); - $sql = "SELECT s.nom, s.rowid, s.datec as dc, s.tms as dm"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE s.client IN (1, 3)"; - $sql.= " AND s.entity = ".$conf->entity; - if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($socid) $sql.= " AND s.rowid = ".$socid; + $sql = "SELECT s.rowid, s.nom, s.prenom, s.societe, s.datedon as date, s.tms as dm, s.amount, s.fk_statut"; + $sql.= " FROM ".MAIN_DB_PREFIX."don as s"; + $sql.= " WHERE s.entity = ".$conf->entity; $sql.= $db->order("s.tms","DESC"); $sql.= $db->plimit($max, 0); @@ -500,25 +497,32 @@ if ($conf->societe->enabled && $user->rights->societe->lire) $i = 0; print ''; - print ''; + print ''; + print ''; print ''; + print ''; print ''; if ($num) { $var = True; $total_ttc = $totalam = $total = 0; - $customerstatic=new Client($db); $var=true; while ($i < $num && $i < $max) { $objp = $db->fetch_object($result); - $customerstatic->id=$objp->rowid; - $customerstatic->nom=$objp->nom; $var=!$var; print ''; - print ''; + $donationstatic->id=$objp->rowid; + $donationstatic->nom=$objp->nom; + $donationstatic->prenom=$objp->prenom; + $label=$donationstatic->getFullName($langs); + if ($objp->societe) $label.=($label?' - ':'').$objp->societe; + $donationstatic->ref=$label; + print ''; + print ''; print ''; + print ''; print ''; $i++; @@ -531,22 +535,25 @@ if ($conf->societe->enabled && $user->rights->societe->lire) } print '
'.$langs->trans("BoxTitleLastModifiedCustomers",min($max,$num)).'
'.$langs->trans("BoxTitleLastModifiedDonations",min($max,$num)).''.$langs->trans("AmountTTC").''.$langs->trans("DateModificationShort").' 
'.$customerstatic->getNomUrl(1).''.$donationstatic->getNomUrl(1).''.price($objp->amount).''.dol_print_date($db->jdate($objp->dm),'day').''.$donationstatic->LibStatut($objp->fk_statut,3).'

'; } + else dol_print_error($db); } -// Last suppliers -if ($conf->fournisseur->enabled && $user->rights->societe->lire) +// Last trips and expenses +if ($conf->deplacement->enabled && $user->rights->deplacement->lire) { - $langs->load("boxes"); + include_once(DOL_DOCUMENT_ROOT.'/compta/deplacement/class/deplacement.class.php'); - $sql = "SELECT s.nom, s.rowid, s.datec as dc, s.tms as dm"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE s.fournisseur = 1"; - $sql.= " AND s.entity = ".$conf->entity; - if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($socid) $sql.= " AND s.rowid = ".$socid; - $sql.= $db->order("s.tms","DESC"); + $langs->load("boxes"); + + $sql = "SELECT u.rowid as uid, u.name, u.firstname, d.rowid, d.dated as date, d.tms as dm, d.km"; + $sql.= " FROM ".MAIN_DB_PREFIX."deplacement as d, ".MAIN_DB_PREFIX."user as u"; + if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql.= " WHERE u.rowid = d.fk_user"; + $sql.= " AND d.entity = ".$conf->entity; + if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND d.fk_soc = s. rowid AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; + if ($socid) $sql.= " AND d.fk_soc = ".$socid; + $sql.= $db->order("d.tms","DESC"); $sql.= $db->plimit($max, 0); $result = $db->query($sql); @@ -558,22 +565,32 @@ if ($conf->fournisseur->enabled && $user->rights->societe->lire) $i = 0; print ''; - print ''; + print ''; + print ''; + print ''; print ''; + print ''; print ''; if ($num) { $total_ttc = $totalam = $total = 0; - $customerstatic=new Client($db); + $deplacementstatic=new Deplacement($db); + $userstatic=new User($db); while ($i < $num && $i < $max) { $objp = $db->fetch_object($result); - $customerstatic->id=$objp->rowid; - $customerstatic->nom=$objp->nom; + $deplacementstatic->ref=$objp->rowid; + $deplacementstatic->id=$objp->rowid; + $userstatic->id=$objp->uid; + $userstatic->nom=$objp->name; + $userstatic->prenom=$objp->firstname; print ''; - print ''; + print ''; + print ''; + print ''; print ''; + print ''; print ''; $var=!$var; $i++; @@ -586,6 +603,7 @@ if ($conf->fournisseur->enabled && $user->rights->societe->lire) } print '
'.$langs->trans("BoxTitleLastModifiedSuppliers",min($max,$num)).'
'.$langs->trans("BoxTitleLastModifiedExpenses",min($max,$num)).''.$langs->trans("FeesKilometersOrAmout").''.$langs->trans("DateModificationShort").' 
'.$customerstatic->getNomUrl(1).''.$deplacementstatic->getNomUrl(1).''.$userstatic->getNomUrl(1).''.$objp->km.''.dol_print_date($db->jdate($objp->dm),'day').''.$deplacementstatic->LibStatut($objp->fk_statut,3).'

'; } + else dol_print_error($db); } @@ -991,5 +1009,5 @@ print ''; $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/06/29 17:55:34 $ - $Revision: 1.181 $'); ?> diff --git a/htdocs/includes/menus/init_menu_auguria.sql b/htdocs/includes/menus/init_menu_auguria.sql index 0a2b44ccad5..dec3ccbf2b7 100644 --- a/htdocs/includes/menus/init_menu_auguria.sql +++ b/htdocs/includes/menus/init_menu_auguria.sql @@ -1,6 +1,6 @@ -- --- $Id$ --- $Revision$ +-- $Id: init_menu_auguria.sql,v 1.118 2011/06/29 17:55:34 eldy Exp $ +-- $Revision: 1.118 $ -- -- Menu base entries -- This file is loaded when a menu handler base is activated (auguria, etc..) @@ -169,9 +169,10 @@ insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2001__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create', 'NewDonation', 1, 'donations', '$user->rights->don->creer', '', 2, 0, __ENTITY__); insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2002__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy', 'List', 1, 'donations', '$user->rights->don->lire', '', 2, 1, __ENTITY__); --insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2003__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/compta/dons/stats.php?leftmenu=donations&mainmenu=accountancy', 'Statistics', 1, 'donations', '$user->rights->don->lire', '', 2, 2, __ENTITY__); +-- Trips and expenses insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->deplacement->enabled', __HANDLER__, 'left', 2100__+MAX_llx_menu__, 'accountancy', '', 6__+MAX_llx_menu__, '/compta/deplacement/index.php?leftmenu=tripsandexpenses', 'TripsAndExpenses', 0, 'trips', '$user->rights->deplacement->lire', '', 0, 5, __ENTITY__); insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->deplacement->enabled && $leftmenu=="tripsandexpenses"', __HANDLER__, 'left', 2101__+MAX_llx_menu__, 'accountancy', '', 2100__+MAX_llx_menu__, '/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses', 'New', 1, 'trips', '$user->rights->deplacement->creer', '', 0, 1, __ENTITY__); -insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->deplacement->enabled && $leftmenu=="tripsandexpenses"', __HANDLER__, 'left', 2102__+MAX_llx_menu__, 'accountancy', '', 2100__+MAX_llx_menu__, '/compta/deplacement/index.php?leftmenu=tripsandexpenses', 'List', 1, 'trips', '$user->rights->deplacement->lire', '', 0, 2, __ENTITY__); +insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->deplacement->enabled && $leftmenu=="tripsandexpenses"', __HANDLER__, 'left', 2102__+MAX_llx_menu__, 'accountancy', '', 2100__+MAX_llx_menu__, '/compta/deplacement/list.php?leftmenu=tripsandexpenses', 'List', 1, 'trips', '$user->rights->deplacement->lire', '', 0, 2, __ENTITY__); insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->deplacement->enabled && $leftmenu=="tripsandexpenses"', __HANDLER__, 'left', 2103__+MAX_llx_menu__, 'accountancy', '', 2100__+MAX_llx_menu__, '/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses', 'Statistics', 1, 'trips', '$user->rights->deplacement->lire', '', 0, 2, __ENTITY__); insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->tax->enabled', __HANDLER__, 'left', 2200__+MAX_llx_menu__, 'accountancy', '', 6__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy', 'MenuTaxAndDividends', 0, 'compta', '$user->rights->tax->charges->lire', '', 0, 6, __ENTITY__); insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->tax->enabled', __HANDLER__, 'left', 2201__+MAX_llx_menu__, 'accountancy', '', 2200__+MAX_llx_menu__, '/compta/sociales/index.php?leftmenu=tax_social', 'SocialContributions', 1, '', '$user->rights->tax->charges->lire', '', 0, 1, __ENTITY__); diff --git a/htdocs/includes/menus/standard/eldy.lib.php b/htdocs/includes/menus/standard/eldy.lib.php index 2b00d739e27..5bdeefeba03 100644 --- a/htdocs/includes/menus/standard/eldy.lib.php +++ b/htdocs/includes/menus/standard/eldy.lib.php @@ -21,7 +21,7 @@ /** * \file htdocs/includes/menus/standard/eldy.lib.php * \brief Library for file eldy menus - * \version $Id$ + * \version $Id: eldy.lib.php,v 1.52 2011/06/29 17:55:33 eldy Exp $ */ @@ -914,13 +914,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after) //if ($leftmenu=="donations") $newmenu->add("/compta/dons/stats.php",$langs->trans("Statistics"), 1, $user->rights->don->lire); } - // Deplacements + // Trips and expenses if ($conf->deplacement->enabled) { $langs->load("trips"); $newmenu->add("/compta/deplacement/index.php?leftmenu=tripsandexpenses&mainmenu=accountancy", $langs->trans("TripsAndExpenses"), 0, $user->rights->deplacement->lire); if ($leftmenu=="tripsandexpenses") $newmenu->add("/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses&mainmenu=accountancy", $langs->trans("New"), 1, $user->rights->deplacement->creer); - if ($leftmenu=="tripsandexpenses") $newmenu->add("/compta/deplacement/index.php?leftmenu=tripsandexpenses&mainmenu=accountancy", $langs->trans("List"), 1, $user->rights->deplacement->lire); + if ($leftmenu=="tripsandexpenses") $newmenu->add("/compta/deplacement/list.php?leftmenu=tripsandexpenses&mainmenu=accountancy", $langs->trans("List"), 1, $user->rights->deplacement->lire); if ($leftmenu=="tripsandexpenses") $newmenu->add("/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses&mainmenu=accountancy", $langs->trans("Statistics"), 1, $user->rights->deplacement->lire); } diff --git a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql index 5940883abdf..d345126600d 100755 --- a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql +++ b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql @@ -1,5 +1,5 @@ -- --- $Id: 3.0.0-3.1.0.sql,v 1.77 2011/06/29 11:22:35 eldy Exp $ +-- $Id: 3.0.0-3.1.0.sql,v 1.78 2011/06/29 17:55:32 eldy Exp $ -- -- Be carefull to requests order. -- This file must be loaded by calling /install/index.php page @@ -438,3 +438,5 @@ ALTER TABLE llx_c_typent ADD COLUMN module varchar(32) NULL; ALTER TABLE llx_user ADD signature text DEFAULT NULL AFTER email; +ALTER TABLE llx_don ADD phone_mobile varchar(24) after email; +ALTER TABLE llx_don ADD phone varchar(24) after email; diff --git a/htdocs/install/mysql/tables/llx_don.sql b/htdocs/install/mysql/tables/llx_don.sql index 294a950d0b1..1e9b0495d34 100644 --- a/htdocs/install/mysql/tables/llx_don.sql +++ b/htdocs/install/mysql/tables/llx_don.sql @@ -1,6 +1,7 @@ -- =================================================================== -- Copyright (C) 2001-2002 Rodolphe Quiedeville -- Copyright (C) 2009 Regis Houssin +-- Copyright (C) 2011 Laurent Destailleur -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -16,7 +17,7 @@ -- along with this program; if not, write to the Free Software -- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -- --- $Id$ +-- $Id: llx_don.sql,v 1.5 2011/06/29 17:55:34 eldy Exp $ -- =================================================================== @@ -39,6 +40,8 @@ create table llx_don ville varchar(50), pays varchar(50), email varchar(255), + phone varchar(24), + phone_mobile varchar(24), public smallint DEFAULT 1 NOT NULL, -- le don est-il public (0,1) fk_don_projet integer NULL, -- projet auquel est fait le don fk_user_author integer NOT NULL, diff --git a/htdocs/langs/en_US/boxes.lang b/htdocs/langs/en_US/boxes.lang index fff4533052b..9c28211732b 100644 --- a/htdocs/langs/en_US/boxes.lang +++ b/htdocs/langs/en_US/boxes.lang @@ -54,6 +54,8 @@ NoRecordedCustomers=No recorded customers NoRecordedContacts=No recorded contacts BoxTitleLastActionsToDo=Last %s actions to do BoxTitleLastContracts=Last %s contracts +BoxTitleLastModifiedDonations=Last %s modified donations +BoxTitleLastModifiedExpenses=Last %s modified expenses NoActionsToDo=No actions to do NoRecordedOrders=No recorded customer's orders NoRecordedProposals=No recorded proposals diff --git a/htdocs/langs/en_US/trips.lang b/htdocs/langs/en_US/trips.lang index 1fc8e41ad3f..c18425bc6e0 100644 --- a/htdocs/langs/en_US/trips.lang +++ b/htdocs/langs/en_US/trips.lang @@ -17,4 +17,5 @@ ConfirmDeleteTrip=Are you sure you want to delete this trip ? TF_OTHER=Other TF_LUNCH=Lunch TF_TRIP=Trip -ListTripsAndExpenses=List of trips and expenses \ No newline at end of file +ListTripsAndExpenses=List of trips and expenses +ExpensesArea=Trips and exepenses area \ No newline at end of file diff --git a/htdocs/langs/fr_FR/boxes.lang b/htdocs/langs/fr_FR/boxes.lang index c8843ec7f78..9d027f04938 100644 --- a/htdocs/langs/fr_FR/boxes.lang +++ b/htdocs/langs/fr_FR/boxes.lang @@ -54,6 +54,8 @@ NoRecordedCustomers=Pas de client enregistré NoRecordedContacts=Pas de contact enregistré BoxTitleLastActionsToDo=Les %s derniers événements à réaliser BoxTitleLastContracts=Les %s derniers contrats +BoxTitleLastModifiedDonations=Les %s derniers dons modifiés +BoxTitleLastModifiedExpenses=Les %s dernières note de frais modifiées NoActionsToDo=Pas d'événements à réaliser NoRecordedOrders=Pas de commande client enregistrée NoRecordedProposals=Pas de proposition commerciale enregistrée diff --git a/htdocs/langs/fr_FR/trips.lang b/htdocs/langs/fr_FR/trips.lang index 66549a33965..483f99dcea4 100644 --- a/htdocs/langs/fr_FR/trips.lang +++ b/htdocs/langs/fr_FR/trips.lang @@ -19,3 +19,4 @@ TF_OTHER=Autre TF_LUNCH=Repas TF_TRIP=Déplacement ListTripsAndExpenses=Liste des notes de frais +ExpensesArea=Espace Notes de frais \ No newline at end of file From 6d407b58d4e96a09cb6c5bbbef38916f830b8332 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 29 Jun 2011 19:29:26 +0000 Subject: [PATCH 05/13] Fix: update jquery libraries --- COPYRIGHT | 4 +- htdocs/core/class/commonobject.class.php | 18 +- .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 124 -> 162 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 3457 -> 4033 bytes .../images/ui-icons_217bc0_256x240.png | Bin 4369 -> 5355 bytes .../css/redmond/jquery-ui-latest.custom.css | 45 +- .../smoothness/jquery-ui-latest.custom.css | 45 +- .../includes/jquery/js/jquery-latest.min.jgz | Bin 29850 -> 31899 bytes .../includes/jquery/js/jquery-latest.min.js | 8 +- .../jquery/js/jquery-ui-latest.custom.min.jgz | Bin 51889 -> 52598 bytes .../jquery/js/jquery-ui-latest.custom.min.js | 562 +++++---- .../jquery/plugins/fileupload/README.md | 77 ++ .../jquery/plugins/fileupload/README.txt | 48 +- .../fileupload/jquery.fileupload-ui.css | 134 +- .../fileupload/jquery.fileupload-ui.js | 851 +++++++++---- .../plugins/fileupload/jquery.fileupload.js | 1113 ++++++++++------- .../fileupload/jquery.iframe-transport.js | 156 +++ .../plugins/fileupload/jquery.tmpl.min.js | 10 + .../jquery/plugins/fileupload/pbar-ani.gif | Bin 304064 -> 3323 bytes 19 files changed, 2002 insertions(+), 1069 deletions(-) create mode 100644 htdocs/includes/jquery/plugins/fileupload/README.md create mode 100644 htdocs/includes/jquery/plugins/fileupload/jquery.iframe-transport.js create mode 100644 htdocs/includes/jquery/plugins/fileupload/jquery.tmpl.min.js diff --git a/COPYRIGHT b/COPYRIGHT index 991d0edc0e3..5f7929499a8 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -23,8 +23,8 @@ FPDI 1.3.4 Apache Software License 2.0 No GPL3 only PDF temp FPDI_Protection 1.0.3 Apache Software License 2.0 No GPL3 only PDF encryption (8 files) GeoIP x.x Yes GeoIP Maxmind conversion JCrop 0.9.8 MIT Licence Yes JS library (to crop images) -jQuery 1.5.2 GPL and MIT Licence Yes JS library -jQuery UI 1.8.11 GPL and MIT Licence Yes JS library plugin UI +jQuery 1.6.1 GPL and MIT Licence Yes JS library +jQuery UI 1.8.14 GPL and MIT Licence Yes JS library plugin UI jQuery Layout 1.3.0 GPL and MIT Licence Yes JS library plugin Layout (RC-29.12) jQuery TableDnD 0.5 GPL and MIT Licence Yes JS library plugin TableDnD (to reorder table rows) jQuery jNotify 1.1.00 Apache Software License 2.0 No GPL3 only JS library plugin jNotify (to use ajax popups) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index a2ef308ba91..6aa5b25a18f 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -22,7 +22,7 @@ * \file htdocs/core/class/commonobject.class.php * \ingroup core * \brief File of parent class of all other business classes (invoices, contracts, proposals, orders, ...) - * \version $Id$ + * \version $Id: commonobject.class.php,v 1.139 2011/06/29 19:29:27 hregis Exp $ */ @@ -585,15 +585,21 @@ class CommonObject { global $conf; - $result=false; - $sql = "UPDATE ".MAIN_DB_PREFIX.$table." SET "; $sql.= $field." = '".$value."'"; $sql.= " WHERE rowid = ".$id; dol_syslog("CommonObject::updateObjectField sql=".$sql, LOG_DEBUG); $resql = $this->db->query($sql); - if (! $resql) dol_print_error($this->db); + if ($resql) + { + return 1; + } + else + { + dol_print_error($this->db); + return -1; + } } /** @@ -1899,7 +1905,7 @@ class CommonObject $this->tpl['label'].= $productstatic->getNomUrl(1); $this->tpl['label'].= $line->label?' - '.$line->label:''; // Dates - if ($date_start || $date_end) + if ($line->product_type == 1 && ($date_start || $date_end)) { $this->tpl['label'].= get_date_range($date_start,$date_end); } @@ -1909,7 +1915,7 @@ class CommonObject $this->tpl['label'].= ($line->product_type == -1 ? ' ' : ($line->product_type == 1 ? img_object($langs->trans(''),'service') : img_object($langs->trans(''),'product'))); $this->tpl['label'].= ($line->label ? ' '.$line->label : ''); // Dates - if ($date_start || $date_end) + if ($line->product_type == 1 && ($date_start || $date_end)) { $this->tpl['label'].= get_date_range($date_start,$date_end); } diff --git a/htdocs/includes/jquery/css/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png b/htdocs/includes/jquery/css/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png index 9fb564f8d0a117f17aa6b844490309dadbd94821..9d149b1c61fdee2de5cb342741c243abb9058bb3 100644 GIT binary patch delta 141 zcmV;80CN9)q5+T`e*qX@I!yoo0BK1?K~y-6<)o42hlie`K4rvM{(9u03*To*fsGqm~sZFs*XmgpTmw)s%rpN6%Fmkg{W{^6<) vOuYHLypDzuU>cZ$saOOJ(3s@|=HLhOSsqP3^?Gvc>Hq)$07*qo IM6N<$fwvD6&3+=WUF$`v&e6tQ||a_7Y*A{9$q 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 diff --git a/htdocs/includes/jquery/css/redmond/jquery-ui-latest.custom.css b/htdocs/includes/jquery/css/redmond/jquery-ui-latest.custom.css index 6b2a73736f3..49dc0abfe6b 100644 --- a/htdocs/includes/jquery/css/redmond/jquery-ui-latest.custom.css +++ b/htdocs/includes/jquery/css/redmond/jquery-ui-latest.custom.css @@ -1,5 +1,5 @@ /* - * jQuery UI CSS Framework 1.8.11 + * jQuery UI CSS Framework 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -42,7 +42,7 @@ /* - * jQuery UI CSS Framework 1.8.11 + * jQuery UI CSS Framework 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -280,20 +280,15 @@ ----------------------------------*/ /* Corner radius */ -.ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; } -.ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; } -.ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; } -.ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; } -.ui-corner-top { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; } -.ui-corner-bottom { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; } -.ui-corner-right { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; } -.ui-corner-left { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; } -.ui-corner-all { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } -.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* - * jQuery UI Resizable 1.8.11 +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* + * jQuery UI Resizable 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -302,7 +297,7 @@ * http://docs.jquery.com/UI/Resizable#theming */ .ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } @@ -312,7 +307,7 @@ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* - * jQuery UI Selectable 1.8.11 + * jQuery UI Selectable 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -322,7 +317,7 @@ */ .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } /* - * jQuery UI Accordion 1.8.11 + * jQuery UI Accordion 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -341,7 +336,7 @@ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } .ui-accordion .ui-accordion-content-active { display: block; } /* - * jQuery UI Autocomplete 1.8.11 + * jQuery UI Autocomplete 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -355,7 +350,7 @@ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ /* - * jQuery UI Menu 1.8.11 + * jQuery UI Menu 1.8.14 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -394,7 +389,7 @@ margin: -1px; } /* - * jQuery UI Button 1.8.11 + * jQuery UI Button 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -432,7 +427,7 @@ input.ui-button { padding: .4em 1em; } /* workarounds */ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ /* - * jQuery UI Dialog 1.8.11 + * jQuery UI Dialog 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -453,7 +448,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } .ui-draggable .ui-dialog-titlebar { cursor: move; } /* - * jQuery UI Slider 1.8.11 + * jQuery UI Slider 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -476,7 +471,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; }/* - * jQuery UI Tabs 1.8.11 + * jQuery UI Tabs 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -494,7 +489,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } .ui-tabs .ui-tabs-hide { display: none !important; } /* - * jQuery UI Datepicker 1.8.11 + * jQuery UI Datepicker 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -534,7 +529,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; } +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } @@ -561,7 +556,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad width: 200px; /*must have*/ height: 200px; /*must have*/ }/* - * jQuery UI Progressbar 1.8.11 + * jQuery UI Progressbar 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. diff --git a/htdocs/includes/jquery/css/smoothness/jquery-ui-latest.custom.css b/htdocs/includes/jquery/css/smoothness/jquery-ui-latest.custom.css index b2f72e97360..ad212daefd7 100644 --- a/htdocs/includes/jquery/css/smoothness/jquery-ui-latest.custom.css +++ b/htdocs/includes/jquery/css/smoothness/jquery-ui-latest.custom.css @@ -1,5 +1,5 @@ /* - * jQuery UI CSS Framework 1.8.11 + * jQuery UI CSS Framework 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -42,7 +42,7 @@ /* - * jQuery UI CSS Framework 1.8.11 + * jQuery UI CSS Framework 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -280,20 +280,15 @@ ----------------------------------*/ /* Corner radius */ -.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; } -.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } -.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } -.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } -.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } -.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } -.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } -.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } -.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } -.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* - * jQuery UI Resizable 1.8.11 +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* + * jQuery UI Resizable 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -302,7 +297,7 @@ * http://docs.jquery.com/UI/Resizable#theming */ .ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } @@ -312,7 +307,7 @@ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* - * jQuery UI Selectable 1.8.11 + * jQuery UI Selectable 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -322,7 +317,7 @@ */ .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } /* - * jQuery UI Accordion 1.8.11 + * jQuery UI Accordion 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -341,7 +336,7 @@ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } .ui-accordion .ui-accordion-content-active { display: block; } /* - * jQuery UI Autocomplete 1.8.11 + * jQuery UI Autocomplete 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -355,7 +350,7 @@ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ /* - * jQuery UI Menu 1.8.11 + * jQuery UI Menu 1.8.14 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -394,7 +389,7 @@ margin: -1px; } /* - * jQuery UI Button 1.8.11 + * jQuery UI Button 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -432,7 +427,7 @@ input.ui-button { padding: .4em 1em; } /* workarounds */ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ /* - * jQuery UI Dialog 1.8.11 + * jQuery UI Dialog 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -453,7 +448,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } .ui-draggable .ui-dialog-titlebar { cursor: move; } /* - * jQuery UI Slider 1.8.11 + * jQuery UI Slider 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -476,7 +471,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; }/* - * jQuery UI Tabs 1.8.11 + * jQuery UI Tabs 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -494,7 +489,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } .ui-tabs .ui-tabs-hide { display: none !important; } /* - * jQuery UI Datepicker 1.8.11 + * jQuery UI Datepicker 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -534,7 +529,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; } +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } @@ -561,7 +556,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad width: 200px; /*must have*/ height: 200px; /*must have*/ }/* - * jQuery UI Progressbar 1.8.11 + * jQuery UI Progressbar 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. diff --git a/htdocs/includes/jquery/js/jquery-latest.min.jgz b/htdocs/includes/jquery/js/jquery-latest.min.jgz index 12263ccb5d8b86819611f35e0880b9602cbc4b78..ca8ee1644d84e8b6069a1c70ab23572fb19b7ef7 100644 GIT binary patch literal 31899 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").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";b_[a]=c}return b_[a]}function ce(a,b){var c={};d.each(cd.concat.apply([],cd.slice(0,b)),function(){c[this]=a});return c}function b$(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bZ(){try{return new a.XMLHttpRequest}catch(b){}}function bY(){d(a).unload(function(){for(var a in bW)bW[a](0,1)})}function bS(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g=0===c})}function P(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function H(a,b){return(a&&a!=="*"?a+".":"")+b.replace(t,"`").replace(u,"&")}function G(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,p=[],q=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function E(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function y(){return!0}function x(){return!1}function i(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function h(a,c,e){if(e===b&&a.nodeType===1){e=a.getAttribute("data-"+c);if(typeof e==="string"){try{e=e==="true"?!0:e==="false"?!1:e==="null"?null:d.isNaN(e)?g.test(e)?d.parseJSON(e):e:parseFloat(e)}catch(f){}d.data(a,c,e)}else e=b}return e}var c=a.document,d=function(){function G(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(G,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x,y,z=Object.prototype.toString,A=Object.prototype.hasOwnProperty,B=Array.prototype.push,C=Array.prototype.slice,D=String.prototype.trim,E=Array.prototype.indexOf,F={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.2",length:0,size:function(){return this.length},toArray:function(){return C.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?B.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),x.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(C.apply(this,arguments),"slice",C.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:B,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;x.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=d._Deferred();if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",y,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",y),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&G()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):F[z.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!A.call(a,"constructor")&&!A.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||A.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1?f.call(arguments,0):c,--g||h.resolveWith(h,f.call(b,0))}}var b=arguments,c=0,e=b.length,g=e,h=e<=1&&a&&d.isFunction(a.promise)?a:d.Deferred();if(e>1){for(;c
a";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0,reliableMarginRight:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e)}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(a.style.width="1px",a.style.marginRight="0",d.support.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(a,null).marginRight,10)||0)===0),b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function");return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}}();var g=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!i(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,g=b.nodeType,h=g?d.cache:b,j=g?b[d.expando]:d.expando;if(!h[j])return;if(c){var k=e?h[j][f]:h[j];if(k){delete k[c];if(!i(k))return}}if(e){delete h[j][f];if(!i(h[j]))return}var l=h[j][f];d.support.deleteExpando||h!=a?delete h[j]:h[j]=null,l?(h[j]={},g||(h[j].toJSON=d.noop),h[j][f]=l):g&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var f=this[0].attributes,g;for(var i=0,j=f.length;i-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var j=i?f:0,k=i?f+1:h.length;j=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=m.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&n.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var k=a.getAttributeNode("tabIndex");return k&&k.specified?k.value:o.test(a.nodeName)||p.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var l=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return l===null?b:l}h&&(a[c]=e);return a[c]}});var r=/\.(.*)$/,s=/^(?:textarea|input|select)$/i,t=/\./g,u=/ /g,v=/[^\w\s.|`]/g,w=function(a){return a.replace(v,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=x;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(a){return typeof d!=="undefined"&&d.event.triggered!==a.type?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=x);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),w).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(r,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=a.type,l[m]())}catch(p){}k&&(l["on"+m]=k),d.event.triggered=b}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},D=function D(a){var c=a.target,e,f;if(s.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=C(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:D,beforedeactivate:D,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&D.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&D.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",C(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in B)d.event.add(this,c+".specialChange",B[c]);return s.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return s.test(this.nodeName)}},B=d.event.special.change.filters,B.focus=B.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function f(a){var c=d.event.fix(a);c.type=b,c.originalEvent={},d.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var e=0;d.event.special[b]={setup:function(){e++===0&&c.addEventListener(a,f,!0)},teardown:function(){--e===0&&c.removeEventListener(a,f,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return"text"===c&&(b===c||b===null)},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(var g=c;g0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=N.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(P(c[0])||P(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=M.call(arguments);I.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!O[a]?d.unique(f):f,(this.length>1||K.test(e))&&J.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var R=/ jQuery\d+="(?:\d+|null)"/g,S=/^\s+/,T=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,U=/<([\w:]+)/,V=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};Z.optgroup=Z.option,Z.tbody=Z.tfoot=Z.colgroup=Z.caption=Z.thead,Z.th=Z.td,d.support.htmlSerialize||(Z._default=[1,"div
","
"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(R,""):null;if(typeof a!=="string"||X.test(a)||!d.support.leadingWhitespace&&S.test(a)||Z[(U.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(T,"<$1>");try{for(var c=0,e=this.length;c1&&l0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){ba(a,e),f=bb(a),g=bb(e);for(h=0;f[h];++h)ba(f[h],g[h])}if(b){_(a,e);if(c){f=bb(a),g=bb(e);for(h=0;f[h];++h)_(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||W.test(i)){if(typeof i==="string"){i=i.replace(T,"<$1>");var j=(U.exec(i)||["",""])[1].toLowerCase(),k=Z[j]||Z._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=V.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]===""&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&S.test(i)&&m.insertBefore(b.createTextNode(S.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bd=/alpha\([^)]*\)/i,be=/opacity=([^)]*)/,bf=/-([a-z])/ig,bg=/([A-Z]|^ms)/g,bh=/^-?\d+(?:px)?$/i,bi=/^-?\d/,bj={position:"absolute",visibility:"hidden",display:"block"},bk=["Left","Right"],bl=["Top","Bottom"],bm,bn,bo,bp=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bm(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bm)return bm(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bf,bp)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bq(a,b,e):d.swap(a,bj,function(){f=bq(a,b,e)});if(f<=0){f=bm(a,b,b),f==="0px"&&bo&&(f=bo(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bh.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return be.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bd.test(f)?f.replace(bd,e):c.filter+" "+e}}),d(function(){d.support.reliableMarginRight||(d.cssHooks.marginRight={get:function(a,b){var c;d.swap(a,{display:"inline-block"},function(){b?c=bm(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bn=function(a,c,e){var f,g,h;e=e.replace(bg,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bo=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bh.test(d)&&bi.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bm=bn||bo,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var br=/%20/g,bs=/\[\]$/,bt=/\r?\n/g,bu=/#.*$/,bv=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bw=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bx=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,by=/^(?:GET|HEAD)$/,bz=/^\/\//,bA=/\?/,bB=/)<[^<]*)*<\/script>/gi,bC=/^(?:select|textarea)/i,bD=/\s+/,bE=/([?&])_=[^&]*/,bF=/(^|\-)([a-z])/g,bG=function(a,b,c){return b+c.toUpperCase()},bH=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bI=d.fn.load,bJ={},bK={},bL,bM;try{bL=c.location.href}catch(bN){bL=c.createElement("a"),bL.href="",bL=bL.href}bM=bH.exec(bL.toLowerCase())||[],d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bI)return bI.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("
").append(c.replace(bB,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bC.test(this.nodeName)||bw.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bt,"\r\n")}}):{name:b.name,value:c.replace(bt,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bL,isLocal:bx.test(bM[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bO(bJ),ajaxTransport:bO(bK),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bR(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bS(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bF,bG)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bv.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bu,"").replace(bz,bM[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bD),e.crossDomain==null&&(q=bH.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bM[1]||q[2]!=bM[2]||(q[3]||(q[1]==="http:"?80:443))!=(bM[3]||(bM[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bP(bJ,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!by.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(bA.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bE,"$1_="+w);e.url=x+(x===e.url?(bA.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bP(bK,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bQ(g,a[g],c,f);return e.join("&").replace(br,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bT=d.now(),bU=/(\=)\?(&|$)|\?\?/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bT++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bU.test(b.url)||f&&bU.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bU,l),b.url===j&&(f&&(k=k.replace(bU,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bV=d.now(),bW,bX;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bZ()||b$()}:bZ,bX=d.ajaxSettings.xhr(),d.support.ajax=!!bX,d.support.cors=bX&&"withCredentials"in bX,bX=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),!a.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bW[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bW||(bW={},bY()),h=bV++,g.onreadystatechange=bW[h]=c):c()},abort:function(){c&&c(0,1)}}}});var b_={},ca=/^(?:toggle|show|hide)$/,cb=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cc,cd=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(ce("show",3),a,b,c);for(var g=0,h=this.length;g=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:ce("show",1),slideUp:ce("hide",1),slideToggle:ce("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!cc&&(cc=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b
";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=(e==="absolute"||e==="fixed")&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=ch.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!ch.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=ci(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=ci(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window); \ No newline at end of file +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem +)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument|| +b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/)<[^<]*)*<\/script>/gi,bP=/^(?:select|textarea)/i,bQ=/\s+/,bR=/([?&])_=[^&]*/,bS=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bT=f.fn.load,bU={},bV={},bW,bX;try{bW=e.href}catch(bY){bW=c.createElement("a"),bW.href="",bW=bW.href}bX=bS.exec(bW.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bT)return bT.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bO,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bP.test(this.nodeName)||bJ.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bG,"\r\n")}}):{name:b.name,value:c.replace(bG,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bW,isLocal:bK.test(bX[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bZ(bU),ajaxTransport:bZ(bV),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?ca(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=cb(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bI.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bH,"").replace(bM,bX[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bQ),d.crossDomain==null&&(r=bS.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bX[1]&&r[2]==bX[2]&&(r[3]||(r[1]==="http:"?80:443))==(bX[3]||(bX[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bU,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bL.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bN.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bR,"$1_="+x);d.url=y+(y===d.url?(bN.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bV,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bE,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq,cr=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/htdocs/includes/jquery/js/jquery-ui-latest.custom.min.jgz b/htdocs/includes/jquery/js/jquery-ui-latest.custom.min.jgz index 139cc0b0ff6af7ed66d5f715dd4ffddf57aed45f..df0980a1a1c9d71cb900b4cc5d06eea1fc96b255 100644 GIT binary patch literal 52598 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 ALlgB0| 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

TErGx+IS14rqEOAO;JxuRL#2 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�Rp!65tc@faR+w+#Z?#E(2aO$Ed=4S2I5EJxuM!8 zx;xuILB*2hq|A|OOzLtC8g@qK4akChYpz4YkzMRQI%?Q%gygC=MNx}$`np$Qa&5#J!~4=jo=QeF4)8q^@FE6hz6fM zE;~Uft}=a!cK{wWa(3i<`^5Y96EP9WXCDL_AzZWp#T=&t!IO#ciys*2RtLEa!cM>g z-MX#vmMjB7X|;QBYb3|b()1uQ-eYMgPl^6fzf`iOOQmH_*s&o3DY%a$0Zp^&=0VN~ zoS{}=cxv1q^sB`0fIUuAUJ4rKsF?(}&Y^yf?pNToW>UHQy}FxPBS@^?DYP>r&?Oas zywE&Xpb4O6lAlbgc|3@2%29QH6Q60%Oh z0&KwmM>|SF5_Vni67wr-inKxL=)C~PsrT+fcY2$5=hfm?ALEUBN~jiMFjYOoq^mR1 z7FHo+HpCdN(u3@@JPin*1L-7O&(wRu1eT8bx<~;u68ub4JsYC#Lwr4K8YH#>n?X&8 zU!E3#JgT5!FLA0#;o-NBD1N{0w3c zJR6(J<4%ROOxQ-nv|3yb^B_S%TjA zRvBfidQ=Qazc5R)i+mWs1y_kX%R(DX49G1s%gE3ZRGh=mEjouT#Xsj%`YyQ^H zg=B^c!T8kKAzTQsu$l|WK(`Nx?LY$=4C(jZZi5&;NcY@f3xEA^51A7&V%udq8x}GZ znt+GRMjGlkD)st(z=(yE>8Wifsr1FJ zd8Sv2fV@S}XW|3RacgcKw(x$gEF+sNf{8iWZXK&lne-%L8*j@PJ@if8pwqh zZSnjaN=j#6fq#Z;wBscx0L)t>COww!b;l0J?BL|vrNB3Cl z8-aGt-ZsEH6whMh!FpmJ+BO z3I^e2DoVl3s6@+KM5kHGO%g`E1}H1LByl?CUh>SpY??oMjQOT-U*BrZuoyV)TyZnG zZ~iAIe%`{7jsf|fcpHGQxSrQ~!@jl-47t207DqcEiP4s!WB*zY2cr^8`cVO;TL7-e zUI=`jj4iMpvxAkYNWC)J9V<$(J+=;4+R9l80wI2=wBv!AKAK$B?AXQ;A46pK5m_yU zIx*zZ!J!)Hec49_sP$boL&XT82m=11`n=Y^7QK)OpNfAdH2}@VZzi&0-9oA5l22wtiM0RZ%zv=R zuV6ZLcHc*a85y%)r(Gu;9WQ0fk3hvV^DL^41)`I(dR5Y8>e}2z@)WUs23Iv*%vDS$ zphK(&JC~w08J7Xzc)ox@EEt~4RTV3jN6o)H6NFE8{;2?4!M?CCE>2DDWSW^s8`3Ap zyrw&>^GUaDI@)YL3)Rid>QYs@%mmhJnU)5cK}5!JJX;8U5PvQg_kz4^=iMwk{ruBU zo<9vwKMOm9ZKN#&YWEdIGnc_fWY#*eul{Z>7OWZ_Y3t`eoIqw`EFo){v#gzQ-XZ-g z6wn6I+E%$t+n_>rN{{|SbJPh$9W91PF;`0KquMQ?`mb`cDp#AjhA*apy$piu5}+Ss-@ zuH>nFOIP!4XdC@gu%e^v?nv>2M?q(mtUBo}@IBH=L5*KQ0ek~Murh$%MsK2T!}TrB zXZUUWhQK84CvVPgbyR#h|wj&Yi2j8rB;Tnhb#vR%laXM*cf16*= z1y6qjX`!8YwN}YCTBf$@C0ARvLc1Wfe_^PaE8pExboW^$aCtWKELI27LiM9x#aw^Y z(2)E}bG;79kWDo#HtdnuyyHb%{0+lvMYCe)xZX< z=bs$VRclvYj{>kbl)Iug;+j|H%hujDIQ>*LhD5P@h><~&Dl zx6v1`es~cF@85TCZn}`2;Hw{g_|Na2$HCXp(P(t^;s_%2efRQ**FZS%azB0Z)$7mC z&Zr=ildqok#Vf4bebE&!Tkv+!fAXnYaxgf1V&2J@XI7K&^5sij@zr-<{ik?w48LAH zfBEW*7eB@V;-kMm`HByYgK6CUZ1DM~pFiy|dgGHnpY@)GUG`@1=bj)oc#+YX{c)}D zkBTtWJ-(7 zf`f9-rZR2-1Ut+IdH*S0}p4k`1;EM=4|~7-}>8w z-ZK5;r1VGdJ2KHOF7nG`GMi^_VjKC1H^y^NTl{()2b=8OeR2gydY}uZJB-@}m6?oF z?$*kJ?ns#sb7^%X3>f8ctg`(mYkQDMR07{mrNz2ZUV(aW0+uxSFbLvun>o@yL(gSQ zsGT{2zt)&bwKF5t&RqGQO~hqfx>ycbcX8i*q(0^U-mJOmc03h5ZE<&&dQ@GCbmaFl+l_S`fqHeFMnA;u|T^%^WKICh||)+&ce3s@>9 zs+nqGO9j}0*LOYEKg11Vy5HME0#y~Rw`6+Tf-G{Jxl}>D{#l%c!&-aXe^mgfny0S;m`rSWYcEX=mkK3co*PFMSzi)0fFE;Nt{|JYt zlju6V@0IV$LabDBoe2JyaNzaD+2v*fT%d~q1wNZ}jOOAR>_b6l!*SkQRrv4z!jC_5 zFJOMZ*4v&K%Zy3nSvkX!TpHE9VJijc9#eBrS&t}z1zua1g!OPI)c*Z?nnuA*4eVCcSp?H;khR+6P zL;l=3W0p6WxvUxx$#ISbTDF_=)WOM#5|$r`>2ik968pAjS?D}J@a}NXe16zXVk3Wt z#st`FkB{B1#O-(Nw1fGlLyvMX3!83_#E<|Xzr0JhKs`F2(1Zi5f%A=9@Fr zYx-yLf06iqhW;L~#p0Ipg*VAm^pi#7XN-O_N!j7;PH@w1QgbjdaLIW;T#LJIaF*P3 zyCA+>5ctf~)*(Q%aDZmPV5SR8_!yQ?u%rtMe&D*Fr`IPZ^YiQBbv#cF>FXw%M1wGV zHW&B(q}w&aPX_}W{dUW-)r8}qn`Cb9w#r~4)@hy|Plxl^)dkL@0|(W;f?@5@8>+60 zY);i_fwHJOh(!Hx_~<IBizqZg0DshH#n^%QX#${dnrauF4@)2V5Pdo0(Yg_cCTTBFdG&>I)=CepMuc z{L12phtb=#;hStey0r^fNr=SfH}&bTL`kB+w@v{!my$a@D~nQKBoKdX65d7MfhhRv zw4Z!^4wOyub*E$G#4q6EbMf){IZ!;wbNC1!zE2OOZ7h}yE{!yBKrVVG0~E}{^}9~G z;}A`ji~HM0sH+j9c{WhdyPiwINIw?!gCkF+E;&vmcJBd#CMHZ2Fo{8oEqMj>(rpcz zTLs~%zfo)~mTiZQ=(w@Hn`$(|1bMI`B-?-$5eQ} z_!}7KY45ItP~8H-f1RfNA^K|5$;C1_iF%=VJjOz{`?Izqr4(!eC@12|zm68s*U$Q! z>pd=-242xS9wToTHIw10qv4{-PAjNBmhndxS^!%k)a%#Jj1#B4mIQ+c9$ycwkb) z5dy!P5;6jKzY}17cm7#&r(pb-wAH@rOv68YmV7BTO!OwU7T$C|74M#0eS%90nw9=p@dXSg`&Z1`!6?G$A-gC+VBjOdbI4n`7# z?p{Ccxlh`-Mk$&YZV z%~T#a0On!|4Ow(Lzp52jz}3*bk*4iX<`*NFOw;epgAX)-z|$cVH=Doms=x56e{E<~ zj7LQR=5EzAlK)^|YZl_2z(WYjS&9XG1Dg)j{{oD+J*j(d|2&+cXC-p0l9MqNQ+vj( z0CIXf!c95;YO{GGCjOU;vrBR8^-+drD57U5K=UvX%0zJF>`Kt#03`Sp`N9YzI)bO6 z_+wVEMnQgcfcjFab@GRISw9Kl{}?`U`3H+Agk$mx)7|JyNDdEUReH2P&jte!(Daj=PG^e<>Xb0F_zRE=`!E|SYPZt{!U{~HpQkC36oXxy!gBGpi&wu+ za|V-z|B@G-^xgKmPWl4=DLZWw4e4f8l_w{fqBb97nnR$a&p%@kUBw6}7Rk|SS){>L z_9j~u%j#Ap0Zp2C3k-&Egf+=`8_Z+GK&derYm(J6EK6AZj>&f&Lcx<=C7Pm9B4T5g zX*H=iQLgFvNPaz9z{yB#JHKlH63HF=foEL+SkzibI&~_r`Bk_8)a@KC9vK10Cg8HV z$ju#31_kR1LP(eP!A{dc3NyzLUb*&-`a`U-t4F{-IR8V?kKO}YW`Y56w8TWAv!7Xm zL9IdC$*Im4>f3!T&dvOMaF)!;P^5iaZ8q~~X~__uz_jh-8}a%)Zk8%l{@qxmVbj9Z24Rk~6N z?gA9gy~n5FurQ|mD`qx6Kt?;(6?FL}E00C&N3G*W{(L3M$E$6Ur&W7`u189ho4sr2 z5xg9L5*rpUPo?ueeRIwMB$5Hk_+iML3%Fm!9GaOEikv*WdJYTz11zU__dnNG6~81mh)L{cm*b^s*g%Ry&Mkf z9uL5E#|oKJ3t+Mp1!_lxa&eOj)jf<@pIGO>b{5Gs&KWOb1+~}OyIHAH8Jb45@*yWdr3N9r#X$3U1CktZBo`1NGnKVG8fE zuHvR8p!Adf2>e=XjIGZnwL34UM?simyA^~v#x6N8z|2BN1xX; zuNBntfGfAXd>?OUuUOO508>}!7a#p($pwbkjf~@aMzH~;?Gq4gnf3jgduXbSWGbP3-m;EQBc5<&nZ>*s z^8>vab4I(YU9ZYKvfUILwoIR_ zi@>#GbMg=Ui1MgV1c(y`M&y)s? zPSzL8W%j;zyIkBYU>kcY(M8!Svf0dJY>LQ@jNKvfj6qB+NK>X`I6z1&@j_y0`9ul` z@T;ra`CbHqI?m|okb$T!*(D}FJe0qBI3p8_IiDkMu z&GNAmPaqXdv&x}9{uIVzaIS;4gTm%m0R_orqyn5 zv7DUB&vH=myExISo-71i|Lwa|HV;|$>+%-ECcy8bBUu{9x-5HFEB7@WAo_6HG7u#$ zComhP&k#Bj&avt$h}JS{O}s{aEbd3*){e#9w~fT@E*@VO%hI|tq{~GqqYzr5N?FrJ zt5`Q(a8$V}&H8dNE91Z#UXU%TtcybfVuLOL@yq%k$PD@*=K>M}USPg>t87~F8N(Xm zGd>D5nC9(($?_iAQ=wM8YEn51(1$*ff>(`hUoF~vrDT_j+33HJ^R)()D9#NNi2auw zWh4{AHZHy!<@H0?pW68XGmgV9IIrwYX#57`Uci_R0o{+*!LTrqOy615R> zQrKB63<0Zi!wQ_4jzWvhwU<|r&lK&i9pDE~3SM1=6G=LHM=I;dZBXz=qKv}3iHS83 z(S!@BDodJ)VY9foot3~PZ9NNPM%c7Aubssq`Z!DLL*^IuvEll{EbUu?Pe3G5J78KC zr_Ur=iQkq>f%5LMi8Tb-oIos(Th@x4x(%B=djGX!9(U@LrQ{gAelkCA9jL2DWe;WI6X%ME?`Xa zAyZT4JsV#~Yk6zN>edwZ^{(sjImN^Lm%bY198U3Kqp7JlpPP+I>Ka{zYxQ)5A&C)O zP{ahhvz6o>DOz}|h`=WbZxlo^o-QZ(&uwtILhq~fAbPR|53J~*S3ifR>5m!|>-nS%Y}^*QU`@)MXfN`1q{%^l4N`|ntT zfX&N(Zug@j`M>&dA1!)!%WS@)D4{y=z{MB>o85?Vwin{%R>S$KT|`O%0%1OK3QqUc z%a`~8MUKa55MW5(fOR6+uCdO}B+5!oQAPmC(jd=@>j{Rr`f4#-ECU$~q(}>%rb&%; z4o+iwRJUyl_h@}o*%m(cCebeUo9VDXRfjngao zi^gYBPFgH#4d;H2jn*oP60a|C^7=-MyVz1yer3kqewp2!H1Uu8plANL$XM*a26n=CcfX|LKdr1B@N?Gakc54eMB*_D-Hh$Mz z-InDDqDSNYi)xv!_w-{%*a#|RXx>meUT zei^ez?c$$|(h+o{=tLDiPp%uo4uCq=GH;Gq$%aW6msTQiYw?*d=XlIg{WPZ@*QGEk zHc2@yYDguLq5QvG+}$m1>~|1b-hT5F&@A#*OTK%xxU~zZr$YV}lnW-8$Hz-^fDvA4 z{&(fA*m9!^&sD}1Y~#Cmb%&0(ciHkTg}C!T!2xp3A-hKkq2|S3c+}-dct#~fMS-!P zgFxH_?VzIxXH8qPAhNd$aZ_W1kdjRH3Yzhb`Hi%~+0&kk_z{65b*ALnq60-?B}A~=TF3!&*=S);6?;XBEE=*S$~UJ^`?{!ef|{6 zN1wFfU{6cS5-#6$yJ;P28mvr4W2@yX2NHm!*ewsRg*=0@!3Cg0O~pPhYTb_U@Pk^EI10rYrB+#<{jTufLCrq}SU~-sS(Z9G%;sM?abWQZKd3BTB5u=@QEG_P| z77+uxu3#?p5!~Z_*$&3i%O86T`>m5n-rL=Un_ZZjIY&GWM12#H8NqAhJIk=^SD@x zcH&|yDJ`Xx)H3jbELF5nmIlFIMApaOHWX^AJ{m3*#sM)A77d8Kh^&v!fIu^>4wfOA z^M$}%*_;%2>D4elWVG2(E?vyVja}$*b4gnvIJ_`EWEH3uTZL^z{#|>gbm(?xQEkLP z&5RYy>2~VUxoDNWDPxD`)X~)XNp1q5p&cIu_yU9mEG;JB3CaRe3NOWN)eAaMA_CS{ zQI+BurVQ3mi{*!R1qolM?WSHqwu@o1M{X}t!zyo)P_Sf_Cru_m3Wt=cM&ozA37U{ULmXLQ76g^V^5-nwt8hS8dvvI)t`*Od3O;F-%XEw#$}Sy&m%=u_L3w?3w ziXOBM$p-S2%@)_Go)B856$bXrNolk!XBqm8V4KY!DQAj4>se%q)jEtQIj;KfYZtRo zLUvEX0R#L-1X+=S&PYNI<4zGzWf$dTN{yA28rTSCNY+>)pB08!GRW@l7Q5$zX`A|# z#i<`*uQ64NXe_a6L`Nnh)DTiKU&J(k3qLBXT6qbJFllM|5@4KH03wyGlG7I^ib9Np zAu}sjf)B_&@Zz`}e-ppj{R;IF~uR!cQUgy$J~L9?-@O$Y7T zPwt2_qc!X(Lsqh(7)8fG48n1UL1Mg3vNSh}B!Ou05RXzWaY>L4CZW=1bF9^!8KykC z$Sxr*wCp3wd#VF@$GXNQrT``;lD`>^%GScXjW9qM00fZ}@GGK68ys$!h+Ar4MJfME zB`uwusBtwDSVCNxlegaP81Q;a5bD`vwZ78V2#Oaaxz&&T&cth?8iM zdQ~5;EzvVHnZ+czvyxqWl!?jv{*bB3^XEA>B-uwoRiOX$;?iKs5)dP#cMtvqKkDdF zMlhp-iH9MrLGNlsiSpDlK3X&#zK_=84vz!z09pS2zxzxu z&RBF0VTqM5bnBv#OIC0jL4)7Tp}k!VjUKnN)3gj9XPunt$U*F=)YX;RS@$ed6~CMB zstOKOQ0eq6JRfL#x6`x78FZbfmc@&9x0_MR-2rR-tNXkv4x5TKnOeP;r=lP)v(r-a zhm{BRoSJ*yH7PbNd?iYD(=+OTFPd1f<=vt4a<^$`&8|DK$60q!+pdNtc2BLgXJ&Gb zZJ7A~?yLC&rsqs>e_dyS_1&vA(mHsKJGQX4jV~P*qrMjuh+rW|ozwC$NxgskPIMi1 zMr_V|+BuT#tiXlGZHG^L?|5K7dPuUB$D&F5)IEQ9yVy0H3_@x$-JSnj?ywnxljU+rfu?Q>hDe$zpnu7B&@dC)8@C~!w7 z@KtER!dKO@*mEvv6MtFWwFg}V|9s^E?d)zvLxO5Vp92SbH8tZ~0tObc-As+kS^~Rg zIu!N}J%bhkaNZ@uU?G{>!-JubUN_*ge} zIzIe#?%+;VNI)5K;x&i`I0Yd%>KOXd+{>DkSrevgVz`Wmk`uKx3 z+?<2j`W;kX%;+g!$S*UV6Id@HaF!6zAx*EsiC)b5joEHbI&kE>6Apsx^_^F2TlDf+6n%R3G&Ixj-?+81FfxvGzg&nRmAeVOt|ph&N?|4NitA=k9}Dw! ztTpMhNc(U;I6doq_H;OU{8{hmr)N)zaEP<>GxfeLKOl(op5kkmLLdH8QTf&>eAYYT zrT_ed%DaU=wM%{e36dEXHxgM`2We$N=IPaE-dc~kfEp|Ikc2=CbzDYtXVVXS|NF1M2V4< z6KVmW6c}nbVQPAnLU}M#w}eNV4apwDXq1{SqiR{=0L14vlr}<$moey}11b04Lh$Mln9Qqgh5-qkAp|W*q64sGvI>+^8s84% zQd&_%SXe3Tf#4_5*A$WyQ%;HXHmNSAm#Ho@9L0U6L9IZcp~PWk6(n=dm8z)})j%{W z_P;_gNFzB-{a)rR6g|R zm7ucLM-Q8_Ot=m>ds2xU%^q_0Al5w?qUJ6z1-=+ZFfJgaYG^IH6prnPU zV3YHkWTL_dUV(Y@HK4aErA}A<`?Z69TMY`022&JL?!j6o|Ep`wXaDd?KXA@jgME~B8##B= zK{wM^v+DNW;$DJ@d=!GP5DlgL!g>HbSRH;RMT)M9Bwf`+AeIdTVv&{)B@iozKpcGt zfhevHpow~S*#xZLAm!1EzW@oBNzuf51$G0)P9icg3VFL6yQ8)Onb}`QhSD5qN)vRe z2IG%#+>;)R0Vq!Oton;u0wV$J2^02)7$RW`*kgJ@WjQrk2x=7Gt2+E!A26zDRpEwd zv__bqSc*ndTp9|N&_!Ij_(Qn@#2-M>RyzsWk|CG!Aq4H=6z$i`#lHvMfQfu4-Vn@U zp^J<}Lk4e*4#FFS#2eFx;0;A4T}I#_RYw@3285BPBQL@rg0OIr#grk7VjsDgD`GPD zlbg9+qE2oS>KJ`E$$7SuQSPTWb4_th;)!Nh6~QDLXh}pc0P3ki`a(B5%xjcJ zoO=k92_rtL1_UyyA&}7_2&D8NkivsNruJ(Gfs7ae8SSA?J`jOCe|I|*;Q4QXL*!gO z6pdVk>nmNPq_)zgw4h#00^W2AIBu)5C|49y6Akv5YRN4XhVc`@WPNz$B(soB>O5+L zli?L%Ix;eSQ(@9#urfthjis?^RyU-|Q&p2t5uICXpqk;)Rg?)x<8rXD5||LubM^$z z=%&mA3TqNtcqPyY#zNg}1P|8(bktPzub3)Al~u;MkSwrfomr`umSJWo*u?U@NJ_yb zs_Nsk1&NeLm_b=|H(SghQK=3=qC!BS*`#B=>6i&-`D!r}od%IvlsHf;Ojd*4@#FUN zbQGc`VYhtTu1*VaP>n60*CJFx;;t@huOOG4;g(wZX7=!eQV$F zMLSIs*gJf=df9xF{hQo0Fp-bK<&Lw5-!Y2I9eMcFBFg+^ryw)*Nm772 z+BOh9S&it)4k3DW!kSC26dy#ce6yJSduYyJA|Hj{8HCJK)ezu^2GHYty;Fk>@Ux-~IN z`3|KU3G5O19;ef2mX3!PN>rj`CztU>O=gsgp`=#3MMf7VN}GpBm$;NH&8dtm6aGoY zH6b(mDx4TPsG`^{{qPhbK#ea(TCyx|NHl8KgAS#VZ@8A%eqT}olWnYCP2{USx)XvD zkOVL@2>M~>KZGc{@kH=eGts~OVQ^_F3a8O^lr@TNE6-OhI~^HTDQ{+#aEF^%rTl<< zj^m#ELzIW#s@y977WhZc=A&F=I`7PfYVgaH2e|kS{L29q)k0nvq08tnH9j2+aj@4; zW3iMyxP4IGdJUA}xF`DrS2kBTQySq6Ar)s1${ow?+YA%KUWjr2VJ!ad&wmaW#XD}e zor~J-TpV&cj}DY+mLOWzRs+WZtKQ$riWBN~QR)C5t;IRMNea+7=XJVTceT}rwthdd0k!qd&LI5L+4jIDTf1&m(|X!x z7wbbvbPT5G*LPYM=)<+0FCow5zs0G=nS2yF{`P)6ey9yjp>NOP5VIOhnlllbmL*aQ zP!g~~@SABm0eUkM)S)CCGegG`1(_*ob_HH+_0CGCRHohu< z*Ha^b)%NX8tJ&shx_5ipy9m z+$Fnh5%H4;DO`OmfXcSHuS+xqQ9%^Yw&TJCzx%ta$HO(LcQS6mD;$x0pc0~$YuyT{ zCG2J}mXp)UUuh!p=_e^rY26-%wl!v$vtuHU+Gaz{0Y5>A%=E#Y)ed%a^;=Hn6&)gG zV!42qluUfaX2c?tv}eG*%L5=bIc;Cbj=S^>C40jYBM0L9+X>2Vtq zuk5D83%4Qh$~3bj1DrM9L2D4^v+6||wogm{1m4v}giqOu|F*6te6RRrb2 ztr^5SIf!@GAg&J>#I+j4yF&+YO@nwR2eFk)BqQ!y%d~HmssjdCJ$RKWdzETN8uMWp zPYyHGXepZqgUyuYl){C`5$#xm^%x=*(|j+ODm9Y76`l&&qFkrfZWW1@=s_YSxL6s) z+1rj;aUNeFBwvc*x)CvoX*Cmr#0+i$HCeg~5W8O&0J(Sg@4BBGauzQjk|S5-}& zxW{@ksir(~>h(KSnce)XD(GLtx)oP2-ymOZ0q7V5cZYn zASushXfu>Eh1Ph7y6f88+M%_@SWeG&tIPbVvC#*r#y(Ky=cv#QLqD_X-^Ba_XYx^` zek*9{f52QBINyVel%>AxcQI0K_GKXa@lmXoOTYE<eIPe?JrD@xO|RG7_WXa`|t8I@Dx7is$Z~Z0w=*OQ{uo zCD+?6q`SMa-4)j{*h&Hce@n)rBNV2X_@~u;u8)%D-01D!73((Q=D=iiTecsujDg(P zRm~`nhPIEGHLgy516H}rSk}xy#{!qAX6NX0@91-D^pVHfcFS*TW+}Jp(jJ?9eGf8J SY3;OB`Tqm=@YY*pEdv1A`#y01 diff --git a/htdocs/includes/jquery/js/jquery-ui-latest.custom.min.js b/htdocs/includes/jquery/js/jquery-ui-latest.custom.min.js index f8709e0ff12..f9e4f1e8400 100644 --- a/htdocs/includes/jquery/js/jquery-ui-latest.custom.min.js +++ b/htdocs/includes/jquery/js/jquery-ui-latest.custom.min.js @@ -1,5 +1,5 @@ /*! - * jQuery UI 1.8.11 + * jQuery UI 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -7,16 +7,16 @@ * * http://docs.jquery.com/UI */ -(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.11",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106, -NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this, -"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position"); -if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f, -"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h, -d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}}); -c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e= +0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate); -if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +(function(b){var d=false;b(document).mousedown(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+ +this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"?b(a.target).closest(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!== +false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&& +!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted= +false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); ;/* - * jQuery UI Position 1.8.11 + * jQuery UI Position 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -64,7 +64,7 @@ d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a) a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); ;/* - * jQuery UI Draggable 1.8.11 + * jQuery UI Draggable 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -79,42 +79,42 @@ g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"lef */ (function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== "original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= -this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top- -this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions(); -d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis|| -this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&& -this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this== -a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]|| -0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], -this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top- -(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(), -height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"? -document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"), -10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"), -10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom]}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&& -d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], -this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.leftthis.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g= -this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])? -e:!(e-this.offset.click.left').css({width:this.offsetWidth+ -"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})},stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity", -a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")});return true},_mouseStart:function(a){var b=this.options;this.helper= +this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}); +this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);d.ui.ddmanager&&d.ui.ddmanager.dragStart(this,a);return true}, +_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b= +false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration, +10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},_mouseUp:function(a){this.options.iframeFix===true&&d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});d.ui.ddmanager&&d.ui.ddmanager.dragStop(this,a);return d.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle|| +!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&& +a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent= +this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"), +10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"), +10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[a.containment=="document"?0:d(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,a.containment=="document"?0:d(window).scrollTop()-this.offset.relative.top-this.offset.parent.top, +(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){a=d(a.containment);var b=a[0];if(b){a.offset();var c=d(b).css("overflow")!= +"hidden";this.containment=[(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"), +10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=a}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+ +this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&& +!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,h=a.pageY;if(this.originalPosition){var g;if(this.containment){if(this.relative_container){g=this.relative_container.offset();g=[this.containment[0]+g.left,this.containment[1]+g.top,this.containment[2]+g.left,this.containment[3]+g.top]}else g=this.containment;if(a.pageX-this.offset.click.leftg[2])e=g[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>g[3])h=g[3]+this.offset.click.top}if(b.grid){h=b.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/b.grid[1])*b.grid[1]:this.originalPageY;h=g?!(h-this.offset.click.topg[3])?h:!(h-this.offset.click.topg[2])?e:!(e-this.offset.click.left=0;i--){var j=c.snapElements[i].left,l=j+c.snapElements[i].width,k=c.snapElements[i].top,m=k+c.snapElements[i].height;if(j-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== -String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); -this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; -if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), -d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset= -this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: -this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", -b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height; -f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing"); -this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top= -null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidthb.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+ -this.size.height,k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b, -a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a, -c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize, -originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.11"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize= -b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width", -"height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})}; -if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height- -g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width, -height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d= -e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options, -d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper? -d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height= -a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&& -/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable"); -b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/ -(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){e(this).removeClass("ui-resizable-autohide");b._handles.show()}},function(){if(!a.disabled)if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy(); +var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a= +false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"}); +this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff= +{width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis]; +if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false}, +_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f, +{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(b){var a=this.options,c,d,f;a={minWidth:k(a.minWidth)?a.minWidth:0,maxWidth:k(a.maxWidth)?a.maxWidth:Infinity,minHeight:k(a.minHeight)?a.minHeight:0,maxHeight:k(a.maxHeight)?a.maxHeight: +Infinity};if(this._aspectRatio||b){b=a.minHeight*this.aspectRatio;d=a.minWidth/this.aspectRatio;c=a.maxHeight*this.aspectRatio;f=a.maxWidth/this.aspectRatio;if(b>a.minWidth)a.minWidth=b;if(d>a.minHeight)a.minHeight=d;if(cb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&l)b.left=i-a.minWidth;if(d&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left= +null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+ +a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+ +c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]); +b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.14"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(), +10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top- +f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var l=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:l.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(l.css("position"))){c._revertToRelativePosition=true;l.css({position:"absolute",top:"auto",left:"auto"})}l.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType? +e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a= +e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing, +step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= +e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset; +var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left: +a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top- +d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition, +f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, +display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b= +e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height= +d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); ;/* - * jQuery UI Selectable 1.8.11 + * jQuery UI Selectable 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -207,9 +210,9 @@ c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){va this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable"); -this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]= -b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false; -d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left- -this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]}; +(function(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var a=this.options;this.containerCache={};this.element.addClass("ui-sortable"); +this.refresh();this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a=== +"disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&& +!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top, +left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]}; this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!= document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a); return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h=0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left= -e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0]; -if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder); -c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length=== -1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top< -this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0], -this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out", -g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b= +this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f= +d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")|| +0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out", +a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h- +f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g- +this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this, +this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop", +a,this._uiHash());for(e=0;e").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery); (function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", --1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.attr("scrollTop"),c=this.element.height();if(b<0)this.element.attr("scrollTop",g+b);else b>=c&&this.element.attr("scrollTop",g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})}, -deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0); -e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b,this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e, -g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first")); -this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()=c&&this.element.scrollTop(g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b, +this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| +this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| +this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,f=d.primary&&d.secondary,e=[];if(d.primary||d.secondary){if(this.options.text)e.push("ui-button-text-icon"+(f?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){e.push(f?"ui-button-icons-only": -"ui-button-icon-only");this.hasTitle||b.attr("title",c)}}else e.push("ui-button-text-only");b.addClass(e.join(" "))}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, -destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +(function(b){var h,i,j,g,l=function(){var a=b(this).find(":ui-button");setTimeout(function(){a.button("refresh")},1)},k=function(a){var c=a.name,e=a.form,f=b([]);if(c)f=e?b(e).find("[name='"+c+"']"):b("[name='"+c+"']",a.ownerDocument).filter(function(){return!this.form});return f};b.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",l);if(typeof this.options.disabled!== +"boolean")this.options.disabled=this.element.attr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var a=this,c=this.options,e=this.type==="checkbox"||this.type==="radio",f="ui-state-hover"+(!e?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){b(this).addClass("ui-state-hover"); +this===h&&b(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||b(this).removeClass(f)}).bind("click.button",function(d){if(c.disabled){d.preventDefault();d.stopImmediatePropagation()}});this.element.bind("focus.button",function(){a.buttonElement.addClass("ui-state-focus")}).bind("blur.button",function(){a.buttonElement.removeClass("ui-state-focus")});if(e){this.element.bind("change.button",function(){g||a.refresh()});this.buttonElement.bind("mousedown.button",function(d){if(!c.disabled){g= +false;i=d.pageX;j=d.pageY}}).bind("mouseup.button",function(d){if(!c.disabled)if(i!==d.pageX||j!==d.pageY)g=true})}if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).toggleClass("ui-state-active");a.buttonElement.attr("aria-pressed",a.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).addClass("ui-state-active");a.buttonElement.attr("aria-pressed",true); +var d=a.element[0];k(d).not(d).map(function(){return b(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;b(this).addClass("ui-state-active");h=this;b(document).one("mouseup",function(){h=null})}).bind("mouseup.button",function(){if(c.disabled)return false;b(this).removeClass("ui-state-active")}).bind("keydown.button",function(d){if(c.disabled)return false;if(d.keyCode==b.ui.keyCode.SPACE|| +d.keyCode==b.ui.keyCode.ENTER)b(this).addClass("ui-state-active")}).bind("keyup.button",function(){b(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(d){d.keyCode===b.ui.keyCode.SPACE&&b(this).click()})}this._setOption("disabled",c.disabled);this._resetButton()},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type=== +"radio"){var a=this.element.parents().filter(":last"),c="label[for="+this.element.attr("id")+"]";this.buttonElement=a.find(c);if(!this.buttonElement.length){a=a.length?a.siblings():this.element.siblings();this.buttonElement=a.filter(c);if(!this.buttonElement.length)this.buttonElement=a.find(c)}this.element.addClass("ui-helper-hidden-accessible");(a=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",a)}else this.buttonElement=this.element}, +widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||this.buttonElement.removeAttr("title"); +b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);if(a==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");else this._resetButton()},refresh:function(){var a=this.element.is(":disabled");a!==this.options.disabled&&this._setOption("disabled",a);if(this.type==="radio")k(this.element[0]).each(function(){b(this).is(":checked")?b(this).button("widget").addClass("ui-state-active").attr("aria-pressed",true): +b(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var a=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"), +c=b("").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),e=this.options.icons,f=e.primary&&e.secondary,d=[];if(e.primary||e.secondary){if(this.options.text)d.push("ui-button-text-icon"+(f?"s":e.primary?"-primary":"-secondary"));e.primary&&a.prepend("");e.secondary&&a.append("");if(!this.options.text){d.push(f?"ui-button-icons-only": +"ui-button-icon-only");this.hasTitle||a.attr("title",c)}}else d.push("ui-button-text-only");a.addClass(d.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){a==="disabled"&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a=this.element.css("direction")=== +"ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); +b.Widget.prototype.destroy.call(this)}})})(jQuery); ;/* - * jQuery UI Dialog 1.8.11 + * jQuery UI Dialog 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -373,30 +378,30 @@ destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(fun * jquery.ui.position.js * jquery.ui.resizable.js */ -(function(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&& -c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("

")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex", --1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role", -"button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose= -b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&& -a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index"); -isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ); -d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}}); -c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f, -h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g= -d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize, -position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f, -h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length=== -1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in -l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled"); -break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e= -this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&& -this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.11",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length=== -0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false, +position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+= +1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a, +function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", +handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition, +originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize", +f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "): +[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f); +if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"): +e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a= +this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height- +b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), +create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); -b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("
");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); -if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur(); -else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= -false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");h=b._start(c,f);if(h===false)return}break}i=b.options.step;h=b.options.values&&b.options.values.length?(g=b.values(f)):(g=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=b._valueMin();break;case d.ui.keyCode.END:g=b._valueMax();break;case d.ui.keyCode.PAGE_UP:g=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h=== -b._valueMax())return;g=b._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===b._valueMin())return;g=b._trimAlignValue(h-i);break}b._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); -this._mouseDestroy();return this},_mouseCapture:function(b){var a=this.options,c,e,f,h,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(a.range===true&&this.values(1)===a.min){g+=1;f=d(this.handles[g])}if(this._start(b, -g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();a=f.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-f.width()/2,top:b.pageY-a.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true}, -_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a; -if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value= -this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(a.range==="min"||a.range==="max"?" ui-slider-range-"+a.range:""))}for(var j=c.length;j"); +this.handles=c.add(d(e.join("")).appendTo(b.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle", +g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!b.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");i=b._start(g,l);if(i===false)return}break}m=b.options.step;i=b.options.values&&b.options.values.length? +(h=b.values(l)):(h=b.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=b._valueMin();break;case d.ui.keyCode.END:h=b._valueMax();break;case d.ui.keyCode.PAGE_UP:h=b._trimAlignValue(i+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=b._trimAlignValue(i-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===b._valueMax())return;h=b._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===b._valueMin())return;h=b._trimAlignValue(i- +m);break}b._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(g,k);b._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy(); +return this},_mouseCapture:function(b){var a=this.options,c,f,e,j,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(a.range===true&&this.values(1)===a.min){g+=1;e=d(this.handles[g])}if(this._start(b,g)===false)return false; +this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();a=e.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-e.width()/2,top:b.pageY-a.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(b){var a= +this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a;if(this.orientation==="horizontal"){a= +this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a); +c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var f;if(this.options.values&&this.options.values.length){f=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>f||a===1&&c1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, -_refreshValue:function(){var b=this.options.range,a=this.options,c=this,e=!this._animateOff?a.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate); -if(k===1)c.range[e?"animate":"css"]({width:f-g+"%"},{queue:false,duration:a.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:a.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1, -1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.11"})})(jQuery); +_refreshValue:function(){var b=this.options.range,a=this.options,c=this,f=!this._animateOff?a.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},a.animate); +if(h===1)c.range[f?"animate":"css"]({width:e-g+"%"},{queue:false,duration:a.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},a.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:a.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1, +1)[f?"animate":"css"]({width:e+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.14"})})(jQuery); ;/* - * jQuery UI Tabs 1.8.11 + * jQuery UI Tabs 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -461,10 +466,10 @@ if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1')}function F(a,b){d.extend(a,b);for(var c in b)if(b[c]== -null||b[c]==A)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.11"}});var y=(new Date).getTime();d.extend(K.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){F(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase(); -f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('
')}}, -_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&& -b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f== -""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a, -c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b), -true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}F(a.settings,e||{}); -b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass); -this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup", -this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs, -function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null: -f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target); -if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a); -d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");F(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-= -document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim"); -var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst= -b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a));var e=a.dpDiv.find("iframe.ui-datepicker-cover");e.length&&e.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover"); -this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+ -this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&& -a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var f=a.yearshtml;setTimeout(function(){f===a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);f=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth(): -0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a), -"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"? -"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a= -d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a= -d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c== -"M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth= -b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker(); -this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0); -a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c? -c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=z+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}w=this._daylightSavingAdjust(new Date(c,j-1,l));if(w.getFullYear()!=c||w.getMonth()+1!=j||w.getDate()!=l)throw"Invalid date";return w},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y", -RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+1'))}function N(a){return a.bind("mouseout",function(b){b= +d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");b.length&&b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])||!b.length)){b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");b.addClass("ui-state-hover"); +b.hasClass("ui-datepicker-prev")&&b.addClass("ui-datepicker-prev-hover");b.hasClass("ui-datepicker-next")&&b.addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==C)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.14"}});var A=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){H(this._defaults, +a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0, +selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('
'))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]= +h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c= +this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f==""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a, +"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker", +function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput); +a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left", +this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus", +this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b= +b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5", +cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a); +d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c= +d.datepicker._get(b,"beforeShow");H(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c= +{left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover"); +if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing=true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv); +J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"); +a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]|| +c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+ +i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b= +this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute", +left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&& +d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth= +b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear= +!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a); +a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a)); +d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()% +100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=B+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y", +TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay= a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(), b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n= -this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+r+"":f?"":''+r+"";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
'+(c?h:"")+(this._isInRange(a,r)?'":"")+(c?"":h)+"
":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z= -this._get(a,"monthNames"),w=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),v=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var L=this._getDefaultDate(a),I="",D=0;D1)switch(E){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]- -1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='
'+(/all|left/.test(t)&&D==0?c?f:n:"")+(/all|right/.test(t)&&D==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,D>0||E>0,z,w)+'
';var B=j?'":"";for(t=0;t<7;t++){var q= -(t+h)%7;B+="=5?' class="ui-datepicker-week-end"':"")+'>'+s[q]+""}x+=B+"";B=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,B);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;B=l?6:Math.ceil((t+B)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O";var P=!j?"":'";for(t=0;t<7;t++){var G= -p?p.apply(a.input?a.input[0]:null,[q]):[true,""],C=q.getMonth()!=g,J=C&&!H||!G[0]||k&&qo;P+='";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+= -P+""}g++;if(g>11){g=0;m++}x+="
'+this._get(a,"weekHeader")+"
'+this._get(a,"calculateWeek")(q)+""+(C&&!v?" ":J?''+q.getDate()+"":''+q.getDate()+"")+"
"+(l?""+(i[0]>0&&E==i[1]-1?'
':""):"");M+=x}I+=M}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
', -o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&& -l)?" ":""));a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";if(d.browser.mozilla)k+='";else{k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
";return k},_adjustInstDate:function(a,b,c){var e= -a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, -"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); +this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+s+"":f?"":''+s+"";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
'+(c?h:"")+(this._isInRange(a,s)?'":"")+(c?"":h)+"
":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),B= +this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right": +"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='
'+(/all|left/.test(t)&&x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,B,v)+'
';var z=j?'": +"";for(t=0;t<7;t++){var r=(t+h)%7;z+="=5?' class="ui-datepicker-week-end"':"")+'>'+q[r]+""}y+=z+"";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q";var R=!j?"":'";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&ro;R+='";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+""}g++;if(g>11){g=0;m++}y+="
'+this._get(a,"weekHeader")+"
'+ +this._get(a,"calculateWeek")(r)+""+(F&&!D?" ":L?''+r.getDate()+"":''+ +r.getDate()+"")+"
"+(l?""+(i[0]>0&&G==i[1]-1?'
':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'':"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"), +l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
',o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&&l)?" ":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()): +g;for(a.yearshtml+='";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c== +"Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear"); +if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, "dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker, -[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.11";window["DP_jQuery_"+y]=d})(jQuery); +[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.14";window["DP_jQuery_"+A]=d})(jQuery); ;/* - * jQuery UI Progressbar 1.8.11 + * jQuery UI Progressbar 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -560,9 +566,9 @@ function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document */ (function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* -this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.11"})})(jQuery); +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery); ;/* - * jQuery UI Effects 1.8.11 + * jQuery UI Effects 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -570,29 +576,29 @@ this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=th * * http://docs.jquery.com/UI/Effects/ */ -jQuery.effects||function(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], -16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, -a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= -a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", -"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, +jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], +16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, +a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= +a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", +"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, 0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, -211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, -d){if(f.isFunction(b)){d=b;b=null}return this.queue("fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l=h.splice(h.length-1,1)[0]; -h.splice(1,0,l);f.dequeue(this)})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c, -a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.11",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent", -border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c); -return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments); -else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c), -b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c, -a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c, -a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a== -e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}); +c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c, +a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments); +a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%", +"pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d* +((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/= +e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/= +e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); ;/* - * jQuery UI Effects Fade 1.8.11 + * jQuery UI Effects Fade 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -677,7 +683,7 @@ e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.m */ (function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); ;/* - * jQuery UI Effects Fold 1.8.11 + * jQuery UI Effects Fold 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -691,7 +697,7 @@ e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.m (function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], 10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); ;/* - * jQuery UI Effects Highlight 1.8.11 + * jQuery UI Effects Highlight 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -705,7 +711,7 @@ e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.m (function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); ;/* - * jQuery UI Effects Pulsate 1.8.11 + * jQuery UI Effects Pulsate 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -719,7 +725,7 @@ this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments (function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(node); - progressbar.progressbar = function (key, value) { - progressbar.attr('value', value); - }; - return progressbar; - } - }; - - this.initUploadRow = function (event, files, index, xhr, handler, callBack) { - var uploadRow = handler.uploadRow = uploadHandler.buildUploadRow(files, index); - if (uploadRow) { - handler.progressbar = uploadHandler.initProgressBar( - uploadRow.find(uploadHandler.progressSelector), - (xhr.upload ? 0 : 100) - ); - uploadRow.find(uploadHandler.cancelSelector).click(function (e) { - uploadHandler.cancelUpload(e, files, index, xhr, handler); - }); - } - uploadHandler.addNode(uploadHandler.uploadTable, uploadRow, callBack); - }; - - this.initUpload = function (event, files, index, xhr, handler, callBack) { - uploadHandler.initUploadRow(event, files, index, xhr, handler, function () { - if (typeof uploadHandler.beforeSend === func) { - uploadHandler.beforeSend(event, files, index, xhr, handler, callBack); - } else { - callBack(); + options: { + // By default, files added to the widget are uploaded as soon + // as the user clicks on the start buttons. To enable automatic + // uploads, set the following option to true: + autoUpload: false, + // The following option limits the number of files that are + // allowed to be uploaded using this widget: + maxNumberOfFiles: undefined, + // The maximum allowed file size: + maxFileSize: undefined, + // The minimum allowed file size: + minFileSize: 1, + // The regular expression for allowed file types, matches + // against either file type or file name: + acceptFileTypes: /.+$/i, + // The regular expression to define for which files a preview + // image is shown, matched against the file type: + previewFileTypes: /^image\/(gif|jpeg|png)$/, + // The maximum width of the preview images: + previewMaxWidth: 80, + // The maximum height of the preview images: + previewMaxHeight: 80, + // By default, preview images are displayed as canvas elements + // if supported by the browser. Set the following option to false + // to always display preview images as img elements: + previewAsCanvas: true, + // The file upload template that is given as first argument to the + // jQuery.tmpl method to render the file uploads: + uploadTemplate: $('#template-upload'), + // The file download template, that is given as first argument to the + // jQuery.tmpl method to render the file downloads: + downloadTemplate: $('#template-download'), + // The expected data type of the upload response, sets the dataType + // option of the $.ajax upload requests: + dataType: 'json', + + // The add callback is invoked as soon as files are added to the fileupload + // widget (via file input selection, drag & drop or add API call). + // See the basic file upload widget for more information: + add: function (e, data) { + var that = $(this).data('fileupload'); + that._adjustMaxNumberOfFiles(-data.files.length); + data.isAdjusted = true; + data.isValidated = that._validate(data.files); + data.context = that._renderUpload(data.files) + .appendTo($(this).find('.files')).fadeIn(function () { + // Fix for IE7 and lower: + $(this).show(); + }).data('data', data); + if ((that.options.autoUpload || data.autoUpload) && + data.isValidated) { + data.jqXHR = data.submit(); } - }); - }; - - this.onProgress = function (event, files, index, xhr, handler) { - if (handler.progressbar) { - handler.progressbar.progressbar( - 'value', - parseInt(event.loaded / event.total * 100, 10) - ); - } - }; - - this.parseResponse = function (xhr) { - if (typeof xhr.responseText !== undef) { - return $.parseJSON(xhr.responseText); - } else { - // Instead of an XHR object, an iframe is used for legacy browsers: - return $.parseJSON(xhr.contents().text()); - } - }; - - this.initDownloadRow = function (event, files, index, xhr, handler, callBack) { - var json, downloadRow; - try { - json = handler.response = uploadHandler.parseResponse(xhr); - downloadRow = handler.downloadRow = uploadHandler.buildDownloadRow(json); - uploadHandler.addNode(uploadHandler.downloadTable, downloadRow, callBack); - } catch (e) { - if (typeof uploadHandler.onError === func) { - handler.originalEvent = event; - uploadHandler.onError(e, files, index, xhr, handler); - } else { - throw e; - } - } - }; - - this.onLoad = function (event, files, index, xhr, handler) { - uploadHandler.removeNode(handler.uploadRow, function () { - uploadHandler.initDownloadRow(event, files, index, xhr, handler, function () { - if (typeof uploadHandler.onComplete === func) { - uploadHandler.onComplete(event, files, index, xhr, handler); + }, + // Callback for the start of each file upload request: + send: function (e, data) { + if (!data.isValidated) { + var that = $(this).data('fileupload'); + if (!data.isAdjusted) { + that._adjustMaxNumberOfFiles(-data.files.length); } - }); - }); - }; - - this.dropZoneEnlarge = function () { - if (!isDropZoneEnlarged) { - if (typeof uploadHandler.dropZone.switchClass === func) { - uploadHandler.dropZone.switchClass( - uploadHandler.cssClassSmall, - uploadHandler.cssClassLarge + if (!that._validate(data.files)) { + return false; + } + } + if (data.context && data.dataType && + data.dataType.substr(0, 6) === 'iframe') { + // Iframe Transport does not support progress events. + // In lack of an indeterminate progress bar, we set + // the progress to 100%, showing the full animated bar: + data.context.find('.ui-progressbar').progressbar( + 'value', + parseInt(100, 10) ); - } else { - uploadHandler.dropZone.addClass(uploadHandler.cssClassLarge); - uploadHandler.dropZone.removeClass(uploadHandler.cssClassSmall); } - isDropZoneEnlarged = true; - } - }; - - this.dropZoneReduce = function () { - if (typeof uploadHandler.dropZone.switchClass === func) { - uploadHandler.dropZone.switchClass( - uploadHandler.cssClassLarge, - uploadHandler.cssClassSmall + }, + // Callback for successful uploads: + done: function (e, data) { + var that = $(this).data('fileupload'); + if (data.context) { + data.context.each(function (index) { + var file = ($.isArray(data.result) && + data.result[index]) || {error: 'emptyResult'}; + if (file.error) { + that._adjustMaxNumberOfFiles(1); + } + $(this).fadeOut(function () { + that._renderDownload([file]) + .css('display', 'none') + .replaceAll(this) + .fadeIn(function () { + // Fix for IE7 and lower: + $(this).show(); + }); + }); + }); + } else { + that._renderDownload(data.result) + .css('display', 'none') + .appendTo($(this).find('.files')) + .fadeIn(function () { + // Fix for IE7 and lower: + $(this).show(); + }); + } + }, + // Callback for failed (abort or error) uploads: + fail: function (e, data) { + var that = $(this).data('fileupload'); + that._adjustMaxNumberOfFiles(data.files.length); + if (data.context) { + data.context.each(function (index) { + $(this).fadeOut(function () { + if (data.errorThrown !== 'abort') { + var file = data.files[index]; + file.error = file.error || data.errorThrown + || true; + that._renderDownload([file]) + .css('display', 'none') + .replaceAll(this) + .fadeIn(function () { + // Fix for IE7 and lower: + $(this).show(); + }); + } else { + data.context.remove(); + } + }); + }); + } else if (data.errorThrown !== 'abort') { + that._adjustMaxNumberOfFiles(-data.files.length); + data.context = that._renderUpload(data.files) + .css('display', 'none') + .appendTo($(this).find('.files')) + .fadeIn(function () { + // Fix for IE7 and lower: + $(this).show(); + }).data('data', data); + } + }, + // Callback for upload progress events: + progress: function (e, data) { + if (data.context) { + data.context.find('.ui-progressbar').progressbar( + 'value', + parseInt(data.loaded / data.total * 100, 10) + ); + } + }, + // Callback for global upload progress events: + progressall: function (e, data) { + $(this).find('.fileupload-progressbar').progressbar( + 'value', + parseInt(data.loaded / data.total * 100, 10) ); - } else { - uploadHandler.dropZone.addClass(uploadHandler.cssClassSmall); - uploadHandler.dropZone.removeClass(uploadHandler.cssClassLarge); + }, + // Callback for uploads start, equivalent to the global ajaxStart event: + start: function () { + $(this).find('.fileupload-progressbar') + .progressbar('value', 0).fadeIn(); + }, + // Callback for uploads stop, equivalent to the global ajaxStop event: + stop: function () { + $(this).find('.fileupload-progressbar').fadeOut(); + }, + // Callback for file deletion: + destroy: function (e, data) { + var that = $(this).data('fileupload'); + if (data.url) { + $.ajax(data) + .success(function () { + that._adjustMaxNumberOfFiles(1); + $(this).fadeOut(function () { + $(this).remove(); + }); + }); + } else { + data.context.fadeOut(function () { + $(this).remove(); + }); + } } - isDropZoneEnlarged = false; - }; + }, - this.onDocumentDragEnter = function (event) { - uploadHandler.dropZoneEnlarge(); - }; - - this.onDocumentDragOver = function (event) { - if (dragOverTimeout) { - clearTimeout(dragOverTimeout); + // Scales the given image (img HTML element) + // using the given options. + // Returns a canvas object if the canvas option is true + // and the browser supports canvas, else the scaled image: + _scaleImage: function (img, options) { + options = options || {}; + var canvas = document.createElement('canvas'), + scale = Math.min( + (options.maxWidth || img.width) / img.width, + (options.maxHeight || img.height) / img.height + ); + if (scale >= 1) { + scale = Math.max( + (options.minWidth || img.width) / img.width, + (options.minHeight || img.height) / img.height + ); } - dragOverTimeout = setTimeout(function () { - uploadHandler.dropZoneReduce(); - }, 200); - }; - - this.onDragEnter = this.onDragLeave = function (event) { - uploadHandler.dropZone.toggleClass(uploadHandler.cssClassHighlight); - }; - - this.onDrop = function (event) { - if (dragOverTimeout) { - clearTimeout(dragOverTimeout); + img.width = parseInt(img.width * scale, 10); + img.height = parseInt(img.height * scale, 10); + if (!options.canvas || !canvas.getContext) { + return img; } - if (uploadHandler.dropEffect && typeof uploadHandler.dropZone.effect === func) { - uploadHandler.dropZone.effect(uploadHandler.dropEffect, function () { - uploadHandler.dropZone.removeClass(uploadHandler.cssClassHighlight); - uploadHandler.dropZoneReduce(); - }); - } else { - uploadHandler.dropZone.removeClass(uploadHandler.cssClassHighlight); - uploadHandler.dropZoneReduce(); - } - }; + canvas.width = img.width; + canvas.height = img.height; + canvas.getContext('2d') + .drawImage(img, 0, 0, img.width, img.height); + return canvas; + }, - $.extend(this, options); - }; + _createObjectURL: function (file) { + var undef = 'undefined', + urlAPI = (typeof window.createObjectURL !== undef && window) || + (typeof URL !== undef && URL) || + (typeof webkitURL !== undef && webkitURL); + return urlAPI ? urlAPI.createObjectURL(file) : false; + }, + + _revokeObjectURL: function (url) { + var undef = 'undefined', + urlAPI = (typeof window.revokeObjectURL !== undef && window) || + (typeof URL !== undef && URL) || + (typeof webkitURL !== undef && webkitURL); + return urlAPI ? urlAPI.revokeObjectURL(url) : false; + }, - methods = { - init : function (options) { - return this.each(function () { - $(this).fileUpload(new UploadHandler($(this), options)); + // Loads a given File object via FileReader interface, + // invokes the callback with a data url: + _loadFile: function (file, callback) { + if (typeof FileReader !== 'undefined' && + FileReader.prototype.readAsDataURL) { + var fileReader = new FileReader(); + fileReader.onload = function (e) { + callback(e.target.result); + }; + fileReader.readAsDataURL(file); + return true; + } + return false; + }, + + // Loads an image for a given File object. + // Invokes the callback with an img or optional canvas + // element (if supported by the browser) as parameter: + _loadImage: function (file, callback, options) { + var that = this, + url, + img; + if (!options || !options.fileTypes || + options.fileTypes.test(file.type)) { + url = this._createObjectURL(file); + img = $('').bind('load', function () { + $(this).unbind('load'); + that._revokeObjectURL(url); + callback(that._scaleImage(img[0], options)); + }).prop('src', url); + if (!url) { + this._loadFile(file, function (url) { + img.prop('src', url); + }); + } + } + }, + + // Link handler, that allows to download files + // by drag & drop of the links to the desktop: + _enableDragToDesktop: function () { + var link = $(this), + url = link.prop('href'), + name = decodeURIComponent(url.split('/').pop()) + .replace(/:/g, '-'), + type = 'application/octet-stream'; + link.bind('dragstart', function (e) { + try { + e.originalEvent.dataTransfer.setData( + 'DownloadURL', + [type, name, url].join(':') + ); + } catch (err) {} }); }, - - destroy : function (namespace) { - return this.each(function () { - $(this).fileUpload('destroy', namespace); + + _adjustMaxNumberOfFiles: function (operand) { + if (typeof this.options.maxNumberOfFiles === 'number') { + this.options.maxNumberOfFiles += operand; + if (this.options.maxNumberOfFiles < 1) { + this._disableFileInputButton(); + } else { + this._enableFileInputButton(); + } + } + }, + + _formatFileSize: function (file) { + if (typeof file.size !== 'number') { + return ''; + } + if (file.size >= 1000000000) { + return (file.size / 1000000000).toFixed(2) + ' GB'; + } + if (file.size >= 1000000) { + return (file.size / 1000000).toFixed(2) + ' MB'; + } + return (file.size / 1000).toFixed(2) + ' KB'; + }, + + _hasError: function (file) { + if (file.error) { + return file.error; + } + // The number of added files is subtracted from + // maxNumberOfFiles before validation, so we check if + // maxNumberOfFiles is below 0 (instead of below 1): + if (this.options.maxNumberOfFiles < 0) { + return 'maxNumberOfFiles'; + } + // Files are accepted if either the file type or the file name + // matches against the acceptFileTypes regular expression, as + // only browsers with support for the File API report the type: + if (!(this.options.acceptFileTypes.test(file.type) || + this.options.acceptFileTypes.test(file.name))) { + return 'acceptFileTypes'; + } + if (this.options.maxFileSize && + file.size > this.options.maxFileSize) { + return 'maxFileSize'; + } + if (typeof file.size === 'number' && + file.size < this.options.minFileSize) { + return 'minFileSize'; + } + return null; + }, + + _validate: function (files) { + var that = this, + valid; + $.each(files, function (index, file) { + file.error = that._hasError(file); + valid = !file.error; }); + return valid; + }, + + _uploadTemplateHelper: function (file) { + file.sizef = this._formatFileSize(file); + return file; + }, + + _renderUploadTemplate: function (files) { + var that = this; + return $.tmpl( + this.options.uploadTemplate, + $.map(files, function (file) { + return that._uploadTemplateHelper(file); + }) + ); + }, + + _renderUpload: function (files) { + var that = this, + options = this.options, + tmpl = this._renderUploadTemplate(files); + if (!(tmpl instanceof $)) { + return $(); + } + tmpl.css('display', 'none'); + // .slice(1).remove().end().first() removes all but the first + // element and selects only the first for the jQuery collection: + tmpl.find('.progress div').slice(1).remove().end().first() + .progressbar(); + tmpl.find('.start button').slice( + this.options.autoUpload ? 0 : 1 + ).remove().end().first() + .button({ + text: false, + icons: {primary: 'ui-icon-circle-arrow-e'} + }); + tmpl.find('.cancel button').slice(1).remove().end().first() + .button({ + text: false, + icons: {primary: 'ui-icon-cancel'} + }); + tmpl.find('.preview').each(function (index, node) { + that._loadImage( + files[index], + function (img) { + $(img).hide().appendTo(node).fadeIn(); + }, + { + maxWidth: options.previewMaxWidth, + maxHeight: options.previewMaxHeight, + fileTypes: options.previewFileTypes, + canvas: options.previewAsCanvas + } + ); + }); + return tmpl; + }, + + _downloadTemplateHelper: function (file) { + file.sizef = this._formatFileSize(file); + return file; + }, + + _renderDownloadTemplate: function (files) { + var that = this; + return $.tmpl( + this.options.downloadTemplate, + $.map(files, function (file) { + return that._downloadTemplateHelper(file); + }) + ); + }, + + _renderDownload: function (files) { + var tmpl = this._renderDownloadTemplate(files); + if (!(tmpl instanceof $)) { + return $(); + } + tmpl.css('display', 'none'); + tmpl.find('.delete button').button({ + text: false, + icons: {primary: 'ui-icon-trash'} + }); + tmpl.find('a').each(this._enableDragToDesktop); + return tmpl; + }, + + _startHandler: function (e) { + e.preventDefault(); + var tmpl = $(this).closest('.template-upload'), + data = tmpl.data('data'); + if (data && data.submit && !data.jqXHR) { + data.jqXHR = data.submit(); + $(this).fadeOut(); + } + }, + + _cancelHandler: function (e) { + e.preventDefault(); + var tmpl = $(this).closest('.template-upload'), + data = tmpl.data('data') || {}; + if (!data.jqXHR) { + data.errorThrown = 'abort'; + e.data.fileupload._trigger('fail', e, data); + } else { + data.jqXHR.abort(); + } + }, + + _deleteHandler: function (e) { + e.preventDefault(); + var button = $(this); + e.data.fileupload._trigger('destroy', e, { + context: button.closest('.template-download'), + url: button.attr('data-url'), + type: button.attr('data-type'), + dataType: e.data.fileupload.options.dataType + }); + }, + + _initEventHandlers: function () { + $.blueimp.fileupload.prototype._initEventHandlers.call(this); + var filesList = this.element.find('.files'), + eventData = {fileupload: this}; + filesList.find('.start button') + .live( + 'click.' + this.options.namespace, + eventData, + this._startHandler + ); + filesList.find('.cancel button') + .live( + 'click.' + this.options.namespace, + eventData, + this._cancelHandler + ); + filesList.find('.delete button') + .live( + 'click.' + this.options.namespace, + eventData, + this._deleteHandler + ); + }, + + _destroyEventHandlers: function () { + var filesList = this.element.find('.files'); + filesList.find('.start button') + .die('click.' + this.options.namespace); + filesList.find('.cancel button') + .die('click.' + this.options.namespace); + filesList.find('.delete button') + .die('click.' + this.options.namespace); + $.blueimp.fileupload.prototype._destroyEventHandlers.call(this); + }, + + _initFileUploadButtonBar: function () { + var fileUploadButtonBar = this.element.find('.fileupload-buttonbar'), + filesList = this.element.find('.files'), + ns = this.options.namespace; + fileUploadButtonBar + .addClass('ui-widget-header ui-corner-top'); + this.element.find('.fileinput-button').each(function () { + var fileInput = $(this).find('input:file').detach(); + $(this).button({icons: {primary: 'ui-icon-plusthick'}}) + .append(fileInput); + }); + fileUploadButtonBar.find('.start') + .button({icons: {primary: 'ui-icon-circle-arrow-e'}}) + .bind('click.' + ns, function (e) { + e.preventDefault(); + filesList.find('.start button').click(); + }); + fileUploadButtonBar.find('.cancel') + .button({icons: {primary: 'ui-icon-cancel'}}) + .bind('click.' + ns, function (e) { + e.preventDefault(); + filesList.find('.cancel button').click(); + }); + fileUploadButtonBar.find('.delete') + .button({icons: {primary: 'ui-icon-trash'}}) + .bind('click.' + ns, function (e) { + e.preventDefault(); + filesList.find('.delete button').click(); + }); + }, + + _destroyFileUploadButtonBar: function () { + this.element.find('.fileupload-buttonbar') + .removeClass('ui-widget-header ui-corner-top'); + this.element.find('.fileinput-button').each(function () { + var fileInput = $(this).find('input:file').detach(); + $(this).button('destroy') + .append(fileInput); + }); + this.element.find('.fileupload-buttonbar button') + .unbind('click.' + this.options.namespace) + .button('destroy'); + }, + + _enableFileInputButton: function () { + this.element.find('.fileinput-button input:file:disabled') + .each(function () { + var fileInput = $(this), + button = fileInput.parent(); + fileInput.detach().prop('disabled', false); + button.button('enable').append(fileInput); + }); + }, + + _disableFileInputButton: function () { + this.element.find('.fileinput-button input:file:enabled') + .each(function () { + var fileInput = $(this), + button = fileInput.parent(); + fileInput.detach().prop('disabled', true); + button.button('disable').append(fileInput); + }); + }, + + _initTemplates: function () { + // Handle cases where the templates are defined + // after the widget library has been included: + if (this.options.uploadTemplate instanceof $ && + !this.options.uploadTemplate.length) { + this.options.uploadTemplate = $( + this.options.uploadTemplate.selector + ); + } + if (this.options.downloadTemplate instanceof $ && + !this.options.downloadTemplate.length) { + this.options.downloadTemplate = $( + this.options.downloadTemplate.selector + ); + } + }, + + _create: function () { + $.blueimp.fileupload.prototype._create.call(this); + this._initTemplates(); + this.element + .addClass('ui-widget'); + this._initFileUploadButtonBar(); + this.element.find('.fileupload-content') + .addClass('ui-widget-content ui-corner-bottom'); + this.element.find('.fileupload-progressbar') + .hide().progressbar(); + }, + + destroy: function () { + this.element.find('.fileupload-progressbar') + .progressbar('destroy'); + this.element.find('.fileupload-content') + .removeClass('ui-widget-content ui-corner-bottom'); + this._destroyFileUploadButtonBar(); + this.element.removeClass('ui-widget'); + $.blueimp.fileupload.prototype.destroy.call(this); + }, + + enable: function () { + $.blueimp.fileupload.prototype.enable.call(this); + this.element.find(':ui-button').not('.fileinput-button') + .button('enable'); + this._enableFileInputButton(); + }, + + disable: function () { + this.element.find(':ui-button').not('.fileinput-button') + .button('disable'); + this._disableFileInputButton(); + $.blueimp.fileupload.prototype.disable.call(this); } - }; - - $.fn.fileUploadUI = function (method) { - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else if (typeof method === 'object' || !method) { - return methods.init.apply(this, arguments); - } else { - $.error('Method ' + method + ' does not exist on jQuery.fileUploadUI'); - } - }; - + + }); + }(jQuery)); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/fileupload/jquery.fileupload.js b/htdocs/includes/jquery/plugins/fileupload/jquery.fileupload.js index 4fc5f9e8fd9..d721592b833 100644 --- a/htdocs/includes/jquery/plugins/fileupload/jquery.fileupload.js +++ b/htdocs/includes/jquery/plugins/fileupload/jquery.fileupload.js @@ -1,475 +1,720 @@ /* - * jQuery File Upload Plugin 3.4 + * jQuery File Upload Plugin 5.0.3 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2010, Sebastian Tschan + * https://blueimp.net * - * Copyright 2010, Sebastian Tschan, AQUANTUM * Licensed under the MIT license: * http://creativecommons.org/licenses/MIT/ - * - * https://blueimp.net - * http://www.aquantum.de */ -/*jslint browser: true */ -/*global File, FileReader, FormData, unescape, jQuery */ +/*jslint nomen: true, unparam: true, regexp: true */ +/*global document, XMLHttpRequestUpload, Blob, File, FormData, location, jQuery */ (function ($) { + 'use strict'; - var FileUpload, - methods; + // The fileupload widget listens for change events on file input fields + // defined via fileInput setting and drop events of the given dropZone. + // In addition to the default jQuery Widget methods, the fileupload widget + // exposes the "add" and "send" methods, to add or directly send files + // using the fileupload API. + // By default, files added via file input selection, drag & drop or + // "add" method are uploaded immediately, but it is possible to override + // the "add" callback option to queue file uploads. + $.widget('blueimp.fileupload', { - FileUpload = function (container) { - var fileUpload = this, - uploadForm = (container.is('form') ? container : container.find('form').first()), - fileInput = uploadForm.find('input:file').first(), - settings = { - namespace: 'file_upload', - cssClass: 'file_upload', - dragDropSupport: true, - dropZone: container, - url: uploadForm.attr('action'), - method: uploadForm.attr('method'), - fieldName: fileInput.attr('name'), - multipart: true, - multiFileRequest: false, - formData: function () { - return uploadForm.serializeArray(); - }, - withCredentials: false, - forceIframeUpload: false - }, - documentListeners = {}, - dropZoneListeners = {}, - fileInputListeners = {}, - undef = 'undefined', - func = 'function', - num = 'number', - protocolRegExp = /^http(s)?:\/\//, - - MultiLoader = function (callBack, numberComplete) { - var loaded = 0; - this.complete = function () { - loaded += 1; - if (loaded === numberComplete) { - callBack(); - } - }; - }, - - isXHRUploadCapable = function () { - return typeof XMLHttpRequest !== undef && typeof File !== undef && ( - !settings.multipart || typeof FormData !== undef || typeof FileReader !== undef - ); - }, - - initEventHandlers = function () { - if (settings.dragDropSupport) { - if (typeof settings.onDocumentDragEnter === func) { - documentListeners['dragenter.' + settings.namespace] = settings.onDocumentDragEnter; - } - if (typeof settings.onDocumentDragLeave === func) { - documentListeners['dragleave.' + settings.namespace] = settings.onDocumentDragLeave; - } - documentListeners['dragover.' + settings.namespace] = fileUpload.onDocumentDragOver; - documentListeners['drop.' + settings.namespace] = fileUpload.onDocumentDrop; - $(document).bind(documentListeners); - if (typeof settings.onDragEnter === func) { - dropZoneListeners['dragenter.' + settings.namespace] = settings.onDragEnter; - } - if (typeof settings.onDragLeave === func) { - dropZoneListeners['dragleave.' + settings.namespace] = settings.onDragLeave; - } - dropZoneListeners['dragover.' + settings.namespace] = fileUpload.onDragOver; - dropZoneListeners['drop.' + settings.namespace] = fileUpload.onDrop; - settings.dropZone.bind(dropZoneListeners); - } - fileInputListeners['change.' + settings.namespace] = fileUpload.onChange; - fileInput.bind(fileInputListeners); - }, - - removeEventHandlers = function () { - $.each(documentListeners, function (key, value) { - $(document).unbind(key, value); - }); - $.each(dropZoneListeners, function (key, value) { - settings.dropZone.unbind(key, value); - }); - $.each(fileInputListeners, function (key, value) { - fileInput.unbind(key, value); - }); - }, - - initUploadEventHandlers = function (files, index, xhr, settings) { - if (typeof settings.onProgress === func) { - xhr.upload.onprogress = function (e) { - settings.onProgress(e, files, index, xhr, settings); - }; - } - if (typeof settings.onLoad === func) { - xhr.onload = function (e) { - settings.onLoad(e, files, index, xhr, settings); - }; - } - if (typeof settings.onAbort === func) { - xhr.onabort = function (e) { - settings.onAbort(e, files, index, xhr, settings); - }; - } - if (typeof settings.onError === func) { - xhr.onerror = function (e) { - settings.onError(e, files, index, xhr, settings); - }; - } - }, - - getFormData = function (settings) { - if (typeof settings.formData === func) { - return settings.formData(); - } else if ($.isArray(settings.formData)) { - return settings.formData; - } else if (settings.formData) { - var formData = []; - $.each(settings.formData, function (name, value) { - formData.push({name: name, value: value}); - }); - return formData; - } - return []; - }, - - isSameDomain = function (url) { - if (protocolRegExp.test(url)) { - var host = location.host, - indexStart = location.protocol.length + 2, - index = url.indexOf(host, indexStart), - pathIndex = index + host.length; - if ((index === indexStart || index === url.indexOf('@', indexStart) + 1) && - (url.length === pathIndex || $.inArray(url.charAt(pathIndex), ['/', '?', '#']) !== -1)) { - return true; - } - return false; - } - return true; - }, - - nonMultipartUpload = function (file, xhr, sameDomain) { - if (sameDomain) { - xhr.setRequestHeader('X-File-Name', unescape(encodeURIComponent(file.name))); - } - xhr.setRequestHeader('Content-Type', file.type); - xhr.send(file); - }, - - formDataUpload = function (files, xhr, settings) { - var formData = new FormData(), - i; - $.each(getFormData(settings), function (index, field) { - formData.append(field.name, field.value); - }); - for (i = 0; i < files.length; i += 1) { - formData.append(settings.fieldName, files[i]); - } - xhr.send(formData); - }, - - loadFileContent = function (file, callBack) { - var fileReader = new FileReader(); - fileReader.onload = function (e) { - file.content = e.target.result; - callBack(); - }; - fileReader.readAsBinaryString(file); - }, - - buildMultiPartFormData = function (boundary, files, fields) { - var doubleDash = '--', - crlf = '\r\n', - formData = ''; - $.each(fields, function (index, field) { - formData += doubleDash + boundary + crlf + - 'Content-Disposition: form-data; name="' + - unescape(encodeURIComponent(field.name)) + - '"' + crlf + crlf + - unescape(encodeURIComponent(field.value)) + crlf; - }); - $.each(files, function (index, file) { - formData += doubleDash + boundary + crlf + - 'Content-Disposition: form-data; name="' + - unescape(encodeURIComponent(settings.fieldName)) + - '"; filename="' + unescape(encodeURIComponent(file.name)) + '"' + crlf + - 'Content-Type: ' + file.type + crlf + crlf + - file.content + crlf; - }); - formData += doubleDash + boundary + doubleDash + crlf; - return formData; + options: { + // The namespace used for event handler binding on the dropZone and + // fileInput collections. + // If not set, the name of the widget ("fileupload") is used. + namespace: undefined, + // The drop target collection, by the default the complete document. + // Set to null or an empty collection to disable drag & drop support: + dropZone: $(document), + // The file input field collection, that is listened for change events. + // If undefined, it is set to the file input fields inside + // of the widget element on plugin initialization. + // Set to null or an empty collection to disable the change listener. + fileInput: undefined, + // By default, the file input field is replaced with a clone after + // each input field change event. This is required for iframe transport + // queues and allows change events to be fired for the same file + // selection, but can be disabled by setting the following option to false: + replaceFileInput: true, + // The parameter name for the file form data (the request argument name). + // If undefined or empty, the name property of the file input field is + // used, or "files[]" if the file input name property is also empty: + paramName: undefined, + // By default, each file of a selection is uploaded using an individual + // request for XHR type uploads. Set to false to upload file + // selections in one request each: + singleFileUploads: true, + // Set the following option to true to issue all file upload requests + // in a sequential order: + sequentialUploads: false, + // Set the following option to true to force iframe transport uploads: + forceIframeTransport: false, + // By default, XHR file uploads are sent as multipart/form-data. + // The iframe transport is always using multipart/form-data. + // Set to false to enable non-multipart XHR uploads: + multipart: true, + // To upload large files in smaller chunks, set the following option + // to a preferred maximum chunk size. If set to 0, null or undefined, + // or the browser does not support the required Blob API, files will + // be uploaded as a whole. + maxChunkSize: undefined, + // When a non-multipart upload or a chunked multipart upload has been + // aborted, this option can be used to resume the upload by setting + // it to the size of the already uploaded bytes. This option is most + // useful when modifying the options object inside of the "add" or + // "send" callbacks, as the options are cloned for each file upload. + uploadedBytes: undefined, + // By default, failed (abort or error) file uploads are removed from the + // global progress calculation. Set the following option to false to + // prevent recalculating the global progress data: + recalculateProgress: true, + + // Additional form data to be sent along with the file uploads can be set + // using this option, which accepts an array of objects with name and + // value properties, a function returning such an array, a FormData + // object (for XHR file uploads), or a simple object. + // The form of the first fileInput is given as parameter to the function: + formData: function (form) { + return form.serializeArray(); }, - fileReaderUpload = function (files, xhr, settings) { - var boundary = '----MultiPartFormBoundary' + (new Date()).getTime(), - loader, - i; - xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary); - loader = new MultiLoader(function () { - xhr.sendAsBinary(buildMultiPartFormData( - boundary, - files, - getFormData(settings) - )); - }, files.length); - for (i = 0; i < files.length; i += 1) { - loadFileContent(files[i], loader.complete); - } + // The add callback is invoked as soon as files are added to the fileupload + // widget (via file input selection, drag & drop or add API call). + // If the singleFileUploads option is enabled, this callback will be + // called once for each file in the selection for XHR file uplaods, else + // once for each file selection. + // The upload starts when the submit method is invoked on the data parameter. + // The data object contains a files property holding the added files + // and allows to override plugin options as well as define ajax settings. + // Listeners for this callback can also be bound the following way: + // .bind('fileuploadadd', func); + // data.submit() returns a Promise object and allows to attach additional + // handlers using jQuery's Deferred callbacks: + // data.submit().done(func).fail(func).always(func); + add: function (e, data) { + data.submit(); }, + + // Other callbacks: + // Callback for the start of each file upload request: + // send: function (e, data) {}, // .bind('fileuploadsend', func); + // Callback for successful uploads: + // done: function (e, data) {}, // .bind('fileuploaddone', func); + // Callback for failed (abort or error) uploads: + // fail: function (e, data) {}, // .bind('fileuploadfail', func); + // Callback for completed (success, abort or error) requests: + // always: function (e, data) {}, // .bind('fileuploadalways', func); + // Callback for upload progress events: + // progress: function (e, data) {}, // .bind('fileuploadprogress', func); + // Callback for global upload progress events: + // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); + // Callback for uploads start, equivalent to the global ajaxStart event: + // start: function (e) {}, // .bind('fileuploadstart', func); + // Callback for uploads stop, equivalent to the global ajaxStop event: + // stop: function (e) {}, // .bind('fileuploadstop', func); + // Callback for change events of the fileInput collection: + // change: function (e, data) {}, // .bind('fileuploadchange', func); + // Callback for drop events of the dropZone collection: + // drop: function (e, data) {}, // .bind('fileuploaddrop', func); + // Callback for dragover events of the dropZone collection: + // dragover: function (e) {}, // .bind('fileuploaddragover', func); + + // The plugin options are used as settings object for the ajax calls. + // The following are jQuery ajax settings required for the file uploads: + processData: false, + contentType: false, + cache: false + }, + + // A list of options that require a refresh after assigning a new value: + _refreshOptionsList: ['namespace', 'dropZone', 'fileInput'], - upload = function (files, index, xhr, settings) { - var sameDomain = isSameDomain(settings.url), - filesToUpload; - initUploadEventHandlers(files, index, xhr, settings); - xhr.open(settings.method, settings.url, true); - if (sameDomain) { - xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - } else if (settings.withCredentials) { - xhr.withCredentials = true; - } - if (!settings.multipart) { - nonMultipartUpload(files[index], xhr, sameDomain); - } else { - if (typeof index === num) { - filesToUpload = [files[index]]; - } else { - filesToUpload = files; - } - if (typeof FormData !== undef) { - formDataUpload(filesToUpload, xhr, settings); - } else if (typeof FileReader !== undef) { - fileReaderUpload(filesToUpload, xhr, settings); - } else { - $.error('Browser does neither support FormData nor FileReader interface'); - } - } - }, + _isXHRUpload: function (options) { + var undef = 'undefined'; + return !options.forceIframeTransport && + typeof XMLHttpRequestUpload !== undef && typeof File !== undef && + (!options.multipart || typeof FormData !== undef); + }, - handleUpload = function (event, files, index) { - var xhr = new XMLHttpRequest(), - uploadSettings = $.extend({}, settings); - if (typeof settings.initUpload === func) { - settings.initUpload( - event, - files, - index, - xhr, - uploadSettings, - function () { - upload(files, index, xhr, uploadSettings); - } - ); - } else { - upload(files, index, xhr, uploadSettings); - } - }, - - handleFiles = function (event, files) { - var i; - if (settings.multiFileRequest) { - handleUpload(event, files); - } else { - for (i = 0; i < files.length; i += 1) { - handleUpload(event, files, i); - } - } - }, - - legacyUploadFormDataInit = function (input, settings) { - var formData = getFormData(settings); - uploadForm.find(':input').not(':disabled') - .attr('disabled', true) - .addClass(settings.namespace + '_disabled'); - $.each(formData, function (index, field) { - $('') - .attr('name', field.name) - .val(field.value) - .addClass(settings.namespace + '_form_data') - .insertBefore(fileInput); + _getFormData: function (options) { + var formData; + if (typeof options.formData === 'function') { + return options.formData(options.form); + } else if ($.isArray(options.formData)) { + return options.formData; + } else if (options.formData) { + formData = []; + $.each(options.formData, function (name, value) { + formData.push({name: name, value: value}); }); - input.insertAfter(fileInput); - }, + return formData; + } + return []; + }, - legacyUploadFormDataReset = function (input, settings) { - input.remove(); - uploadForm.find('.' + settings.namespace + '_disabled') - .removeAttr('disabled') - .removeClass(settings.namespace + '_disabled'); - uploadForm.find('.' + settings.namespace + '_form_data').remove(); - }, + _getTotal: function (files) { + var total = 0; + $.each(files, function (index, file) { + total += file.size || 1; + }); + return total; + }, - legacyUpload = function (input, iframe, settings) { - iframe - .unbind('abort') - .bind('abort', function (e) { - iframe.readyState = 0; - // javascript:false as iframe src prevents warning popups on HTTPS in IE6 - // concat is used here to prevent the "Script URL" JSLint error: - iframe.unbind('load').attr('src', 'javascript'.concat(':false;')); - if (typeof settings.onAbort === func) { - settings.onAbort(e, [{name: input.val(), type: null, size: null}], 0, iframe, settings); - } - }) - .unbind('load') - .bind('load', function (e) { - iframe.readyState = 4; - if (typeof settings.onLoad === func) { - settings.onLoad(e, [{name: input.val(), type: null, size: null}], 0, iframe, settings); + _onProgress: function (e, data) { + if (e.lengthComputable) { + var total = data.total || this._getTotal(data.files), + loaded = parseInt( + e.loaded / e.total * (data.chunkSize || total), + 10 + ) + (data.uploadedBytes || 0); + this._loaded += loaded - (data.loaded || data.uploadedBytes || 0); + data.lengthComputable = true; + data.loaded = loaded; + data.total = total; + // Trigger a custom progress event with a total data property set + // to the file size(s) of the current upload and a loaded data + // property calculated accordingly: + this._trigger('progress', e, data); + // Trigger a global progress event for all current file uploads, + // including ajax calls queued for sequential file uploads: + this._trigger('progressall', e, { + lengthComputable: true, + loaded: this._loaded, + total: this._total + }); + } + }, + + _initProgressListener: function (options) { + var that = this, + xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); + // Accesss to the native XHR object is required to add event listeners + // for the upload progress event: + if (xhr.upload && xhr.upload.addEventListener) { + xhr.upload.addEventListener('progress', function (e) { + that._onProgress(e, options); + }, false); + options.xhr = function () { + return xhr; + }; + } + }, + + _initXHRData: function (options) { + var formData, + file = options.files[0]; + if (!options.multipart || options.blob) { + // For non-multipart uploads and chunked uploads, + // file meta data is not part of the request body, + // so we transmit this data as part of the HTTP headers. + // For cross domain requests, these headers must be allowed + // via Access-Control-Allow-Headers or removed using + // the beforeSend callback: + options.headers = $.extend(options.headers, { + 'X-File-Name': file.name, + 'X-File-Type': file.type, + 'X-File-Size': file.size + }); + if (!options.blob) { + // Non-chunked non-multipart upload: + options.contentType = file.type; + options.data = file; + } else if (!options.multipart) { + // Chunked non-multipart upload: + options.contentType = 'application/octet-stream'; + options.data = options.blob; + } + } + if (options.multipart && typeof FormData !== 'undefined') { + if (options.formData instanceof FormData) { + formData = options.formData; + } else { + formData = new FormData(); + $.each(this._getFormData(options), function (index, field) { + formData.append(field.name, field.value); + }); + } + if (options.blob) { + formData.append(options.paramName, options.blob); + } else { + $.each(options.files, function (index, file) { + // File objects are also Blob instances. + // This check allows the tests to run with + // dummy objects: + if (file instanceof Blob) { + formData.append(options.paramName, file); } }); - uploadForm - .attr('action', settings.url) - .attr('target', iframe.attr('name')); - legacyUploadFormDataInit(input, settings); - iframe.readyState = 2; - uploadForm.get(0).submit(); - legacyUploadFormDataReset(input, settings); - }, - - handleLegacyUpload = function (event, input) { - // javascript:false as iframe src prevents warning popups on HTTPS in IE6: - var iframe = $(''), - uploadSettings = $.extend({}, settings); - iframe.readyState = 0; - iframe.abort = function () { - iframe.trigger('abort'); - }; - iframe.bind('load', function () { - iframe.unbind('load'); - if (typeof settings.initUpload === func) { - settings.initUpload( - event, - [{name: input.val(), type: null, size: null}], - 0, - iframe, - uploadSettings, - function () { - legacyUpload(input, iframe, uploadSettings); - } - ); - } else { - legacyUpload(input, iframe, uploadSettings); - } - }).appendTo(uploadForm); - }, - - resetFileInput = function () { - var inputClone = fileInput.clone(true); - $('
').append(inputClone).get(0).reset(); - fileInput.replaceWith(inputClone); - fileInput = inputClone; - }; - - this.onDocumentDragOver = function (e) { - if (typeof settings.onDocumentDragOver === func && - settings.onDocumentDragOver(e) === false) { - return false; + } + options.data = formData; } - e.preventDefault(); - }; + // Blob reference is not needed anymore, free memory: + options.blob = null; + }, - this.onDocumentDrop = function (e) { - if (typeof settings.onDocumentDrop === func && - settings.onDocumentDrop(e) === false) { + _initIframeSettings: function (options) { + // Setting the dataType to iframe enables the iframe transport: + options.dataType = 'iframe ' + (options.dataType || ''); + // The iframe transport accepts a serialized array as form data: + options.formData = this._getFormData(options); + }, + + _initDataSettings: function (options) { + if (this._isXHRUpload(options)) { + if (!this._chunkedUpload(options, true)) { + if (!options.data) { + this._initXHRData(options); + } + this._initProgressListener(options); + } + } else { + this._initIframeSettings(options); + } + }, + + _initFormSettings: function (options) { + // Retrieve missing options from the input field and the + // associated form, if available: + if (!options.form || !options.form.length) { + options.form = $(options.fileInput.prop('form')); + } + if (!options.paramName) { + options.paramName = options.fileInput.prop('name') || + 'files[]'; + } + if (!options.url) { + options.url = options.form.prop('action') || location.href; + } + // The HTTP request method must be "POST" or "PUT": + options.type = (options.type || options.form.prop('method') || '') + .toUpperCase(); + if (options.type !== 'POST' && options.type !== 'PUT') { + options.type = 'POST'; + } + }, + + _getAJAXSettings: function (data) { + var options = $.extend({}, this.options, data); + this._initFormSettings(options); + this._initDataSettings(options); + return options; + }, + + // Maps jqXHR callbacks to the equivalent + // methods of the given Promise object: + _enhancePromise: function (promise) { + promise.success = promise.done; + promise.error = promise.fail; + promise.complete = promise.always; + return promise; + }, + + // Creates and returns a Promise object enhanced with + // the jqXHR methods abort, success, error and complete: + _getXHRPromise: function (resolveOrReject, context, args) { + var dfd = $.Deferred(), + promise = dfd.promise(); + context = context || this.options.context || promise; + if (resolveOrReject === true) { + dfd.resolveWith(context, args); + } else if (resolveOrReject === false) { + dfd.rejectWith(context, args); + } + promise.abort = dfd.promise; + return this._enhancePromise(promise); + }, + + // Uploads a file in multiple, sequential requests + // by splitting the file up in multiple blob chunks. + // If the second parameter is true, only tests if the file + // should be uploaded in chunks, but does not invoke any + // upload requests: + _chunkedUpload: function (options, testOnly) { + var that = this, + file = options.files[0], + fs = file.size, + ub = options.uploadedBytes = options.uploadedBytes || 0, + mcs = options.maxChunkSize || fs, + // Use the Blob methods with the slice implementation + // according to the W3C Blob API specification: + slice = file.webkitSlice || file.mozSlice || file.slice, + upload, + n, + jqXHR, + pipe; + if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) || + options.data) { + return false; + } + if (testOnly) { + return true; + } + if (ub >= fs) { + file.error = 'uploadedBytes'; + return this._getXHRPromise(false); + } + // n is the number of blobs to upload, + // calculated via filesize, uploaded bytes and max chunk size: + n = Math.ceil((fs - ub) / mcs); + // The chunk upload method accepting the chunk number as parameter: + upload = function (i) { + if (!i) { + return that._getXHRPromise(true); + } + // Upload the blobs in sequential order: + return upload(i -= 1).pipe(function () { + // Clone the options object for each chunk upload: + var o = $.extend({}, options); + o.blob = slice.call( + file, + ub + i * mcs, + ub + (i + 1) * mcs + ); + // Store the current chunk size, as the blob itself + // will be dereferenced after data processing: + o.chunkSize = o.blob.size; + // Process the upload data (the blob and potential form data): + that._initXHRData(o); + // Add progress listeners for this chunk upload: + that._initProgressListener(o); + jqXHR = ($.ajax(o) || that._getXHRPromise(false, o.context)) + .done(function () { + // Create a progress event if upload is done and + // no progress event has been invoked for this chunk: + if (!o.loaded) { + that._onProgress($.Event('progress', { + lengthComputable: true, + loaded: o.chunkSize, + total: o.chunkSize + }), o); + } + options.uploadedBytes = o.uploadedBytes + += o.chunkSize; + }); + return jqXHR; + }); + }; + // Return the piped Promise object, enhanced with an abort method, + // which is delegated to the jqXHR object of the current upload, + // and jqXHR callbacks mapped to the equivalent Promise methods: + pipe = upload(n); + pipe.abort = function () { + return jqXHR.abort(); + }; + return this._enhancePromise(pipe); + }, + + _beforeSend: function (e, data) { + if (this._active === 0) { + // the start callback is triggered when an upload starts + // and no other uploads are currently running, + // equivalent to the global ajaxStart event: + this._trigger('start'); + } + this._active += 1; + // Initialize the global progress values: + this._loaded += data.uploadedBytes || 0; + this._total += this._getTotal(data.files); + }, + + _onDone: function (result, textStatus, jqXHR, options) { + if (!this._isXHRUpload(options)) { + // Create a progress event for each iframe load: + this._onProgress($.Event('progress', { + lengthComputable: true, + loaded: 1, + total: 1 + }), options); + } + options.result = result; + options.textStatus = textStatus; + options.jqXHR = jqXHR; + this._trigger('done', null, options); + }, + + _onFail: function (jqXHR, textStatus, errorThrown, options) { + options.jqXHR = jqXHR; + options.textStatus = textStatus; + options.errorThrown = errorThrown; + this._trigger('fail', null, options); + if (options.recalculateProgress) { + // Remove the failed (error or abort) file upload from + // the global progress calculation: + this._loaded -= options.loaded || options.uploadedBytes || 0; + this._total -= options.total || this._getTotal(options.files); + } + }, + + _onAlways: function (result, textStatus, jqXHR, errorThrown, options) { + this._active -= 1; + options.result = result; + options.textStatus = textStatus; + options.jqXHR = jqXHR; + options.errorThrown = errorThrown; + this._trigger('always', null, options); + if (this._active === 0) { + // The stop callback is triggered when all uploads have + // been completed, equivalent to the global ajaxStop event: + this._trigger('stop'); + // Reset the global progress values: + this._loaded = this._total = 0; + } + }, + + _onSend: function (e, data) { + var that = this, + jqXHR, + pipe, + options = that._getAJAXSettings(data), + send = function (resolve, args) { + jqXHR = jqXHR || ( + (resolve !== false && + that._trigger('send', e, options) !== false && + (that._chunkedUpload(options) || $.ajax(options))) || + that._getXHRPromise(false, options.context, args) + ).done(function (result, textStatus, jqXHR) { + that._onDone(result, textStatus, jqXHR, options); + }).fail(function (jqXHR, textStatus, errorThrown) { + that._onFail(jqXHR, textStatus, errorThrown, options); + }).always(function (a1, a2, a3) { + if (a3 && a3.done) { + that._onAlways(a1, a2, a3, undefined, options); + } else { + that._onAlways(undefined, a2, a1, a3, options); + } + }); + return jqXHR; + }; + this._beforeSend(e, options); + if (this.options.sequentialUploads) { + // Return the piped Promise object, enhanced with an abort method, + // which is delegated to the jqXHR object of the current upload, + // and jqXHR callbacks mapped to the equivalent Promise methods: + pipe = (this._sequence = this._sequence.pipe(send, send)); + pipe.abort = function () { + if (!jqXHR) { + return send(false, [undefined, 'abort', 'abort']); + } + return jqXHR.abort(); + }; + return this._enhancePromise(pipe); + } + return send(); + }, + + _onAdd: function (e, data) { + var that = this, + result = true, + options = $.extend({}, this.options, data); + if (options.singleFileUploads && this._isXHRUpload(options)) { + $.each(data.files, function (index, file) { + var newData = $.extend({}, data, {files: [file]}); + newData.submit = function () { + return that._onSend(e, newData); + }; + return (result = that._trigger('add', e, newData)); + }); + return result; + } else if (data.files.length) { + data = $.extend({}, data); + data.submit = function () { + return that._onSend(e, data); + }; + return this._trigger('add', e, data); + } + }, + + // File Normalization for Gecko 1.9.1 (Firefox 3.5) support: + _normalizeFile: function (index, file) { + if (file.name === undefined && file.size === undefined) { + file.name = file.fileName; + file.size = file.fileSize; + } + }, + + _replaceFileInput: function (input) { + var inputClone = input.clone(true); + $('
').append(inputClone)[0].reset(); + // Detaching allows to insert the fileInput on another form + // without loosing the file input value: + input.after(inputClone).detach(); + // Replace the original file input element in the fileInput + // collection with the clone, which has been copied including + // event handlers: + this.options.fileInput = this.options.fileInput.map(function (i, el) { + if (el === input[0]) { + return inputClone[0]; + } + return el; + }); + }, + + _onChange: function (e) { + var that = e.data.fileupload, + data = { + files: $.each($.makeArray(e.target.files), that._normalizeFile), + fileInput: $(e.target), + form: $(e.target.form) + }; + if (!data.files.length) { + // If the files property is not available, the browser does not + // support the File API and we add a pseudo File object with + // the input value as name with path information removed: + data.files = [{name: e.target.value.replace(/^.*\\/, '')}]; + } + // Store the form reference as jQuery data for other event handlers, + // as the form property is not available after replacing the file input: + if (data.form.length) { + data.fileInput.data('blueimp.fileupload.form', data.form); + } else { + data.form = data.fileInput.data('blueimp.fileupload.form'); + } + if (that.options.replaceFileInput) { + that._replaceFileInput(data.fileInput); + } + if (that._trigger('change', e, data) === false || + that._onAdd(e, data) === false) { + return false; + } + }, + + _onDrop: function (e) { + var that = e.data.fileupload, + dataTransfer = e.dataTransfer = e.originalEvent.dataTransfer, + data = { + files: $.each( + $.makeArray(dataTransfer && dataTransfer.files), + that._normalizeFile + ) + }; + if (that._trigger('drop', e, data) === false || + that._onAdd(e, data) === false) { return false; } e.preventDefault(); - }; - - this.onDragOver = function (e) { - if (typeof settings.onDragOver === func && - settings.onDragOver(e) === false) { + }, + + _onDragOver: function (e) { + var that = e.data.fileupload, + dataTransfer = e.dataTransfer = e.originalEvent.dataTransfer; + if (that._trigger('dragover', e) === false) { return false; } - var dataTransfer = e.originalEvent.dataTransfer; if (dataTransfer) { dataTransfer.dropEffect = dataTransfer.effectAllowed = 'copy'; } e.preventDefault(); - }; - - this.onDrop = function (e) { - if (typeof settings.onDrop === func && - settings.onDrop(e) === false) { - return false; - } - var dataTransfer = e.originalEvent.dataTransfer; - if (dataTransfer && dataTransfer.files && isXHRUploadCapable()) { - handleFiles(e, dataTransfer.files); - } - e.preventDefault(); - }; + }, - this.onChange = function (e) { - if (typeof settings.onChange === func && - settings.onChange(e) === false) { - return false; - } - if (!settings.forceIframeUpload && e.target.files && isXHRUploadCapable()) { - handleFiles(e, e.target.files); - } else { - handleLegacyUpload(e, $(e.target)); - } - resetFileInput(); - }; + _initEventHandlers: function () { + var ns = this.options.namespace || this.name; + this.options.dropZone + .bind('dragover.' + ns, {fileupload: this}, this._onDragOver) + .bind('drop.' + ns, {fileupload: this}, this._onDrop); + this.options.fileInput + .bind('change.' + ns, {fileupload: this}, this._onChange); + }, - this.init = function (options) { - if (options) { - $.extend(settings, options); + _destroyEventHandlers: function () { + var ns = this.options.namespace || this.name; + this.options.dropZone + .unbind('dragover.' + ns, this._onDragOver) + .unbind('drop.' + ns, this._onDrop); + this.options.fileInput + .unbind('change.' + ns, this._onChange); + }, + + _beforeSetOption: function (key, value) { + this._destroyEventHandlers(); + }, + + _afterSetOption: function (key, value) { + var options = this.options; + if (!options.fileInput) { + options.fileInput = $(); } - if (container.data(settings.namespace)) { - $.error('FileUpload with namespace "' + settings.namespace + '" already assigned to this element'); + if (!options.dropZone) { + options.dropZone = $(); + } + this._initEventHandlers(); + }, + + _setOption: function (key, value) { + var refresh = $.inArray(key, this._refreshOptionsList) !== -1; + if (refresh) { + this._beforeSetOption(key, value); + } + $.Widget.prototype._setOption.call(this, key, value); + if (refresh) { + this._afterSetOption(key, value); + } + }, + + _create: function () { + var options = this.options; + if (options.fileInput === undefined) { + options.fileInput = this.element.is('input:file') ? + this.element : this.element.find('input:file'); + } else if (!options.fileInput) { + options.fileInput = $(); + } + if (!options.dropZone) { + options.dropZone = $(); + } + this._sequence = this._getXHRPromise(true); + this._active = this._loaded = this._total = 0; + this._initEventHandlers(); + }, + + destroy: function () { + this._destroyEventHandlers(); + $.Widget.prototype.destroy.call(this); + }, + + enable: function () { + $.Widget.prototype.enable.call(this); + this._initEventHandlers(); + }, + + disable: function () { + this._destroyEventHandlers(); + $.Widget.prototype.disable.call(this); + }, + + // This method is exposed to the widget API and allows adding files + // using the fileupload API. The data parameter accepts an object which + // must have a files property and can contain additional options: + // .fileupload('add', {files: filesList}); + add: function (data) { + if (!data || this.options.disabled) { return; } - container - .data(settings.namespace, fileUpload) - .addClass(settings.cssClass); - settings.dropZone.addClass(settings.cssClass); - initEventHandlers(); - }; - - this.destroy = function () { - removeEventHandlers(); - container - .removeData(settings.namespace) - .removeClass(settings.cssClass); - settings.dropZone.removeClass(settings.cssClass); - }; - }; - - methods = { - init : function (options) { - return this.each(function () { - (new FileUpload($(this))).init(options); - }); + data.files = $.each($.makeArray(data.files), this._normalizeFile); + this._onAdd(null, data); }, - - destroy : function (namespace) { - return this.each(function () { - namespace = namespace ? namespace : 'file_upload'; - var fileUpload = $(this).data(namespace); - if (fileUpload) { - fileUpload.destroy(); - } else { - $.error('No FileUpload with namespace "' + namespace + '" assigned to this element'); + + // This method is exposed to the widget API and allows sending files + // using the fileupload API. The data parameter accepts an object which + // must have a files property and can contain additional options: + // .fileupload('send', {files: filesList}); + // The method returns a Promise object for the file upload call. + send: function (data) { + if (data && !this.options.disabled) { + data.files = $.each($.makeArray(data.files), this._normalizeFile); + if (data.files.length) { + return this._onSend(null, data); } - }); - + } + return this._getXHRPromise(false, data && data.context); } - }; - - $.fn.fileUpload = function (method) { - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else if (typeof method === 'object' || !method) { - return methods.init.apply(this, arguments); - } else { - $.error('Method ' + method + ' does not exist on jQuery.fileUpload'); - } - }; + + }); }(jQuery)); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/fileupload/jquery.iframe-transport.js b/htdocs/includes/jquery/plugins/fileupload/jquery.iframe-transport.js new file mode 100644 index 00000000000..ed1b9f3c661 --- /dev/null +++ b/htdocs/includes/jquery/plugins/fileupload/jquery.iframe-transport.js @@ -0,0 +1,156 @@ +/* + * jQuery Iframe Transport Plugin 1.2.2 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://creativecommons.org/licenses/MIT/ + */ + +/*jslint unparam: true */ +/*global jQuery */ + +(function ($) { + 'use strict'; + + // Helper variable to create unique names for the transport iframes: + var counter = 0; + + // The iframe transport accepts three additional options: + // options.fileInput: a jQuery collection of file input fields + // options.paramName: the parameter name for the file form data, + // overrides the name property of the file input field(s) + // options.formData: an array of objects with name and value properties, + // equivalent to the return data of .serializeArray(), e.g.: + // [{name: a, value: 1}, {name: b, value: 2}] + $.ajaxTransport('iframe', function (options, originalOptions, jqXHR) { + if (options.type === 'POST' || options.type === 'GET') { + var form, + iframe; + return { + send: function (headers, completeCallback) { + form = $('
'); + // javascript:false as initial iframe src + // prevents warning popups on HTTPS in IE6. + // IE versions below IE8 cannot set the name property of + // elements that have already been added to the DOM, + // so we set the name along with the iframe HTML markup: + iframe = $( + '' + ).bind('load', function () { + var fileInputClones; + iframe + .unbind('load') + .bind('load', function () { + var response; + // Wrap in a try/catch block to catch exceptions thrown + // when trying to access cross-domain iframe contents: + try { + response = iframe.contents(); + // Google Chrome and Firefox do not throw an + // exception when calling iframe.contents() on + // cross-domain requests, so we unify the response: + if (!response.length || !response[0].firstChild) { + throw new Error(); + } + } catch (e) { + response = undefined; + } + // The complete callback returns the + // iframe content document as response object: + completeCallback( + 200, + 'success', + {'iframe': response} + ); + // Fix for IE endless progress bar activity bug + // (happens on form submits to iframe targets): + $('') + .appendTo(form); + form.remove(); + }); + form + .prop('target', iframe.prop('name')) + .prop('action', options.url) + .prop('method', options.type); + if (options.formData) { + $.each(options.formData, function (index, field) { + $('') + .prop('name', field.name) + .val(field.value) + .appendTo(form); + }); + } + if (options.fileInput && options.fileInput.length && + options.type === 'POST') { + fileInputClones = options.fileInput.clone(); + // Insert a clone for each file input field: + options.fileInput.after(function (index) { + return fileInputClones[index]; + }); + if (options.paramName) { + options.fileInput.each(function () { + $(this).prop('name', options.paramName); + }); + } + // Appending the file input fields to the hidden form + // removes them from their original location: + form + .append(options.fileInput) + .prop('enctype', 'multipart/form-data') + // enctype must be set as encoding for IE: + .prop('encoding', 'multipart/form-data'); + } + form.submit(); + // Insert the file input fields at their original location + // by replacing the clones with the originals: + if (fileInputClones && fileInputClones.length) { + options.fileInput.each(function (index, input) { + var clone = $(fileInputClones[index]); + $(input).prop('name', clone.prop('name')); + clone.replaceWith(input); + }); + } + }); + form.append(iframe).appendTo('body'); + }, + abort: function () { + if (iframe) { + // javascript:false as iframe src aborts the request + // and prevents warning popups on HTTPS in IE6. + // concat is used to avoid the "Script URL" JSLint error: + iframe + .unbind('load') + .prop('src', 'javascript'.concat(':false;')); + } + if (form) { + form.remove(); + } + } + }; + } + }); + + // The iframe transport returns the iframe content document as response. + // The following adds converters from iframe to text, json, html, and script: + $.ajaxSetup({ + converters: { + 'iframe text': function (iframe) { + return iframe.text(); + }, + 'iframe json': function (iframe) { + return $.parseJSON(iframe.text()); + }, + 'iframe html': function (iframe) { + return iframe.find('body').html(); + }, + 'iframe script': function (iframe) { + return $.globalEval(iframe.text()); + } + } + }); + +}(jQuery)); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/fileupload/jquery.tmpl.min.js b/htdocs/includes/jquery/plugins/fileupload/jquery.tmpl.min.js new file mode 100644 index 00000000000..7438b2ca545 --- /dev/null +++ b/htdocs/includes/jquery/plugins/fileupload/jquery.tmpl.min.js @@ -0,0 +1,10 @@ +/* + * jQuery Templates Plugin 1.0.0pre + * http://github.com/jquery/jquery-tmpl + * Requires jQuery 1.4.2 + * + * Copyright Software Freedom Conservancy, Inc. + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + */ +(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i").join(">").split('"').join(""").split("'").join("'")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/fileupload/pbar-ani.gif b/htdocs/includes/jquery/plugins/fileupload/pbar-ani.gif index 0dfd45b885a2dd69a4c16febc5e886300cdb08e0..fbcce6bc9abfcc7893e65ef20b3e77ee16ec37b1 100644 GIT binary patch literal 3323 zcmcK7eNYp38VB%=tbvu|O{=v;j+Z$Bg`>zI2IVD3Ovp-%sA$2LilR;|zMv9BB_t%- zylmcIh`dQLinJh9P{0Ja6I28#3PquysCf3GB1bBEXgfV_qnx8-n07k#kNmNdnVrvm zpZz`0v#~Ih7`{0em<2RA0wa|vr`!U1uI~v zF&O+zyfdOBoHdq{xOf7$)mN>lwcHgLVd-HT}JxYe94Gv(X_H__aHV~b7Ud4Pvk@t?84W?#& z+#WmNc5cUNoapyda#-P`2+n z-sGAbb$_$TW887}6BiJKaV$E-69{23pNeG2=_;8-CM9c*OiHOp|F9Igl_JQHqf)Y3 zhR7s(mQBh5ER~A&6^|p|OQqmd+(8 zZCb1qD*K}>!|B|YVuCsS=V0!N=?-)po(^$x*kptYX9N)B^~VJ^d7-@(M1WK;9&Liw~wO?NN(E}be} z`e0?=)*y}@Xkgx6S$ZS(8d|ifzK_`x?=N$)pWk;s0Ve?`qDX{%L@X0)6guz8Adh+qh(mq90aE=iAZp(dGccGHgmlkOke19p-dfci z@1Ni#x_B;&@l8icy*4roEXN?9&vh-w;n!Fp3;~Dn4#aOVi22tbo-KY@B1*TAgMsta zMh~68EXdvgJe$<9yOgn~E8aiQNo1$l`FUCI52J)nHW8+@|McSTe{t30@NpO^cv#waY+68ew4oT={#AGoA?Je^k$f`&u}bW zOjoRA_$utq5rspZ;5HXZvqE1#D) z5*M}9jPoq=-V*<cQuuK%yr=$XZl2k``40P4ol60hjb({{!c5Rtn3Urk4?uRRFNQuFGPhZnTBMO zu{W&|u4t53w>M}v(wtDAV!oHP(QY&~_X0qupII*-&GksTPf#SZ#4eaOCrG~hUblo4 zya(R){3rfyxiH2%l{iN;xS(G)OWOx8>UV9u+Vm_iN98oT20F}U!8utl4(lm=E)S6) zN~xM^Q?U;_!Ku4seH{bquy+4OfwlV{0C?tW&XteqJmP<|V)6eK9ey(~1Sbd1rgF1{ zd@&*xkriY}MS><}4DI}o3>d2jm74@fNpg-Vf(zPY?8nj=O8o$gp_gzr3~{MEs({T( z5+EcMIErR!`wwLZHp{c_?{mEhe%dlbNH8E^nm+5|owEXTR;S2+hYWR^j zWB!qbQWumI=vg;ZQvO$8W9QeMX~YdqNb^K%y~T6@tCTOlSM-j*$OOSSZX6cRfzPb* zP-Q}8v|6Q&$hAFfGA(f5>_XzuqhFP@h(0x@%#tsExSB}v(zy6^qc>xW*XCVMBPKf` zF>gsuD~+eKuRP{tWLo#OoJ2?fR@_0f5Olf}}Khc$ZhB$$3I7S9&n z^G{G0pQnju2Md}?zmbr!LGT*;;9BS$0{gW}BIt4&bK&vrcZDWsbNjkoz_n|Fg z4{aH7d_(WgH+21cL+?Wsp})KSU%fLT!v3q-@kaf6+;VfbE;sdvZxi>edZ8DFzLebe zrs(d&a)yQeH{rUxtYIU@rsYHrPrGw;M(3DAPy93{dUR^%m|L&x8`n3hTiU46H%!b< zyLn>2TSiPAJECK1%yri`Ovvk$H!f>jTF$WOym9Fn<2&Vbjv1DkIXtaX=%1^<92*n; zWs)60%cAc1r5r^W+}da?bxwnY+QWxj|mm6$KRciGc2!l#`xwZe#qZ{PWQC&BeF+l<&4hEh_3#*!-i+( z=5&sUseYqVf1Ui3jmtXqMj7MVeEFwrGa_?bY~HY}*tTurVo&|#&!?e!<3e|mY}%+%2%@BSArk8j^8zT?T4e=R!s@`TuGh_AtXsb2kO`lqkg z1(rJElvh@6cKVn9SyD&DrlqHiOUuX^A2MtEk7lVOI*rWC9ycuK+R@{N-I*49=jf3M zv0r_$)_=bf|JI>dgfYE^3x#U6uD0W?PApsP- zF1e5Zid~mnNC3sIOD-gUV%H@X5 zoda*bwg1gu|LTp`_w9Y{)nC5yi_W`cFpQlD_2yMFE1-CSysGs$>O5IMFsf_7tEhG zch2ltGw+=-{hn!4r%awS@$S3{cje}c&;DUnX2!Vmv13M$x^rY&>WJaPhW=p49k&lo zxh?tDK?85OIcdO6{rmMz?9=|EF6i_IzLzw+_ntl!5!oU;D)M(2F~*!yFD^<=kARdZ%c?)Si( zAN=9!KkoVP!$19C%8Z<8{Tk1iJ8#Z84e|>X6&B^6GrxG*yoHOGFJ4-*vb227q7|!F zofEk4{>rM&_pRShvT4i1TOQaDeC+YyLyv6V`je-hdG^Vt9*KPR`R8^%wQKjD$9DXD z^Gh%9j{N1%_U?K8jV-VJ`srpK^!(%9N?rFUq3fGd2Pz))gmD4oK@WNm*AdtHoUY@w zVSn2<37e`qluIrofMVAr7ZO0R>yirzpxAZEg#=LSy5vFvD0W?PApsP-F1e5Zid~mn zNC3sIOD-gUV%H@X59Xw;s73K5KeYsticg9aS()z8& zqf%PU-my6D?)aFpJ|lNuer1oU*IItu@})74CuVNDDev5!Ne?xhJF;?H(XQv}Es752 zY)N=v`;iTka;IiZ&kamVoRu{vD;S&|wJ@b%b|4U$zo@u$$?^pyWfdvQ)+QBfNLrub zX%7787*BH`n5Q{4AC0H~6@S$tJGtaS0w{J}av=c}yDqtq0E%6gTu1=Lu1hW?fMVAr z7ZO0R>yirzpxAZEg#=LSy5vFvD0W?PApsP-F1e5Zid~mnNC3sIOD-gUV%H@X5%_AA_cltrA%Mx3kx8uDVH{NpblD?u}Ih^%;^9D0l^f@s8$kahoCft*K?}WhgzH_qYWe0>oEtjM zSyWWAytpF2tbFC|rRxV3ZW^?4kjFXj*2Lo+2yoRcfX6vuALq0<}N@av=c}yDqtq0E%6gTu1=Lu1hW?fMVAr7ZO0R>yirzpxAZEg#=LS zy5vFvD0W?PApsP-F1e5Zid~mnNC3sIOD-gUV%H@X5VFOPGE)P9_E zmB%^o*2Lo+2yoRcfX6xEALkTAMKnmQtgLyQ zbHj;G&Iujo+<5XhCuYo_=I_1s@i%7tvBB2)4-UGtQ_^LdfBy2(3%yirzpxAZEg#=LSy5vFvD0W?PApsP-F1e5Zid~mn zNC3sIOD-gUV%H@X5#u*gE1`pTKpzHtcWvCSg-m zhjPh<1W@d{@R42?+oynn7o%IbOy57I_{kZz+3Fq!;c3}SS1Fg0nsoLN8-+qqH-mYCH z*1v9N>e{k-KT9djsQ>J{1qqkrY))7ddfE8gskzfL?#&I%$eSCOmKY2!%+DxX9J#b; zVM%iF^3w9;Kwx$M!u9>vZi@0W2VRyirzpxAZEg#=LS zy5vFvD0W?PApsP-F1e5Zid~mnNC3sIOD-gUV%H@X5%&0(a;mklFGGkfE^5lwnW#z$@ z$)y|m7v9%@Qwy(i;IWCfmt05y#jZ;(B!FVq zB^MGvvFnlx382_@$%O<^?7HMa0w{J}av=c}yDqtq0E%6gTu1=Lu1hW?fMVAr7ZO0R z>yirzpxAZEg#=LSy5vFvD0W?PApsP-F1e5Zid~mnNC3sIOD-gUV%H^CO#!cS!o1Fz z7`o0$ZCdZ1p<6%sMm{*_UtH$|B6ABDFU?rCxVWgKELfTxSh8x(z;&e_=D<4>4|5=x zhdDJLjHmwk>CadYc1JO}x#4VBY4SXKEdBt&iL~UK{qeeUq@MszbTtLINmuU2-7-6uU0DkN}EZ zmt05y#jZ;(B!FVqB^MGvvFnlx382_@$%O<^?7HMa0w{J}av=c}yDqtq0E%6gTu1=L zu1hW?fMVAr7ZO0R>yirzpxAZEg#=LSy5vFvD0W?PApsP-F1cz7c$*XEZO)|X+nn3} zE4MlGmJ}D2mnIjk9#~NpT-QI~Wez+v@iGU3d6`r5$$0u-@i#59lS?infMVAr7ZO0R z>yirzpxAZEg#=LSy5vFvD0W?PApsP-F1e5Zid~mnNC3sIOD-gUV%H@X5s9~R=@)mtBxiHNqU}dkP0Ed$IwLTx|IFOk zGv*~P$PET(1tMn@Eh#QsJb&r3@`4r1%LWG4Bp0pg?_~}=H1RSAf_a&Po~U)iwLWm` zcx~9<_D#a3st)Cn3kjgub;*SUQ0%(oLINmuU2-7-6uU0DkN}EZmt05y#jZ;(B!FVq zB^MGvvFnlx382_@$%O<^?7HMa0w{J}av=c}yDqtq0E%6gTu1=Lu1hW?fMVAr7ZO0R z>yirzpxAZEg#=LSy5y=U;AKvjmpOUw#MK`#dgZ8w5nX@x)C-6Ae80={?JxfDk^CcV zW}WfHXHj=7*m)>9KED6%OJ6=cvfaGI5QBrs3?C)@#3X}3zrv{4-Ax61XuU+EC*hh zc$NdfJj<#1SUml&_-hu~$t4#OK(XtR3kjgub;*SUQ0%(oLINmuU2-7-6uU0DkN}EZ zmt05y#jZ;(B!FVqB^MGvvFnlx382_@$%O<^?7HMa0w{J}av=c}yDqtq0E%6gTu1=L zu1hW?fMVAr7ZO0R>yirzpxAZEg#=Js>$*J43G*yx;?O3M-J(~Hs_YpNy*aD$vR>&6 z>JK>Z>61sQ_BSp~3C#O`v!t}!H!j`t>hP$(zpGsPan!fBjCt^_j~-3AEWPOcQO6P! zuX+8Axs&Ey-{HMQySAqsxb?`?epB)${xC4T-#xSE_L-kN=ZC@I>_BAEl10TOOP3`t zt|(bCAh3L8aP9RT=D<4>4|5=xhdJnhT1Q;#^R|xHhW%~dBy6hcP%gQU0E%6gTu1=L zu1hW?fMVAr7ZO0R>yirzpxAZEg#=LSy5vFvD0W?PApsP-F1e5Zid~mnNC3sIOD-gU zV%H@X5)jJj{V$9_G}1FrNNb{6&lGspxAZEg#=LSy5vFvD0W?PApsP-F1e5Zid~mn zNC3sIOD-gUV%H@X5O%9_F<5FbCe5c$fphJj_84)H>o?pSN|qHtcWv zCSg-mhjPh<1W@d{@Fb5pwycbtLwX(A2C+6JnwNK0m9p+qm;xH#ab=$2UKbmq`!jfGX z>nDG2;}hxI2IODg;kCbiVouVOyoqDJ`ox?uH9j%t#9_`A9_GM16AyDBn1?wvAB?B} z6@SqpJGtaS0w{J}av=c}yDqtq0E%6gTu1=Lu1hW?fMVAr7ZO0R>yirzpxAZEg#=LS zy5vFvD0W?PApsP-F1e5Zid~mnNC3sIOD-gUV%H@X5@{S}+z?tigYdav$74jkP4Ny5N_ zh(N)4&#xWO{+0`i8f|*;@fKY+bQv=+=dFTA-rRcrri&JApVj{8U2kt}G1K7vj^rio)i@bEa;QJsAx&g;z=cwf-B35B3G;$Q50A^ zVr6jkrgc>t)@;3R@WzJ+SN^!Umpbt9#7i9r=A{mL!qySj`T(xuwPAnTHwl}nI+RN; zB!FVqB^MGvvFnlx382_@$%O<^?7HMa0w{J}av=c}yDqtq0E%6gTu1=Lu1hW?fMVAr z7ZO0R>yirzpxAZEg#=LSy5vFvD0W?PApsP-F1e5Zid~mnNC3sIOD-gUV%H@X5P)G=)aelDa{t!m5e?E4TE5WiK>c9{T5Ug4wZHMnkI=a-KBlbC$&b*f z{HWziV;)b;+;&smxjT~{YC3mh<+h?-&(&KL9n9I1@WA#X8z$vW%^jZ`6_|F<>^bui zvuDrE4F+=qfyl*6vzC=+Eh#Q3TfHJ>$@-*dSRji>(=f7c>A zx#U6uD0W?PApsP-F1e5Zid~mnNC3sIOD-gUV%H@X5%9@iKoE^0=t6+8@GJi=*ptxk| zvc;tXm#<6-2G=F6Em`Mj4!kt+GzWrtnu8vxb;PwkaqD<(*x&X|!ltSY<&p~tpxAZE zg#=LSy5vFvD0W?PApsP-F1e5Zid~mnNC3sIOD-gUV%H@X5x3>DmJ~rpnX--zK`Zgyebej{1%w1GmnjiYmoaHIYDwYJ-C#_pu>S+$V zH1RYCf_a)#^U-+vU-4HhvXe_LB!FVqB^MGvvFnlx382_@$%O<^?7HMa0w{J}av=c} zyDqtq0E%6gTu1=Lu1hW?fMVAr7ZO0R>yirzpxAZEg#=LSy5vFvD0W?PApsP-F1e5Z zid~mnNC3sIOD-gUV%H@X5 Date: Wed, 29 Jun 2011 22:29:50 +0000 Subject: [PATCH 06/13] Qual: Uniformize code. Actions canvas conflicts with actions hook. So now we always hook to intercept actions. Name of hook must also be unique for each tab. --- htdocs/comm/propal.php | 29 +- htdocs/commande/fiche.php | 28 +- htdocs/compta/facture.php | 21 +- htdocs/contact/fiche.php | 299 +++++++++--------- htdocs/societe/soc.php | 631 +++++++++++++++++++------------------- 5 files changed, 507 insertions(+), 501 deletions(-) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 24cbf40325b..a55bdb2d530 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -27,7 +27,7 @@ * \file htdocs/comm/propal.php * \ingroup propale * \brief Page of commercial proposals card and list - * \version $Id$ + * \version $Id: propal.php,v 1.605 2011/06/29 22:29:51 eldy Exp $ */ require("../main.inc.php"); @@ -59,6 +59,11 @@ $mesg=(GETPOST("msg") ? GETPOST("msg") : GETPOST("mesg")); $year=GETPOST("year"); $month=GETPOST("month"); +// Nombre de ligne pour choix de produit/service predefinis +$NBLINES=4; + +$object = new Propal($db); + // Security check $module='propale'; if (isset($socid)) @@ -76,15 +81,10 @@ else if (isset($id) && $id > 0) if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, $module, $objectid, $dbtable); -// Nombre de ligne pour choix de produit/service predefinis -$NBLINES=4; - -$object = new Propal($db); - // Instantiate hooks of thirdparty module if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) { - $object->callHooks('objectcard'); + $object->callHooks('propalcard'); } @@ -93,12 +93,17 @@ if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) /******************************************************************************/ // Hook of thirdparty module -if (! empty($object->hooks['objectcard'])) +if (! empty($object->hooks['propalcard'])) { - foreach($object->hooks['objectcard'] as $module) + foreach($object->hooks['propalcard'] as $module) { - $module->doActions($object); - $mesg = $module->error; + $reshook+=$module->doActions($object); + if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) + { + $error=$module->error; $errors[]=$module->errors; + if ($action=='add') $action='create'; + if ($action=='update') $action='edit'; + } } } @@ -1950,6 +1955,6 @@ else } $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/06/29 22:29:51 $ - $Revision: 1.605 $'); ?> diff --git a/htdocs/commande/fiche.php b/htdocs/commande/fiche.php index 30432058efe..a2cc4ef68a5 100644 --- a/htdocs/commande/fiche.php +++ b/htdocs/commande/fiche.php @@ -26,7 +26,7 @@ * \file htdocs/commande/fiche.php * \ingroup commande * \brief Page to show customer order - * \version $Id$ + * \version $Id: fiche.php,v 1.520 2011/06/29 22:29:51 eldy Exp $ */ require("../main.inc.php"); @@ -57,19 +57,18 @@ $socid = GETPOST('socid'); $action = GETPOST('action'); $confirm = GETPOST('confirm'); $lineid = GETPOST('lineid'); +$mesg = GETPOST('mesg'); + +$object = new Commande($db); // Security check if ($user->societe_id) $socid=$user->societe_id; $result=restrictedArea($user,'commande',$id,''); -$mesg=isset($_GET['mesg'])?$_GET['mesg']:''; - -$object = new Commande($db); - // Instantiate hooks of thirdparty module if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) { - $object->callHooks('objectcard'); + $object->callHooks('ordercard'); } @@ -77,13 +76,18 @@ if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) /* Actions */ /******************************************************************************/ -// Hook of thirdparty module -if (! empty($object->hooks['objectcard'])) +// Hook of actions +if (! empty($object->hooks['ordercard'])) { - foreach($object->hooks['objectcard'] as $module) + foreach($object->hooks['ordercard'] as $module) { - $module->doActions($object); - $mesg = $module->error; + $reshook+=$module->doActions($object); + if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) + { + $error=$module->error; $errors[]=$module->errors; + if ($action=='add') $action='create'; + if ($action=='update') $action='edit'; + } } } @@ -2097,5 +2101,5 @@ else $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/06/29 22:29:51 $ - $Revision: 1.520 $'); ?> diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 6cfaa6df2d9..c59ed2f9e6d 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -26,7 +26,7 @@ * \file htdocs/compta/facture.php * \ingroup facture * \brief Page to create/see an invoice - * \version $Id: facture.php,v 1.839 2011/06/29 15:48:02 grandoc Exp $ + * \version $Id: facture.php,v 1.840 2011/06/29 22:29:50 eldy Exp $ */ require('../main.inc.php'); @@ -77,7 +77,7 @@ $object=new Facture($db); // Instantiate hooks of thirdparty module if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) { - $object->callHooks('objectcard'); + $object->callHooks('invoicecard'); } @@ -86,13 +86,18 @@ if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) /* Actions */ /******************************************************************************/ -// Hook of thirdparty module -if (! empty($object->hooks['objectcard'])) +// Hook of actions +if (! empty($object->hooks['invoicecard'])) { - foreach($object->hooks['objectcard'] as $module) + foreach($object->hooks['invoicecard'] as $module) { - $module->doActions($object); - $mesg = $module->error; + $reshook+=$module->doActions($object); + if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) + { + $error=$module->error; $errors[]=$module->errors; + if ($action=='add') $action='create'; + if ($action=='update') $action='edit'; + } } } @@ -3196,5 +3201,5 @@ else $db->close(); -llxFooter('$Date: 2011/06/29 15:48:02 $ - $Revision: 1.839 $'); +llxFooter('$Date: 2011/06/29 22:29:50 $ - $Revision: 1.840 $'); ?> diff --git a/htdocs/contact/fiche.php b/htdocs/contact/fiche.php index 4f59a16eb91..472cdd6571b 100644 --- a/htdocs/contact/fiche.php +++ b/htdocs/contact/fiche.php @@ -24,7 +24,7 @@ * \file htdocs/contact/fiche.php * \ingroup societe * \brief Card of a contact - * \version $Id$ + * \version $Id: fiche.php,v 1.214 2011/06/29 22:29:51 eldy Exp $ */ require("../main.inc.php"); @@ -45,11 +45,11 @@ $action = GETPOST('action'); $socid = GETPOST("socid"); $id = GETPOST("id"); +$object = new Contact($db); + // Security check if ($user->societe_id) $socid=$user->societe_id; -$object = new Contact($db); - // Get object canvas (By default, this is not defined, so standard usage of dolibarr) if (!empty($id)) $object->getCanvas($id); $canvas = (!empty($object->canvas)?$object->canvas:GETPOST("canvas")); @@ -68,63 +68,53 @@ else $result = restrictedArea($user, 'contact', $id, 'socpeople'); // If we create a contact with no company (shared contacts), no check on write permission } +// Instantiate hooks of thirdparty module +if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) +{ + $object->callHooks('contactcard'); +} + + /* * Actions */ -// If canvas actions are defined, because on url, or because contact was created with canvas feature on, we use the canvas feature. -// If canvas actions are not defined, we use standard feature. -if (method_exists($objcanvas->control,'doActions')) +// Hook of actions +if (! empty($object->hooks['contactcard'])) { - // ----------------------------------------- - // When used with CANVAS - // ----------------------------------------- - $objcanvas->doActions($id); - if (empty($objcanvas->error) && (empty($objcanvas->errors) || sizeof($objcanvas->errors) == 0)) + foreach($object->hooks['contactcard'] as $module) { - if ($action=='add') { $objcanvas->action='create'; $action='create'; } - if ($action=='update') { $objcanvas->action='view'; $action='view'; } - } - else - { - $error=$objcanvas->error; $errors=$objcanvas->errors; - if ($action=='add') { $objcanvas->action='create'; $action='create'; } - if ($action=='update') { $objcanvas->action='edit'; $action='edit'; } + $reshook+=$module->doActions($object); + if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) + { + $error=$module->error; $errors[]=$module->errors; + if ($action=='add') $action='create'; + if ($action=='update') $action='edit'; + } } } -else -{ - // ----------------------------------------- - // When used in standard mode - // ----------------------------------------- - // Creation utilisateur depuis contact - if ($_POST["action"] == 'confirm_create_user' && $_POST["confirm"] == 'yes' && $user->rights->user->user->creer) +// Creation utilisateur depuis contact +if ($_POST["action"] == 'confirm_create_user' && $_POST["confirm"] == 'yes' && $user->rights->user->user->creer) +{ + // Recuperation contact actuel + $result = $object->fetch($_GET["id"]); + + if ($result > 0) { - // Recuperation contact actuel - $result = $object->fetch($_GET["id"]); + $db->begin(); + + // Creation user + $nuser = new User($db); + $result=$nuser->create_from_contact($object,$_POST["login"]); if ($result > 0) { - $db->begin(); - - // Creation user - $nuser = new User($db); - $result=$nuser->create_from_contact($object,$_POST["login"]); - - if ($result > 0) + $result2=$nuser->setPassword($user,$_POST["password"],0,1,1); + if ($result2) { - $result2=$nuser->setPassword($user,$_POST["password"],0,1,1); - if ($result2) - { - $db->commit(); - } - else - { - $error=$nuser->error; $errors=$nuser->errors; - $db->rollback(); - } + $db->commit(); } else { @@ -134,34 +124,131 @@ else } else { - $error=$object->error; $errors=$object->errors; + $error=$nuser->error; $errors=$nuser->errors; + $db->rollback(); + } + } + else + { + $error=$object->error; $errors=$object->errors; + } +} + +// Cancel +if (GETPOST("cancel") && GETPOST('backtopage')) +{ + header("Location: ".GETPOST('backtopage')); + exit; +} + +// Add contact +if (GETPOST("action") == 'add' && $user->rights->societe->contact->creer) +{ + $db->begin(); + + if ($canvas) $object->canvas=$canvas; + + $object->socid = $_POST["socid"]; + $object->name = $_POST["name"]; + $object->firstname = $_POST["firstname"]; + $object->civilite_id = $_POST["civilite_id"]; + $object->poste = $_POST["poste"]; + $object->address = $_POST["address"]; + $object->zip = $_POST["zipcode"]; + $object->town = $_POST["town"]; + $object->fk_pays = $_POST["pays_id"]; + $object->fk_departement = $_POST["departement_id"]; + $object->email = $_POST["email"]; + $object->phone_pro = $_POST["phone_pro"]; + $object->phone_perso = $_POST["phone_perso"]; + $object->phone_mobile = $_POST["phone_mobile"]; + $object->fax = $_POST["fax"]; + $object->jabberid = $_POST["jabberid"]; + $object->priv = $_POST["priv"]; + $object->note = $_POST["note"]; + + // Note: Correct date should be completed with location to have exact GM time of birth. + $object->birthday = dol_mktime(0,0,0,$_POST["birthdaymonth"],$_POST["birthdayday"],$_POST["birthdayyear"]); + $object->birthday_alert = $_POST["birthday_alert"]; + + if (! $_POST["name"]) + { + $error++; $errors[]=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label")); + $_GET["action"] = $_POST["action"] = 'create'; + } + + if ($_POST["name"]) + { + $id = $object->create($user); + if ($id <= 0) + { + $error++; $errors[]=($object->error?array($object->error):$object->errors); + $_GET["action"] = $_POST["action"] = 'create'; } } - // Cancel - if (GETPOST("cancel") && GETPOST('backtopage')) + if (! $error && $id > 0) { - header("Location: ".GETPOST('backtopage')); + $db->commit(); + if (GETPOST('backtopage')) $url=GETPOST('backtopage'); + else $url='fiche.php?id='.$id; + Header("Location: ".$url); exit; } - - // Add contact - if (GETPOST("action") == 'add' && $user->rights->societe->contact->creer) + else { - $db->begin(); + $db->rollback(); + } +} - if ($canvas) $object->canvas=$canvas; +if (GETPOST("action") == 'confirm_delete' && GETPOST("confirm") == 'yes' && $user->rights->societe->contact->supprimer) +{ + $result=$object->fetch($_GET["id"]); + + $object->old_name = $_POST["old_name"]; + $object->old_firstname = $_POST["old_firstname"]; + + $result = $object->delete(); + if ($result > 0) + { + Header("Location: index.php"); + exit; + } + else + { + $error=$object->error; $errors[]=$object->errors; + } +} + +if ($_POST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->societe->contact->creer) +{ + if (empty($_POST["name"])) + { + $error++; $errors=array($langs->trans("ErrorFieldRequired",$langs->transnoentities("Name").' / '.$langs->transnoentities("Label"))); + $_GET["action"] = $_POST["action"] = 'edit'; + } + + if (! sizeof($errors)) + { + $object->fetch($_POST["contactid"]); + + $object->oldcopy=dol_clone($object); + + $object->old_name = $_POST["old_name"]; + $object->old_firstname = $_POST["old_firstname"]; $object->socid = $_POST["socid"]; $object->name = $_POST["name"]; $object->firstname = $_POST["firstname"]; $object->civilite_id = $_POST["civilite_id"]; $object->poste = $_POST["poste"]; + $object->address = $_POST["address"]; $object->zip = $_POST["zipcode"]; $object->town = $_POST["town"]; + $object->fk_departement = $_POST["departement_id"]; $object->fk_pays = $_POST["pays_id"]; - $object->fk_departement = $_POST["departement_id"]; + $object->email = $_POST["email"]; $object->phone_pro = $_POST["phone_pro"]; $object->phone_perso = $_POST["phone_perso"]; @@ -171,108 +258,16 @@ else $object->priv = $_POST["priv"]; $object->note = $_POST["note"]; - // Note: Correct date should be completed with location to have exact GM time of birth. - $object->birthday = dol_mktime(0,0,0,$_POST["birthdaymonth"],$_POST["birthdayday"],$_POST["birthdayyear"]); - $object->birthday_alert = $_POST["birthday_alert"]; + $result = $object->update($_POST["contactid"], $user); - if (! $_POST["name"]) - { - $error++; $errors[]=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label")); - $_GET["action"] = $_POST["action"] = 'create'; - } - - if ($_POST["name"]) - { - $id = $object->create($user); - if ($id <= 0) - { - $error++; $errors[]=($object->error?array($object->error):$object->errors); - $_GET["action"] = $_POST["action"] = 'create'; - } - } - - if (! $error && $id > 0) - { - $db->commit(); - if (GETPOST('backtopage')) $url=GETPOST('backtopage'); - else $url='fiche.php?id='.$id; - Header("Location: ".$url); - exit; - } - else - { - $db->rollback(); - } - } - - if (GETPOST("action") == 'confirm_delete' && GETPOST("confirm") == 'yes' && $user->rights->societe->contact->supprimer) - { - $result=$object->fetch($_GET["id"]); - - $object->old_name = $_POST["old_name"]; - $object->old_firstname = $_POST["old_firstname"]; - - $result = $object->delete(); if ($result > 0) { - Header("Location: index.php"); - exit; + $object->old_name=''; + $object->old_firstname=''; } else { - $error=$object->error; $errors[]=$object->errors; - } - } - - if ($_POST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->societe->contact->creer) - { - if (empty($_POST["name"])) - { - $error++; $errors=array($langs->trans("ErrorFieldRequired",$langs->transnoentities("Name").' / '.$langs->transnoentities("Label"))); - $_GET["action"] = $_POST["action"] = 'edit'; - } - - if (! sizeof($errors)) - { - $object->fetch($_POST["contactid"]); - - $object->oldcopy=dol_clone($object); - - $object->old_name = $_POST["old_name"]; - $object->old_firstname = $_POST["old_firstname"]; - - $object->socid = $_POST["socid"]; - $object->name = $_POST["name"]; - $object->firstname = $_POST["firstname"]; - $object->civilite_id = $_POST["civilite_id"]; - $object->poste = $_POST["poste"]; - - $object->address = $_POST["address"]; - $object->zip = $_POST["zipcode"]; - $object->town = $_POST["town"]; - $object->fk_departement = $_POST["departement_id"]; - $object->fk_pays = $_POST["pays_id"]; - - $object->email = $_POST["email"]; - $object->phone_pro = $_POST["phone_pro"]; - $object->phone_perso = $_POST["phone_perso"]; - $object->phone_mobile = $_POST["phone_mobile"]; - $object->fax = $_POST["fax"]; - $object->jabberid = $_POST["jabberid"]; - $object->priv = $_POST["priv"]; - $object->note = $_POST["note"]; - - $result = $object->update($_POST["contactid"], $user); - - if ($result > 0) - { - $object->old_name=''; - $object->old_firstname=''; - } - else - { - $error=$object->error; $errors=$object->errors; - } + $error=$object->error; $errors=$object->errors; } } } @@ -950,5 +945,5 @@ else $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/06/29 22:29:51 $ - $Revision: 1.214 $'); ?> diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index c40f9404c24..42120a158c0 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -26,7 +26,7 @@ * \file htdocs/societe/soc.php * \ingroup societe * \brief Third party card page - * \version $Id: soc.php,v 1.111 2011/06/25 19:55:36 eldy Exp $ + * \version $Id: soc.php,v 1.112 2011/06/29 22:29:51 eldy Exp $ */ require("../main.inc.php"); @@ -50,11 +50,17 @@ if ($conf->notification->enabled) $langs->load("mails"); $action = GETPOST('action'); $confirm = GETPOST('confirm'); +$error=0; $errors=array(); + +$extrafields = new ExtraFields($db); + +$soc = new Societe($db); // TODO Replace this wit object +$object = new Societe($db); + // Security check $socid = GETPOST("socid"); if ($user->societe_id) $socid=$user->societe_id; -$soc = new Societe($db); // Get object canvas (By default, this is not defined, so standard usage of dolibarr) if (!empty($socid)) $soc->getCanvas($socid); $canvas = (!empty($soc->canvas)?$soc->canvas:GETPOST("canvas")); @@ -73,294 +79,202 @@ else $result = restrictedArea($user, 'societe', $socid); } -$error=0; $errors=array(); +// Instantiate hooks of thirdparty module +if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) +{ + $object->callHooks('thirdpartycard'); +} -$extrafields = new ExtraFields($db); /* * Actions */ -// If canvas actions are defined, because on url, or because contact was created with canvas feature on, we use the canvas feature. -// If canvas actions are not defined, we use standard feature. -if (method_exists($objcanvas->control,'doActions')) +// Hook of actions +if (! empty($object->hooks['thirdpartycard'])) { - // ----------------------------------------- - // When used with CANVAS - // ----------------------------------------- - $objcanvas->doActions($socid); - - if (empty($objcanvas->error) && (empty($objcanvas->errors) || sizeof($objcanvas->errors) == 0)) + foreach($object->hooks['thirdpartycard'] as $module) { - if ($action=='add') { $objcanvas->action='create'; $action='create'; } - if ($action=='update') { $objcanvas->action='view'; $action='view'; } + $reshook+=$module->doActions($object); + if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) + { + $error=$module->error; $errors[]=$module->errors; + if ($action=='add') $action='create'; + if ($action=='update') $action='edit'; + } + } +} + + +if ($_POST["getcustomercode"]) +{ + // We defined value code_client + $_POST["code_client"]="Acompleter"; +} + +if ($_POST["getsuppliercode"]) +{ + // We defined value code_fournisseur + $_POST["code_fournisseur"]="Acompleter"; +} + +// Add new third party +if ((! $_POST["getcustomercode"] && ! $_POST["getsuppliercode"]) +&& ($action == 'add' || $action == 'update') && $user->rights->societe->creer) +{ + require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); + + if ($action == 'update') + { + $soc->fetch($socid); + } + else if ($canvas) $soc->canvas=$canvas; + + if ($_REQUEST["private"] == 1) + { + $soc->particulier = $_REQUEST["private"]; + + $soc->name = empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)?trim($_POST["prenom"].' '.$_POST["nom"]):trim($_POST["nom"].' '.$_POST["prenom"]); + $soc->nom = $soc->name; // TODO obsolete + $soc->nom_particulier = $_POST["nom"]; + $soc->prenom = $_POST["prenom"]; + $soc->civilite_id = $_POST["civilite_id"]; } else { - $error=$objcanvas->error; $errors=$objcanvas->errors; - if ($action=='add') { $objcanvas->action='create'; $action='create'; } - if ($action=='update') { $objcanvas->action='edit'; $action='edit'; } + $soc->name = $_POST["nom"]; + $soc->nom = $soc->name; // TODO obsolete } -} -else -{ - // ----------------------------------------- - // When used in standard mode - // ----------------------------------------- + $soc->address = $_POST["adresse"]; + $soc->adresse = $_POST["adresse"]; // TODO obsolete + $soc->zip = $_POST["zipcode"]; + $soc->cp = $_POST["zipcode"]; // TODO obsolete + $soc->town = $_POST["town"]; + $soc->ville = $_POST["town"]; // TODO obsolete + $soc->pays_id = $_POST["pays_id"]; + $soc->departement_id = $_POST["departement_id"]; + $soc->tel = $_POST["tel"]; + $soc->fax = $_POST["fax"]; + $soc->email = trim($_POST["email"]); + $soc->url = trim($_POST["url"]); + $soc->siren = $_POST["idprof1"]; + $soc->siret = $_POST["idprof2"]; + $soc->ape = $_POST["idprof3"]; + $soc->idprof4 = $_POST["idprof4"]; + $soc->prefix_comm = $_POST["prefix_comm"]; + $soc->code_client = $_POST["code_client"]; + $soc->code_fournisseur = $_POST["code_fournisseur"]; + $soc->capital = $_POST["capital"]; + $soc->gencod = $_POST["gencod"]; - if ($_POST["getcustomercode"]) + $soc->tva_intra = $_POST["tva_intra"]; + $soc->tva_assuj = $_POST["assujtva_value"]; + $soc->status = $_POST["status"]; + + // Local Taxes + $soc->localtax1_assuj = $_POST["localtax1assuj_value"]; + $soc->localtax2_assuj = $_POST["localtax2assuj_value"]; + + $soc->forme_juridique_code = $_POST["forme_juridique_code"]; + $soc->effectif_id = $_POST["effectif_id"]; + if ($_REQUEST["private"] == 1) { - // We defined value code_client - $_POST["code_client"]="Acompleter"; + $soc->typent_id = 8; // TODO predict another method if the field "special" change of rowid + } + else + { + $soc->typent_id = $_POST["typent_id"]; } - if ($_POST["getsuppliercode"]) + $soc->client = $_POST["client"]; + $soc->fournisseur = $_POST["fournisseur"]; + $soc->fournisseur_categorie = $_POST["fournisseur_categorie"]; + + $soc->commercial_id = $_POST["commercial_id"]; + $soc->default_lang = $_POST["default_lang"]; + + // Get extra fields + foreach($_POST as $key => $value) { - // We defined value code_fournisseur - $_POST["code_fournisseur"]="Acompleter"; + if (preg_match("/^options_/",$key)) + { + $soc->array_options[$key]=$_POST[$key]; + } } - // Add new third party - if ((! $_POST["getcustomercode"] && ! $_POST["getsuppliercode"]) - && ($action == 'add' || $action == 'update') && $user->rights->societe->creer) + if (GETPOST('deletephoto')) $soc->logo = ''; + else if (! empty($_FILES['photo']['name'])) $soc->logo = dol_sanitizeFileName($_FILES['photo']['name']); + + // Check parameters + if (empty($_POST["cancel"])) { - require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); - - if ($action == 'update') + if (! empty($soc->email) && ! isValidEMail($soc->email)) { - $soc->fetch($socid); + $langs->load("errors"); + $error++; $errors[] = $langs->trans("ErrorBadEMail",$soc->email); + $action = ($action=='add'?'create':'edit'); } - else if ($canvas) $soc->canvas=$canvas; - - if ($_REQUEST["private"] == 1) + if (! empty($soc->url) && ! isValidUrl($soc->url)) { - $soc->particulier = $_REQUEST["private"]; - - $soc->name = empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)?trim($_POST["prenom"].' '.$_POST["nom"]):trim($_POST["nom"].' '.$_POST["prenom"]); - $soc->nom = $soc->name; // TODO obsolete - $soc->nom_particulier = $_POST["nom"]; - $soc->prenom = $_POST["prenom"]; - $soc->civilite_id = $_POST["civilite_id"]; + $langs->load("errors"); + $error++; $errors[] = $langs->trans("ErrorBadUrl",$soc->url); + $action = ($action=='add'?'create':'edit'); } - else + if ($soc->fournisseur && ! $conf->fournisseur->enabled) { - $soc->name = $_POST["nom"]; - $soc->nom = $soc->name; // TODO obsolete + $langs->load("errors"); + $error++; $errors[] = $langs->trans("ErrorSupplierModuleNotEnabled"); + $action = ($action=='add'?'create':'edit'); } - $soc->address = $_POST["adresse"]; - $soc->adresse = $_POST["adresse"]; // TODO obsolete - $soc->zip = $_POST["zipcode"]; - $soc->cp = $_POST["zipcode"]; // TODO obsolete - $soc->town = $_POST["town"]; - $soc->ville = $_POST["town"]; // TODO obsolete - $soc->pays_id = $_POST["pays_id"]; - $soc->departement_id = $_POST["departement_id"]; - $soc->tel = $_POST["tel"]; - $soc->fax = $_POST["fax"]; - $soc->email = trim($_POST["email"]); - $soc->url = trim($_POST["url"]); - $soc->siren = $_POST["idprof1"]; - $soc->siret = $_POST["idprof2"]; - $soc->ape = $_POST["idprof3"]; - $soc->idprof4 = $_POST["idprof4"]; - $soc->prefix_comm = $_POST["prefix_comm"]; - $soc->code_client = $_POST["code_client"]; - $soc->code_fournisseur = $_POST["code_fournisseur"]; - $soc->capital = $_POST["capital"]; - $soc->gencod = $_POST["gencod"]; + } - $soc->tva_intra = $_POST["tva_intra"]; - $soc->tva_assuj = $_POST["assujtva_value"]; - $soc->status = $_POST["status"]; - - // Local Taxes - $soc->localtax1_assuj = $_POST["localtax1assuj_value"]; - $soc->localtax2_assuj = $_POST["localtax2assuj_value"]; - - $soc->forme_juridique_code = $_POST["forme_juridique_code"]; - $soc->effectif_id = $_POST["effectif_id"]; - if ($_REQUEST["private"] == 1) + if (! $error) + { + if ($action == 'add') { - $soc->typent_id = 8; // TODO predict another method if the field "special" change of rowid - } - else - { - $soc->typent_id = $_POST["typent_id"]; - } + $db->begin(); - $soc->client = $_POST["client"]; - $soc->fournisseur = $_POST["fournisseur"]; - $soc->fournisseur_categorie = $_POST["fournisseur_categorie"]; + if (empty($soc->client)) $soc->code_client=''; + if (empty($soc->fournisseur)) $soc->code_fournisseur=''; - $soc->commercial_id = $_POST["commercial_id"]; - $soc->default_lang = $_POST["default_lang"]; - - // Get extra fields - foreach($_POST as $key => $value) - { - if (preg_match("/^options_/",$key)) + $result = $soc->create($user); + if ($result >= 0) { - $soc->array_options[$key]=$_POST[$key]; - } - } - - if (GETPOST('deletephoto')) $soc->logo = ''; - else if (! empty($_FILES['photo']['name'])) $soc->logo = dol_sanitizeFileName($_FILES['photo']['name']); - - // Check parameters - if (empty($_POST["cancel"])) - { - if (! empty($soc->email) && ! isValidEMail($soc->email)) - { - $langs->load("errors"); - $error++; $errors[] = $langs->trans("ErrorBadEMail",$soc->email); - $action = ($action=='add'?'create':'edit'); - } - if (! empty($soc->url) && ! isValidUrl($soc->url)) - { - $langs->load("errors"); - $error++; $errors[] = $langs->trans("ErrorBadUrl",$soc->url); - $action = ($action=='add'?'create':'edit'); - } - if ($soc->fournisseur && ! $conf->fournisseur->enabled) - { - $langs->load("errors"); - $error++; $errors[] = $langs->trans("ErrorSupplierModuleNotEnabled"); - $action = ($action=='add'?'create':'edit'); - } - } - - if (! $error) - { - if ($action == 'add') - { - $db->begin(); - - if (empty($soc->client)) $soc->code_client=''; - if (empty($soc->fournisseur)) $soc->code_fournisseur=''; - - $result = $soc->create($user); - if ($result >= 0) + if ($soc->particulier) { - if ($soc->particulier) + dol_syslog("This thirdparty is a personal people",LOG_DEBUG); + $contact=new Contact($db); + + $contact->civilite_id = $soc->civilite_id; + $contact->name=$soc->nom_particulier; + $contact->firstname=$soc->prenom; + $contact->address=$soc->address; + $contact->zip=$soc->zip; + $contact->cp=$soc->cp; + $contact->town=$soc->town; + $contact->ville=$soc->ville; + $contact->fk_pays=$soc->fk_pays; + $contact->socid=$soc->id; // fk_soc + $contact->status=1; + $contact->email=$soc->email; + $contact->priv=0; + + $result=$contact->create($user); + if (! $result >= 0) { - dol_syslog("This thirdparty is a personal people",LOG_DEBUG); - $contact=new Contact($db); - - $contact->civilite_id = $soc->civilite_id; - $contact->name=$soc->nom_particulier; - $contact->firstname=$soc->prenom; - $contact->address=$soc->address; - $contact->zip=$soc->zip; - $contact->cp=$soc->cp; - $contact->town=$soc->town; - $contact->ville=$soc->ville; - $contact->fk_pays=$soc->fk_pays; - $contact->socid=$soc->id; // fk_soc - $contact->status=1; - $contact->email=$soc->email; - $contact->priv=0; - - $result=$contact->create($user); - if (! $result >= 0) - { - $error=$contact->error; $errors=$contact->errors; - } + $error=$contact->error; $errors=$contact->errors; } - - ### Gestion du logo de la société - $dir = $conf->societe->dir_output."/".$soc->id."/logos/"; - $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']); - if ($file_OK) - { - if (image_format_supported($_FILES['photo']['name'])) - { - create_exdir($dir); - - if (@is_dir($dir)) - { - $newfile=$dir.'/'.dol_sanitizeFileName($_FILES['photo']['name']); - $result = dol_move_uploaded_file($_FILES['photo']['tmp_name'], $newfile, 1); - - if (! $result > 0) - { - $errors[] = "ErrorFailedToSaveFile"; - } - else - { - // Create small thumbs for company (Ratio is near 16/9) - // Used on logon for example - $imgThumbSmall = vignette($newfile, $maxwidthsmall, $maxheightsmall, '_small', $quality); - - // Create mini thumbs for company (Ratio is near 16/9) - // Used on menu or for setup page for example - $imgThumbMini = vignette($newfile, $maxwidthmini, $maxheightmini, '_mini', $quality); - } - } - } - } - ### Gestion du logo de la société - } - else - { - $error=$soc->error; $errors=$soc->errors; - } - - if ($result >= 0) - { - $db->commit(); - - $url=$_SERVER["PHP_SELF"]."?socid=".$soc->id; - if (($soc->client == 1 || $soc->client == 3) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $url=DOL_URL_ROOT."/comm/fiche.php?socid=".$soc->id; - else if ($soc->fournisseur == 1) $url=DOL_URL_ROOT."/fourn/fiche.php?socid=".$soc->id; - Header("Location: ".$url); - exit; - } - else - { - $db->rollback(); - $action='create'; - } - } - - if ($action == 'update') - { - if ($_POST["cancel"]) - { - Header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); - exit; - } - - $soc->oldcopy=dol_clone($soc); - - // To not set code if third party is not concerned. But if it had values, we keep them. - if (empty($soc->client) && empty($soc->oldcopy->code_client)) $soc->code_client=''; - if (empty($soc->fournisseur)&& empty($soc->oldcopy->code_fournisseur)) $soc->code_fournisseur=''; - //var_dump($soc);exit; - - $result = $soc->update($socid,$user,1,$soc->oldcopy->codeclient_modifiable(),$soc->oldcopy->codefournisseur_modifiable()); - if ($result <= 0) - { - $error = $soc->error; $errors = $soc->errors; } ### Gestion du logo de la société - $dir = $conf->societe->dir_output."/".$soc->id."/logos"; + $dir = $conf->societe->dir_output."/".$soc->id."/logos/"; $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']); if ($file_OK) { - if (GETPOST('deletephoto')) + if (image_format_supported($_FILES['photo']['name'])) { - $fileimg=$conf->societe->dir_output.'/'.$soc->id.'/logos/'.$soc->logo; - $dirthumbs=$conf->societe->dir_output.'/'.$soc->id.'/logos/thumbs'; - dol_delete_file($fileimg); - dol_delete_dir_recursive($dirthumbs); - } - - if (image_format_supported($_FILES['photo']['name']) > 0) - { - dol_mkdir($dir); + create_exdir($dir); if (@is_dir($dir)) { @@ -383,86 +297,169 @@ else } } } - else - { - $errors[] = "ErrorBadImageFormat"; - } } ### Gestion du logo de la société - - if (! $error && ! sizeof($errors)) - { - - Header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); - exit; - } - else - { - $soc->id = $socid; - $action= "edit"; - } } - } - } - - // Delete third party - if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->societe->supprimer) - { - $soc->fetch($socid); - $result = $soc->delete($socid); - - if ($result >= 0) - { - Header("Location: ".DOL_URL_ROOT."/societe/societe.php?delsoc=".$soc->nom.""); - exit; - } - else - { - $langs->load("errors"); - $error=$langs->trans($soc->error); $errors = $soc->errors; - $action=''; - } - } - - - /* - * Generate document - */ - if ($action == 'builddoc') // En get ou en post - { - if (is_numeric(GETPOST('model'))) - { - $error=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Model")); - } - else - { - require_once(DOL_DOCUMENT_ROOT.'/includes/modules/societe/modules_societe.class.php'); - - $soc = new Societe($db); - $soc->fetch($socid); - $soc->fetch_thirdparty(); - - // Define output language - $outputlangs = $langs; - $newlang=''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$fac->client->default_lang; - if (! empty($newlang)) + else { - $outputlangs = new Translate("",$conf); - $outputlangs->setDefaultLang($newlang); + $error=$soc->error; $errors=$soc->errors; } - $result=thirdparty_doc_create($db, $soc->id, '', $_REQUEST['model'], $outputlangs); - if ($result <= 0) + + if ($result >= 0) { - dol_print_error($db,$result); + $db->commit(); + + $url=$_SERVER["PHP_SELF"]."?socid=".$soc->id; + if (($soc->client == 1 || $soc->client == 3) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $url=DOL_URL_ROOT."/comm/fiche.php?socid=".$soc->id; + else if ($soc->fournisseur == 1) $url=DOL_URL_ROOT."/fourn/fiche.php?socid=".$soc->id; + Header("Location: ".$url); exit; } else { - Header ('Location: '.$_SERVER["PHP_SELF"].'?socid='.$soc->id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#builddoc')); + $db->rollback(); + $action='create'; + } + } + + if ($action == 'update') + { + if ($_POST["cancel"]) + { + Header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); exit; } + + $soc->oldcopy=dol_clone($soc); + + // To not set code if third party is not concerned. But if it had values, we keep them. + if (empty($soc->client) && empty($soc->oldcopy->code_client)) $soc->code_client=''; + if (empty($soc->fournisseur)&& empty($soc->oldcopy->code_fournisseur)) $soc->code_fournisseur=''; + //var_dump($soc);exit; + + $result = $soc->update($socid,$user,1,$soc->oldcopy->codeclient_modifiable(),$soc->oldcopy->codefournisseur_modifiable()); + if ($result <= 0) + { + $error = $soc->error; $errors = $soc->errors; + } + + ### Gestion du logo de la société + $dir = $conf->societe->dir_output."/".$soc->id."/logos"; + $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']); + if ($file_OK) + { + if (GETPOST('deletephoto')) + { + $fileimg=$conf->societe->dir_output.'/'.$soc->id.'/logos/'.$soc->logo; + $dirthumbs=$conf->societe->dir_output.'/'.$soc->id.'/logos/thumbs'; + dol_delete_file($fileimg); + dol_delete_dir_recursive($dirthumbs); + } + + if (image_format_supported($_FILES['photo']['name']) > 0) + { + dol_mkdir($dir); + + if (@is_dir($dir)) + { + $newfile=$dir.'/'.dol_sanitizeFileName($_FILES['photo']['name']); + $result = dol_move_uploaded_file($_FILES['photo']['tmp_name'], $newfile, 1); + + if (! $result > 0) + { + $errors[] = "ErrorFailedToSaveFile"; + } + else + { + // Create small thumbs for company (Ratio is near 16/9) + // Used on logon for example + $imgThumbSmall = vignette($newfile, $maxwidthsmall, $maxheightsmall, '_small', $quality); + + // Create mini thumbs for company (Ratio is near 16/9) + // Used on menu or for setup page for example + $imgThumbMini = vignette($newfile, $maxwidthmini, $maxheightmini, '_mini', $quality); + } + } + } + else + { + $errors[] = "ErrorBadImageFormat"; + } + } + ### Gestion du logo de la société + + if (! $error && ! sizeof($errors)) + { + + Header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); + exit; + } + else + { + $soc->id = $socid; + $action= "edit"; + } + } + } +} + +// Delete third party +if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->societe->supprimer) +{ + $soc->fetch($socid); + $result = $soc->delete($socid); + + if ($result >= 0) + { + Header("Location: ".DOL_URL_ROOT."/societe/societe.php?delsoc=".$soc->nom.""); + exit; + } + else + { + $langs->load("errors"); + $error=$langs->trans($soc->error); $errors = $soc->errors; + $action=''; + } +} + + +/* + * Generate document + */ +if ($action == 'builddoc') // En get ou en post +{ + if (is_numeric(GETPOST('model'))) + { + $error=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Model")); + } + else + { + require_once(DOL_DOCUMENT_ROOT.'/includes/modules/societe/modules_societe.class.php'); + + $soc = new Societe($db); + $soc->fetch($socid); + $soc->fetch_thirdparty(); + + // Define output language + $outputlangs = $langs; + $newlang=''; + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$fac->client->default_lang; + if (! empty($newlang)) + { + $outputlangs = new Translate("",$conf); + $outputlangs->setDefaultLang($newlang); + } + $result=thirdparty_doc_create($db, $soc->id, '', $_REQUEST['model'], $outputlangs); + if ($result <= 0) + { + dol_print_error($db,$result); + exit; + } + else + { + Header ('Location: '.$_SERVER["PHP_SELF"].'?socid='.$soc->id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#builddoc')); + exit; } } } @@ -1946,5 +1943,5 @@ else $db->close(); -llxFooter('$Date: 2011/06/25 19:55:36 $ - $Revision: 1.111 $'); +llxFooter('$Date: 2011/06/29 22:29:51 $ - $Revision: 1.112 $'); ?> \ No newline at end of file From d212413d0804ed3a2a20c0a17a23554ab8e0a288 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 29 Jun 2011 22:41:49 +0000 Subject: [PATCH 07/13] New: Can add user login into menu urls. --- htdocs/includes/menus/standard/eldy.lib.php | 3 ++- htdocs/includes/modules/modCashDesk.class.php | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/includes/menus/standard/eldy.lib.php b/htdocs/includes/menus/standard/eldy.lib.php index 5bdeefeba03..79a43e43887 100644 --- a/htdocs/includes/menus/standard/eldy.lib.php +++ b/htdocs/includes/menus/standard/eldy.lib.php @@ -21,7 +21,7 @@ /** * \file htdocs/includes/menus/standard/eldy.lib.php * \brief Library for file eldy menus - * \version $Id: eldy.lib.php,v 1.52 2011/06/29 17:55:33 eldy Exp $ + * \version $Id: eldy.lib.php,v 1.53 2011/06/29 22:41:49 eldy Exp $ */ @@ -468,6 +468,7 @@ function print_eldy_menu($db,$atarget,$type_user) } $url.="idmenu=".$newTabMenu[$i]['rowid']; } + $url=preg_replace('/__LOGIN__/',$user->login,$url); // Define the class (top menu selected or not) if (! empty($_SESSION['idmenu']) && $newTabMenu[$i]['rowid'] == $_SESSION['idmenu']) $classname='class="tmenusel"'; diff --git a/htdocs/includes/modules/modCashDesk.class.php b/htdocs/includes/modules/modCashDesk.class.php index 8ba82085c8a..57667425bde 100644 --- a/htdocs/includes/modules/modCashDesk.class.php +++ b/htdocs/includes/modules/modCashDesk.class.php @@ -19,7 +19,7 @@ /** * \defgroup pos Module points of sale * \brief Module to manage points of sale - * \version $Id$ + * \version $Id: modCashDesk.class.php,v 1.25 2011/06/29 22:41:49 eldy Exp $ */ /** @@ -55,7 +55,7 @@ class modCashDesk extends DolibarrModules $this->name = preg_replace('/^mod/i','',get_class($this)); $this->description = "CashDesk module"; - $this->revision = explode(' ','$Revision$'); + $this->revision = explode(' ','$Revision: 1.25 $'); $this->version = 'dolibarr'; $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); @@ -97,7 +97,7 @@ class modCashDesk extends DolibarrModules 'titre'=>'CashDeskMenu', 'mainmenu'=>'cashdesk', 'leftmenu'=>'1', // Use 1 if you also want to add left menu entries using this descriptor. Use 0 if left menu entries are defined in a file pre.inc.php (old school). - 'url'=>'/cashdesk/index.php', + 'url'=>'/cashdesk/index.php?user=__LOGIN__', 'langs'=>'cashdesk', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. 'position'=>100, 'enabled'=>'$conf->cashdesk->enabled', From 3b81558d2ddf0a3dac3dadd7ba8975cf7262ac86 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 29 Jun 2011 22:42:42 +0000 Subject: [PATCH 08/13] New: Can add user login into menu urls added by modules. --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d721ec3a8eb..951361e26b3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ -------------------------------------------------------------- English Dolibarr ChangeLog -$Id$ +$Id: ChangeLog,v 1.420 2011/06/29 22:42:42 eldy Exp $ -------------------------------------------------------------- ***** ChangeLog for 3.1 compared to 3.0 ***** @@ -92,7 +92,7 @@ For developers: - New: Dictionnary setup works with very large external dictionnaries (Add page navigation). - New: Add function to draw graphics with javascript (using Jquery Flot). - +- New: Can add user login into menu urls added by modules. For translators: - New: Add fa_IR language. From ddfca3187585efdbf22c41c4af983a7b7ceb2646 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 30 Jun 2011 07:49:26 +0000 Subject: [PATCH 09/13] Fix: tmp file must be removed if error. --- htdocs/comm/action/class/actioncomm.class.php | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index ccc474b0fbf..c496e14c8aa 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -23,7 +23,7 @@ * \file htdocs/comm/action/class/actioncomm.class.php * \ingroup commercial * \brief File of class to manage agenda events (actions) - * \version $Id$ + * \version $Id: actioncomm.class.php,v 1.40 2011/06/30 07:49:26 eldy Exp $ */ require_once(DOL_DOCUMENT_ROOT.'/comm/action/class/cactioncomm.class.php'); require_once(DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'); @@ -81,7 +81,7 @@ class ActionComm extends CommonObject // Ical var $icalname; var $icalcolor; - + var $actions=array(); @@ -414,7 +414,7 @@ class ActionComm extends CommonObject if ($resql) { $num = $this->db->num_rows($resql); - + if ($num) { for($i=0;$i<$num;$i++) @@ -675,7 +675,6 @@ class ActionComm extends CommonObject // Create dir and define output file (definitive and temporary) $result=create_exdir($conf->agenda->dir_temp); $outputfile=$conf->agenda->dir_temp.'/'.$filename; - $outputfiletmp=tempnam($conf->agenda->dir_temp,'tmp'); // Temporary file (allow call of function by different threads $result=0; @@ -697,7 +696,7 @@ class ActionComm extends CommonObject if ($buildfile) { - // Build event array + // Build event array $eventarray=array(); $sql = "SELECT a.id,"; @@ -835,7 +834,11 @@ class ActionComm extends CommonObject $desc.=$langs->convToOutputCharset(' ('.$mysoc->name.' - built by Dolibarr)'); } - // Write file + // Create temp file + $outputfiletmp=tempnam($conf->agenda->dir_temp,'tmp'); // Temporary file (allow call of function by different threads + @chmod($outputfiletmp, octdec($conf->global->MAIN_UMASK)); + + // Write file if ($format == 'vcal') $result=build_calfile($format,$title,$desc,$eventarray,$outputfiletmp); if ($format == 'ical') $result=build_calfile($format,$title,$desc,$eventarray,$outputfiletmp); if ($format == 'rss') $result=build_rssfile($format,$title,$desc,$eventarray,$outputfiletmp); @@ -843,10 +846,15 @@ class ActionComm extends CommonObject if ($result >= 0) { if (rename($outputfiletmp,$outputfile)) $result=1; - else $result=-1; + else + { + dol_delete_file($outputfiletmp,0,1); + $result=-1; + } } else { + dol_delete_file($outputfiletmp,0,1); $langs->load("errors"); $this->error=$langs->trans("ErrorFailToCreateFile",$outputfile); } From 6385641a8ee32ddd10ceab51f9a16715aba72d57 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 30 Jun 2011 07:52:43 +0000 Subject: [PATCH 10/13] Fix: tmp file must be removed if error. --- htdocs/comm/action/class/actioncomm.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index c496e14c8aa..d6844299696 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -23,7 +23,7 @@ * \file htdocs/comm/action/class/actioncomm.class.php * \ingroup commercial * \brief File of class to manage agenda events (actions) - * \version $Id: actioncomm.class.php,v 1.40 2011/06/30 07:49:26 eldy Exp $ + * \version $Id: actioncomm.class.php,v 1.41 2011/06/30 07:52:43 eldy Exp $ */ require_once(DOL_DOCUMENT_ROOT.'/comm/action/class/cactioncomm.class.php'); require_once(DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'); @@ -848,12 +848,14 @@ class ActionComm extends CommonObject if (rename($outputfiletmp,$outputfile)) $result=1; else { + dol_syslog("ActionComm::build_exportfile failed to rename ".$outputfiletmp." to ".$outputfile, LOG_ERR); dol_delete_file($outputfiletmp,0,1); $result=-1; } } else { + dol_syslog("ActionComm::build_exportfile build_xxxfile function fails to for format=".$format." outputfiletmp=".$outputfile, LOG_ERR); dol_delete_file($outputfiletmp,0,1); $langs->load("errors"); $this->error=$langs->trans("ErrorFailToCreateFile",$outputfile); From 79880a1aea6d625901fb8f76002ec67f126d831e Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Thu, 30 Jun 2011 13:25:32 +0000 Subject: [PATCH 11/13] Fix: regression, canvas is broken and societe.class and contact.class are incompatible with callHook function --- htdocs/contact/fiche.php | 299 ++++----- .../canvas/actions_card_common.class.php | 4 +- htdocs/societe/soc.php | 615 +++++++++--------- 3 files changed, 463 insertions(+), 455 deletions(-) diff --git a/htdocs/contact/fiche.php b/htdocs/contact/fiche.php index 472cdd6571b..47e6e549c7d 100644 --- a/htdocs/contact/fiche.php +++ b/htdocs/contact/fiche.php @@ -24,7 +24,7 @@ * \file htdocs/contact/fiche.php * \ingroup societe * \brief Card of a contact - * \version $Id: fiche.php,v 1.214 2011/06/29 22:29:51 eldy Exp $ + * \version $Id: fiche.php,v 1.215 2011/06/30 13:25:32 hregis Exp $ */ require("../main.inc.php"); @@ -45,11 +45,11 @@ $action = GETPOST('action'); $socid = GETPOST("socid"); $id = GETPOST("id"); -$object = new Contact($db); - // Security check if ($user->societe_id) $socid=$user->societe_id; +$object = new Contact($db); + // Get object canvas (By default, this is not defined, so standard usage of dolibarr) if (!empty($id)) $object->getCanvas($id); $canvas = (!empty($object->canvas)?$object->canvas:GETPOST("canvas")); @@ -68,53 +68,63 @@ else $result = restrictedArea($user, 'contact', $id, 'socpeople'); // If we create a contact with no company (shared contacts), no check on write permission } -// Instantiate hooks of thirdparty module -if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) -{ - $object->callHooks('contactcard'); -} - - /* * Actions */ -// Hook of actions -if (! empty($object->hooks['contactcard'])) +// If canvas actions are defined, because on url, or because contact was created with canvas feature on, we use the canvas feature. +// If canvas actions are not defined, we use standard feature. +if (method_exists($objcanvas->control,'doActions')) { - foreach($object->hooks['contactcard'] as $module) + // ----------------------------------------- + // When used with CANVAS + // ----------------------------------------- + $objcanvas->doActions($id); + if (empty($objcanvas->error) && (empty($objcanvas->errors) || sizeof($objcanvas->errors) == 0)) { - $reshook+=$module->doActions($object); - if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) - { - $error=$module->error; $errors[]=$module->errors; - if ($action=='add') $action='create'; - if ($action=='update') $action='edit'; - } + if ($action=='add') { $objcanvas->action='create'; $action='create'; } + if ($action=='update') { $objcanvas->action='view'; $action='view'; } + } + else + { + $error=$objcanvas->error; $errors=$objcanvas->errors; + if ($action=='add') { $objcanvas->action='create'; $action='create'; } + if ($action=='update') { $objcanvas->action='edit'; $action='edit'; } } } - -// Creation utilisateur depuis contact -if ($_POST["action"] == 'confirm_create_user' && $_POST["confirm"] == 'yes' && $user->rights->user->user->creer) +else { - // Recuperation contact actuel - $result = $object->fetch($_GET["id"]); + // ----------------------------------------- + // When used in standard mode + // ----------------------------------------- - if ($result > 0) + // Creation utilisateur depuis contact + if ($_POST["action"] == 'confirm_create_user' && $_POST["confirm"] == 'yes' && $user->rights->user->user->creer) { - $db->begin(); - - // Creation user - $nuser = new User($db); - $result=$nuser->create_from_contact($object,$_POST["login"]); + // Recuperation contact actuel + $result = $object->fetch($_GET["id"]); if ($result > 0) { - $result2=$nuser->setPassword($user,$_POST["password"],0,1,1); - if ($result2) + $db->begin(); + + // Creation user + $nuser = new User($db); + $result=$nuser->create_from_contact($object,$_POST["login"]); + + if ($result > 0) { - $db->commit(); + $result2=$nuser->setPassword($user,$_POST["password"],0,1,1); + if ($result2) + { + $db->commit(); + } + else + { + $error=$nuser->error; $errors=$nuser->errors; + $db->rollback(); + } } else { @@ -124,131 +134,34 @@ if ($_POST["action"] == 'confirm_create_user' && $_POST["confirm"] == 'yes' && $ } else { - $error=$nuser->error; $errors=$nuser->errors; - $db->rollback(); - } - } - else - { - $error=$object->error; $errors=$object->errors; - } -} - -// Cancel -if (GETPOST("cancel") && GETPOST('backtopage')) -{ - header("Location: ".GETPOST('backtopage')); - exit; -} - -// Add contact -if (GETPOST("action") == 'add' && $user->rights->societe->contact->creer) -{ - $db->begin(); - - if ($canvas) $object->canvas=$canvas; - - $object->socid = $_POST["socid"]; - $object->name = $_POST["name"]; - $object->firstname = $_POST["firstname"]; - $object->civilite_id = $_POST["civilite_id"]; - $object->poste = $_POST["poste"]; - $object->address = $_POST["address"]; - $object->zip = $_POST["zipcode"]; - $object->town = $_POST["town"]; - $object->fk_pays = $_POST["pays_id"]; - $object->fk_departement = $_POST["departement_id"]; - $object->email = $_POST["email"]; - $object->phone_pro = $_POST["phone_pro"]; - $object->phone_perso = $_POST["phone_perso"]; - $object->phone_mobile = $_POST["phone_mobile"]; - $object->fax = $_POST["fax"]; - $object->jabberid = $_POST["jabberid"]; - $object->priv = $_POST["priv"]; - $object->note = $_POST["note"]; - - // Note: Correct date should be completed with location to have exact GM time of birth. - $object->birthday = dol_mktime(0,0,0,$_POST["birthdaymonth"],$_POST["birthdayday"],$_POST["birthdayyear"]); - $object->birthday_alert = $_POST["birthday_alert"]; - - if (! $_POST["name"]) - { - $error++; $errors[]=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label")); - $_GET["action"] = $_POST["action"] = 'create'; - } - - if ($_POST["name"]) - { - $id = $object->create($user); - if ($id <= 0) - { - $error++; $errors[]=($object->error?array($object->error):$object->errors); - $_GET["action"] = $_POST["action"] = 'create'; + $error=$object->error; $errors=$object->errors; } } - if (! $error && $id > 0) + // Cancel + if (GETPOST("cancel") && GETPOST('backtopage')) { - $db->commit(); - if (GETPOST('backtopage')) $url=GETPOST('backtopage'); - else $url='fiche.php?id='.$id; - Header("Location: ".$url); + header("Location: ".GETPOST('backtopage')); exit; } - else + + // Add contact + if (GETPOST("action") == 'add' && $user->rights->societe->contact->creer) { - $db->rollback(); - } -} + $db->begin(); -if (GETPOST("action") == 'confirm_delete' && GETPOST("confirm") == 'yes' && $user->rights->societe->contact->supprimer) -{ - $result=$object->fetch($_GET["id"]); - - $object->old_name = $_POST["old_name"]; - $object->old_firstname = $_POST["old_firstname"]; - - $result = $object->delete(); - if ($result > 0) - { - Header("Location: index.php"); - exit; - } - else - { - $error=$object->error; $errors[]=$object->errors; - } -} - -if ($_POST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->societe->contact->creer) -{ - if (empty($_POST["name"])) - { - $error++; $errors=array($langs->trans("ErrorFieldRequired",$langs->transnoentities("Name").' / '.$langs->transnoentities("Label"))); - $_GET["action"] = $_POST["action"] = 'edit'; - } - - if (! sizeof($errors)) - { - $object->fetch($_POST["contactid"]); - - $object->oldcopy=dol_clone($object); - - $object->old_name = $_POST["old_name"]; - $object->old_firstname = $_POST["old_firstname"]; + if ($canvas) $object->canvas=$canvas; $object->socid = $_POST["socid"]; $object->name = $_POST["name"]; $object->firstname = $_POST["firstname"]; $object->civilite_id = $_POST["civilite_id"]; $object->poste = $_POST["poste"]; - $object->address = $_POST["address"]; $object->zip = $_POST["zipcode"]; $object->town = $_POST["town"]; - $object->fk_departement = $_POST["departement_id"]; $object->fk_pays = $_POST["pays_id"]; - + $object->fk_departement = $_POST["departement_id"]; $object->email = $_POST["email"]; $object->phone_pro = $_POST["phone_pro"]; $object->phone_perso = $_POST["phone_perso"]; @@ -258,16 +171,108 @@ if ($_POST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->societe $object->priv = $_POST["priv"]; $object->note = $_POST["note"]; - $result = $object->update($_POST["contactid"], $user); + // Note: Correct date should be completed with location to have exact GM time of birth. + $object->birthday = dol_mktime(0,0,0,$_POST["birthdaymonth"],$_POST["birthdayday"],$_POST["birthdayyear"]); + $object->birthday_alert = $_POST["birthday_alert"]; - if ($result > 0) + if (! $_POST["name"]) { - $object->old_name=''; - $object->old_firstname=''; + $error++; $errors[]=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label")); + $_GET["action"] = $_POST["action"] = 'create'; + } + + if ($_POST["name"]) + { + $id = $object->create($user); + if ($id <= 0) + { + $error++; $errors[]=($object->error?array($object->error):$object->errors); + $_GET["action"] = $_POST["action"] = 'create'; + } + } + + if (! $error && $id > 0) + { + $db->commit(); + if (GETPOST('backtopage')) $url=GETPOST('backtopage'); + else $url='fiche.php?id='.$id; + Header("Location: ".$url); + exit; } else { - $error=$object->error; $errors=$object->errors; + $db->rollback(); + } + } + + if (GETPOST("action") == 'confirm_delete' && GETPOST("confirm") == 'yes' && $user->rights->societe->contact->supprimer) + { + $result=$object->fetch($_GET["id"]); + + $object->old_name = $_POST["old_name"]; + $object->old_firstname = $_POST["old_firstname"]; + + $result = $object->delete(); + if ($result > 0) + { + Header("Location: index.php"); + exit; + } + else + { + $error=$object->error; $errors[]=$object->errors; + } + } + + if ($_POST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->societe->contact->creer) + { + if (empty($_POST["name"])) + { + $error++; $errors=array($langs->trans("ErrorFieldRequired",$langs->transnoentities("Name").' / '.$langs->transnoentities("Label"))); + $_GET["action"] = $_POST["action"] = 'edit'; + } + + if (! sizeof($errors)) + { + $object->fetch($_POST["contactid"]); + + $object->oldcopy=dol_clone($object); + + $object->old_name = $_POST["old_name"]; + $object->old_firstname = $_POST["old_firstname"]; + + $object->socid = $_POST["socid"]; + $object->name = $_POST["name"]; + $object->firstname = $_POST["firstname"]; + $object->civilite_id = $_POST["civilite_id"]; + $object->poste = $_POST["poste"]; + + $object->address = $_POST["address"]; + $object->zip = $_POST["zipcode"]; + $object->town = $_POST["town"]; + $object->fk_departement = $_POST["departement_id"]; + $object->fk_pays = $_POST["pays_id"]; + + $object->email = $_POST["email"]; + $object->phone_pro = $_POST["phone_pro"]; + $object->phone_perso = $_POST["phone_perso"]; + $object->phone_mobile = $_POST["phone_mobile"]; + $object->fax = $_POST["fax"]; + $object->jabberid = $_POST["jabberid"]; + $object->priv = $_POST["priv"]; + $object->note = $_POST["note"]; + + $result = $object->update($_POST["contactid"], $user); + + if ($result > 0) + { + $object->old_name=''; + $object->old_firstname=''; + } + else + { + $error=$object->error; $errors=$object->errors; + } } } } @@ -945,5 +950,5 @@ else $db->close(); -llxFooter('$Date: 2011/06/29 22:29:51 $ - $Revision: 1.214 $'); +llxFooter('$Date: 2011/06/30 13:25:32 $ - $Revision: 1.215 $'); ?> diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php index ea86e99b9a6..8b338e349c8 100644 --- a/htdocs/societe/canvas/actions_card_common.class.php +++ b/htdocs/societe/canvas/actions_card_common.class.php @@ -21,7 +21,7 @@ * \file htdocs/societe/canvas/actions_card_common.class.php * \ingroup thirdparty * \brief Fichier de la classe Thirdparty card controller (common) - * \version $Id$ + * \version $Id: actions_card_common.class.php,v 1.22 2011/06/30 13:25:32 hregis Exp $ */ /** @@ -259,7 +259,7 @@ class ActionsCardCommon $oldsoccanvas = new Canvas($this->db); $oldsoccanvas->getCanvas('thirdparty','card',$this->object->canvas); - $result=$oldsoccanvas->fetch($socid); + $result=$oldsoccanvas->control->object->fetch($socid); // To avoid setting code if third party is not concerned. But if it had values, we keep them. if (empty($this->object->client) && empty($oldsoccanvas->control->object->code_client)) $this->object->code_client=''; diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index 42120a158c0..17b34c83b17 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -26,7 +26,7 @@ * \file htdocs/societe/soc.php * \ingroup societe * \brief Third party card page - * \version $Id: soc.php,v 1.112 2011/06/29 22:29:51 eldy Exp $ + * \version $Id: soc.php,v 1.113 2011/06/30 13:25:33 hregis Exp $ */ require("../main.inc.php"); @@ -50,17 +50,11 @@ if ($conf->notification->enabled) $langs->load("mails"); $action = GETPOST('action'); $confirm = GETPOST('confirm'); -$error=0; $errors=array(); - -$extrafields = new ExtraFields($db); - -$soc = new Societe($db); // TODO Replace this wit object -$object = new Societe($db); - // Security check $socid = GETPOST("socid"); if ($user->societe_id) $socid=$user->societe_id; +$soc = new Societe($db); // Get object canvas (By default, this is not defined, so standard usage of dolibarr) if (!empty($socid)) $soc->getCanvas($socid); $canvas = (!empty($soc->canvas)?$soc->canvas:GETPOST("canvas")); @@ -79,202 +73,294 @@ else $result = restrictedArea($user, 'societe', $socid); } -// Instantiate hooks of thirdparty module -if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) -{ - $object->callHooks('thirdpartycard'); -} +$error=0; $errors=array(); +$extrafields = new ExtraFields($db); /* * Actions */ -// Hook of actions -if (! empty($object->hooks['thirdpartycard'])) +// If canvas actions are defined, because on url, or because contact was created with canvas feature on, we use the canvas feature. +// If canvas actions are not defined, we use standard feature. +if (method_exists($objcanvas->control,'doActions')) { - foreach($object->hooks['thirdpartycard'] as $module) + // ----------------------------------------- + // When used with CANVAS + // ----------------------------------------- + $objcanvas->doActions($socid); + + if (empty($objcanvas->error) && (empty($objcanvas->errors) || sizeof($objcanvas->errors) == 0)) { - $reshook+=$module->doActions($object); - if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) - { - $error=$module->error; $errors[]=$module->errors; - if ($action=='add') $action='create'; - if ($action=='update') $action='edit'; - } - } -} - - -if ($_POST["getcustomercode"]) -{ - // We defined value code_client - $_POST["code_client"]="Acompleter"; -} - -if ($_POST["getsuppliercode"]) -{ - // We defined value code_fournisseur - $_POST["code_fournisseur"]="Acompleter"; -} - -// Add new third party -if ((! $_POST["getcustomercode"] && ! $_POST["getsuppliercode"]) -&& ($action == 'add' || $action == 'update') && $user->rights->societe->creer) -{ - require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); - - if ($action == 'update') - { - $soc->fetch($socid); - } - else if ($canvas) $soc->canvas=$canvas; - - if ($_REQUEST["private"] == 1) - { - $soc->particulier = $_REQUEST["private"]; - - $soc->name = empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)?trim($_POST["prenom"].' '.$_POST["nom"]):trim($_POST["nom"].' '.$_POST["prenom"]); - $soc->nom = $soc->name; // TODO obsolete - $soc->nom_particulier = $_POST["nom"]; - $soc->prenom = $_POST["prenom"]; - $soc->civilite_id = $_POST["civilite_id"]; + if ($action=='add') { $objcanvas->action='create'; $action='create'; } + if ($action=='update') { $objcanvas->action='view'; $action='view'; } } else { - $soc->name = $_POST["nom"]; - $soc->nom = $soc->name; // TODO obsolete + $error=$objcanvas->error; $errors=$objcanvas->errors; + if ($action=='add') { $objcanvas->action='create'; $action='create'; } + if ($action=='update') { $objcanvas->action='edit'; $action='edit'; } } - $soc->address = $_POST["adresse"]; - $soc->adresse = $_POST["adresse"]; // TODO obsolete - $soc->zip = $_POST["zipcode"]; - $soc->cp = $_POST["zipcode"]; // TODO obsolete - $soc->town = $_POST["town"]; - $soc->ville = $_POST["town"]; // TODO obsolete - $soc->pays_id = $_POST["pays_id"]; - $soc->departement_id = $_POST["departement_id"]; - $soc->tel = $_POST["tel"]; - $soc->fax = $_POST["fax"]; - $soc->email = trim($_POST["email"]); - $soc->url = trim($_POST["url"]); - $soc->siren = $_POST["idprof1"]; - $soc->siret = $_POST["idprof2"]; - $soc->ape = $_POST["idprof3"]; - $soc->idprof4 = $_POST["idprof4"]; - $soc->prefix_comm = $_POST["prefix_comm"]; - $soc->code_client = $_POST["code_client"]; - $soc->code_fournisseur = $_POST["code_fournisseur"]; - $soc->capital = $_POST["capital"]; - $soc->gencod = $_POST["gencod"]; +} +else +{ + // ----------------------------------------- + // When used in standard mode + // ----------------------------------------- - $soc->tva_intra = $_POST["tva_intra"]; - $soc->tva_assuj = $_POST["assujtva_value"]; - $soc->status = $_POST["status"]; - - // Local Taxes - $soc->localtax1_assuj = $_POST["localtax1assuj_value"]; - $soc->localtax2_assuj = $_POST["localtax2assuj_value"]; - - $soc->forme_juridique_code = $_POST["forme_juridique_code"]; - $soc->effectif_id = $_POST["effectif_id"]; - if ($_REQUEST["private"] == 1) + if ($_POST["getcustomercode"]) { - $soc->typent_id = 8; // TODO predict another method if the field "special" change of rowid - } - else - { - $soc->typent_id = $_POST["typent_id"]; + // We defined value code_client + $_POST["code_client"]="Acompleter"; } - $soc->client = $_POST["client"]; - $soc->fournisseur = $_POST["fournisseur"]; - $soc->fournisseur_categorie = $_POST["fournisseur_categorie"]; - - $soc->commercial_id = $_POST["commercial_id"]; - $soc->default_lang = $_POST["default_lang"]; - - // Get extra fields - foreach($_POST as $key => $value) + if ($_POST["getsuppliercode"]) { - if (preg_match("/^options_/",$key)) + // We defined value code_fournisseur + $_POST["code_fournisseur"]="Acompleter"; + } + + // Add new third party + if ((! $_POST["getcustomercode"] && ! $_POST["getsuppliercode"]) + && ($action == 'add' || $action == 'update') && $user->rights->societe->creer) + { + require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); + + if ($action == 'update') { - $soc->array_options[$key]=$_POST[$key]; + $soc->fetch($socid); } - } + else if ($canvas) $soc->canvas=$canvas; - if (GETPOST('deletephoto')) $soc->logo = ''; - else if (! empty($_FILES['photo']['name'])) $soc->logo = dol_sanitizeFileName($_FILES['photo']['name']); - - // Check parameters - if (empty($_POST["cancel"])) - { - if (! empty($soc->email) && ! isValidEMail($soc->email)) + if ($_REQUEST["private"] == 1) { - $langs->load("errors"); - $error++; $errors[] = $langs->trans("ErrorBadEMail",$soc->email); - $action = ($action=='add'?'create':'edit'); + $soc->particulier = $_REQUEST["private"]; + + $soc->name = empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)?trim($_POST["prenom"].' '.$_POST["nom"]):trim($_POST["nom"].' '.$_POST["prenom"]); + $soc->nom = $soc->name; // TODO obsolete + $soc->nom_particulier = $_POST["nom"]; + $soc->prenom = $_POST["prenom"]; + $soc->civilite_id = $_POST["civilite_id"]; } - if (! empty($soc->url) && ! isValidUrl($soc->url)) + else { - $langs->load("errors"); - $error++; $errors[] = $langs->trans("ErrorBadUrl",$soc->url); - $action = ($action=='add'?'create':'edit'); + $soc->name = $_POST["nom"]; + $soc->nom = $soc->name; // TODO obsolete } - if ($soc->fournisseur && ! $conf->fournisseur->enabled) + $soc->address = $_POST["adresse"]; + $soc->adresse = $_POST["adresse"]; // TODO obsolete + $soc->zip = $_POST["zipcode"]; + $soc->cp = $_POST["zipcode"]; // TODO obsolete + $soc->town = $_POST["town"]; + $soc->ville = $_POST["town"]; // TODO obsolete + $soc->pays_id = $_POST["pays_id"]; + $soc->departement_id = $_POST["departement_id"]; + $soc->tel = $_POST["tel"]; + $soc->fax = $_POST["fax"]; + $soc->email = trim($_POST["email"]); + $soc->url = trim($_POST["url"]); + $soc->siren = $_POST["idprof1"]; + $soc->siret = $_POST["idprof2"]; + $soc->ape = $_POST["idprof3"]; + $soc->idprof4 = $_POST["idprof4"]; + $soc->prefix_comm = $_POST["prefix_comm"]; + $soc->code_client = $_POST["code_client"]; + $soc->code_fournisseur = $_POST["code_fournisseur"]; + $soc->capital = $_POST["capital"]; + $soc->gencod = $_POST["gencod"]; + + $soc->tva_intra = $_POST["tva_intra"]; + $soc->tva_assuj = $_POST["assujtva_value"]; + $soc->status = $_POST["status"]; + + // Local Taxes + $soc->localtax1_assuj = $_POST["localtax1assuj_value"]; + $soc->localtax2_assuj = $_POST["localtax2assuj_value"]; + + $soc->forme_juridique_code = $_POST["forme_juridique_code"]; + $soc->effectif_id = $_POST["effectif_id"]; + if ($_REQUEST["private"] == 1) { - $langs->load("errors"); - $error++; $errors[] = $langs->trans("ErrorSupplierModuleNotEnabled"); - $action = ($action=='add'?'create':'edit'); + $soc->typent_id = 8; // TODO predict another method if the field "special" change of rowid } - } - - if (! $error) - { - if ($action == 'add') + else { - $db->begin(); + $soc->typent_id = $_POST["typent_id"]; + } - if (empty($soc->client)) $soc->code_client=''; - if (empty($soc->fournisseur)) $soc->code_fournisseur=''; + $soc->client = $_POST["client"]; + $soc->fournisseur = $_POST["fournisseur"]; + $soc->fournisseur_categorie = $_POST["fournisseur_categorie"]; - $result = $soc->create($user); - if ($result >= 0) + $soc->commercial_id = $_POST["commercial_id"]; + $soc->default_lang = $_POST["default_lang"]; + + // Get extra fields + foreach($_POST as $key => $value) + { + if (preg_match("/^options_/",$key)) { - if ($soc->particulier) + $soc->array_options[$key]=$_POST[$key]; + } + } + + if (GETPOST('deletephoto')) $soc->logo = ''; + else if (! empty($_FILES['photo']['name'])) $soc->logo = dol_sanitizeFileName($_FILES['photo']['name']); + + // Check parameters + if (empty($_POST["cancel"])) + { + if (! empty($soc->email) && ! isValidEMail($soc->email)) + { + $langs->load("errors"); + $error++; $errors[] = $langs->trans("ErrorBadEMail",$soc->email); + $action = ($action=='add'?'create':'edit'); + } + if (! empty($soc->url) && ! isValidUrl($soc->url)) + { + $langs->load("errors"); + $error++; $errors[] = $langs->trans("ErrorBadUrl",$soc->url); + $action = ($action=='add'?'create':'edit'); + } + if ($soc->fournisseur && ! $conf->fournisseur->enabled) + { + $langs->load("errors"); + $error++; $errors[] = $langs->trans("ErrorSupplierModuleNotEnabled"); + $action = ($action=='add'?'create':'edit'); + } + } + + if (! $error) + { + if ($action == 'add') + { + $db->begin(); + + if (empty($soc->client)) $soc->code_client=''; + if (empty($soc->fournisseur)) $soc->code_fournisseur=''; + + $result = $soc->create($user); + if ($result >= 0) { - dol_syslog("This thirdparty is a personal people",LOG_DEBUG); - $contact=new Contact($db); - - $contact->civilite_id = $soc->civilite_id; - $contact->name=$soc->nom_particulier; - $contact->firstname=$soc->prenom; - $contact->address=$soc->address; - $contact->zip=$soc->zip; - $contact->cp=$soc->cp; - $contact->town=$soc->town; - $contact->ville=$soc->ville; - $contact->fk_pays=$soc->fk_pays; - $contact->socid=$soc->id; // fk_soc - $contact->status=1; - $contact->email=$soc->email; - $contact->priv=0; - - $result=$contact->create($user); - if (! $result >= 0) + if ($soc->particulier) { - $error=$contact->error; $errors=$contact->errors; + dol_syslog("This thirdparty is a personal people",LOG_DEBUG); + $contact=new Contact($db); + + $contact->civilite_id = $soc->civilite_id; + $contact->name=$soc->nom_particulier; + $contact->firstname=$soc->prenom; + $contact->address=$soc->address; + $contact->zip=$soc->zip; + $contact->cp=$soc->cp; + $contact->town=$soc->town; + $contact->ville=$soc->ville; + $contact->fk_pays=$soc->fk_pays; + $contact->socid=$soc->id; // fk_soc + $contact->status=1; + $contact->email=$soc->email; + $contact->priv=0; + + $result=$contact->create($user); + if (! $result >= 0) + { + $error=$contact->error; $errors=$contact->errors; + } } + + ### Gestion du logo de la société + $dir = $conf->societe->dir_output."/".$soc->id."/logos/"; + $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']); + if ($file_OK) + { + if (image_format_supported($_FILES['photo']['name'])) + { + create_exdir($dir); + + if (@is_dir($dir)) + { + $newfile=$dir.'/'.dol_sanitizeFileName($_FILES['photo']['name']); + $result = dol_move_uploaded_file($_FILES['photo']['tmp_name'], $newfile, 1); + + if (! $result > 0) + { + $errors[] = "ErrorFailedToSaveFile"; + } + else + { + // Create small thumbs for company (Ratio is near 16/9) + // Used on logon for example + $imgThumbSmall = vignette($newfile, $maxwidthsmall, $maxheightsmall, '_small', $quality); + + // Create mini thumbs for company (Ratio is near 16/9) + // Used on menu or for setup page for example + $imgThumbMini = vignette($newfile, $maxwidthmini, $maxheightmini, '_mini', $quality); + } + } + } + } + ### Gestion du logo de la société + } + else + { + $error=$soc->error; $errors=$soc->errors; + } + + if ($result >= 0) + { + $db->commit(); + + $url=$_SERVER["PHP_SELF"]."?socid=".$soc->id; + if (($soc->client == 1 || $soc->client == 3) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $url=DOL_URL_ROOT."/comm/fiche.php?socid=".$soc->id; + else if ($soc->fournisseur == 1) $url=DOL_URL_ROOT."/fourn/fiche.php?socid=".$soc->id; + Header("Location: ".$url); + exit; + } + else + { + $db->rollback(); + $action='create'; + } + } + + if ($action == 'update') + { + if ($_POST["cancel"]) + { + Header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); + exit; + } + + $soc->oldcopy=dol_clone($soc); + + // To not set code if third party is not concerned. But if it had values, we keep them. + if (empty($soc->client) && empty($soc->oldcopy->code_client)) $soc->code_client=''; + if (empty($soc->fournisseur)&& empty($soc->oldcopy->code_fournisseur)) $soc->code_fournisseur=''; + //var_dump($soc);exit; + + $result = $soc->update($socid,$user,1,$soc->oldcopy->codeclient_modifiable(),$soc->oldcopy->codefournisseur_modifiable()); + if ($result <= 0) + { + $error = $soc->error; $errors = $soc->errors; } ### Gestion du logo de la société - $dir = $conf->societe->dir_output."/".$soc->id."/logos/"; + $dir = $conf->societe->dir_output."/".$soc->id."/logos"; $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']); if ($file_OK) { - if (image_format_supported($_FILES['photo']['name'])) + if (GETPOST('deletephoto')) { - create_exdir($dir); + $fileimg=$conf->societe->dir_output.'/'.$soc->id.'/logos/'.$soc->logo; + $dirthumbs=$conf->societe->dir_output.'/'.$soc->id.'/logos/thumbs'; + dol_delete_file($fileimg); + dol_delete_dir_recursive($dirthumbs); + } + + if (image_format_supported($_FILES['photo']['name']) > 0) + { + dol_mkdir($dir); if (@is_dir($dir)) { @@ -297,169 +383,86 @@ if ((! $_POST["getcustomercode"] && ! $_POST["getsuppliercode"]) } } } + else + { + $errors[] = "ErrorBadImageFormat"; + } } ### Gestion du logo de la société - } - else - { - $error=$soc->error; $errors=$soc->errors; - } - if ($result >= 0) - { - $db->commit(); - - $url=$_SERVER["PHP_SELF"]."?socid=".$soc->id; - if (($soc->client == 1 || $soc->client == 3) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $url=DOL_URL_ROOT."/comm/fiche.php?socid=".$soc->id; - else if ($soc->fournisseur == 1) $url=DOL_URL_ROOT."/fourn/fiche.php?socid=".$soc->id; - Header("Location: ".$url); - exit; - } - else - { - $db->rollback(); - $action='create'; - } - } - - if ($action == 'update') - { - if ($_POST["cancel"]) - { - Header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); - exit; - } - - $soc->oldcopy=dol_clone($soc); - - // To not set code if third party is not concerned. But if it had values, we keep them. - if (empty($soc->client) && empty($soc->oldcopy->code_client)) $soc->code_client=''; - if (empty($soc->fournisseur)&& empty($soc->oldcopy->code_fournisseur)) $soc->code_fournisseur=''; - //var_dump($soc);exit; - - $result = $soc->update($socid,$user,1,$soc->oldcopy->codeclient_modifiable(),$soc->oldcopy->codefournisseur_modifiable()); - if ($result <= 0) - { - $error = $soc->error; $errors = $soc->errors; - } - - ### Gestion du logo de la société - $dir = $conf->societe->dir_output."/".$soc->id."/logos"; - $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']); - if ($file_OK) - { - if (GETPOST('deletephoto')) + if (! $error && ! sizeof($errors)) { - $fileimg=$conf->societe->dir_output.'/'.$soc->id.'/logos/'.$soc->logo; - $dirthumbs=$conf->societe->dir_output.'/'.$soc->id.'/logos/thumbs'; - dol_delete_file($fileimg); - dol_delete_dir_recursive($dirthumbs); - } - if (image_format_supported($_FILES['photo']['name']) > 0) - { - dol_mkdir($dir); - - if (@is_dir($dir)) - { - $newfile=$dir.'/'.dol_sanitizeFileName($_FILES['photo']['name']); - $result = dol_move_uploaded_file($_FILES['photo']['tmp_name'], $newfile, 1); - - if (! $result > 0) - { - $errors[] = "ErrorFailedToSaveFile"; - } - else - { - // Create small thumbs for company (Ratio is near 16/9) - // Used on logon for example - $imgThumbSmall = vignette($newfile, $maxwidthsmall, $maxheightsmall, '_small', $quality); - - // Create mini thumbs for company (Ratio is near 16/9) - // Used on menu or for setup page for example - $imgThumbMini = vignette($newfile, $maxwidthmini, $maxheightmini, '_mini', $quality); - } - } + Header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); + exit; } else { - $errors[] = "ErrorBadImageFormat"; + $soc->id = $socid; + $action= "edit"; } } - ### Gestion du logo de la société - - if (! $error && ! sizeof($errors)) - { - - Header("Location: ".$_SERVER["PHP_SELF"]."?socid=".$socid); - exit; - } - else - { - $soc->id = $socid; - $action= "edit"; - } } } -} -// Delete third party -if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->societe->supprimer) -{ - $soc->fetch($socid); - $result = $soc->delete($socid); - - if ($result >= 0) + // Delete third party + if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->societe->supprimer) { - Header("Location: ".DOL_URL_ROOT."/societe/societe.php?delsoc=".$soc->nom.""); - exit; - } - else - { - $langs->load("errors"); - $error=$langs->trans($soc->error); $errors = $soc->errors; - $action=''; - } -} - - -/* - * Generate document - */ -if ($action == 'builddoc') // En get ou en post -{ - if (is_numeric(GETPOST('model'))) - { - $error=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Model")); - } - else - { - require_once(DOL_DOCUMENT_ROOT.'/includes/modules/societe/modules_societe.class.php'); - - $soc = new Societe($db); $soc->fetch($socid); - $soc->fetch_thirdparty(); + $result = $soc->delete($socid); - // Define output language - $outputlangs = $langs; - $newlang=''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$fac->client->default_lang; - if (! empty($newlang)) + if ($result >= 0) { - $outputlangs = new Translate("",$conf); - $outputlangs->setDefaultLang($newlang); - } - $result=thirdparty_doc_create($db, $soc->id, '', $_REQUEST['model'], $outputlangs); - if ($result <= 0) - { - dol_print_error($db,$result); + Header("Location: ".DOL_URL_ROOT."/societe/societe.php?delsoc=".$soc->nom.""); exit; } else { - Header ('Location: '.$_SERVER["PHP_SELF"].'?socid='.$soc->id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#builddoc')); - exit; + $langs->load("errors"); + $error=$langs->trans($soc->error); $errors = $soc->errors; + $action=''; + } + } + + + /* + * Generate document + */ + if ($action == 'builddoc') // En get ou en post + { + if (is_numeric(GETPOST('model'))) + { + $error=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Model")); + } + else + { + require_once(DOL_DOCUMENT_ROOT.'/includes/modules/societe/modules_societe.class.php'); + + $soc = new Societe($db); + $soc->fetch($socid); + $soc->fetch_thirdparty(); + + // Define output language + $outputlangs = $langs; + $newlang=''; + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$fac->client->default_lang; + if (! empty($newlang)) + { + $outputlangs = new Translate("",$conf); + $outputlangs->setDefaultLang($newlang); + } + $result=thirdparty_doc_create($db, $soc->id, '', $_REQUEST['model'], $outputlangs); + if ($result <= 0) + { + dol_print_error($db,$result); + exit; + } + else + { + Header ('Location: '.$_SERVER["PHP_SELF"].'?socid='.$soc->id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#builddoc')); + exit; + } } } } @@ -1943,5 +1946,5 @@ else $db->close(); -llxFooter('$Date: 2011/06/29 22:29:51 $ - $Revision: 1.112 $'); +llxFooter('$Date: 2011/06/30 13:25:33 $ - $Revision: 1.113 $'); ?> \ No newline at end of file From 7874af0e58a053a6ac2fc1bc4afdefe0313b3edb Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Thu, 30 Jun 2011 13:27:20 +0000 Subject: [PATCH 12/13] Fix: Name of hook must also be unique for each tab --- htdocs/comm/propal.php | 78 +++++++++----- htdocs/comm/propal/class/propal.class.php | 31 ++++-- htdocs/commande/class/commande.class.php | 58 ++++++---- htdocs/commande/fiche.php | 101 ++++++++++++------ htdocs/compta/facture.php | 99 +++++++++++------ htdocs/compta/facture/class/facture.class.php | 64 +++++++---- htdocs/compta/facture/fiche-rec.php | 6 +- htdocs/core/class/commonobject.class.php | 37 +++++-- htdocs/core/class/html.formfile.class.php | 18 ++-- .../core/tpl/freeproductline_create.tpl.php | 16 ++- htdocs/core/tpl/freeproductline_edit.tpl.php | 16 ++- .../tpl/predefinedproductline_create.tpl.php | 16 ++- .../tpl/predefinedproductline_edit.tpl.php | 16 ++- htdocs/includes/modules/modSociete.class.php | 13 ++- htdocs/lib/pdf.lib.php | 73 +++++++++---- 15 files changed, 434 insertions(+), 208 deletions(-) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index a55bdb2d530..27251fbc322 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -27,7 +27,7 @@ * \file htdocs/comm/propal.php * \ingroup propale * \brief Page of commercial proposals card and list - * \version $Id: propal.php,v 1.605 2011/06/29 22:29:51 eldy Exp $ + * \version $Id: propal.php,v 1.606 2011/06/30 13:27:21 hregis Exp $ */ require("../main.inc.php"); @@ -82,7 +82,7 @@ if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, $module, $objectid, $dbtable); // Instantiate hooks of thirdparty module -if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) +if (is_array($conf->hooks_modules) && ! empty($conf->hooks_modules)) { $object->callHooks('propalcard'); } @@ -92,18 +92,27 @@ if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) /* Actions */ /******************************************************************************/ -// Hook of thirdparty module -if (! empty($object->hooks['propalcard'])) +// Hook of actions +if (! empty($object->hooks)) { - foreach($object->hooks['propalcard'] as $module) + foreach($object->hooks as $hook) { - $reshook+=$module->doActions($object); - if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) - { - $error=$module->error; $errors[]=$module->errors; - if ($action=='add') $action='create'; - if ($action=='update') $action='edit'; - } + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'doActions')) + { + $reshook+=$module->doActions($object); + if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) + { + $mesg=$module->error; $mesgs[]=$module->errors; + if ($action=='add') $action='create'; + if ($action=='update') $action='edit'; + } + } + } + } } } @@ -1012,12 +1021,8 @@ if ($id > 0 || ! empty($ref)) /* * Show object in view mode */ - - if ($mesg) - { - if (! preg_match('/div class=/',$mesg)) print '
'.$mesg.'

'; - else print $mesg."
"; - } + + dol_htmloutput_mesg($mesg,$mesgs); $object->fetch($id,$ref); @@ -1087,12 +1092,21 @@ if ($id > 0 || ! empty($ref)) $formconfirm=$html->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ValidateProp'), $text, 'confirm_validate','',0,1); } - // Hook of thirdparty module - if (empty($formconfirm) && ! empty($object->hooks['objectcard'])) + // Hook for external modules + if (empty($formconfirm) && ! empty($object->hooks)) { - foreach($object->hooks['objectcard'] as $module) + foreach($object->hooks as $hook) { - if (empty($formconfirm)) $formconfirm = $module->formconfirm($action,$object,$lineid); + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (empty($formconfirm) && method_exists($module,'formconfirm')) + { + $formconfirm = $module->formconfirm($action,$object,$lineid); + } + } + } } } @@ -1496,13 +1510,19 @@ if ($id > 0 || ! empty($ref)) $object->formAddPredefinedProduct(0,$mysoc,$soc); } - // Hook of thirdparty module - if (! empty($object->hooks['objectcard'])) + // Hook for external modules + foreach($object->hooks as $hook) { - foreach($object->hooks['objectcard'] as $module) + if (! empty($hook['modules'])) { - $var=!$var; - $module->formAddObject($object); + foreach($hook['modules'] as $module) + { + if (method_exists($module,'formAddObject')) + { + $var=!$var; + $module->formAddObject($object); + } + } } } } @@ -1649,7 +1669,7 @@ if ($id > 0 || ! empty($ref)) $var=true; - $somethingshown=$formfile->show_documents('propal',$filename,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'',0,'',$soc->default_lang,$object->hooks['objectcard']); + $somethingshown=$formfile->show_documents('propal',$filename,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'',0,'',$soc->default_lang,$object->hooks); /* @@ -1955,6 +1975,6 @@ else } $db->close(); -llxFooter('$Date: 2011/06/29 22:29:51 $ - $Revision: 1.605 $'); +llxFooter('$Date: 2011/06/30 13:27:21 $ - $Revision: 1.606 $'); ?> diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 0cdf75d01c9..0928f2d0ca3 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -30,7 +30,7 @@ * \author Rodolphe Qiedeville * \author Eric Seigne * \author Laurent Destailleur - * \version $Id$ + * \version $Id: propal.class.php,v 1.109 2011/06/30 13:27:21 hregis Exp $ */ require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php"); @@ -838,7 +838,7 @@ class Propal extends CommonObject // Instantiate hooks of thirdparty module if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) { - $object->callHooks('objectcard'); + $object->callHooks('propalcard'); } $this->db->begin(); @@ -905,15 +905,24 @@ class Propal extends CommonObject if (! $error) { - // Hook of thirdparty module - if (! empty($object->hooks['objectcard'])) - { - foreach($object->hooks['objectcard'] as $module) - { - $result = $module->createfrom($objFrom,$result,$object->element); - if ($result < 0) $error++; - } - } + // Hook for external modules + if (! empty($object->hooks)) + { + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'createfrom')) + { + $result = $module->createfrom($objFrom,$result,$object->element); + if ($result < 0) $error++; + } + } + } + } + } // Appel des triggers include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index dd75a84f24b..db86760da57 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -25,7 +25,7 @@ * \file htdocs/commande/class/commande.class.php * \ingroup commande * \brief Fichier des classes de commandes - * \version $Id$ + * \version $Id: commande.class.php,v 1.116 2011/06/30 13:27:20 hregis Exp $ */ require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php"); require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php"); @@ -776,7 +776,7 @@ class Commande extends CommonObject // Instantiate hooks of thirdparty module if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) { - $object->callHooks('objectcard'); + $object->callHooks('ordercard'); } $this->db->begin(); @@ -825,14 +825,23 @@ class Commande extends CommonObject if (! $error) { // Hook of thirdparty module - if (! empty($object->hooks['objectcard'])) - { - foreach($object->hooks['objectcard'] as $module) - { - $result = $module->createfrom($objFrom,$result,$object->element); - if ($result < 0) $error++; - } - } + if (! empty($object->hooks)) + { + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'createfrom')) + { + $result = $module->createfrom($objFrom,$result,$object->element); + if ($result < 0) $error++; + } + } + } + } + } // Appel des triggers include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); @@ -918,15 +927,24 @@ class Commande extends CommonObject if ($ret > 0) { - // Hooks - if (! empty($object->hooks['objectcard'])) - { - foreach($object->hooks['objectcard'] as $module) - { - $result = $module->createfrom($object,$ret,$this->element); - if ($result < 0) $error++; - } - } + // Hook of thirdparty module + if (! empty($object->hooks)) + { + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'createfrom')) + { + $result = $module->createfrom($object,$ret,$this->element); + if ($result < 0) $error++; + } + } + } + } + } if (! $error) { @@ -2770,6 +2788,8 @@ class OrderLine { var $db; var $error; + + var $oldline; // From llx_commandedet var $rowid; diff --git a/htdocs/commande/fiche.php b/htdocs/commande/fiche.php index a2cc4ef68a5..c7fbc9163a3 100644 --- a/htdocs/commande/fiche.php +++ b/htdocs/commande/fiche.php @@ -26,7 +26,7 @@ * \file htdocs/commande/fiche.php * \ingroup commande * \brief Page to show customer order - * \version $Id: fiche.php,v 1.520 2011/06/29 22:29:51 eldy Exp $ + * \version $Id: fiche.php,v 1.521 2011/06/30 13:27:21 hregis Exp $ */ require("../main.inc.php"); @@ -77,18 +77,27 @@ if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) /******************************************************************************/ // Hook of actions -if (! empty($object->hooks['ordercard'])) +if (! empty($object->hooks)) { - foreach($object->hooks['ordercard'] as $module) - { - $reshook+=$module->doActions($object); - if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) - { - $error=$module->error; $errors[]=$module->errors; - if ($action=='add') $action='create'; - if ($action=='update') $action='edit'; - } - } + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'doActions')) + { + $reshook+=$module->doActions($object); + if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) + { + $mesg=$module->error; $mesgs[]=$module->errors; + if ($action=='add') $action='create'; + if ($action=='update') $action='edit'; + } + } + } + } + } } // Action clone object @@ -309,13 +318,22 @@ if ($action == 'add' && $user->rights->commande->creer) } // Hooks - if (! empty($object->hooks['objectcard'])) + if (! empty($object->hooks)) { - foreach($object->hooks['objectcard'] as $module) - { - $res = $module->createfrom($srcobject,$object_id,$object->element); - if ($res < 0) $error++; - } + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'createfrom')) + { + $res = $module->createfrom($srcobject,$object_id,$object->element); + if ($res < 0) $error++; + } + } + } + } } } else @@ -1411,7 +1429,7 @@ if ($action == 'create' && $user->rights->commande->creer) print ''; - $objectsrc->printOriginLinesList($object); + $objectsrc->printOriginLinesList(); print '
'; } @@ -1519,13 +1537,19 @@ else $formconfirm=$html->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id,$langs->trans('CloneOrder'),$langs->trans('ConfirmCloneOrder',$object->ref),'confirm_clone',$formquestion,'yes',1); } - // Hook of thirdparty module - if (empty($formconfirm) && ! empty($object->hooks['objectcard'])) + // Hook for external modules + if (empty($formconfirm) && ! empty($object->hooks)) { - foreach($object->hooks['objectcard'] as $module) - { - if (empty($formconfirm)) $formconfirm = $module->formconfirm($action,$object,$lineid); - } + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (empty($formconfirm) && method_exists($module,'formconfirm')) $formconfirm = $module->formconfirm($action,$object,$lineid); + } + } + } } // Print form confirm @@ -1877,14 +1901,23 @@ else $object->formAddPredefinedProduct(1,$mysoc,$soc); } - // Hook of thirdparty module - if (! empty($object->hooks['objectcard'])) + // Hook for external modules + if (! empty($object->hooks)) { - foreach($object->hooks['objectcard'] as $module) - { - $var=!$var; - $module->formAddObject($object); - } + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'formAddObject')) + { + $var=!$var; + $module->formAddObject($object); + } + } + } + } } } } @@ -2021,7 +2054,7 @@ else $genallowed=$user->rights->commande->creer; $delallowed=$user->rights->commande->supprimer; - $somethingshown=$formfile->show_documents('commande',$comref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang,$object->hooks['objectcard']); + $somethingshown=$formfile->show_documents('commande',$comref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang,$object->hooks); /* * Linked object block @@ -2101,5 +2134,5 @@ else $db->close(); -llxFooter('$Date: 2011/06/29 22:29:51 $ - $Revision: 1.520 $'); +llxFooter('$Date: 2011/06/30 13:27:21 $ - $Revision: 1.521 $'); ?> diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index c59ed2f9e6d..38d3851f5cf 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -26,7 +26,7 @@ * \file htdocs/compta/facture.php * \ingroup facture * \brief Page to create/see an invoice - * \version $Id: facture.php,v 1.840 2011/06/29 22:29:50 eldy Exp $ + * \version $Id: facture.php,v 1.841 2011/06/30 13:27:21 hregis Exp $ */ require('../main.inc.php'); @@ -87,18 +87,27 @@ if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) /******************************************************************************/ // Hook of actions -if (! empty($object->hooks['invoicecard'])) +if (! empty($object->hooks)) { - foreach($object->hooks['invoicecard'] as $module) - { - $reshook+=$module->doActions($object); - if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) - { - $error=$module->error; $errors[]=$module->errors; - if ($action=='add') $action='create'; - if ($action=='update') $action='edit'; - } - } + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'doActions')) + { + $reshook+=$module->doActions($object); + if (! empty($module->error) || (! empty($module->errors) && sizeof($module->errors) > 0)) + { + $mesg=$module->error; $mesgs[]=$module->errors; + if ($action=='add') $action='create'; + if ($action=='update') $action='edit'; + } + } + } + } + } } // Action clone object @@ -783,13 +792,22 @@ if ($action == 'add' && $user->rights->facture->creer) } // Hooks - if (! empty($object->hooks['objectcard'])) + if (! empty($object->hooks)) { - foreach($object->hooks['objectcard'] as $module) - { - $res = $module->createfrom($srcobject,$id,$object->element); - if ($res < 0) $error++; - } + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'createfrom')) + { + $res = $module->createfrom($srcobject,$id,$object->element); + if ($res < 0) $error++; + } + } + } + } } } else @@ -2041,13 +2059,19 @@ else $formconfirm=$html->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id,$langs->trans('CloneInvoice'),$langs->trans('ConfirmCloneInvoice',$object->ref),'confirm_clone',$formquestion,'yes',1); } - // Hook of thirdparty module - if (empty($formconfirm) && ! empty($object->hooks['objectcard'])) + // Hook for external modules + if (empty($formconfirm) && ! empty($object->hooks)) { - foreach($object->hooks['objectcard'] as $module) - { - if (empty($formconfirm)) $formconfirm = $module->formconfirm($action,$object,$lineid); - } + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (empty($formconfirm) && method_exists($module,'formconfirm')) $formconfirm = $module->formconfirm($action,$object,$lineid); + } + } + } } // Print form confirm @@ -2584,14 +2608,23 @@ else $object->formAddPredefinedProduct(1,$mysoc,$soc); } - // Hook of thirdparty module - if (! empty($object->hooks['objectcard'])) + // Hook for external modules + if (! empty($object->hooks)) { - foreach($object->hooks['objectcard'] as $module) - { - $var=!$var; - $module->formAddObject($object); - } + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'formAddObject')) + { + $var=!$var; + $module->formAddObject($object); + } + } + } + } } } @@ -2828,7 +2861,7 @@ else $delallowed=$user->rights->facture->supprimer; print '
'; - $somethingshown=$formfile->show_documents('facture',$filename,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang,$object->hooks['objectcard']); + $somethingshown=$formfile->show_documents('facture',$filename,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang,$object->hooks); /* * Linked object block @@ -3201,5 +3234,5 @@ else $db->close(); -llxFooter('$Date: 2011/06/29 22:29:50 $ - $Revision: 1.840 $'); +llxFooter('$Date: 2011/06/30 13:27:21 $ - $Revision: 1.841 $'); ?> diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 175b455bc2e..f8f946d3065 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -28,7 +28,7 @@ * \file htdocs/compta/facture/class/facture.class.php * \ingroup facture * \brief Fichier de la classe des factures clients - * \version $Id$ + * \version $Id: facture.class.php,v 1.122 2011/06/30 13:27:20 hregis Exp $ */ require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php"); @@ -534,9 +534,9 @@ class Facture extends CommonObject $object->fetch($fromid); // Instantiate hooks of thirdparty module - if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) + if (is_array($conf->hooks_modules) && ! empty($conf->hooks_modules)) { - $object->callHooks('objectcard'); + $object->callHooks('invoicecard'); } $this->db->begin(); @@ -577,14 +577,23 @@ class Facture extends CommonObject if (! $error) { - // Hook of thirdparty module - if (! empty($object->hooks['objectcard'])) + // Hook for external modules + if (! empty($object->hooks)) { - foreach($object->hooks['objectcard'] as $module) - { - $result = $module->createfrom($objFrom,$result,$object->element); - if ($result < 0) $error++; - } + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'createfrom')) + { + $result = $module->createfrom($objFrom,$result,$object->element); + if ($result < 0) $error++; + } + } + } + } } // Appel des triggers @@ -667,14 +676,23 @@ class Facture extends CommonObject if ($ret > 0) { - // Hooks - if (! empty($object->hooks['objectcard'])) + // Hook for external modules + if (! empty($object->hooks)) { - foreach($object->hooks['objectcard'] as $module) - { - $result = $module->createfrom($object,$ret,$this->element); - if ($result < 0) $error++; - } + foreach($object->hooks as $hook) + { + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'createfrom')) + { + $result = $module->createfrom($objFrom,$result,$object->element); + if ($result < 0) $error++; + } + } + } + } } if (! $error) @@ -2002,9 +2020,13 @@ class Facture extends CommonObject // Update line into database $this->line=new FactureLigne($this->db); - $this->line->rowid=$rowid; - $this->line->fetch($rowid); - + + // Stock previous line records + $staticline=new FactureLigne($this->db); + $staticline->fetch($rowid); + $this->line->oldline = $staticline; + + $this->line->rowid = $rowid; $this->line->desc = $desc; $this->line->qty = $qty; $this->line->tva_tx = $txtva; @@ -3250,6 +3272,8 @@ class FactureLigne { var $db; var $error; + + var $oldline; //! From llx_facturedet var $rowid; diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index e869addf1cd..9fe60087f10 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -22,7 +22,7 @@ * \file htdocs/compta/facture/fiche-rec.php * \ingroup facture * \brief Page to show predefined invoice - * \version $Id$ + * \version $Id: fiche-rec.php,v 1.74 2011/06/30 13:27:21 hregis Exp $ */ require("../../main.inc.php"); @@ -113,7 +113,7 @@ if ($_GET["action"] == 'create') // Instantiate hooks of thirdparty module if (is_array($conf->hooks_modules) && !empty($conf->hooks_modules)) { - $facture->callHooks('objectcard'); + $facture->callHooks('invoicecard'); } if ($facture->fetch($_GET["facid"]) > 0) @@ -576,5 +576,5 @@ else $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/06/30 13:27:21 $ - $Revision: 1.74 $'); ?> diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 6aa5b25a18f..dba9a784f4d 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -22,7 +22,7 @@ * \file htdocs/core/class/commonobject.class.php * \ingroup core * \brief File of parent class of all other business classes (invoices, contracts, proposals, orders, ...) - * \version $Id: commonobject.class.php,v 1.139 2011/06/29 19:29:27 hregis Exp $ + * \version $Id: commonobject.class.php,v 1.140 2011/06/30 13:27:20 hregis Exp $ */ @@ -1438,6 +1438,8 @@ class CommonObject global $conf; if (! is_array($arraytype)) $arraytype=array($arraytype); + + $i=0; foreach($conf->hooks_modules as $module => $hooks) { @@ -1451,6 +1453,8 @@ class CommonObject $actionfile = 'actions_'.$module.'.class.php'; $daofile = 'dao_'.$module.'.class.php'; $pathroot = ''; + + $this->hooks[$i]['type']=$type; // Include actions class (controller) $resaction=dol_include_once($path.$actionfile); @@ -1463,15 +1467,17 @@ class CommonObject { $controlclassname = 'Actions'.ucfirst($module); $objModule = new $controlclassname($this->db); - $this->hooks[$type][$objModule->module_number] = $objModule; + $this->hooks[$i]['modules'][$objModule->module_number] = $objModule; } if ($resdao) { // Instantiate dataservice class (model) $modelclassname = 'Dao'.ucfirst($module); - $this->hooks[$type][$objModule->module_number]->object = new $modelclassname($this->db); + $this->hooks[$i]['modules'][$objModule->module_number]->object = new $modelclassname($this->db); } + + $i++; } } } @@ -1737,9 +1743,18 @@ class CommonObject { $var=!$var; - if (($line->product_type == 9 && ! empty($line->special_code)) || ! empty($line->fk_parent_line)) + if (! empty($this->hooks) && ( ($line->product_type == 9 && ! empty($line->special_code)) || ! empty($line->fk_parent_line) ) ) { - if (empty($line->fk_parent_line)) $this->hooks['objectcard'][$line->special_code]->printObjectLine($action,$this,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected); + if (empty($line->fk_parent_line)) + { + foreach($this->hooks as $hook) + { + if (method_exists($hook['modules'][$line->special_code],'printObjectLine')) + { + $hook['modules'][$line->special_code]->printObjectLine($action,$this,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected); + } + } + } } else { @@ -1835,7 +1850,7 @@ class CommonObject * If lines are into a template, title must also be into a template * But for the moment we don't know if it's possible as we keep a method available on overloaded objects. */ - function printOriginLinesList($object) + function printOriginLinesList() { global $langs; @@ -1855,9 +1870,15 @@ class CommonObject { $var=!$var; - if (($line->product_type == 9 && ! empty($line->special_code)) || ! empty($line->fk_parent_line)) + if (! empty($this->hooks) && ( ($line->product_type == 9 && ! empty($line->special_code)) || ! empty($line->fk_parent_line) ) ) { - if (empty($line->fk_parent_line)) $object->hooks['objectcard'][$line->special_code]->printOriginObjectLine($this,$line,$var,$i); + if (empty($line->fk_parent_line)) + { + foreach($this->hooks as $hook) + { + if (method_exists($hook['modules'][$line->special_code],'printOriginObjectLine')) $hook['modules'][$line->special_code]->printOriginObjectLine($this,$line,$var,$i); + } + } } else { diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 959080b1379..7c054b43622 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -1,6 +1,7 @@ - * Copyright (c) 2010 Juanjo Menent +/* Copyright (c) 2008-2010 Laurent Destailleur + * Copyright (C) 2010-2011 Regis Houssin + * Copyright (c) 2010 Juanjo Menent * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,7 +22,7 @@ * \file htdocs/core/class/html.formfile.class.php * \ingroup core * \brief File of class to offer components to list and upload files - * \version $Id$ + * \version $Id: html.formfile.class.php,v 1.34 2011/06/30 13:27:20 hregis Exp $ */ @@ -446,12 +447,17 @@ class FormFile $out.= ''; // Execute hooks - // $hooks must be array('key'=>$instanceofclass) if (! empty($hooks) && is_array($hooks)) { - foreach($hooks as $module) + foreach($hooks as $hook) { - if (method_exists($module,'formBuilddocOptions')) $out.= $module->formBuilddocOptions(); + if (! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'formBuilddocOptions')) $out.= $module->formBuilddocOptions(); + } + } } } } diff --git a/htdocs/core/tpl/freeproductline_create.tpl.php b/htdocs/core/tpl/freeproductline_create.tpl.php index 9e8747584c8..44635256716 100644 --- a/htdocs/core/tpl/freeproductline_create.tpl.php +++ b/htdocs/core/tpl/freeproductline_create.tpl.php @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * $Id$ + * $Id: freeproductline_create.tpl.php,v 1.14 2011/06/30 13:27:20 hregis Exp $ * * Need to have following variables defined: * $conf @@ -48,11 +48,17 @@ echo $html->select_type_of_lines(isset($_POST["type"])?$_POST["type"]:-1,'type',1); if (($conf->product->enabled && $conf->service->enabled) || (empty($conf->product->enabled) && empty($conf->service->enabled))) echo '
'; - if (! empty($object->hooks['objectcard'])) { - foreach($object->hooks['objectcard'] as $module) { - $module->formCreateProductOptions($object); + if (! empty($this->hooks)) { + foreach($this->hooks as $hook) { + if (! empty($hook['modules'])) { + foreach($hook['modules'] as $module) { + if (method_exists($module,'formCreateProductOptions')) { + $module->formCreateProductOptions($object); + echo '
'; + } + } + } } - echo '
'; } // Editor wysiwyg diff --git a/htdocs/core/tpl/freeproductline_edit.tpl.php b/htdocs/core/tpl/freeproductline_edit.tpl.php index 5933e1eebce..01b53f44bc7 100644 --- a/htdocs/core/tpl/freeproductline_edit.tpl.php +++ b/htdocs/core/tpl/freeproductline_edit.tpl.php @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * $Id$ + * $Id: freeproductline_edit.tpl.php,v 1.14 2011/06/30 13:27:20 hregis Exp $ * * Need to have following variables defined: * $conf @@ -40,10 +40,16 @@ hooks['objectcard'])) { - foreach($this->hooks['objectcard'] as $module) { - $module->formEditProductOptions($this,$line->fk_parent_line); - echo '
'; + if (! empty($this->hooks)) { + foreach($this->hooks as $hook) { + if (! empty($hook['modules'])) { + foreach($hook['modules'] as $module) { + if (method_exists($module,'formEditProductOptions')) { + $module->formEditProductOptions($this,$line->fk_parent_line); + echo '
'; + } + } + } } } diff --git a/htdocs/core/tpl/predefinedproductline_create.tpl.php b/htdocs/core/tpl/predefinedproductline_create.tpl.php index 678fdf2a374..6c0de741b24 100644 --- a/htdocs/core/tpl/predefinedproductline_create.tpl.php +++ b/htdocs/core/tpl/predefinedproductline_create.tpl.php @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * $Id$ + * $Id: predefinedproductline_create.tpl.php,v 1.13 2011/06/30 13:27:20 hregis Exp $ * * Need to have following variables defined: * $conf @@ -60,11 +60,17 @@ if (! $conf->global->PRODUIT_USE_SEARCH_TO_SELECT) echo '
'; - if (! empty($object->hooks['objectcard'])) { - foreach($object->hooks['objectcard'] as $module) { - $module->formCreateProductOptions($object); + if (! empty($this->hooks)) { + foreach($this->hooks as $hook) { + if (! empty($hook['modules'])) { + foreach($hook['modules'] as $module) { + if (method_exists($module,'formCreateProductOptions')) { + $module->formCreateProductOptions($object); + echo '
'; + } + } + } } - echo '
'; } // Editor wysiwyg diff --git a/htdocs/core/tpl/predefinedproductline_edit.tpl.php b/htdocs/core/tpl/predefinedproductline_edit.tpl.php index a75e2b65203..7531b7d6cd8 100644 --- a/htdocs/core/tpl/predefinedproductline_edit.tpl.php +++ b/htdocs/core/tpl/predefinedproductline_edit.tpl.php @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * $Id$ + * $Id: predefinedproductline_edit.tpl.php,v 1.13 2011/06/30 13:27:20 hregis Exp $ * * Need to have following variables defined: * $conf @@ -48,10 +48,16 @@ echo ' - '.nl2br($line->product_label); echo '
'; - if (! empty($this->hooks['objectcard'])) { - foreach($this->hooks['objectcard'] as $module) { - $module->formEditProductOptions($this,$line->fk_parent_line); - echo '
'; + if (! empty($this->hooks)) { + foreach($this->hooks as $hook) { + if (! empty($hook['modules'])) { + foreach($hook['modules'] as $module) { + if (method_exists($module,'formEditProductOptions')) { + $module->formEditProductOptions($this,$line->fk_parent_line); + echo '
'; + } + } + } } } diff --git a/htdocs/includes/modules/modSociete.class.php b/htdocs/includes/modules/modSociete.class.php index 3cca6b58316..90b55773f9f 100644 --- a/htdocs/includes/modules/modSociete.class.php +++ b/htdocs/includes/modules/modSociete.class.php @@ -3,7 +3,7 @@ * Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2004 Sebastien Di Cintio * Copyright (C) 2004 Benoit Mortier - * Copyright (C) 2005-2010 Regis Houssin + * Copyright (C) 2005-2011 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,7 +23,7 @@ /** * \defgroup societe Module societe * \brief Module to manage third parties (customers, prospects) - * \version $Id$ + * \version $Id: modSociete.class.php,v 1.117 2011/06/30 13:27:21 hregis Exp $ */ /** @@ -106,6 +106,15 @@ class modSociete extends DolibarrModules $this->const[$r][3] = ""; $this->const[$r][4] = 0; $r++; + + $this->const[$r][0] = "MAIN_MODULE_SOCIETE_HOOKS"; + $this->const[$r][1] = "chaine"; + $this->const[$r][2] = "thirdpartycard:contactcard"; + $this->const[$r][3] = ""; + $this->const[$r][4] = 0; + $this->const[$r][4] = 'current'; + $this->const[$r][4] = 1; + $r++; // Boxes $this->boxes = array(); diff --git a/htdocs/lib/pdf.lib.php b/htdocs/lib/pdf.lib.php index a48c665a72d..9560c981840 100644 --- a/htdocs/lib/pdf.lib.php +++ b/htdocs/lib/pdf.lib.php @@ -25,7 +25,7 @@ * \file htdocs/lib/pdf.lib.php * \brief Set of functions used for PDF generation * \ingroup core - * \version $Id$ + * \version $Id: pdf.lib.php,v 1.95 2011/06/30 13:27:21 hregis Exp $ */ @@ -658,11 +658,14 @@ function pdf_writelinedesc(&$pdf,$object,$i,$outputlangs,$w,$h,$posx,$posy,$hide { global $db, $conf, $langs; - if (! empty($object->hooks['objectcard']) && ( ($object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && ( ($object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - return $object->hooks['objectcard'][$special_code]->pdf_writelinedesc($pdf,$object,$i,$outputlangs,$w,$h,$posx,$posy,$hideref,$hidedesc,$issupplierline); + foreach($object->hooks as $hook) + { + if (method_exists($hook['modules'][$special_code],'pdf_writelinedesc')) return $hook['modules'][$special_code]->pdf_writelinedesc($pdf,$object,$i,$outputlangs,$w,$h,$posx,$posy,$hideref,$hidedesc,$issupplierline); + } } else { @@ -815,7 +818,7 @@ function pdf_getlinedesc($object,$i,$outputlangs,$hideref=0,$hidedesc=0,$issuppl */ function pdf_getlinenum($object,$i,$outputlangs) { - if (! empty($object->hooks['objectcard']) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); @@ -836,7 +839,7 @@ function pdf_getlinenum($object,$i,$outputlangs) */ function pdf_getlineref($object,$i,$outputlangs) { - if (! empty($object->hooks['objectcard']) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); @@ -856,7 +859,7 @@ function pdf_getlineref($object,$i,$outputlangs) */ function pdf_getlineref_supplier($object,$i,$outputlangs) { - if (! empty($object->hooks['objectcard']) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); @@ -880,11 +883,14 @@ function pdf_getlineref_supplier($object,$i,$outputlangs) */ function pdf_getlinevatrate($object,$i,$outputlangs,$hidedetails=0) { - if (! empty($object->hooks['objectcard']) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - return $object->hooks['objectcard'][$special_code]->pdf_getlinevatrate($object,$i,$outputlangs,$hidedetails); + foreach($object->hooks as $hook) + { + if (method_exists($hook['modules'][$special_code],'pdf_getlinevatrate')) return $hook['modules'][$special_code]->pdf_getlinevatrate($object,$i,$outputlangs,$hidedetails); + } } else { @@ -904,11 +910,14 @@ function pdf_getlinevatrate($object,$i,$outputlangs,$hidedetails=0) */ function pdf_getlineupexcltax($object,$i,$outputlangs,$hidedetails=0) { - if (! empty($object->hooks['objectcard']) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - return $object->hooks['objectcard'][$special_code]->pdf_getlineupexcltax($object,$i,$outputlangs,$hidedetails); + foreach($object->hooks as $hook) + { + if (method_exists($hook['modules'][$special_code],'pdf_getlineupexcltax')) return $hook['modules'][$special_code]->pdf_getlineupexcltax($object,$i,$outputlangs,$hidedetails); + } } else { @@ -930,11 +939,14 @@ function pdf_getlineqty($object,$i,$outputlangs,$hidedetails=0) { if ($object->lines[$i]->special_code != 3) { - if (! empty($object->hooks['objectcard']) && (( $object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && (( $object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - return $object->hooks['objectcard'][$special_code]->pdf_getlineqty($object,$i,$outputlangs,$hidedetails); + foreach($object->hooks as $hook) + { + if (method_exists($hook['modules'][$special_code],'pdf_getlineqty')) return $hook['modules'][$special_code]->pdf_getlineqty($object,$i,$outputlangs,$hidedetails); + } } else { @@ -957,11 +969,14 @@ function pdf_getlineqty_asked($object,$i,$outputlangs,$hidedetails=0) { if ($object->lines[$i]->special_code != 3) { - if (! empty($object->hooks['objectcard']) && (( $object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && (( $object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - return $object->hooks['objectcard'][$special_code]->pdf_getlineqty_asked($object,$i,$outputlangs,$hidedetails); + foreach($object->hooks as $hook) + { + if (method_exists($hook['modules'][$special_code],'pdf_getlineqty_asked')) return $hook['modules'][$special_code]->pdf_getlineqty_asked($object,$i,$outputlangs,$hidedetails); + } } else { @@ -984,11 +999,14 @@ function pdf_getlineqty_shipped($object,$i,$outputlangs,$hidedetails=0) { if ($object->lines[$i]->special_code != 3) { - if (! empty($object->hooks['objectcard']) && (( $object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && (( $object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - return $object->hooks['objectcard'][$special_code]->pdf_getlineqty_shipped($object,$i,$outputlangs,$hidedetails); + foreach($object->hooks as $hook) + { + if (method_exists($hook['modules'][$special_code],'pdf_getlineqty_shipped')) return $hook['modules'][$special_code]->pdf_getlineqty_shipped($object,$i,$outputlangs,$hidedetails); + } } else { @@ -1011,11 +1029,14 @@ function pdf_getlineqty_keeptoship($object,$i,$outputlangs,$hidedetails=0) { if ($object->lines[$i]->special_code != 3) { - if (! empty($object->hooks['objectcard']) && (( $object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && (( $object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - return $object->hooks['objectcard'][$special_code]->pdf_getlineqty_keeptoship($object,$i,$outputlangs,$hidedetails); + foreach($object->hooks as $hook) + { + if (method_exists($hook['modules'][$special_code],'pdf_getlineqty_keeptoship')) return $hook['modules'][$special_code]->pdf_getlineqty_keeptoship($object,$i,$outputlangs,$hidedetails); + } } else { @@ -1040,11 +1061,14 @@ function pdf_getlineremisepercent($object,$i,$outputlangs,$hidedetails=0) if ($object->lines[$i]->special_code != 3) { - if (! empty($object->hooks['objectcard']) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && ( ($object->lines[$i]->product_type == 9 && !empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - return $object->hooks['objectcard'][$special_code]->pdf_getlineremisepercent($object,$i,$outputlangs,$hidedetails); + foreach($object->hooks as $hook) + { + if (method_exists($hook['modules'][$special_code],'pdf_getlineremisepercent')) return $hook['modules'][$special_code]->pdf_getlineremisepercent($object,$i,$outputlangs,$hidedetails); + } } else { @@ -1071,11 +1095,14 @@ function pdf_getlinetotalexcltax($object,$i,$outputlangs,$hidedetails=0) } else { - if (! empty($object->hooks['objectcard']) && ( ($object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + if (! empty($object->hooks) && ( ($object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - return $object->hooks['objectcard'][$special_code]->pdf_getlinetotalexcltax($object,$i,$outputlangs,$hidedetails); + foreach($object->hooks as $hook) + { + if (method_exists($hook['modules'][$special_code],'pdf_getlinetotalexcltax')) return $hook['modules'][$special_code]->pdf_getlinetotalexcltax($object,$i,$outputlangs,$hidedetails); + } } else { @@ -1104,7 +1131,7 @@ function pdf_getTotalQty($object,$type='',$outputlangs) { $total += $object->lines[$i]->qty; } - else if ($type==9 && ! empty($object->hooks['objectcard']) && ( ($object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) + else if ($type==9 && ! empty($object->hooks) && ( ($object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code) ) || ! empty($object->lines[$i]->fk_parent_line) ) ) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); From 71ef4d04d20757ba86dfc0ff6d89dcabb4157108 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Thu, 30 Jun 2011 13:40:34 +0000 Subject: [PATCH 13/13] Fix: Name of hook must also be unique for each tab --- htdocs/main.inc.php | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 1dea511f8f0..927d2594811 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -26,7 +26,7 @@ * \file htdocs/main.inc.php * \ingroup core * \brief File that defines environment for Dolibarr pages only (variables not required by scripts) - * \version $Id: main.inc.php,v 1.744 2011/06/26 00:42:06 eldy Exp $ + * \version $Id: main.inc.php,v 1.745 2011/06/30 13:40:34 hregis Exp $ */ @ini_set('memory_limit', '64M'); // This may be useless if memory is hard limited by your PHP @@ -1374,15 +1374,21 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me img_object('','user').' '.$langs->trans("Members"), 'member', 'sall'); } - // Search form hook of thirdparty module - if (! empty($object->hooks['searchform'])) + // Search form hook for external modules + if (! empty($object->hooks)) { $searchform.=''."\n"; - - foreach($object->hooks['searchform'] as $module) + + foreach($object->hooks as $hook) { - $searchform.=$module->printSearchForm(); - } + if ($hook['type'] == 'searchform' && ! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'printSearchForm')) $searchform.=$module->printSearchForm(); + } + } + } $searchform.="\n".''."\n"; } @@ -1495,15 +1501,21 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me print "\n"; - // Left block hook of thirdparty module - if (! empty($object->hooks['leftblock'])) + // Left block hook for external modules + if (! empty($object->hooks)) { print ''."\n"; - - foreach($object->hooks['leftblock'] as $module) + + foreach($object->hooks as $hook) { - $module->printLeftBlock(); - } + if ($hook['type'] == 'leftblock' && ! empty($hook['modules'])) + { + foreach($hook['modules'] as $module) + { + if (method_exists($module,'printLeftBlock')) $module->printLeftBlock(); + } + } + } print "\n".''."\n"; }