From 4eb7f46e4c24c5f5d5b96e49a5eb1946e9cd092d Mon Sep 17 00:00:00 2001 From: Ben Ramey Date: Thu, 12 Nov 2015 19:58:50 -0600 Subject: [PATCH] Initial commit --- admin/creditcards.php | 86 ++++ admin/index.php | 38 ++ admin/linksandnumbers.php | 188 ++++++++ admin/login.php | 37 ++ admin/news.php | 180 ++++++++ admin/passports.php | 86 ++++ bookingrequest.php | 81 ++++ creditcard.php | 49 +++ history.php | 12 + index.php | 20 + itinerary_beforecontinuing.php | 19 + linksandnumbers.php | 50 +++ passportinfo.php | 57 +++ php/.htaccess | 1 + php/classes/page.php | 344 +++++++++++++++ php/classes/user.php | 95 ++++ php/functions/func_file.php | 58 +++ php/functions/func_filesystem.php | 150 +++++++ php/functions/func_xml.php | 63 +++ php/includes/config.php | 15 + site/.htaccess | 1 + site/css/admin.css | 212 +++++++++ site/css/bookingrequest.css | 36 ++ site/css/default.css | 301 +++++++++++++ .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes site/css/smoothness/jquery-ui.css | 406 ++++++++++++++++++ site/data/.htaccess | 2 + site/data/creditcards.xml | 2 + site/data/linksandnumbers.xml | 223 ++++++++++ site/data/news.xml | 69 +++ site/data/passportinfo.xml | 4 + site/data/users/users.xml | 8 + site/en/admin/creditcards.delete.php | 15 + site/en/admin/creditcards.php | 29 ++ site/en/admin/creditcards.view.php | 24 ++ site/en/admin/home.php | 68 +++ site/en/admin/linksandnumbers.add.edit.php | 74 ++++ site/en/admin/linksandnumbers.delete.php | 19 + site/en/admin/linksandnumbers.php | 22 + site/en/admin/login.php | 17 + site/en/admin/menu.php | 7 + site/en/admin/news.add.edit.php | 42 ++ site/en/admin/news.delete.php | 19 + site/en/admin/news.php | 22 + site/en/admin/passports.delete.php | 15 + site/en/admin/passports.php | 29 ++ site/en/admin/passports.view.php | 24 ++ site/en/admin/textboxbuttons.php | 5 + site/en/bookingrequest.php | 130 ++++++ site/en/bookingrequest_review.php | 69 +++ site/en/creditcard.php | 177 ++++++++ site/en/footer.php | 10 + site/en/header.php | 6 + site/en/history.php | 8 + site/en/home.php | 58 +++ site/en/itinerary_beforecontinuing.php | 27 ++ site/en/linksandnumbers.php | 25 ++ site/en/linksandnumbers.subpage.php | 4 + site/en/menu.php | 10 + site/en/passportinfo.php | 37 ++ site/en/viewyouritinerary.php | 22 + site/graphics/icon_airplane.jpg | Bin 0 -> 2295 bytes site/graphics/logo.gif | Bin 0 -> 10850 bytes site/javascript/admin/textboxbuttons.js | 57 +++ site/javascript/bookingrequest.js | 41 ++ site/javascript/default.js | 77 ++++ site/javascript/jquery-ui.min.js | 22 + site/javascript/jquery.min.js | 19 + site/layout/admin_layout.php | 62 +++ site/layout/default_layout.php | 65 +++ site/layout/html.php | 26 ++ site/layout/iframe_layout.php | 4 + travelinsurance.php | 27 ++ viewyouritinerary.php | 34 ++ 86 files changed, 4341 insertions(+) create mode 100644 admin/creditcards.php create mode 100644 admin/index.php create mode 100644 admin/linksandnumbers.php create mode 100644 admin/login.php create mode 100644 admin/news.php create mode 100644 admin/passports.php create mode 100644 bookingrequest.php create mode 100644 creditcard.php create mode 100644 history.php create mode 100644 index.php create mode 100644 itinerary_beforecontinuing.php create mode 100644 linksandnumbers.php create mode 100644 passportinfo.php create mode 100644 php/.htaccess create mode 100755 php/classes/page.php create mode 100644 php/classes/user.php create mode 100644 php/functions/func_file.php create mode 100755 php/functions/func_filesystem.php create mode 100644 php/functions/func_xml.php create mode 100644 php/includes/config.php create mode 100644 site/.htaccess create mode 100644 site/css/admin.css create mode 100644 site/css/bookingrequest.css create mode 100644 site/css/default.css create mode 100755 site/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100755 site/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png create mode 100755 site/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100755 site/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100755 site/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png create mode 100755 site/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100755 site/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100755 site/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100755 site/css/smoothness/images/ui-icons_222222_256x240.png create mode 100755 site/css/smoothness/images/ui-icons_2e83ff_256x240.png create mode 100755 site/css/smoothness/images/ui-icons_454545_256x240.png create mode 100755 site/css/smoothness/images/ui-icons_888888_256x240.png create mode 100755 site/css/smoothness/images/ui-icons_cd0a0a_256x240.png create mode 100755 site/css/smoothness/jquery-ui.css create mode 100644 site/data/.htaccess create mode 100755 site/data/creditcards.xml create mode 100755 site/data/linksandnumbers.xml create mode 100755 site/data/news.xml create mode 100755 site/data/passportinfo.xml create mode 100644 site/data/users/users.xml create mode 100644 site/en/admin/creditcards.delete.php create mode 100644 site/en/admin/creditcards.php create mode 100644 site/en/admin/creditcards.view.php create mode 100644 site/en/admin/home.php create mode 100644 site/en/admin/linksandnumbers.add.edit.php create mode 100644 site/en/admin/linksandnumbers.delete.php create mode 100644 site/en/admin/linksandnumbers.php create mode 100644 site/en/admin/login.php create mode 100644 site/en/admin/menu.php create mode 100644 site/en/admin/news.add.edit.php create mode 100644 site/en/admin/news.delete.php create mode 100644 site/en/admin/news.php create mode 100644 site/en/admin/passports.delete.php create mode 100644 site/en/admin/passports.php create mode 100644 site/en/admin/passports.view.php create mode 100644 site/en/admin/textboxbuttons.php create mode 100644 site/en/bookingrequest.php create mode 100644 site/en/bookingrequest_review.php create mode 100644 site/en/creditcard.php create mode 100644 site/en/footer.php create mode 100644 site/en/header.php create mode 100644 site/en/history.php create mode 100644 site/en/home.php create mode 100644 site/en/itinerary_beforecontinuing.php create mode 100644 site/en/linksandnumbers.php create mode 100644 site/en/linksandnumbers.subpage.php create mode 100644 site/en/menu.php create mode 100644 site/en/passportinfo.php create mode 100644 site/en/viewyouritinerary.php create mode 100755 site/graphics/icon_airplane.jpg create mode 100755 site/graphics/logo.gif create mode 100644 site/javascript/admin/textboxbuttons.js create mode 100644 site/javascript/bookingrequest.js create mode 100644 site/javascript/default.js create mode 100755 site/javascript/jquery-ui.min.js create mode 100755 site/javascript/jquery.min.js create mode 100644 site/layout/admin_layout.php create mode 100755 site/layout/default_layout.php create mode 100755 site/layout/html.php create mode 100644 site/layout/iframe_layout.php create mode 100644 travelinsurance.php create mode 100644 viewyouritinerary.php diff --git a/admin/creditcards.php b/admin/creditcards.php new file mode 100644 index 0000000..6740242 --- /dev/null +++ b/admin/creditcards.php @@ -0,0 +1,86 @@ +init_user(); + +# make sure the user is logged in before he has access to the +# admin section +if(!$page->user()->check_role('admin')) + header('Location: login.php?message=1'); + +$page->attr('title','Administrate FTI: Credit Cards'); +// to make jquery be loaded first +$page->useJSFile('jquery.min.js'); +$page->addJSFile('admin.js'); +$page->useCSSFile('admin.css'); + +$page->content('admin/creditcards.php'); +$page->layout('admin_layout.php'); +$page->menu('admin/menu.php'); + +# get news posts +$cards = xml_get_from_file($FILES['ccinfo']); +$page->data('creditcards',array_reverse($cards->xpath('creditcard'))); + +if(isset($_REQUEST['do'])) +{ + if($_REQUEST['do'] == 'view') + { + # find the credit card + $card = FindCreditCard($cards->xpath('creditcard'), $_GET['id']); + + # if the card was found above, send it to the template + if($card) + { + $page->content('admin/creditcards.view.php'); + $page->data('card',$card); + } + # card not found, display error + else + $page->addError('That credit card entry does not exist.'); + } + else if($_REQUEST['do'] == 'delete') + { + # find the credit card + $card = FindCreditCard($cards->xpath('creditcard'), $_GET['id']); + + if($card) + { + $page->content('admin/creditcards.delete.php'); + $page->data('card',$card); + } + else + $page->addError('That credit card entry does not exist.'); + } + else if($_REQUEST['do'] == 'reallydelete') + { + $cardIdx = FindCreditCard($cards->xpath('creditcard'),$_POST['id'],true); + unset($cards->creditcard[$cardIdx]); + file_put_contents($FILES['ccinfo'],$cards->asXML()); + + $page->data("creditcards",$cards); + $page->addMessage('Credit card information successfully deleted.'); + } +} + +$page->process(); + +############################################################### FindCreditCard # +function FindCreditCard($cards, $cardId, $returnIdx = false) +{ + for($c = 0; $c < count($cards); $c++) + { + if((int)$cards[$c]['id'] == (int)$cardId) + if($returnIdx) + return $c; + else + return $cards[$c]; + } + + return NULL; +} + +?> \ No newline at end of file diff --git a/admin/index.php b/admin/index.php new file mode 100644 index 0000000..7311387 --- /dev/null +++ b/admin/index.php @@ -0,0 +1,38 @@ +init_user(); + +# make sure the user is logged in before he has access to the +# admin section +if(!$page->user()->check_role('admin')) + header('Location: login.php?message=1'); + +$page->attr('title','Administrate FTI'); +// to make jquery be loaded first +$page->useJSFile('jquery.min.js'); +$page->addJSFile('admin.js'); +$page->useCSSFile('admin.css'); + +$page->content('admin/home.php'); +$page->layout('admin_layout.php'); +$page->menu('admin/menu.php'); + +# get news posts +$news = xml_get_from_file($FILES['news']); +$page->data('news',array_reverse($news->xpath('newsitem'))); + +# get credit cards +$cards = xml_get_from_file($FILES['ccinfo']); +$page->data('creditcards',array_reverse($cards->xpath('creditcard'))); + +# get passports +$passports = xml_get_from_file($FILES['passportinfo']); +$page->data('passports',$passports->xpath('passport')); + +$page->process(); + +?> \ No newline at end of file diff --git a/admin/linksandnumbers.php b/admin/linksandnumbers.php new file mode 100644 index 0000000..68d427a --- /dev/null +++ b/admin/linksandnumbers.php @@ -0,0 +1,188 @@ +init_user(); + +# make sure the user is logged in before he has access to the +# admin section +if(!$page->user()->check_role('admin')) + header('Location: login.php?message=1'); + +$page->attr('title','Administrate FTI: Links and Numbers'); +// to make jquery be loaded first +$page->useJSFile('jquery.min.js'); +$page->addJSFile('admin.js'); +$page->useCSSFile('admin.css'); + +$page->content('admin/linksandnumbers.php'); +$page->layout('admin_layout.php'); +$page->menu('admin/menu.php'); + +# get news posts +$linksandnumbers = xml_get_from_file($FILES['linksandnumbers']); +$items = $linksandnumbers->xpath('item'); +$page->data('linksandnumbers',$items); + +if(isset($_REQUEST['do'])) +{ + if($_REQUEST['do'] == 'add' || $_REQUEST['do'] == 'edit') + { + $page->addJSFile('admin/textboxbuttons.js'); + // this may be changed below, if the item is not found + $page->content('admin/linksandnumbers.add.edit.php'); + + if($_GET['do'] == 'edit') + { + $item = FindItemById($items,$_GET['id']); + + if(!is_null($item)) + { + $page->data('item',$item); + $page->data('editing',true); + } + else + { + $page->addError('Links and numbers item does not exist. Please try again.'); + $page->content('admin/linksandnumbers.php'); + } + } + } + else if($_REQUEST['do'] == 'delete') + { + $item = FindItemById($items,$_GET['id']); + + if(!is_null($item)) + { + $page->content('admin/linksandnumbers.delete.php'); + $page->data('item',$item); + } + else + $page->addError('Links and items number does not exist. Please try again.'); + } + else if($_REQUEST['do'] == 'reallyadd') + { + $newItem = $linksandnumbers->addChild('item'); + $newItem->addChild('title',stripslashes($_POST['title'])); + $newItem->addChild('subtitle',stripslashes($_POST['subtitle'])); + $newItem->addChild('type',$_POST['type']); + $newItem->addChild('text',""); + + if(!empty($_POST['title']) && !empty($_POST['text'])) + { + $nextId = GetNextId($items); + $newItem->addAttribute('id',$nextId); + + if(file_put_contents($FILES['linksandnumbers'],xml_fix_cdata($linksandnumbers->asXML()))) + { + $page->addMessage('Links and numbers item added.'); + $page->data('linksandnumbers',$linksandnumbers->xpath('item')); + } + else + { + $page->addError('Could not add links and numbers item. Please try again later.'); + $page->data('item',$newItem); + $page->addJSFile('admin/textboxbuttons.js'); + $page->content('admin/linksandnumbers.add.edit.php'); + } + } + else + { + $page->addError('Please enter a title and text.'); + $page->data('item',$newItem); + $page->addJSFile('admin/textboxbuttons.js'); + $page->content('admin/linksandnumbers.add.edit.php'); + } + } + else if($_REQUEST['do'] == 'reallyedit') + { + $itemIdx = FindItemById($items,$_POST['id'],true); + $page->data('editing',true); + + if(!is_null($itemIdx)) + { + $linksandnumbers->item[$itemIdx]->title = stripslashes($_POST['title']); + $linksandnumbers->item[$itemIdx]->subtitle = stripslashes($_POST['subtitle']); + $linksandnumbers->item[$itemIdx]->type = $_POST['type']; + $linksandnumbers->item[$itemIdx]->text = ""; + + if(!empty($_POST['title']) && !empty($_POST['text'])) + { + if(file_put_contents($FILES['linksandnumbers'],xml_fix_cdata($linksandnumbers->asXML()))) + $page->addMessage('Links and numbers item saved.'); + else + { + $page->addError('Could not save links and numbers item. Please try again later.'); + $page->data('item',$linksandnumbers->item[$itemIdx]); + $page->addJSFile('admin/textboxbuttons.js'); + $page->content('admin/linksandnumbers.add.edit.php'); + } + } + else + { + $page->addError('Please enter a title and text.'); + $page->data('item',$linksandnumbers->item[$itemIdx]); + $page->addJSFile('admin/textboxbuttons.js'); + $page->content('admin/linksandnumbers.add.edit.php'); + } + } + else + $page->addError('Links and numbers item does not exit. Please try again.'); + } + else if($_REQUEST['do'] == 'reallydelete') + { + $itemIdx = FindItemById($items,$_POST['id'],true); + if(!is_null($itemIdx)) + { + unset($linksandnumbers->item[$itemIdx]); + + if(file_put_contents($FILES['linksandnumbers'],xml_fix_cdata($linksandnumbers->asXML()))) + { + $page->addMessage('Links and numbers item deleted.'); + $page->data('linksandnumbers',$linksandnumbers->xpath('item')); + } + else + { + $page->addError('Could not delete news item. Please try again later.'); + $page->data('item',$linksandnumbers->item[$itemIdx]); + $page->content('admin/linksandnumbers.delete.php'); + } + } + else + $page->addError('Links and numbers item does not exist. Please try again.'); + } +} + +$page->process(); + +################################################################# FindItemById # +function FindItemById($items, $itemId, $returnIdx = false) +{ + for($c = 0; $c < count($items); $c++) + { + if((int)$items[$c]['id'] === (int)$itemId) + if($returnIdx) + return $c; + else + return $items[$c]; + } + + return NULL; +} + +#################################################################### GetNextId # +function GetNextId($items) +{ + $largestId = 1; + for($c = 0; $c < count($items); $c++) + { + if($largestId < (int)$items[$c]['id']) + $largestId = (int)$items[$c]['id']; + } + + return $largestId + 1; +} + +?> \ No newline at end of file diff --git a/admin/login.php b/admin/login.php new file mode 100644 index 0000000..4a43b58 --- /dev/null +++ b/admin/login.php @@ -0,0 +1,37 @@ +init_user(); + +# log the user out, if requested +if(isset($_GET['logout'])) +{ + $page->user()->logout(); + $page->addMessage('Logout successful.'); +} +else +{ + # log the user in and redirect if the user successfully logged in + if(isset($_POST['username']) && isset($_POST['password'])) + if($page->user()->login($_POST['username'],$_POST['password'])) + header('Location: index.php'); + else + $page->addError('Username and/or password incorrect.'); + + if(isset($_GET['message'])) + $page->addMessage('Please login to use the admin section.'); +} + +$page->attr('title','Login'); +$page->display('header',false); +$page->display('footer',false); +$page->display('menu',false); +$page->layout('admin_layout.php'); +$page->useCSSFile('admin.css'); +$page->content('admin/login.php'); + +$page->process(); + +?> \ No newline at end of file diff --git a/admin/news.php b/admin/news.php new file mode 100644 index 0000000..f28b0de --- /dev/null +++ b/admin/news.php @@ -0,0 +1,180 @@ +init_user(); + +# make sure the user is logged in before he has access to the +# admin section +if(!$page->user()->check_role('admin')) + header('Location: login.php?message=1'); + +$page->attr('title','Administrate FTI: News'); +// to make jquery be loaded first +$page->useJSFile('jquery.min.js'); +$page->addJSFile('admin.js'); +$page->useCSSFile('admin.css'); + +$page->content('admin/news.php'); +$page->layout('admin_layout.php'); +$page->menu('admin/menu.php'); + +# get news posts +$news = xml_get_from_file($FILES['news']); +$newsItems = $news->xpath('newsitem'); +$page->data('news',array_reverse($newsItems)); + +if(isset($_REQUEST['do'])) +{ + if($_REQUEST['do'] == 'add' || $_REQUEST['do'] == 'edit') + { + $page->addJSFile('admin/textboxbuttons.js'); + // this may be changed below, if the news post is not found + $page->content('admin/news.add.edit.php'); + + if($_GET['do'] == 'edit') + { + $newsItem = FindNewsItem($newsItems,$_GET['id']); + + if(!is_null($newsItem)) + { + $page->data('newsitem',$newsItem); + $page->data('editing',true); + } + else + { + $page->addError('News post does not exist. Please try again.'); + $page->content('admin/news.php'); + } + } + } + else if($_REQUEST['do'] == 'delete') + { + $newsItem = FindNewsItem($newsItems,$_GET['id']); + + if(!is_null($newsItem)) + { + $page->content('admin/news.delete.php'); + $page->data('newsitem',$newsItem); + } + else + $page->addError('News post does not exist. Please try again.'); + } + else if($_REQUEST['do'] == 'reallyadd') + { + $newItem = $news->addChild('newsitem'); + $newItem->addChild('title',stripslashes($_POST['title'])); + $newItem->addChild('text',""); + + if(!empty($_POST['title']) && !empty($_POST['text'])) + { + $nextId = GetNextId($newsItems); + $newItem->addAttribute('id',$nextId); + + if(file_put_contents($FILES['news'],xml_fix_cdata($news->asXML()))) + { + $page->addMessage('News item added.'); + $page->data('news',array_reverse($news->xpath('newsitem'))); + } + else + { + $page->addError('Could not add news item. Please try again later.'); + $page->data('newsitem',$newItem); + $page->content('admin/news.add.edit.php'); + } + } + else + { + $page->addError('Please enter a title and text.'); + $page->data('newsitem',$newItem); + $page->content('admin/news.add.edit.php'); + } + } + else if($_REQUEST['do'] == 'reallyedit') + { + $newsItemIdx = FindNewsItem($newsItems,$_POST['id'],true); + $page->data('editing',true); + + if(!is_null($newsItemIdx)) + { + $news->newsitem[$newsItemIdx]->title = stripslashes($_POST['title']); + $news->newsitem[$newsItemIdx]->text = ""; + + if(!empty($_POST['title']) && !empty($_POST['text'])) + { + if(file_put_contents($FILES['news'],xml_fix_cdata($news->asXML()))) + $page->addMessage('News item saved.'); + else + { + $page->addError('Could not save news item. Please try again later.'); + $page->data('newsitem',$news->newsitem[$newsItemIdx]); + $page->content('admin/news.add.edit.php'); + } + } + else + { + $page->addError('Please enter a title and text.'); + $page->data('newsitem',$news->newsitem[$newsItemIdx]); + $page->content('admin/news.add.edit.php'); + } + } + else + $page->addError('News item does not exit. Please try again.'); + } + else if($_REQUEST['do'] == 'reallydelete') + { + $newsItemIdx = FindNewsItem($newsItems,$_POST['id'],true); + if(!is_null($newsItemIdx)) + { + unset($news->newsitem[$newsItemIdx]); + + if(file_put_contents($FILES['news'],xml_fix_cdata($news->asXML()))) + { + $page->addMessage('News item deleted.'); + $page->data('news',array_reverse($news->xpath('newsitem'))); + } + else + { + $page->addError('Could not delete news item. Please try again later.'); + $page->data('newsitem',$news->newsitem[$newsItemIdx]); + $page->content('admin/news.delete.php'); + } + } + else + $page->addError('News item does not exist. Please try again.'); + } +} + +$page->process(); + +################################################################# FindNewsItem # +function FindNewsItem($items, $itemId, $returnIdx = false) +{ + for($c = 0; $c < count($items); $c++) + { + if((int)$items[$c]['id'] === (int)$itemId) + if($returnIdx) + return $c; + else + return $items[$c]; + } + + return NULL; +} + +#################################################################### GetNextId # +function GetNextId($items) +{ + $largestId = 1; + for($c = 0; $c < count($items); $c++) + { + if($largestId < (int)$items[$c]['id']) + $largestId = (int)$items[$c]['id']; + } + + return $largestId + 1; +} + +?> \ No newline at end of file diff --git a/admin/passports.php b/admin/passports.php new file mode 100644 index 0000000..d14d537 --- /dev/null +++ b/admin/passports.php @@ -0,0 +1,86 @@ +init_user(); + +# make sure the user is logged in before he has access to the +# admin section +if(!$page->user()->check_role('admin')) + header('Location: login.php?message=1'); + +$page->attr('title','Administrate FTI: Passports'); +// to make jquery be loaded first +$page->useJSFile('jquery.min.js'); +$page->addJSFile('admin.js'); +$page->useCSSFile('admin.css'); + +$page->content('admin/passports.php'); +$page->layout('admin_layout.php'); +$page->menu('admin/menu.php'); + +# get passports +$passports = xml_get_from_file($FILES['passportinfo']); +$page->data('passports',array_reverse($passports->xpath('passport'))); + +if(isset($_REQUEST['do'])) +{ + if($_REQUEST['do'] == 'view') + { + # find the passport + $passport = FindItemById($passports->xpath('passport'), $_GET['id']); + + # if the passport was found above, send it to the template + if($passport) + { + $page->content('admin/passports.view.php'); + $page->data('passport',$passport); + } + # passport not found, display error + else + $page->addError('That passport does not exist.'); + } + else if($_REQUEST['do'] == 'delete') + { + # find the passport + $passport = FindItemById($passports->xpath('passport'), $_GET['id']); + + if($passport) + { + $page->content('admin/passports.delete.php'); + $page->data('passport',$passport); + } + else + $page->addError('That passport does not exist.'); + } + else if($_REQUEST['do'] == 'reallydelete') + { + $passportIdx = FindItemById($passports->xpath('passport'),$_POST['id'],true); + unset($passports->passport[$passportIdx]); + file_put_contents($FILES['passportinfo'],$passports->asXML()); + + $page->data("passports",$passports->xpath('passport')); + $page->addMessage('Passport information successfully deleted.'); + } +} + +$page->process(); + +################################################################# FindItemById # +function FindItemById($items, $itemId, $returnIdx = false) +{ + for($c = 0; $c < count($items); $c++) + { + if((int)$items[$c]['id'] == (int)$itemId) + if($returnIdx) + return $c; + else + return $items[$c]; + } + + return NULL; +} + +?> \ No newline at end of file diff --git a/bookingrequest.php b/bookingrequest.php new file mode 100644 index 0000000..d2642a3 --- /dev/null +++ b/bookingrequest.php @@ -0,0 +1,81 @@ +attr('title','Booking Request'); +$page->useJSFile('jquery.min.js'); +$page->addJSFile('jquery-ui.min.js'); +$page->addJSFile('default.js'); +$page->addJSFile("bookingrequest.js"); + +$page->addCSSFile("smoothness/jquery-ui.css"); +$page->addCSSFile("bookingrequest.css"); +# the default template for this page is this one +$page->content('bookingrequest.php'); + +# if the form has been submitted, then first present the information +# to be reviewed by the user, then submit the information to John +if(!empty($_POST)) +{ + # go to the review page if the user has just clicked on Review Information + # or, go to the form again with the information in it if the user clicked + # on "Edit Information" + if(isset($_POST['review_submit']) || isset($_POST['edit'])) + { + $page->data('info',$_POST); + # only if we are moving to the review information page to we not display + # the form + if(isset($_POST['review_submit'])) + $page->content('bookingrequest_review.php'); + } + # otherwise, we submit the form to john, since it has been reviewed + else + { + # cobble together the message to send to john + $message = ''; + foreach($_POST as $key => $value) + { + # skip the buttons + if($key == 'edit' || $key == 'submit' || $key == "FirstName" || $key == "MiddleName" + || $key == "LastName" || $key == "Gender" || $key == "Birthdate") + continue; + + $readable_key = ucfirst(str_replace('_',' ',$key)); + $message .= str_repeat(" ", (27 - strlen($key) - 1)) . "$readable_key: $value\n"; + } + + $spaces = str_repeat(" ", 15); + for($idx = 0; $idx < count($_POST["FirstName"]); $idx++) + { + if(empty($_POST["FirstName"][$idx])) + continue; + + $message .= $spaces . "Passenger " . ($idx + 1) . ": " . $_POST["FirstName"][$idx]; + $message .= " " . $_POST["MiddleName"][$idx] . " " . $_POST["LastName"][$idx]; + $message .= ", " . $_POST["Gender"][$idx] . ", " . $_POST["Birthdate"][$idx]; + $message .= "\n"; + } + + # send the e-mail, print success message if successful + if(mail($CONFIG['email'],'Booking Request Received', $message, "From: {$CONFIG['email']}\r\nReply-To: {$_POST['email_address']}")) + { + $page->addMessage('Your request has been sent, thank you. You will hear + from us within 3 business days, or sooner.'); + } + # if the e-mail did not succeed, give the post data to the table + # and print an error message + else + { + $page->addError('We could not send your request at this time. Please try again later.'); + $page->data('info',$_POST); + $page->content('bookingrequest_review.php'); + } + } +} + +$page->process(); + +?> \ No newline at end of file diff --git a/creditcard.php b/creditcard.php new file mode 100644 index 0000000..f180f68 --- /dev/null +++ b/creditcard.php @@ -0,0 +1,49 @@ +attr('title','Send Credit Card Information'); +$page->content('creditcard.php'); +// to make jquery be loaded first +$page->useJSFile('jquery.min.js'); +$page->addJSFile('default.js'); + +# save form when it's submitted +if(!empty($_POST)) +{ + $ccFile = xml_get_from_file($FILES['ccinfo']); + $lastID = $ccFile->creditcard[count($ccFile) - 1]['id']; + + $newCC = $ccFile->addChild('creditcard'); + $newCC->addAttribute('id',$lastID + 1); + + foreach($_POST as $key => $value) + { + # skip any forum values not starting with 'billing_' or 'card_' + if(strpos($key,'billing_') === false && strpos($key,'card_') === false) + continue; + + # clean up form contents + $value = strip_tags($value); + $value = htmlspecialchars($value); + + # add new child + $newCC->addChild($key,$value); + } + + # save the new xml + file_put_contents($FILES['ccinfo'],$ccFile->asXML()); + # give user a success message + $page->addMessage('Your credit card information has been successfully submitted. Thank you.'); + # send email notification that new cc info is available + $message = "You have another set of credit card information available online."; + $subject = 'New credit card information available.'; + mail($CONFIG['email'],$subject,$message,"From: ".$CONFIG['email']); +} + +$page->process(); + +?> \ No newline at end of file diff --git a/history.php b/history.php new file mode 100644 index 0000000..d6d5208 --- /dev/null +++ b/history.php @@ -0,0 +1,12 @@ +attr('title','History of FTI'); +$page->content('history.php'); + +$page->process(); + +?> \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..a44c430 --- /dev/null +++ b/index.php @@ -0,0 +1,20 @@ +init_user(); + +$page->attr('title','Your Christian Travel Resource'); +$page->content('home.php'); +$page->useJSFile('jquery.min.js'); +$page->addJSFile('default.js'); + +# get news items +$news = xml_get_from_file($FILES['news']); +$page->data('news',$news->xpath('newsitem')); + +$page->process(); + +?> \ No newline at end of file diff --git a/itinerary_beforecontinuing.php b/itinerary_beforecontinuing.php new file mode 100644 index 0000000..05e3fce --- /dev/null +++ b/itinerary_beforecontinuing.php @@ -0,0 +1,19 @@ +attr('title','Before You Continue To View Your Itinerary'); + +if(isset($_GET['type']) && !empty($_GET['type'])) +{ + $page->data('itinerary_type',$_GET['type']); + $page->content('itinerary_beforecontinuing.php'); +} +else + header('Location: viewyouritinerary.php'); + +$page->process(); + +?> \ No newline at end of file diff --git a/linksandnumbers.php b/linksandnumbers.php new file mode 100644 index 0000000..78a2749 --- /dev/null +++ b/linksandnumbers.php @@ -0,0 +1,50 @@ +attr('title','Links and Numbers'); +$linksandnumbers = xml_get_from_file($FILES['linksandnumbers']); +$items = $linksandnumbers->xpath('item'); + +if(isset($_GET['id'])) +{ + $itemIdx = FindItemById($items,$_GET['id'],true); + + if(!is_null($itemIdx)) + { + $page->data('item',$items[$itemIdx]); + $page->content('linksandnumbers.subpage.php'); + } + else + { + $page->addError('Links and numbers item does not exist.'); + $page->content('linksandnumbers.php'); + } +} +else +{ + $page->data('items',$items); + $page->content('linksandnumbers.php'); +} + +$page->process(); + +################################################################# FindItemById # +function FindItemById($items, $itemId, $returnIdx = false) +{ + for($c = 0; $c < count($items); $c++) + { + if((int)$items[$c]['id'] === (int)$itemId) + if($returnIdx) + return $c; + else + return $items[$c]; + } + + return NULL; +} + +?> \ No newline at end of file diff --git a/passportinfo.php b/passportinfo.php new file mode 100644 index 0000000..ae4ca6e --- /dev/null +++ b/passportinfo.php @@ -0,0 +1,57 @@ +attr('title','Submit Your Passport Information'); +$page->content('passportinfo.php'); +// to make jquery be loaded first +$page->useJSFile('jquery.min.js'); +$page->addJSFile('default.js'); + +# if form has not been submitted, then is probably the initial request +# for the page, so just display the form +if(!empty($_POST)) +{ + #print_r($_POST); + $passportFile = xml_get_from_file($FILES['passportinfo']); + $lastID = $passportFile->passport[count($passportFile) - 1]['id']; + + # clean each entry up + foreach($_POST as $key => $val) + { + foreach($_POST[$key] as $key2 => $val2) + { + $_POST[$key][$key2] = strip_tags($_POST[$key][$key2]); + $_POST[$key][$key2] = htmlspecialchars($_POST[$key][$key2]); + } + } + + # add new passports to file + for($c = 0; $c < count($_POST['passport_name']); $c++) + { + $newPassport = $passportFile->addChild('passport'); + $newPassport->addAttribute('id',$lastID + 1); + $newPassport->addChild('name',$_POST['passport_name'][$c]); + $newPassport->addChild('birthdate',$_POST['passport_birthdate'][$c]); + $newPassport->addChild('number',$_POST['passport_number'][$c]); + $newPassport->addChild('expiration_date',$_POST['passport_expirationdate'][$c]); + $newPassport->addChild('expiration_country',$_POST['passport_country'][$c]); + } + + # save the new xml file + file_put_contents($FILES['passportinfo'],$passportFile->asXML()); + # add success message + $page->addMessage('Your passport information has been successfully submitted.'); + + # email to let john know he's got a new entry + $message = "You have another set of passport information available online."; + $subject = 'New passport information available.'; + mail($CONFIG['email'],$subject,$message,"From: ".$CONFIG['email']); +} + +$page->process(); + +?> \ No newline at end of file diff --git a/php/.htaccess b/php/.htaccess new file mode 100644 index 0000000..546bb3c --- /dev/null +++ b/php/.htaccess @@ -0,0 +1 @@ +Options -indexes \ No newline at end of file diff --git a/php/classes/page.php b/php/classes/page.php new file mode 100755 index 0000000..a6d9f0d --- /dev/null +++ b/php/classes/page.php @@ -0,0 +1,344 @@ +absPath = str_replace($_SERVER['SCRIPT_NAME'],'',$_SERVER['SCRIPT_FILENAME']).'/'; + $this->absURL = preg_replace('/^(.*)\/\w+\.php$/','$1',$_SERVER['SCRIPT_NAME']).'/'; + $this->site = 'site/'; + $this->templates = $this->absPath.$this->site; + $this->js = '/'.$this->site . 'javascript/'; + $this->css = '/'.$this->site . 'css/'; + $this->graphics = '/'.$this->site . 'graphics/'; + + # the page language is automatically pulled from a language + # cookie names 'lang' + if(isset($_GET['lang'])) + { + $this->lang = $_GET['lang']; + setcookie('lang',$_GET['lang'],time() + 60*60*24*365); + + # if the lang parameter is empty, we want to get rid of the cookie + if(empty($_GET['lang'])) + unset($_COOKIE['lang']); + } + else if(isset($_COOKIE['lang']) && !empty($_COOKIE['lang'])) + $this->lang = $_COOKIE['lang']; + else + $this->lang = 'en'; + + $this->templates .= $this->lang .'/'; + $this->graphics .= $this->lang .'/'; + + # default values for title and pageName + $this->title = isset($TITLE_PREFIX) ? $TITLE_PREFIX : 'Welcome!'; + $this->pageName = preg_replace('/^.*\/(\w+)\.php$/','$1',$_SERVER['SCRIPT_NAME']); + + # elements of our page + $this->header = $this->templates . 'header.php'; + $this->footer = $this->templates . 'footer.php'; + $this->content = $this->templates . 'home.php'; + $this->menu = $this->templates . 'menu.php'; + $this->layout = 'default_layout.php'; + + # by default, the header, footer and content are all displayed + $this->display = array( + 'header' => true, + 'footer' => true, + 'content' => true, + 'menu' => true + ); + + # load default css and js files + array_push($this->cssFiles,$this->css . 'default.css'); + array_push($this->jsFiles,$this->js . 'default.js'); + } + # automatically load all css files from folder + public function autoloadCSS() + { + # find all CSS files in css folder + $this->cssFiles = preg_grep('/\.css$/',scandir($this->absPath . $this->css)); + + # make each path relative to absURL + foreach($this->cssFiles as $key => $value) + $this->cssFiles[$key] = $this->css . $value; + } + # automatically load all javascript files from folder + public function autoloadJS() + { + # find all js files in javascript folder + $this->jsFiles = preg_grep('/\.js$/',scandir($this->absPath . $this->js)); + + # make each path relative to absURL + foreach($this->jsFiles as $key => $value) + $this->jsFiles[$key] = $this->js . $value; + } + # processes all or part of the page + public function process($part = NULL) + { + # it is possible to process the header or footer by + # itself or just the content, or the entire page + if($part == 'header') + $this->_processHeader(); + else if($part == 'footer') + $this->_processFooter(); + else if($part == 'content') + $this->_processContent(); + else + $this->_processPage(); + } + # adds a js file to ones already pulled from standard + # folder + public function addJSFile($new_file) + { + # a list of files can be passed to add several js files at once + if(func_num_args() > 1) + { + $files = func_get_args(); + foreach($files as $js_file) + { + array_push($this->jsFiles, $this->js . $js_file); + } + } + # add single file with relative path + else + { + array_push($this->jsFiles, $this->js . $new_file); + } + } + # replaces all other js files with this one + public function useJSFile($new_file) + { + $this->jsFiles = array($this->js . $new_file); + } + # adds a css file to ones already pulled from standard folder + public function addCSSFile($new_file) + { + # a list of files can be passed to add several CSS files at once + if(func_num_args() > 1) + { + $files = func_get_args(); + foreach($files as $css_file) + { + array_push($this->cssFiles, $this->css . $css_file); + } + } + # add file with relative path + else + { + array_push($this->cssFiles, $this->css . $new_file); + } + } + # replaces all other css files with this one + public function useCSSFile($new_file) + { + $this->cssFiles = array($this->css . $new_file); + } + # adds an error message to the array + public function addError($err) + { + array_push($this->errors,$err); + } + # adds non-error message to the array + public function addMessage($msg) + { + array_push($this->messages,$msg); + } + ################################################################################ + # SETTERS/GETTERS + # return the user object + public function init_user() + { + $this->user = new User($this->absPath.$this->site); + } + public function user() + { + if(empty($this->user)) + $this->init_user(); + + return $this->user; + } + # you can pass data to the template via this variable + public function data($key,$value = NULL) + { + if(!is_null($value)) + $this->data[$key] = $value; + else + return($this->data[$key]); + } + # you can turn off parts of the page by setting it's + # corresponding display element to false + public function display($page_element,$value = NULL) + { + if(!is_null($value)) + $this->display[$page_element] = $value; + else + return($this->display[$page_element]); + } + # setter/getter for header file + public function header($new_header = NULL) + { + if(!is_null($new_header)) + $this->header = $this->templates . $new_header; + else + return $this->header; + } + # setter/getter for footer file + public function footer($new_footer = NULL) + { + if(!is_null($new_footer)) + $this->footer = $this->templates . $new_footer; + else + return $this->footer; + } + # setter/getter for content file + public function content($new_content = NULL) + { + if(!is_null($new_content)) + $this->content = $this->templates . $new_content; + else + return $this->content; + } + # setter/getter for menu file + public function menu($new_menu = NULL) + { + if(!is_null($new_menu)) + $this->menu = $this->templates . $new_menu; + else + return $this->menu; + } + # setter/getter for layout file + public function layout($new_layout = NULL) + { + if(!is_null($new_layout)) + $this->layout = $new_layout; + else + return $this->layout; + } + + # accessor/modifier for page attributes + public function attr($attr,$value = NULL) + { + global $CONFIG; + # the case when we are setting an attribute + if(!is_null($value)) + { + switch($attr) + { + case 'lang': + $this->lang = $value; + $this->templates = $this->site; + $this->templates .= $this->lang .'/'; + $this->graphics .= $this->lang .'/'; + $this->header = $this->templates . 'header.php'; + $this->footer = $this->templates . 'footer.php'; + $this->content = $this->templates . 'home.php'; + break; + case 'title': + $this->title = $CONFIG['title_prefix'].': '.$value; + break; + default: + break; + } + } + # the case when we are getting an attribute + else + { + switch($attr) + { + case 'lang': + return $this->lang; + break; + case 'title': + return $this->title; + break; + default: + break; + } + } + } + ################################################################################ + # PRIVATE FUNCTIONS + private function _processPage() + { + include $this->absPath . $this->site . 'layout/html.php'; + } + private function _processHeader() + { + include $this->header; + } + private function _processFooter() + { + include $this->footer; + } + private function _processContent() + { + include $this->content; + } +} + +################################################################## page_errors # +function page_errors($errno, $errstr, $errfile, $errline, $errcontext) +{ + global $page; + + # don't do anything with the message if error_reporting + # is too low for this type of error + if(!(error_reporting() & $errno)) + return true; + + switch($errno) + { + case E_USER_ERROR: + $page->addError($errstr); + break; + case E_NOTICE: + case E_WARNING: + case E_USER_WARNING: + case E_USER_NOTICE: + $page->addMessage($errstr.$errno.$errfile.$errline); + break; + default: + $page->addError("$errno: $errstr on $errline in $errfile"); + break; + } + + return true; +} + +?> \ No newline at end of file diff --git a/php/classes/user.php b/php/classes/user.php new file mode 100644 index 0000000..efadcfc --- /dev/null +++ b/php/classes/user.php @@ -0,0 +1,95 @@ +user_data = simplexml_load_file($site_path.'data/users/users.xml'); + $this->username = $_SESSION['username']; + $this->loggedin = $_SESSION['_loggedin']; + $this->role = $_SESSION['userrole']; + } + public function __destruct() + { + # save the session data when the object goes out of context + $_SESSION['username'] = $this->username; + $_SESSION['_loggedin'] = $this->loggedin; + $_SESSION['userrole'] = $this->role; + } + # see if a user is logged in + public function user_exists() + { + return $this->loggedin; + } + # check if the user has a role equal to what is passed + public function check_role($role_to_check) + { + $role_to_check = strtolower($role_to_check); + if(($role_to_check == $this->role) && $this->loggedin) + return true; + else + return false; + } + public function login($username,$password) + { + foreach($this->user_data->user as $user) + { + if($username == (string)$user->username) + { + $hash = sha1($password); + #print $hash; + if($hash == (string)$user->password) + { + $this->username = $username; + $this->password = $hash; + $this->loggedin = true; + $this->role = (string)$user->role; + + return true; + } + return false; + } + } + return false; + } + # log the user out + public function logout() + { + # delete cookie + setcookie('PHPSESSID','',time()-3600); + # delete the session entirely + session_unset(); + + # reset object vars + $this->loggedin = false; + $this->username = NULL; + $this->password = NULL; + $this->role = NULL; + + return true; + } + ############################################################################## + # SETTERS/GETTERS + public function username($new_username = NULL) + { + if(!is_null($new_username)) + $this->username = $new_username; + else + return $this->username; + } + public function role() + { + return $this->role; + } + ############################################################################## + # PRIVATE FUNCTIONS + +} + +?> \ No newline at end of file diff --git a/php/functions/func_file.php b/php/functions/func_file.php new file mode 100644 index 0000000..9201608 --- /dev/null +++ b/php/functions/func_file.php @@ -0,0 +1,58 @@ + $value) + $_FILES[$input_name][$key] = array($_FILES[$input_name][$key]); + } + + foreach($_FILES[$input_name]['tmp_name'] as $key => $value) + { + if(!is_uploaded_file($_FILES[$input_name]['tmp_name'][$key])) + { + $no_errs = false; + trigger_error('File "'.$_FILES[$input_name]['name'][$key].'" is not an uploaded file.',E_USER_ERROR); + } + + $clean_name = $_FILES[$input_name]['name'][$key]; + # find the extension + preg_match("/(\.\S+)$/",$clean_name,$matches); + $ext = $matches[1]; + # take the extension off of the file name + $clean_name = str_replace($ext,'',$clean_name); + $clean_name = preg_replace($replace_regex,'_',$clean_name); + + # move the uploaded file to the new location, unless a file with the same name + # is already there + if(file_exists($save_path.'/'.$clean_name.$ext) and !$overwrite) + { + $no_errs = false; + trigger_error('File "'.$_FILES[$input_name]['name'][$key].'" already exists.', E_USER_ERROR); + } + if(move_uploaded_file($_FILES[$input_name]['tmp_name'][$key],$save_path.'/'.$clean_name.$ext)) + array_push($clean_names,$clean_name.$ext); + else + { + $no_errs = false; + trigger_error('File "'.$_FILES[$input_name]['name'][$key].'" could not be moved to permanent location.', E_USER_ERROR); + } + } + + if(count($clean_names) == 1) + return($clean_names[0]); + else + return($clean_names); +} + +?> \ No newline at end of file diff --git a/php/functions/func_filesystem.php b/php/functions/func_filesystem.php new file mode 100755 index 0000000..474bf15 --- /dev/null +++ b/php/functions/func_filesystem.php @@ -0,0 +1,150 @@ + + + $element + +
"; + $folderhtml .= filesys_get_folder_tree("$path/$element"); + $folderhtml .= " +
\n\n"; + } + else + { + # get the size of this file in kilobytes + $file_size_kb = intval(filesize($path.'/'.$element) / 1024); + $folderhtml .= " + + $element + ($file_size_kb Kb)
\n"; + } + } + } + + return $folderhtml; +} + +################################################ FUNCTION: filesys_dirs_present # +# returns: true or false +# parameters: path to directory to inspect, pattern to match directory name +# against +function filesys_dirs_present($path,$pattern = "/.*/") +{ + # make sure the path passed here is really a directory we can't + # check anything but a directory, since only directory will contain + # other directories, duh + $handle = is_dir($path) ? opendir($path) : NULL ; + if(empty($handle)) + { return(NULL); } + + # set through each child in this directory and see if the child + # is directory but not the parent or current directory + # readdir returns FALSE when no children are left to inspect + while($child = readdir($handle) and $child !== false) + { + # make sure each is_dir call is not using cached information + # from last is_dir check + clearstatcache(); + # check if this child is directory and whether it + # matches the user given pattern or not + if(is_dir($path.'/'.$child) + and ($child !== '..') + and ($child !== '.') + and (preg_match($pattern,$child)) ) + { + # we can return true with the first matching folder we find + # this is an OR operation + return(true); + } + } + + # if we get here, no matching folders were found, so none exist + # so we return false + return(false); +} + +######################################### FUNCTION: filesys_get_wanted_children # +# returns: array of wanted dir children +# parameters: 1) path to directory; 2) command to remove [files,folders] +# 3) a pattern to match folder/file names against +function filesys_get_wanted_children($path,$exclude,$pattern = "/.*/") +{ + # the cmd can be passed as either all cap or not, so conform it + # here to lower case + $exclude = strtolower($exclude); + + # fill an array full of the directory children, but only, of course if + # the passed path is really to a directory + $children = is_dir($path) ? scandir($path) : NULL ; + if(empty($children)) + { return(NULL); } + + # remove the current and parent directories + $children = preg_grep("/^\.{1,2}$/",$children,PREG_GREP_INVERT); + # get only the children that match the pattern + $children = preg_grep($pattern,$children); + + # if files are to be removed, remove them + if($exclude == 'files') + { + foreach($children as $key => $value) + { + if(!is_dir($path.'/'.$value)) + unset($children[$key]); + } + } + # if folders are to be removed, remove them + else if($exclude == 'folders') + { + foreach($children as $key => $value) + { + if(is_dir($path.'/'.$value)) + unset($children[$key]); + } + } + + # return the array of directory children, free of the bad little ones + return($children); +} + +?> \ No newline at end of file diff --git a/php/functions/func_xml.php b/php/functions/func_xml.php new file mode 100644 index 0000000..96f0460 --- /dev/null +++ b/php/functions/func_xml.php @@ -0,0 +1,63 @@ +children(); + $count = count($children); + + return($children[rand(0,$count-1)]); +} + +################################################## FUNCTION: xml_get_from_file # +function xml_get_from_file($file_path) +{ + if(!file_exists($file_path)) + { + trigger_error('XML file "'.$file_path.'" does not exist!'); + return NULL; + } + + return simplexml_load_file($file_path); +} + +################################################ FUNCTION: xml_nl_to_paragraph # +function xml_nl_to_paragraph($string) +{ + $string = '

'.preg_replace('#([\r\n]\s*?[\r\n]){2,}#','

$0

',$string).'

'; + $string = str_replace('

','',$string); + + return $string; +} + +################################################### FUNCTION: xml_parse_bbcode # +function xml_parse_bbcode($string) +{ + $codes = array('[b]','[/b]','[i]','[/i]','[/link]'); + $translation = array('','','','',''); + + // replace bbcode items from above + $string = str_replace($codes,$translation,$string); + + // deal with [link]s + $pattern = "#\[link href=([^\]]+)\]#"; + $replacement = ""; + $string = preg_replace($pattern,$replacement,$string); + + return $string; +} + +###################################################### FUNCTION: xml_fix_cdata # +function xml_fix_cdata($string) +{ + $find[] = '<![CDATA['; + $replace[] = ''; + + return $string = str_replace($find, $replace, $string); +} + +?> \ No newline at end of file diff --git a/php/includes/config.php b/php/includes/config.php new file mode 100644 index 0000000..a56f92a --- /dev/null +++ b/php/includes/config.php @@ -0,0 +1,15 @@ + 'Friendship Tours International', + 'email' => 'Friendship Tours Intl ', +); + +$FILES = array( + 'news' => $DOCROOT.'/site/data/news.xml', + 'passportinfo' => $DOCROOT.'/site/data/passportinfo.xml', + 'ccinfo' => $DOCROOT.'/site/data/creditcards.xml', + 'linksandnumbers' => $DOCROOT.'/site/data/linksandnumbers.xml', +); + +?> \ No newline at end of file diff --git a/site/.htaccess b/site/.htaccess new file mode 100644 index 0000000..546bb3c --- /dev/null +++ b/site/.htaccess @@ -0,0 +1 @@ +Options -indexes \ No newline at end of file diff --git a/site/css/admin.css b/site/css/admin.css new file mode 100644 index 0000000..44d15a5 --- /dev/null +++ b/site/css/admin.css @@ -0,0 +1,212 @@ +/*********************************************** +* Default styles for: friendshiptours.org Admin section +* Author: Benjamin Ramey +* E-mail: ben.ramey@gmail.com +* Created: Wed Jan 16 16:52:38 CST 2008 +***********************************************/ + +/*********************************************** + Main element styles +***********************************************/ +body { + font-family: Arial; +} +h1 { + text-indent: -10000px; +} +h1 a { + display: block; + width: 600px; + height: 137px; + background: url(/site/graphics/logo.gif) no-repeat top center transparent; +} +h3 { + margin: 25px auto 0px; +} +p { + margin: 10px auto 20px; +} +ul#admin_nav { + list-style-type: none; + padding: 4px 0px; + background: #336699; +} + ul#admin_nav li { + display: inline; + margin: 0 5px; + } + ul#admin_nav li a { + display: inline; + padding: 6px; + background: transparent; + color: white; + font-size: 0.9em; + text-decoration: none; + } + ul#admin_nav li a:hover { + background: #333; + } +#index #index_link a, +#news #news_link a, +#linksandnumbers #linksandnumbers_link a, +#creditcards #creditcards_link a, +#passports #passports_link a +{ + background: #333; +} +#content { + margin: 10px 20px; +} +#footer { + margin-top: 20px; + padding: 10px; + font-size: 0.8em; + border-top: 2px solid #333; + color: #666; + text-align: center; +} +#messages { + margin: 10px 0; + padding: 2px; + background: #FFFF66; +} + #messages ul { + list-style-type: none; + } +#errors { + margin: 10px 0; + padding: 2px; + background: #CC0000; + color: white; +} + #errors ul { + list-style-type: none; + } +/*********************************************** + Summary/data table styles +***********************************************/ +.summary_table, .data_table { + border-width: 1px 0px; + border-color: #999; + border-style: solid; +} +.summary_data { + padding-right: 10px; +} +.summary_data:hover { + background: #fcfcfc; +} +.summary_actions { + padding-left: 10px; + border-left: 1px #ccc solid; +} +.summary_actions:hover { + background: #fcfcfc; +} +.data_key { + text-align: right; + font-weight: bold; +} +.data_value {} + +/*********************************************** + Form styles +***********************************************/ +.login-box { + width: 400px; + margin: 0 auto; +} +.form_button_group { + margin: 6px 0px; + text-align: left; + width: 600px; +} +a.form_button:link, a.form_button:visited { + display: inline; + padding: 2px 6px; + border: 1px solid black; + text-decoration: none; + color: black; +} +a.form_button:hover { + background: black; + color: white; +} +fieldset { + margin: 10px; + border: 0; +} +fieldset legend { + font-weight: bold; + border-bottom: 1px solid black; +} +p.field, p.error_field, p.date { + position: relative; + width: 190px; + margin: 10px 0; +} +p.error_field { + font-weight: bold; + color: red; +} +p.field_medium, p.error_field_medium { + position: relative; + width: 250px; + margin: 10px 0; +} +p.field_long, p.error_field_long { + position: relative; + width: 400px; + margin: 10px 0; +} +span.field_details { + display: block; + width: 380px; + position: relative; + left: 100%; + font-size: 0.9em; + padding: 4px 0; + margin: 4px 0 0; +} +p.field span.field_content { + width: 400px; + position: absolute; + left: 100%; + margin-left: 10px; +} +p.field input, +p.field select, +p.field_long input, +p.field_long select, +p.field_medium input, +p.field_medium select, +p.error_field input, +p.error_field select, +p.error_field_long input, +p.error_field_long select, +p.error_field_medium input, +p.error_field_medium select { + position: absolute; + left: 100%; +} +input.long { + width: 250px; +} +p.date span.date_fields { + width: 380px; + position: absolute; + left: 100%; +} +input.delete_person { + font-size: 0.7em; +} +#news_form textarea, #linksandnumbers_form textarea { + width: 600px; + height: 200px; +} +table.data_table { + border-spacing: 10px; +} +table.data_table td { + vertical-align: top; +} \ No newline at end of file diff --git a/site/css/bookingrequest.css b/site/css/bookingrequest.css new file mode 100644 index 0000000..03d273b --- /dev/null +++ b/site/css/bookingrequest.css @@ -0,0 +1,36 @@ +/* + * Styles for the bookrequest page + */ +.ui-datepicker { + font-size: 0.8em; +} +table.passengers { + border-collapse: collapse; + empty-cells: hide; + margin: 0 10px; +} +table.passengers th { + background-color: #eee; + border: 1px solid #999; +} +table.passengers th, +table.passengers td { + padding: 4px; +} +table.passengers tbody input { + width: 100px; +} +table.passengers tbody input.date-input { + width: 70px; +} +button.passenger-btn { + margin-top: 5px; + margin-left: 10px; +} +table.passengers-review { + border-collapse: collapse; +} +table.passengers-review td { + border: 1px solid #eee; + padding: 4px 6px; +} \ No newline at end of file diff --git a/site/css/default.css b/site/css/default.css new file mode 100644 index 0000000..9fe0cb6 --- /dev/null +++ b/site/css/default.css @@ -0,0 +1,301 @@ +/*********************************************** +* Default styles for: friendshiptours.org +* Author: Benjamin Ramey +* E-mail: ben.ramey@gmail.com +* Created: Sun Dec 16 17:46:57 CST 2007 +***********************************************/ +/*********************************************** + Major page element styles +***********************************************/ +html, body { + height: 100%; + margin: 0; + padding: 0; +} +body { + background: #778899; + font-family: Times; +} +iframe { + border: 0; + margin: 0; + padding: 0; + width: 100%; + height: 550px; + background: white; +} + .iframe-link { + margin: 0; + background: white; + padding: 10px; + border-bottom: 2px solid black; + } +h1 { + margin: 0; + padding: 16px 0; + text-indent: -10000px; +} +h1 a { + display: block; + margin: 0 auto; + width: 600px; + height: 137px; + background: url(/site/graphics/logo.gif) no-repeat top center transparent; +} +h2 { + margin: 0; + padding: 5px; + font-family: Arial; + font-size: 0.8em; + background: #778899; + text-align: center; + font-weight: bold; + color: white; + border-bottom: 1px solid black; +} +h3 { + text-align: center; +} +ul.linksandnumbers-list { + list-style-type: none; +} + ul.linksandnumbers-list li { + margin: 15px 0; + } +p.sub-link { + text-align: center; +} +p.intro { + margin: 20px; + padding: 10px; + border: 1px black solid; +} +#main { + position: relative; + margin: 0 auto -90px; + width: 670px; + padding: 0 10px; + border-width: 0 5px; + border-style: solid; + border-color: #000066; + background: white; + min-height: 100%; + height: 100%; + voice-family: "\"}\""; + voice-family: inherit; + height: auto; +} +html>body #main { + height: auto; +} +#content { + clear: both; +} +#footer { + position: absolute; + bottom: 0; + width: 650px; + border-top: 1px solid black; + padding: 10px 10px 0; + font-size: 0.7em; + text-align: center; + clear: both; +} +#footer form { + margin: 0; + padding: 0; + float: right; +} +#footer p { + float: left; +} +#clearfooter { + clear: both; + height: 90px; +} +#messages { + margin: 10px 0; + padding: 2px; + background: #FFFF66; +} + #messages ul { + list-style-type: none; + } +#errors { + margin: 10px 0; + padding: 2px; + background: #CC0000; + color: white; +} + #errors ul { + list-style-type: none; + } +/*********************************************** + Form styles +***********************************************/ +fieldset { + margin: 10px; + border: 0; +} +fieldset legend { + font-weight: bold; + border-bottom: 1px solid black; +} +p.field, p.error_field, p.date { + position: relative; + width: 190px; + margin: 10px 0; +} +p.error_field { + font-weight: bold; + color: red; +} +p.field_medium, p.error_field_medium { + position: relative; + width: 250px; + margin: 10px 0; +} +p.field_long, p.error_field_long { + position: relative; + width: 400px; + margin: 10px 0; +} +span.field_details { + display: block; + width: 380px; + position: relative; + left: 100%; + font-size: 0.9em; + padding: 4px 0; + margin: 4px 0 0; +} +p.field span.field_content { + width: 400px; + position: absolute; + left: 100%; + margin-left: 10px; +} +p.field input, +p.field select, +p.field_long input, +p.field_long select, +p.field_medium input, +p.field_medium select, +p.error_field input, +p.error_field select, +p.error_field_long input, +p.error_field_long select, +p.error_field_medium input, +p.error_field_medium select { + position: absolute; + left: 100%; +} +p.date span.date_fields { + width: 380px; + position: absolute; + left: 100%; +} +input.delete_person { + font-size: 0.7em; +} +#bookingrequest_form textarea { + width: 400px; + height: 60px; +} +table.data_table { + border-spacing: 10px; +} +table.data_table td { + vertical-align: top; +} +/*********************************************** + Menu styles +***********************************************/ +#menu ul { + list-style-type: none; + margin: 0; + padding: 6px 4px; + background: #778899; + border-width: 5px 0 0; + border-color: #000066; + border-style: solid; + height: 14px; +} +#menu #nav2 { + border-width: 0 0 5px; +} + #menu li { + display: block; + float: left; + margin: 0 23px; + width: 154px; + text-align: center; + padding: 0 10px; + background: transparent; + } + #menu li:hover { + background: url(/site/graphics/icon_airplane.jpg) no-repeat left center; + } + #menu a { + background: transparent; + color: white; + text-decoration: none; + } + #menu a:visited { + text-decoration: none; + color: white; + } + #menu a:hover { + color: #ccc; + text-decoration: none; + } +#index #home_link, +#history #history_link, +#viewyouritinerary #viewyouritinerary_link, +#itinerary_beforecontinuing #viewyouritinerary_link, +#linksandnumbers #linksandnumbers_link, +#creditcard #creditcard_link { + background: url(/site/graphics/icon_airplane.jpg) no-repeat left center; +} +/*********************************************** + News styles +***********************************************/ +#news-jumper { + width: 450px; + float: left; +} +.news-item { + border-top: 1px black solid; + margin: 20px 10px 10px; +} +p.top-link { + margin: 2px; + padding: 0; + text-align: center; +} +/*********************************************** + Page box styles +***********************************************/ +.page-box-center { + border: 1px solid black; + background: white; + margin-bottom: 20px; +} +.page-box-left { + border: 1px solid black; + float: left; + width: 450px; + background: white; + margin-bottom: 20px; +} +.page-box-right { + border: 1px solid black; + float: right; + width: 210px; + background: white; +} + .page-box-center p, + .page-box-right hr, + .page-box-right p { + margin: 10px; + } \ No newline at end of file diff --git a/site/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/site/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/site/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/site/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= literal 0 HcmV?d00001 diff --git a/site/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/site/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..ad3d6346e00f246102f72f2e026ed0491988b394 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hLi978O6-<~(*I$*%ybaDOn z{W;e!B}_MSUQoPXhYd^Y6RUoS1yepnPx`2Kz)7OXQG!!=-jY=F+d2OOy?#DnJ32>z UEim$g7SJdLPgg&ebxsLQ09~*s;{X5v literal 0 HcmV?d00001 diff --git a/site/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/site/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/site/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/site/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uP{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/site/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/site/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100755 index 0000000000000000000000000000000000000000..7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30 GIT binary patch literal 101 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 literal 0 HcmV?d00001 diff --git a/site/css/smoothness/images/ui-icons_2e83ff_256x240.png b/site/css/smoothness/images/ui-icons_2e83ff_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..45e8928e5284adacea3f9ec07b9b50667d2ac65f GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/site/css/smoothness/images/ui-icons_454545_256x240.png b/site/css/smoothness/images/ui-icons_454545_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..7ec70d11bfb2f77374dfd00ef61ba0c3647b5a0c GIT binary patch literal 4369 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 k*Kv;w;*%(i9W@fAqs5i2wiq literal 0 HcmV?d00001 diff --git a/site/css/smoothness/images/ui-icons_888888_256x240.png b/site/css/smoothness/images/ui-icons_888888_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..5ba708c39172a69e069136bd1309c4322c61f571 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/site/css/smoothness/jquery-ui.css b/site/css/smoothness/jquery-ui.css new file mode 100755 index 0000000..444486b --- /dev/null +++ b/site/css/smoothness/jquery-ui.css @@ -0,0 +1,406 @@ +/* +* jQuery UI CSS Framework +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +*/ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + + +/* +* jQuery UI CSS Framework +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +*/ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } +.ui-widget-header a { color: #222222; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; outline: none; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; outline: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; } +.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; outline: none; } +.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; outline: none; text-decoration: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } +.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; } +.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } +.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } +.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } +.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } +.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } +.ui-corner-all { -moz-border-radius: 4px; -webkit-border-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; }/* Accordion +----------------------------------*/ +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.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; } +.ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker +----------------------------------*/ +.ui-datepicker { width: 17em; padding: .2em .2em 0; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.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%; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* Dialog +----------------------------------*/ +.ui-dialog { position: relative; padding: .2em; width: 300px; } +.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* Progressbar +----------------------------------*/ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable +----------------------------------*/ +.ui-resizable { position: relative;} +.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: 0px; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.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;}/* Slider +----------------------------------*/ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.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; }/* Tabs +----------------------------------*/ +.ui-tabs { padding: .2em; zoom: 1; } +.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; } +.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } diff --git a/site/data/.htaccess b/site/data/.htaccess new file mode 100644 index 0000000..896fbc5 --- /dev/null +++ b/site/data/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all \ No newline at end of file diff --git a/site/data/creditcards.xml b/site/data/creditcards.xml new file mode 100755 index 0000000..29dfc98 --- /dev/null +++ b/site/data/creditcards.xml @@ -0,0 +1,2 @@ + + diff --git a/site/data/linksandnumbers.xml b/site/data/linksandnumbers.xml new file mode 100755 index 0000000..0d17aac --- /dev/null +++ b/site/data/linksandnumbers.xml @@ -0,0 +1,223 @@ + + + + Renting a car? Read this and BEWARE! + + page + + + + Frequent flyer mileage programs + is it worth collecting miles? + page + + + + Frequent flyer mileage programs + how to be sure your miles are credited to your account + page + + + + Travel Insurance + + page + + + + Staying in a hotel? Read this. + + page + + + + Austria travel information + since so many clients visit or live in Austria + external_link + + + + Travel a lot and need a cheap prepaid phone card? + + page + + + + Lonely Planet travel guidebooks, travel information + in my opinion, probably the best guidebook series. + external_link + + + + Packing Tips + + page + + + + Obtaining travel advisories from the US State Department + + external_link + + + + Obtaining travel information from the US State Department + + external_link + + + + Helpful International Travel Information + + page + + + + Travel Notes + + page + + + + Need help obtaining passports and visas, even within 48 hours of departure? + + external_link + + + + Sick of all the travel taxes you pay? + + page + + + + Report a bad link + + external_link + + + diff --git a/site/data/news.xml b/site/data/news.xml new file mode 100755 index 0000000..ab1c123 --- /dev/null +++ b/site/data/news.xml @@ -0,0 +1,69 @@ + + + + "A Missionary's Best Friend" + + + + Traveling in 2007? + + + diff --git a/site/data/passportinfo.xml b/site/data/passportinfo.xml new file mode 100755 index 0000000..e8c84e8 --- /dev/null +++ b/site/data/passportinfo.xml @@ -0,0 +1,4 @@ + + + + diff --git a/site/data/users/users.xml b/site/data/users/users.xml new file mode 100644 index 0000000..d5de524 --- /dev/null +++ b/site/data/users/users.xml @@ -0,0 +1,8 @@ + + + + fti + 7721ff4a5c6355b08966519cb51b5c5f0ff1b492 + admin + + \ No newline at end of file diff --git a/site/en/admin/creditcards.delete.php b/site/en/admin/creditcards.delete.php new file mode 100644 index 0000000..c810611 --- /dev/null +++ b/site/en/admin/creditcards.delete.php @@ -0,0 +1,15 @@ +

Administrate FTI: Credit Cards

+

+ Are you sure you want to delete credit card information for + data['card']->card_name ?>? +

+

+

+ + +

+ + No, return to credit card list. +

+
+

diff --git a/site/en/admin/creditcards.php b/site/en/admin/creditcards.php new file mode 100644 index 0000000..7c60d41 --- /dev/null +++ b/site/en/admin/creditcards.php @@ -0,0 +1,29 @@ +

Administrate FTI: Credit Cards

+

+ Below is a list of all the credit cards you have on file. You can view + the full credit card information, or delete the information. +

+

+ Remember to delete credit card information as soon as possible to reduce to + risk of information being stolen. +

+
+

All Credit Card Information

+ data['creditcards']) > 0): ?> + + data['creditcards']); $c++): ?> + + + + + +
+ data['creditcards'][$c]->card_name ?> + + '>View + '>Delete +
+ +

There are currently no credit cards on file.

+ +
diff --git a/site/en/admin/creditcards.view.php b/site/en/admin/creditcards.view.php new file mode 100644 index 0000000..27ef00a --- /dev/null +++ b/site/en/admin/creditcards.view.php @@ -0,0 +1,24 @@ +

Administrate FTI: Credit Cards

+

+ Below is the credit card information for the card you selected. +

+

+ Return to + credit card list. +

+

+ '> + Delete this card + +

+
+

Credit Card Information

+ + data['card'] as $key => $val): ?> + + + + + +
+
diff --git a/site/en/admin/home.php b/site/en/admin/home.php new file mode 100644 index 0000000..1acf0e8 --- /dev/null +++ b/site/en/admin/home.php @@ -0,0 +1,68 @@ +

Administrate FTI

+

+ Welcome, John. +

+
+

Recent News Items

+

+ Add news post +

+ data['news']) > 0): ?> + + data['news'])); $c++): ?> + + + + + +
data['news'][$c]->title ?> + '>Edit + '>Delete +
+ +

There are currently no news posts on the home page.

+ +
+ +
+

Recent Credit Card Information

+ data['creditcards']) > 0): ?> + + data['creditcards'])); $c++): ?> + + + + + +
+ data['creditcards'][$c]->card_name ?> + + '>View + '>Delete +
+ +

There is currently no credit card information on file.

+ +
+ +
+

Recent Passport Information

+ data['passports']) > 0): ?> + + data['passports'])); $c++): ?> + + + + + +
+ data['passports'][$c]->name ?> + + '>View + '>Delete +
+ +

There are currently no passports on file.

+ +
+ diff --git a/site/en/admin/linksandnumbers.add.edit.php b/site/en/admin/linksandnumbers.add.edit.php new file mode 100644 index 0000000..55f2ee0 --- /dev/null +++ b/site/en/admin/linksandnumbers.add.edit.php @@ -0,0 +1,74 @@ +

Administrate FTI: Links and Numbers

+

+ data['editing'])): ?> + Edit the links and numbers item below and click on "Save item" at the bottom + of the page when you are done. + + Add a links and numbers item to the links and numbers page by filling out the form below. + +

+

+ You make bold and italics text by selecting the text that you want to make + bold or italics inside the "News text" box and clicking either the bold (b) + button or the italics (i) button on the top right of the news box. +

+

+ Similarly, select any text that you want to make a link and click on + the link button. A window will pop up and prompt you for the URL + that you would like that text to link to. +

+

+ You can create two types of Links and Numbers items: Pages and External links. + To create an External link, select that option from the "Type" list, enter + a title for the link and put the URL for the link (only the URL) in the "Text" + box. +

+

+ To create a regular Page, select that option for the "Type" list, enter a + title that will appear on the Links and Numbers page and put the + text for the page in the "Text" page. +

+
+

data['editing']) ? 'Edit' : 'Add' ?> Links and Numbers Item

+
+ +data['editing'])): ?> + ' id='id'/> + +

+ + +

+

+ + +

+

+ + +

+

+ + + +

+

+
+
diff --git a/site/en/admin/linksandnumbers.delete.php b/site/en/admin/linksandnumbers.delete.php new file mode 100644 index 0000000..80ad806 --- /dev/null +++ b/site/en/admin/linksandnumbers.delete.php @@ -0,0 +1,19 @@ +

Administrate FTI: Links and Number

+

+ Please decide if you really want to delete this links and numbers item below. +

+
+

Delete Links and Numbers Item

+

+ Do you really want to delete the links and numbers item + "data['item']->title ?>"? +

+
+ + +

+ + No, return to links and numbers items list +

+
+
diff --git a/site/en/admin/linksandnumbers.php b/site/en/admin/linksandnumbers.php new file mode 100644 index 0000000..00ac636 --- /dev/null +++ b/site/en/admin/linksandnumbers.php @@ -0,0 +1,22 @@ +

Administrate FTI: Links and Numbers

+

+ Below is a list of all the links and numbers items on the Links and + Numbers page of FTI. You can add, edit or delete links and numbers items. +

+
+

All Links and Numbers Items

+

+ Add Links and Number Item +

+ + data['linksandnumbers']); $c++): ?> + + + + + +
data['linksandnumbers'][$c]->title ?> + '>Edit + '>Delete +
+
diff --git a/site/en/admin/login.php b/site/en/admin/login.php new file mode 100644 index 0000000..0c2bfd1 --- /dev/null +++ b/site/en/admin/login.php @@ -0,0 +1,17 @@ +
+

Login

+
+

+ + +

+

+ + +

+

+
+

+ « Go to home page +

+
\ No newline at end of file diff --git a/site/en/admin/menu.php b/site/en/admin/menu.php new file mode 100644 index 0000000..4136ae7 --- /dev/null +++ b/site/en/admin/menu.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/site/en/admin/news.add.edit.php b/site/en/admin/news.add.edit.php new file mode 100644 index 0000000..afa2326 --- /dev/null +++ b/site/en/admin/news.add.edit.php @@ -0,0 +1,42 @@ +

Administrate FTI: News

+

+ data['editing'])): ?> + Edit the news post below and click on "Save news item" at the bottom + of the page when you are done. + + Add a news post to the front page by filling out the form below. + +

+

+ You make bold and italics text by selecting the text that you want to make + bold or italics inside the "News text" box and clicking either the bold (b) + button or the italics (i) button on the top right of the news box. +

+

+ Similarly, select any text that you want to make a link and click on + the link button. A window will pop up and prompt you for the URL + that you would like that text to link to. +

+
+

data['editing']) ? 'Edit' : 'Add' ?> News Item

+
+ +data['editing'])): ?> + ' id='id'/> + +

+ + +

+

+ + + +

+

+
+
diff --git a/site/en/admin/news.delete.php b/site/en/admin/news.delete.php new file mode 100644 index 0000000..a6ab7d2 --- /dev/null +++ b/site/en/admin/news.delete.php @@ -0,0 +1,19 @@ +

Administrate FTI: News

+

+ Please decide if you really want to delete this item below. +

+
+

Delete News Item

+

+ Do you really want to delete the news item + "data['newsitem']->title ?>"? +

+
+ + +

+ + No, don't delete news item +

+
+
diff --git a/site/en/admin/news.php b/site/en/admin/news.php new file mode 100644 index 0000000..fc85b02 --- /dev/null +++ b/site/en/admin/news.php @@ -0,0 +1,22 @@ +

Administrate FTI: News

+

+ Below is a list of all the news posts on the front page of FTI. You + can add a news post, edit current news posts or delete current news posts. +

+
+

All News Items

+

+ Add news post +

+ + data['news']); $c++): ?> + + + + + +
data['news'][$c]->title ?> + '>Edit + '>Delete +
+
diff --git a/site/en/admin/passports.delete.php b/site/en/admin/passports.delete.php new file mode 100644 index 0000000..63a23c5 --- /dev/null +++ b/site/en/admin/passports.delete.php @@ -0,0 +1,15 @@ +

Administrate FTI: Passports

+

+ Are you sure you want to delete passport information for + data['passport']->name ?>? +

+

+

+ + +

+ + No, return to passport list. +

+
+

diff --git a/site/en/admin/passports.php b/site/en/admin/passports.php new file mode 100644 index 0000000..17fa17b --- /dev/null +++ b/site/en/admin/passports.php @@ -0,0 +1,29 @@ +

Administrate FTI: Passports

+

+ Below is a list of all the passports you have on file. You can view + the full passport information, or delete the information. +

+

+ Remember to delete passport information as soon as possible to reduce to + risk of information being stolen. +

+
+

All Passport Information

+ data['passports']) > 0): ?> + + data['passports']); $c++): ?> + + + + + +
+ data['passports'][$c]->name ?> + + '>View + '>Delete +
+ +

There are currently no passports on file.

+ +
diff --git a/site/en/admin/passports.view.php b/site/en/admin/passports.view.php new file mode 100644 index 0000000..d46cfa9 --- /dev/null +++ b/site/en/admin/passports.view.php @@ -0,0 +1,24 @@ +

Administrate FTI: Passports

+

+ Below is the passport information for the passport you selected. +

+

+ Return to + passport list. +

+

+ '> + Delete this passport + +

+
+

Passport Information

+ + data['passport'] as $key => $val): ?> + + + + + +
+
diff --git a/site/en/admin/textboxbuttons.php b/site/en/admin/textboxbuttons.php new file mode 100644 index 0000000..7bae282 --- /dev/null +++ b/site/en/admin/textboxbuttons.php @@ -0,0 +1,5 @@ +
+ b + i + link +
\ No newline at end of file diff --git a/site/en/bookingrequest.php b/site/en/bookingrequest.php new file mode 100644 index 0000000..30a0582 --- /dev/null +++ b/site/en/bookingrequest.php @@ -0,0 +1,130 @@ +
+

Begin a Booking Request

+

+ To submit a booking request to Friendship Tours, simply fill out the + form below with your information and click on "Review Information". After + reviewing your information, if it is all correct, click on "Submit" to send + us your request. +

+
+
+ Travel Information +

+ Have you booked with us before? + +

+

+ Passengers
+ Please use the names exactly as they appear on the form of ID that + you will be using when you travel. The US government requires that the + names match exactly. The US government also requires the gender and + the birthdate of each passenger, regardless of age. +

+ + + + + + + + + + + + + data['info']) ? count($this->data['info']['FirstName']) : 4); $idx++): ?> + + + + + + + + + + +
First nameMiddle nameLast nameGenderBirthdate
Passenger + "/> + + "/> + + "/> + + + + "/> +
+ +
+
+ Departure Information +

+ Departure city + +

+

+ Alt. departure city + +

+

+ Departure date or range of dates if flexible + +

+
+
+ Arrival Information +

+ Arrival city + +

+

+ Alternate arrival city (or other cities and dates on a multi-city trip) + +

+
+
+ Return Information +

+ Return date (or range of dates if flexible) + +

+
+
+ Miscellaneous Information +

+ Frequent flyer program and number for each traveler + +

+

+ Aisle or window seat preferred? + + Bulkhead and exit rows are blocked by the airlines. +

+

+ Preferred method of payment + +

+

+ E-mail address + +

+
+

+
+
\ No newline at end of file diff --git a/site/en/bookingrequest_review.php b/site/en/bookingrequest_review.php new file mode 100644 index 0000000..06cd4bb --- /dev/null +++ b/site/en/bookingrequest_review.php @@ -0,0 +1,69 @@ +
+

Review Your Booking Request Information

+

+ Please review the information that you have entered. Click on the "Edit" + button below if you need to change anything. Otherwise, if everything is + correct, click on the "Submit" button to send us your booking request. +

+
+ + data['info'] as $key => $val): ?> + + + + + + + + + + + + + + + + + + +
+ + +
Passengers + + + data["info"]["FirstName"]); $idx++): ?> + data["info"]["FirstName"][$idx])): ?> + + + + + + + + + + +
+ data["info"]["FirstName"][$idx] ?> + " /> + + data["info"]["MiddleName"][$idx] ?> + " /> + + data["info"]["LastName"][$idx] ?> + " /> + + data["info"]["Gender"][$idx] ?> + " /> + + data["info"]["Birthdate"][$idx] ?> + " /> +
+
+

+ + +

+
+
\ No newline at end of file diff --git a/site/en/creditcard.php b/site/en/creditcard.php new file mode 100644 index 0000000..fa82fda --- /dev/null +++ b/site/en/creditcard.php @@ -0,0 +1,177 @@ +
+

Send your credit card information

+

+ You are now using a secure connection through which your credit card + information will be sent. Just to be sure though, make sure the Address + box at the top of your browser reads "https://" at the beginning of the + address and not "http://". Note the 's' after "http". If there is no 's' + after the "http" please go to the + secure form. + This same page will reload, but it will now be from a secure connection. +

+

+ Please note: All fields are required! +

+
+
+ Credit Card Information +

+ Type of Credit Card + +

+

+ Cardholder's Name + + Your name as it appears on the card. +

+

+ Credit Card Number + +

+

+ Security Code Number + + Click here for help with the CVV number. +

+

+ Expiration Date (mm/yyyy) + + + + +

+
+
+ Billing Address +

+ Full Name + +

+

+ Address + +

+

+   + +

+

+ City + +

+

+ State/Province/Region + +

+

+ ZIP/Postal Code + +

+

+ Country + +

+

+ E-mail Address + +

+
+

+ +

+
+
\ No newline at end of file diff --git a/site/en/footer.php b/site/en/footer.php new file mode 100644 index 0000000..9b62fc4 --- /dev/null +++ b/site/en/footer.php @@ -0,0 +1,10 @@ +

+Copyright: Friendship Tours International
+Site dedicated in memory of Paul E. Nielsen
+Site designed and maintained by Ben Ramey +

+ +
+ + +
\ No newline at end of file diff --git a/site/en/header.php b/site/en/header.php new file mode 100644 index 0000000..aabc0e2 --- /dev/null +++ b/site/en/header.php @@ -0,0 +1,6 @@ + +

+ + Friendship Tours International + +

\ No newline at end of file diff --git a/site/en/history.php b/site/en/history.php new file mode 100644 index 0000000..1128e5b --- /dev/null +++ b/site/en/history.php @@ -0,0 +1,8 @@ +
+

History of Friendship Tours International

+

Friendship Tours came into existence in 1979 as a result of brainstorming between a missionary residing in Vienna, Austria and a businessman in Holland, Michigan, USA. The missionary was travelling frequently into then-communist Eastern Europe. He was not able to state his true reasons for his frequent travels (to disciple and train Christian leaders in those countries). He needed a better "public" reason or "cover" for his travels than being a teacher. The two men came up with the idea of a tour company. This company would organize tours that could tour various countries in Eastern Europe, thus bringing tourists and much-needed western currency to these countries. Friendship Tours was incorporated in the state of Michigan in 1979. This strategy worked well, actually allowing several missionaries to use the company to allow them greater access to travel throughout Eastern Europe.

+

In 1982, John Nielsen moved to Vienna, Austria to work in the mission office. Among other things, one of his responsibilities was to continue to allow Friendship Tours (FTI) to be a viable entity for access by missionaries to Eastern Europe. However, John also wanted to see FTI become a vehicle to help missionaries with their own travel arrangements. John vigorously pursued the least expensive flights, whether for those traveling back to the USA for home assignments, or for ministry travel within Europe. Initially this service was provided only to missionaries employed by the mission board John served with. By 1988, this expanded to serving a handful of missions. By 1992, word had spread through the mission grapevine of John's knack for tracking down economical flights. Since then, John has been working full-time to help missionaries with their travel needs.

+

In 1998, John relocated from Vienna to Brainerd, MN. This has allowed John to research and offer even greater travel bargains to missionaries, being able to compare airfares he can obtain on either side of the Atlantic, then purchasing the tickets wherever is most economical.

+

FTI currently serves over 300 missionaries serving with over 30 mission boards from its base in Brainerd, MN. The original reason for the formation of FTI is actually still being used. No less than two missionaries are continuing to gain access to countries closed to traditional missionaries through association with the company. Due to the sensitive nature of this ministry, the locations can not be mentioned.

+

Thank you for your interest in this ministry to missionaries.

+
\ No newline at end of file diff --git a/site/en/home.php b/site/en/home.php new file mode 100644 index 0000000..a09cf12 --- /dev/null +++ b/site/en/home.php @@ -0,0 +1,58 @@ +

+ Thank you for visiting our web site. Friendship Tours International (FTI) + is a travel agency that specializes in travel planning for Christian + organizations and individuals. We strive to give you the best possible + fares for your trip, as we realize the budget constraints of many non-profit + organizations. Please take a moment to browse our site and feel free to send + us your comments. +

+ +
+ +
+
+

News Updates

+ data['news']) - 1; $c >= 0; $c--): ?> +
+

'>data['news'][$c]->title ?>

+ data['news']) > $c): ?> + + + data['news'][$c]->text))) ?> +
+ +
+ +
+

Contact Information

+

+ E-mail:
+ + travel@friendshiptours.org + +

+
+

+ Telephone Number:
+ (218) 824-8000 +

+
+

+ Fax Number:
+ (218) 824-8001 +

+
+

+ Address:
+ Friendship Tours International
+ John Nielsen
+ 2029 S. 6th Street Ste 106
+ Brainerd, MN 56401
+ USA
+

+
\ No newline at end of file diff --git a/site/en/itinerary_beforecontinuing.php b/site/en/itinerary_beforecontinuing.php new file mode 100644 index 0000000..9bdfe32 --- /dev/null +++ b/site/en/itinerary_beforecontinuing.php @@ -0,0 +1,27 @@ +
+

Before you continue!

+

In order to view your itinerary online, you will need to enter the following information:

+ +

Thank you! Please click on the link below to continue to view your itinerary.

+

Continue to view itinerary

+
\ No newline at end of file diff --git a/site/en/linksandnumbers.php b/site/en/linksandnumbers.php new file mode 100644 index 0000000..7fb397f --- /dev/null +++ b/site/en/linksandnumbers.php @@ -0,0 +1,25 @@ +
+

Links and Numbers

+

Below are links to other websites and other important information.

+ +
\ No newline at end of file diff --git a/site/en/linksandnumbers.subpage.php b/site/en/linksandnumbers.subpage.php new file mode 100644 index 0000000..64eba0f --- /dev/null +++ b/site/en/linksandnumbers.subpage.php @@ -0,0 +1,4 @@ +
+

data['item']->title ?>

+ data['item']->text))) ?> +
\ No newline at end of file diff --git a/site/en/menu.php b/site/en/menu.php new file mode 100644 index 0000000..0985fc6 --- /dev/null +++ b/site/en/menu.php @@ -0,0 +1,10 @@ + + \ No newline at end of file diff --git a/site/en/passportinfo.php b/site/en/passportinfo.php new file mode 100644 index 0000000..72044af --- /dev/null +++ b/site/en/passportinfo.php @@ -0,0 +1,37 @@ +
+

Passport and birthdate information

+
+

Please fill out each field.

+
+ Passport Information +

+ Name as on passport + +

+

+ Birthdate (mm/dd/yyyy) + +

+

+ Passport number + +

+

+ Passport expiration date + +

+

+ Country of passport issuance + +

+

+
+

+ +

+

+   + +

+
+
\ No newline at end of file diff --git a/site/en/viewyouritinerary.php b/site/en/viewyouritinerary.php new file mode 100644 index 0000000..a9cfecc --- /dev/null +++ b/site/en/viewyouritinerary.php @@ -0,0 +1,22 @@ +
+

View Your Itinerary

+

+ If John has not given you any special instructions for viewing your itinerary + then click here. +

+

Otherwise,

+ +
\ No newline at end of file diff --git a/site/graphics/icon_airplane.jpg b/site/graphics/icon_airplane.jpg new file mode 100755 index 0000000000000000000000000000000000000000..39e6dd99332ddf47cf4b969d767973ec939a504f GIT binary patch literal 2295 zcmbVM3se(V8ora6Jc%(cUiPR6fdE#iK#->Hx=MnXxK(+`!>Xso1cFv+ARxGFS)%yB z#g-w6P;CnY1lhJA2#6L1@x|Iz9`evy1q2OMi=w5zI(su%X!q=%f=9j@tgY=2waT6i{1w|EXqUFmcuwygaE2q%BLa@tQ$8PRriDnRKO=D1|lCo&!95Mt4v{j!9>OvA_!Oo z{jYOmRA$a(hT2yQV*oICQ+r@sTZoQ9XWKgk-hYEbJpeUuh+YRy03rX|Df|MY!Eqnx zT(%^{8I8KlE}B%AMcR0c&Sm0k%3S>6;gAmij{<-eE({mD4t4-8i^XEIxNJ68V8^i& z*iYqhr`kJ-MD`+)lYmRvtH*fopB|ZFXE%j6h0o*h#XKHQY;!#Ec!}V379dXp0Smrq z3W~S_ngBrs2zdjZ3X5z(7DASEgfd9jW+?pn7@fgnu{n0|+x{Lz01f>WgnMMe?{j`bwg$K3QIYz{i29Ay@r19i_d87 zcPu-Jt=(it=NkE7h`6T3&Y&rlo59Cx+8T>6ii zI9CaAz+xf1)5y+~`MCQ#9CNstA11pocTF-*tQH^FZAxSVBC1?+NL7VP2z9hvYjwvx zaBLxYwUNNRdLnQ+?sYeJu(hyMurXa#VX+)^$dwSPay+LLS1%*9LU=52b{91}oWLa| z5?E(jD-=5OZxd-`FQq=%xMDDYO`#A3kpD+-|H)QL_4at@yq2d;8aiRWskHscvnUO*QzW-&#sfHhCN$k)xD9kSSAoy5;E)R69^$#xGatQzs~PvAH= zwaKJ?VF9LxM3EvqQ5igc$$HO~5s}l5Hn;ab(r!2A?9dfgpXnIz3XB;|@_t*c!qrjH zt77$W8;kkySjUN zuiYLTx^ve${P@XFV?RHA24CN%Mi@%RFpR;VZ-SHsP>tyG7{FDuD1_;|PHbQ;PIt?; z4=vO<__3=bO>IF5BaVG0e<(^$>lF`+j(W(P!vmCBDJOAzPO#C&ccm^VV*ZW{itwn{ zG_$3~CQG^Fy5zYeGA3|BnkIEg6{SzveW0xVLeJfw-^QckQupMSAHUdZed;Y&uiCIR zv*1WW>$Tx$zn72tse4Xw$C5V&o>*R8`;nVp$0;{?@~6_e6ON+1Yt^x}0o$x3IQcxt zpfRMb&hWTba#1sEjV=D#G%fo5vgn8*6)Mjfd-sN0(Bo$J`>fEvTrG-NJih|*ru`@6Gzo_U;+?eKmYWJmkYY!d!W7_Q( z4L&6JKI_8#^m{W0q8T@(1`_<0cR%%?ca~Y51$nE-ZvJ8L7q=NIcJ7bX_umBIFVVNo leezPSSm5flJbU0pMf>s@!RAYkM4pArp}>zW_jZ%L{|3M`|8)QW literal 0 HcmV?d00001 diff --git a/site/graphics/logo.gif b/site/graphics/logo.gif new file mode 100755 index 0000000000000000000000000000000000000000..286f53c01634378af9ea09e4e810cfe7db9bc959 GIT binary patch literal 10850 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 0) + { + var boldText = "[b]"+selectedText+"[/b]"; + textBox.value = (textBox.value).replace(selectedText,boldText); + } + }); + // + // Italics button + // + $("#italics_btn").click(function() { + var textBox = document.getElementById('text'); + // get the selected text + var selectedText = (textBox.value).substring(textBox.selectionStart,textBox.selectionEnd); + + if(selectedText.length > 0) + { + var italicsText = "[i]"+selectedText+"[/i]"; + textBox.value = (textBox.value).replace(selectedText,italicsText); + } + }); + // + // Link button + // + $("#link_btn").click(function() { + var textBox = document.getElementById('text'); + // get the selected text + var selectedText = (textBox.value).substring(textBox.selectionStart,textBox.selectionEnd); + + if(selectedText.length > 0) + { + var linkHref = new String(); + while((linkHref = prompt("Please enter the URL for this link:")).length <= 0) + ; + + if(linkHref.length > 0) + { + var italicsText = "[link href="+linkHref+"]"+selectedText+"[/link]"; + textBox.value = (textBox.value).replace(selectedText,italicsText); + } + } + }); +}); \ No newline at end of file diff --git a/site/javascript/bookingrequest.js b/site/javascript/bookingrequest.js new file mode 100644 index 0000000..5c78ebc --- /dev/null +++ b/site/javascript/bookingrequest.js @@ -0,0 +1,41 @@ +// +// Javascript for booking request page +// +// Ben Ramey +// November 2009 +// +$(document).ready( + function() + { + $.datepicker.setDefaults({ + changeYear: true, + changeMonth: true, + minDate: "-100y", + maxDate: "+1y", + yearRange: "-100:+1" + }); + + function AddPassenger(e) + { + var table = $("table.passengers"); + var newRow = $("table.passengers>tbody>tr:last-child").clone(); + var passengerLabelCell = newRow.find("th"); + var numExistingPassengers = table.find("tbody>tr").length; + + passengerLabelCell.text("Passenger " + Number(numExistingPassengers + 1)); + newRow.find("input").removeAttr("id").val(""); + newRow.find("select").val("Male"); + newRow.find("input.date-input").removeClass("hasDatepicker").datepicker(); + newRow.attr("passengernumber", numExistingPassengers + 1); + + table.append(newRow); + + e.preventDefault(); + } + + // make all the date-input inputs datepickers + $("input.date-input").datepicker(); + + $("button#AddPassengerBtn").click(AddPassenger); + } +); \ No newline at end of file diff --git a/site/javascript/default.js b/site/javascript/default.js new file mode 100644 index 0000000..9e055f8 --- /dev/null +++ b/site/javascript/default.js @@ -0,0 +1,77 @@ +/*********************************************** +* Default javascript for: friendshiptours.org +* Author: Benjamin Ramey +* E-mail: ben.ramey@gmail.com +* Created: Tue Dec 18 17:46:35 CST 2007 +***********************************************/ +$(function() { + // + // home page + // + if($("body").attr("id") == 'index') + { + $("#news-jumper-select").change(function() { + if($(this).val() != '') + { + document.location = '#'+$(this).val(); + } + }); + } + // + // passport info page + // + else if($("#passportinfo_form")) + { + $("#add_person").click(function() { + var personHtml = "
"+$("fieldset.person:first").html()+"
"; + // insert a new fieldset with passport form after the first one + $("fieldset.person:last").after(personHtml); + // this element selected next is the fieldset we just added + $("fieldset.person:last input.delete_person").attr("disabled",'').click( + function() { + DeletePassportPerson($(this)); + return false; + }); + + // since we just added a person, we have at least two people, so we want + // the first person's 'delete person' button enabled + $("input.delete_person:first").attr('disabled',''); + + return false; + }); + // apply delete person function to click on first delete person button + $("input.delete_person").click(function() { + DeletePassportPerson($(this)); + return false; + }); + } + // + // credit card page + // + else if($("body").attr('id') == 'creditcard') + { + $("#cvv_help").click(function() { + var message = "The security code is on the back of your card above and to the right of your signature - the last three digits located there.\n\n" + + "For example, a card with the number 1111 2222 3333 4444 will have 4444 123 written on the back.\n\n" + + "In this example, the number 123 is the security code.\n\n" + + "The exception to this is an American Express card. The security code in this case is a a four digit number on the FRONT of the card, above and to the right of the embossed number."; + + alert(message); + }); + } +}); + +function DeletePassportPerson(buttonElement) +{ + var numButtons = 0; + // remove this person + buttonElement.parents("fieldset").remove(); + + // count the number of buttons we have (which should be the number of + // people we have too) + $("input.delete_person").each(function() { numButtons++; }); + // disable the first delete person (so they can't delete ALL people and + // submit none) + if(numButtons < 2) + $("input.delete_person:first").attr('disabled','disabled'); +} \ No newline at end of file diff --git a/site/javascript/jquery-ui.min.js b/site/javascript/jquery-ui.min.js new file mode 100755 index 0000000..ed22ffe --- /dev/null +++ b/site/javascript/jquery-ui.min.js @@ -0,0 +1,22 @@ +/* + * jQuery UI 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,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}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=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)}else{j=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"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/* + * jQuery UI Datepicker 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Datepicker + * + * Depends: + * ui.core.js + */ +(function($){$.extend($.ui,{datepicker:{version:"1.7.2"}});var PROP_NAME="datepicker";function Datepicker(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._datepickerShowing=false;this._inDialog=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass="ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],dateFormat:"mm/dd/yy",firstDay:0,isRTL:false};this._defaults={showOn:"focus",showAnim:"show",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,showMonthAfterYear:false,yearRange:"-10:+10",showOtherMonths:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"normal",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false};$.extend(this._defaults,this.regional[""]);this.dpDiv=$('
')}$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",log:function(){if(this.debug){console.log.apply("",arguments)}},setDefaults:function(settings){extendRemove(this._defaults,settings||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase();var inline=(nodeName=="div"||nodeName=="span");if(!target.id){target.id="dp"+(++this.uuid)}var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{});if(nodeName=="input"){this._connectDatepicker(target,inst)}else{if(inline){this._inlineDatepicker(target,inst)}}},_newInst:function(target,inline){var id=target[0].id.replace(/([:\[\]\.])/g,"\\\\$1");return{id:id,input:target,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:inline,dpDiv:(!inline?this.dpDiv:$('
'))}},_connectDatepicker:function(target,inst){var input=$(target);inst.append=$([]);inst.trigger=$([]);if(input.hasClass(this.markerClassName)){return}var appendText=this._get(inst,"appendText");var isRTL=this._get(inst,"isRTL");if(appendText){inst.append=$(''+appendText+"");input[isRTL?"before":"after"](inst.append)}var showOn=this._get(inst,"showOn");if(showOn=="focus"||showOn=="both"){input.focus(this._showDatepicker)}if(showOn=="button"||showOn=="both"){var buttonText=this._get(inst,"buttonText");var buttonImage=this._get(inst,"buttonImage");inst.trigger=$(this._get(inst,"buttonImageOnly")?$("").addClass(this._triggerClass).attr({src:buttonImage,alt:buttonText,title:buttonText}):$('').addClass(this._triggerClass).html(buttonImage==""?buttonText:$("").attr({src:buttonImage,alt:buttonText,title:buttonText})));input[isRTL?"before":"after"](inst.trigger);inst.trigger.click(function(){if($.datepicker._datepickerShowing&&$.datepicker._lastInput==target){$.datepicker._hideDatepicker()}else{$.datepicker._showDatepicker(target)}return false})}input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst)},_inlineDatepicker:function(target,inst){var divSpan=$(target);if(divSpan.hasClass(this.markerClassName)){return}divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst);this._setDate(inst,this._getDefaultDate(inst));this._updateDatepicker(inst);this._updateAlternate(inst)},_dialogDatepicker:function(input,dateText,onSelect,settings,pos){var inst=this._dialogInst;if(!inst){var id="dp"+(++this.uuid);this._dialogInput=$('');this._dialogInput.keydown(this._doKeyDown);$("body").append(this._dialogInput);inst=this._dialogInst=this._newInst(this._dialogInput,false);inst.settings={};$.data(this._dialogInput[0],PROP_NAME,inst)}extendRemove(inst.settings,settings||{});this._dialogInput.val(dateText);this._pos=(pos?(pos.length?pos:[pos.pageX,pos.pageY]):null);if(!this._pos){var browserWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;var browserHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[(browserWidth/2)-100+scrollX,(browserHeight/2)-150+scrollY]}this._dialogInput.css("left",this._pos[0]+"px").css("top",this._pos[1]+"px");inst.settings.onSelect=onSelect;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);if($.blockUI){$.blockUI(this.dpDiv)}$.data(this._dialogInput[0],PROP_NAME,inst);return this},_destroyDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();$.removeData(target,PROP_NAME);if(nodeName=="input"){inst.append.remove();inst.trigger.remove();$target.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress)}else{if(nodeName=="div"||nodeName=="span"){$target.removeClass(this.markerClassName).empty()}}},_enableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=false;inst.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().removeClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)})},_disableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=true;inst.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().addClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)});this._disabledInputs[this._disabledInputs.length]=target},_isDisabledDatepicker:function(target){if(!target){return false}for(var i=0;i-1)}},_showDatepicker:function(input){input=input.target||input;if(input.nodeName.toLowerCase()!="input"){input=$("input",input.parentNode)[0]}if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput==input){return}var inst=$.datepicker._getInst(input);var beforeShow=$.datepicker._get(inst,"beforeShow");extendRemove(inst.settings,(beforeShow?beforeShow.apply(input,[input,inst]):{}));$.datepicker._hideDatepicker(null,"");$.datepicker._lastInput=input;$.datepicker._setDateFromField(inst);if($.datepicker._inDialog){input.value=""}if(!$.datepicker._pos){$.datepicker._pos=$.datepicker._findPos(input);$.datepicker._pos[1]+=input.offsetHeight}var isFixed=false;$(input).parents().each(function(){isFixed|=$(this).css("position")=="fixed";return !isFixed});if(isFixed&&$.browser.opera){$.datepicker._pos[0]-=document.documentElement.scrollLeft;$.datepicker._pos[1]-=document.documentElement.scrollTop}var offset={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null;inst.rangeStart=null;inst.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});$.datepicker._updateDatepicker(inst);offset=$.datepicker._checkOffset(inst,offset,isFixed);inst.dpDiv.css({position:($.datepicker._inDialog&&$.blockUI?"static":(isFixed?"fixed":"absolute")),display:"none",left:offset.left+"px",top:offset.top+"px"});if(!inst.inline){var showAnim=$.datepicker._get(inst,"showAnim")||"show";var duration=$.datepicker._get(inst,"duration");var postProcess=function(){$.datepicker._datepickerShowing=true;if($.browser.msie&&parseInt($.browser.version,10)<7){$("iframe.ui-datepicker-cover").css({width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4})}};if($.effects&&$.effects[showAnim]){inst.dpDiv.show(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[showAnim](duration,postProcess)}if(duration==""){postProcess()}if(inst.input[0].type!="hidden"){inst.input[0].focus()}$.datepicker._curInst=inst}},_updateDatepicker:function(inst){var dims={width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4};var self=this;inst.dpDiv.empty().append(this._generateHTML(inst)).find("iframe.ui-datepicker-cover").css({width:dims.width,height:dims.height}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){$(this).removeClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).removeClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).removeClass("ui-datepicker-next-hover")}}).bind("mouseover",function(){if(!self._isDisabledDatepicker(inst.inline?inst.dpDiv.parent()[0]:inst.input[0])){$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");$(this).addClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).addClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).addClass("ui-datepicker-next-hover")}}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();var numMonths=this._getNumberOfMonths(inst);var cols=numMonths[1];var width=17;if(cols>1){inst.dpDiv.addClass("ui-datepicker-multi-"+cols).css("width",(width*cols)+"em")}else{inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("")}inst.dpDiv[(numMonths[0]!=1||numMonths[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");inst.dpDiv[(this._get(inst,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");if(inst.input&&inst.input[0].type!="hidden"&&inst==$.datepicker._curInst){$(inst.input[0]).focus()}},_checkOffset:function(inst,offset,isFixed){var dpWidth=inst.dpDiv.outerWidth();var dpHeight=inst.dpDiv.outerHeight();var inputWidth=inst.input?inst.input.outerWidth():0;var inputHeight=inst.input?inst.input.outerHeight():0;var viewWidth=(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)+$(document).scrollLeft();var viewHeight=(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)+$(document).scrollTop();offset.left-=(this._get(inst,"isRTL")?(dpWidth-inputWidth):0);offset.left-=(isFixed&&offset.left==inst.input.offset().left)?$(document).scrollLeft():0;offset.top-=(isFixed&&offset.top==(inst.input.offset().top+inputHeight))?$(document).scrollTop():0;offset.left-=(offset.left+dpWidth>viewWidth&&viewWidth>dpWidth)?Math.abs(offset.left+dpWidth-viewWidth):0;offset.top-=(offset.top+dpHeight>viewHeight&&viewHeight>dpHeight)?Math.abs(offset.top+dpHeight+inputHeight*2-viewHeight):0;return offset},_findPos:function(obj){while(obj&&(obj.type=="hidden"||obj.nodeType!=1)){obj=obj.nextSibling}var position=$(obj).offset();return[position.left,position.top]},_hideDatepicker:function(input,duration){var inst=this._curInst;if(!inst||(input&&inst!=$.data(input,PROP_NAME))){return}if(inst.stayOpen){this._selectDate("#"+inst.id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear))}inst.stayOpen=false;if(this._datepickerShowing){duration=(duration!=null?duration:this._get(inst,"duration"));var showAnim=this._get(inst,"showAnim");var postProcess=function(){$.datepicker._tidyDialog(inst)};if(duration!=""&&$.effects&&$.effects[showAnim]){inst.dpDiv.hide(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[(duration==""?"hide":(showAnim=="slideDown"?"slideUp":(showAnim=="fadeIn"?"fadeOut":"hide")))](duration,postProcess)}if(duration==""){this._tidyDialog(inst)}var onClose=this._get(inst,"onClose");if(onClose){onClose.apply((inst.input?inst.input[0]:null),[(inst.input?inst.input.val():""),inst])}this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if($.blockUI){$.unblockUI();$("body").append(this.dpDiv)}}this._inDialog=false}this._curInst=null},_tidyDialog:function(inst){inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(event){if(!$.datepicker._curInst){return}var $target=$(event.target);if(($target.parents("#"+$.datepicker._mainDivId).length==0)&&!$target.hasClass($.datepicker.markerClassName)&&!$target.hasClass($.datepicker._triggerClass)&&$.datepicker._datepickerShowing&&!($.datepicker._inDialog&&$.blockUI)){$.datepicker._hideDatepicker(null,"")}},_adjustDate:function(id,offset,period){var target=$(id);var inst=this._getInst(target[0]);if(this._isDisabledDatepicker(target[0])){return}this._adjustInstDate(inst,offset+(period=="M"?this._get(inst,"showCurrentAtPos"):0),period);this._updateDatepicker(inst)},_gotoToday:function(id){var target=$(id);var inst=this._getInst(target[0]);if(this._get(inst,"gotoCurrent")&&inst.currentDay){inst.selectedDay=inst.currentDay;inst.drawMonth=inst.selectedMonth=inst.currentMonth;inst.drawYear=inst.selectedYear=inst.currentYear}else{var date=new Date();inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear()}this._notifyChange(inst);this._adjustDate(target)},_selectMonthYear:function(id,select,period){var target=$(id);var inst=this._getInst(target[0]);inst._selectingMonthYear=false;inst["selected"+(period=="M"?"Month":"Year")]=inst["draw"+(period=="M"?"Month":"Year")]=parseInt(select.options[select.selectedIndex].value,10);this._notifyChange(inst);this._adjustDate(target)},_clickMonthYear:function(id){var target=$(id);var inst=this._getInst(target[0]);if(inst.input&&inst._selectingMonthYear&&!$.browser.msie){inst.input[0].focus()}inst._selectingMonthYear=!inst._selectingMonthYear},_selectDay:function(id,month,year,td){var target=$(id);if($(td).hasClass(this._unselectableClass)||this._isDisabledDatepicker(target[0])){return}var inst=this._getInst(target[0]);inst.selectedDay=inst.currentDay=$("a",td).html();inst.selectedMonth=inst.currentMonth=month;inst.selectedYear=inst.currentYear=year;if(inst.stayOpen){inst.endDay=inst.endMonth=inst.endYear=null}this._selectDate(id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear));if(inst.stayOpen){inst.rangeStart=this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay));this._updateDatepicker(inst)}},_clearDate:function(id){var target=$(id);var inst=this._getInst(target[0]);inst.stayOpen=false;inst.endDay=inst.endMonth=inst.endYear=inst.rangeStart=null;this._selectDate(target,"")},_selectDate:function(id,dateStr){var target=$(id);var inst=this._getInst(target[0]);dateStr=(dateStr!=null?dateStr:this._formatDate(inst));if(inst.input){inst.input.val(dateStr)}this._updateAlternate(inst);var onSelect=this._get(inst,"onSelect");if(onSelect){onSelect.apply((inst.input?inst.input[0]:null),[dateStr,inst])}else{if(inst.input){inst.input.trigger("change")}}if(inst.inline){this._updateDatepicker(inst)}else{if(!inst.stayOpen){this._hideDatepicker(null,this._get(inst,"duration"));this._lastInput=inst.input[0];if(typeof(inst.input[0])!="object"){inst.input[0].focus()}this._lastInput=null}}},_updateAlternate:function(inst){var altField=this._get(inst,"altField");if(altField){var altFormat=this._get(inst,"altFormat")||this._get(inst,"dateFormat");var date=this._getDate(inst);dateStr=this.formatDate(altFormat,date,this._getFormatConfig(inst));$(altField).each(function(){$(this).val(dateStr)})}},noWeekends:function(date){var day=date.getDay();return[(day>0&&day<6),""]},iso8601Week:function(date){var checkDate=new Date(date.getFullYear(),date.getMonth(),date.getDate());var firstMon=new Date(checkDate.getFullYear(),1-1,4);var firstDay=firstMon.getDay()||7;firstMon.setDate(firstMon.getDate()+1-firstDay);if(firstDay<4&&checkDatenew Date(checkDate.getFullYear(),12-1,28)){firstDay=new Date(checkDate.getFullYear()+1,1-1,4).getDay()||7;if(firstDay>4&&(checkDate.getDay()||7)0&&iValue="0"&&value.charAt(iValue)<="9"){num=num*10+parseInt(value.charAt(iValue++),10);size--}if(size==origSize){throw"Missing number at position "+iValue}return num};var getName=function(match,shortNames,longNames){var names=(lookAhead(match)?longNames:shortNames);var size=0;for(var j=0;j0&&iValue-1){month=1;day=doy;do{var dim=this._getDaysInMonth(year,month-1);if(day<=dim){break}month++;day-=dim}while(true)}var date=this._daylightSavingAdjust(new Date(year,month-1,day));if(date.getFullYear()!=year||date.getMonth()+1!=month||date.getDate()!=day){throw"Invalid date"}return date},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",TIMESTAMP:"@",W3C:"yy-mm-dd",formatDate:function(format,date,settings){if(!date){return""}var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var lookAhead=function(match){var matches=(iFormat+1=0;m--){doy+=this._getDaysInMonth(date.getFullYear(),m)}output+=formatNumber("o",doy,3);break;case"m":output+=formatNumber("m",date.getMonth()+1,2);break;case"M":output+=formatName("M",date.getMonth(),monthNamesShort,monthNames);break;case"y":output+=(lookAhead("y")?date.getFullYear():(date.getYear()%100<10?"0":"")+date.getYear()%100);break;case"@":output+=date.getTime();break;case"'":if(lookAhead("'")){output+="'"}else{literal=true}break;default:output+=format.charAt(iFormat)}}}}return output},_possibleChars:function(format){var chars="";var literal=false;for(var iFormat=0;iFormatmaxDate?maxDate:date);return date},_determineDate:function(date,defaultDate){var offsetNumeric=function(offset){var date=new Date();date.setDate(date.getDate()+offset);return date};var offsetString=function(offset,getDaysInMonth){var date=new Date();var year=date.getFullYear();var month=date.getMonth();var day=date.getDate();var pattern=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||"d"){case"d":case"D":day+=parseInt(matches[1],10);break;case"w":case"W":day+=parseInt(matches[1],10)*7;break;case"m":case"M":month+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break;case"y":case"Y":year+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break}matches=pattern.exec(offset)}return new Date(year,month,day)};date=(date==null?defaultDate:(typeof date=="string"?offsetString(date,this._getDaysInMonth):(typeof date=="number"?(isNaN(date)?defaultDate:offsetNumeric(date)):date)));date=(date&&date.toString()=="Invalid Date"?defaultDate:date);if(date){date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0)}return this._daylightSavingAdjust(date)},_daylightSavingAdjust:function(date){if(!date){return null}date.setHours(date.getHours()>12?date.getHours()+2:0);return date},_setDate:function(inst,date,endDate){var clear=!(date);var origMonth=inst.selectedMonth;var origYear=inst.selectedYear;date=this._determineDate(date,new Date());inst.selectedDay=inst.currentDay=date.getDate();inst.drawMonth=inst.selectedMonth=inst.currentMonth=date.getMonth();inst.drawYear=inst.selectedYear=inst.currentYear=date.getFullYear();if(origMonth!=inst.selectedMonth||origYear!=inst.selectedYear){this._notifyChange(inst)}this._adjustInstDate(inst);if(inst.input){inst.input.val(clear?"":this._formatDate(inst))}},_getDate:function(inst){var startDate=(!inst.currentYear||(inst.input&&inst.input.val()=="")?null:this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return startDate},_generateHTML:function(inst){var today=new Date();today=this._daylightSavingAdjust(new Date(today.getFullYear(),today.getMonth(),today.getDate()));var isRTL=this._get(inst,"isRTL");var showButtonPanel=this._get(inst,"showButtonPanel");var hideIfNoPrevNext=this._get(inst,"hideIfNoPrevNext");var navigationAsDateFormat=this._get(inst,"navigationAsDateFormat");var numMonths=this._getNumberOfMonths(inst);var showCurrentAtPos=this._get(inst,"showCurrentAtPos");var stepMonths=this._get(inst,"stepMonths");var stepBigMonths=this._get(inst,"stepBigMonths");var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);var currentDate=this._daylightSavingAdjust((!inst.currentDay?new Date(9999,9,9):new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");var drawMonth=inst.drawMonth-showCurrentAtPos;var drawYear=inst.drawYear;if(drawMonth<0){drawMonth+=12;drawYear--}if(maxDate){var maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),maxDate.getMonth()-numMonths[1]+1,maxDate.getDate()));maxDraw=(minDate&&maxDrawmaxDraw){drawMonth--;if(drawMonth<0){drawMonth=11;drawYear--}}}inst.drawMonth=drawMonth;inst.drawYear=drawYear;var prevText=this._get(inst,"prevText");prevText=(!navigationAsDateFormat?prevText:this.formatDate(prevText,this._daylightSavingAdjust(new Date(drawYear,drawMonth-stepMonths,1)),this._getFormatConfig(inst)));var prev=(this._canAdjustMonth(inst,-1,drawYear,drawMonth)?''+prevText+"":(hideIfNoPrevNext?"":''+prevText+""));var nextText=this._get(inst,"nextText");nextText=(!navigationAsDateFormat?nextText:this.formatDate(nextText,this._daylightSavingAdjust(new Date(drawYear,drawMonth+stepMonths,1)),this._getFormatConfig(inst)));var next=(this._canAdjustMonth(inst,+1,drawYear,drawMonth)?''+nextText+"":(hideIfNoPrevNext?"":''+nextText+""));var currentText=this._get(inst,"currentText");var gotoDate=(this._get(inst,"gotoCurrent")&&inst.currentDay?currentDate:today);currentText=(!navigationAsDateFormat?currentText:this.formatDate(currentText,gotoDate,this._getFormatConfig(inst)));var controls=(!inst.inline?'":"");var buttonPanel=(showButtonPanel)?'
'+(isRTL?controls:"")+(this._isInRange(inst,gotoDate)?'":"")+(isRTL?"":controls)+"
":"";var firstDay=parseInt(this._get(inst,"firstDay"),10);firstDay=(isNaN(firstDay)?0:firstDay);var dayNames=this._get(inst,"dayNames");var dayNamesShort=this._get(inst,"dayNamesShort");var dayNamesMin=this._get(inst,"dayNamesMin");var monthNames=this._get(inst,"monthNames");var monthNamesShort=this._get(inst,"monthNamesShort");var beforeShowDay=this._get(inst,"beforeShowDay");var showOtherMonths=this._get(inst,"showOtherMonths");var calculateWeek=this._get(inst,"calculateWeek")||this.iso8601Week;var endDate=inst.endDay?this._daylightSavingAdjust(new Date(inst.endYear,inst.endMonth,inst.endDay)):currentDate;var defaultDate=this._getDefaultDate(inst);var html="";for(var row=0;row'+(/all|left/.test(cornerClass)&&row==0?(isRTL?next:prev):"")+(/all|right/.test(cornerClass)&&row==0?(isRTL?prev:next):"")+this._generateMonthYearHeader(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,row>0||col>0,monthNames,monthNamesShort)+'';var thead="";for(var dow=0;dow<7;dow++){var day=(dow+firstDay)%7;thead+="=5?' class="ui-datepicker-week-end"':"")+'>'+dayNamesMin[day]+""}calender+=thead+"";var daysInMonth=this._getDaysInMonth(drawYear,drawMonth);if(drawYear==inst.selectedYear&&drawMonth==inst.selectedMonth){inst.selectedDay=Math.min(inst.selectedDay,daysInMonth)}var leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7;var numRows=(isMultiMonth?6:Math.ceil((leadDays+daysInMonth)/7));var printDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,1-leadDays));for(var dRow=0;dRow";var tbody="";for(var dow=0;dow<7;dow++){var daySettings=(beforeShowDay?beforeShowDay.apply((inst.input?inst.input[0]:null),[printDate]):[true,""]);var otherMonth=(printDate.getMonth()!=drawMonth);var unselectable=otherMonth||!daySettings[0]||(minDate&&printDatemaxDate);tbody+='";printDate.setDate(printDate.getDate()+1);printDate=this._daylightSavingAdjust(printDate)}calender+=tbody+""}drawMonth++;if(drawMonth>11){drawMonth=0;drawYear++}calender+="
=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" "+this._currentClass:"")+(printDate.getTime()==today.getTime()?" ui-datepicker-today":""))+'"'+((!otherMonth||showOtherMonths)&&daySettings[2]?' title="'+daySettings[2]+'"':"")+(unselectable?"":" onclick=\"DP_jQuery.datepicker._selectDay('#"+inst.id+"',"+drawMonth+","+drawYear+', this);return false;"')+">"+(otherMonth?(showOtherMonths?printDate.getDate():" "):(unselectable?''+printDate.getDate()+"":'=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" ui-state-active":"")+'" href="#">'+printDate.getDate()+""))+"
"+(isMultiMonth?""+((numMonths[0]>0&&col==numMonths[1]-1)?'
':""):"");group+=calender}html+=group}html+=buttonPanel+($.browser.msie&&parseInt($.browser.version,10)<7&&!inst.inline?'':"");inst._keyEvent=false;return html},_generateMonthYearHeader:function(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,secondary,monthNames,monthNamesShort){minDate=(inst.rangeStart&&minDate&&selectedDate "}else{var inMinYear=(minDate&&minDate.getFullYear()==drawYear);var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);monthHtml+='"}if(!showMonthAfterYear){html+=monthHtml+((secondary||changeMonth||changeYear)&&(!(changeMonth&&changeYear))?" ":"")}if(secondary||!changeYear){html+=''+drawYear+""}else{var years=this._get(inst,"yearRange").split(":");var year=0;var endYear=0;if(years.length!=2){year=drawYear-10;endYear=drawYear+10}else{if(years[0].charAt(0)=="+"||years[0].charAt(0)=="-"){year=drawYear+parseInt(years[0],10);endYear=drawYear+parseInt(years[1],10)}else{year=parseInt(years[0],10);endYear=parseInt(years[1],10)}}year=(minDate?Math.max(year,minDate.getFullYear()):year);endYear=(maxDate?Math.min(endYear,maxDate.getFullYear()):endYear);html+='"}if(showMonthAfterYear){html+=(secondary||changeMonth||changeYear?" ":"")+monthHtml}html+="";return html},_adjustInstDate:function(inst,offset,period){var year=inst.drawYear+(period=="Y"?offset:0);var month=inst.drawMonth+(period=="M"?offset:0);var day=Math.min(inst.selectedDay,this._getDaysInMonth(year,month))+(period=="D"?offset:0);var date=this._daylightSavingAdjust(new Date(year,month,day));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");date=(minDate&&datemaxDate?maxDate:date);inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();if(period=="M"||period=="Y"){this._notifyChange(inst)}},_notifyChange:function(inst){var onChange=this._get(inst,"onChangeMonthYear");if(onChange){onChange.apply((inst.input?inst.input[0]:null),[inst.selectedYear,inst.selectedMonth+1,inst])}},_getNumberOfMonths:function(inst){var numMonths=this._get(inst,"numberOfMonths");return(numMonths==null?[1,1]:(typeof numMonths=="number"?[1,numMonths]:numMonths))},_getMinMaxDate:function(inst,minMax,checkRange){var date=this._determineDate(this._get(inst,minMax+"Date"),null);return(!checkRange||!inst.rangeStart?date:(!date||inst.rangeStart>date?inst.rangeStart:date))},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate()},_getFirstDayOfMonth:function(year,month){return new Date(year,month,1).getDay()},_canAdjustMonth:function(inst,offset,curYear,curMonth){var numMonths=this._getNumberOfMonths(inst);var date=this._daylightSavingAdjust(new Date(curYear,curMonth+(offset<0?offset:numMonths[1]),1));if(offset<0){date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth()))}return this._isInRange(inst,date)},_isInRange:function(inst,date){var newMinDate=(!inst.rangeStart?null:this._daylightSavingAdjust(new Date(inst.selectedYear,inst.selectedMonth,inst.selectedDay)));newMinDate=(newMinDate&&inst.rangeStart=minDate)&&(!maxDate||date<=maxDate))},_getFormatConfig:function(inst){var shortYearCutoff=this._get(inst,"shortYearCutoff");shortYearCutoff=(typeof shortYearCutoff!="string"?shortYearCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));return{shortYearCutoff:shortYearCutoff,dayNamesShort:this._get(inst,"dayNamesShort"),dayNames:this._get(inst,"dayNames"),monthNamesShort:this._get(inst,"monthNamesShort"),monthNames:this._get(inst,"monthNames")}},_formatDate:function(inst,day,month,year){if(!day){inst.currentDay=inst.selectedDay;inst.currentMonth=inst.selectedMonth;inst.currentYear=inst.selectedYear}var date=(day?(typeof day=="object"?day:this._daylightSavingAdjust(new Date(year,month,day))):this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return this.formatDate(this._get(inst,"dateFormat"),date,this._getFormatConfig(inst))}});function extendRemove(target,props){$.extend(target,props);for(var name in props){if(props[name]==null||props[name]==undefined){target[name]=props[name]}}return target}function isArray(a){return(a&&(($.browser.safari&&typeof a=="object"&&a.length)||(a.constructor&&a.constructor.toString().match(/\Array\(\)/))))}$.fn.datepicker=function(options){if(!$.datepicker.initialized){$(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv);$.datepicker.initialized=true}var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options=="string"&&(options=="isDisabled"||options=="getDate")){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}if(options=="option"&&arguments.length==2&&typeof arguments[1]=="string"){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}return this.each(function(){typeof options=="string"?$.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this].concat(otherArgs)):$.datepicker._attachDatepicker(this,options)})};$.datepicker=new Datepicker();$.datepicker.initialized=false;$.datepicker.uuid=new Date().getTime();$.datepicker.version="1.7.2";window.DP_jQuery=$})(jQuery);; \ No newline at end of file diff --git a/site/javascript/jquery.min.js b/site/javascript/jquery.min.js new file mode 100755 index 0000000..b1ae21d --- /dev/null +++ b/site/javascript/jquery.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/site/layout/admin_layout.php b/site/layout/admin_layout.php new file mode 100644 index 0000000..8cd0ccd --- /dev/null +++ b/site/layout/admin_layout.php @@ -0,0 +1,62 @@ + +
+ +display['header']): ?> + + + + + +display['menu']): ?> +

+ « Go to home page + | Logout +

+ + + + + + +errors)): ?> +
+
    +errors as $err): ?> +
  • + +
+
+ + + + +messages)): ?> +
+
    +messages as $msg): ?> +
  • + +
+
+ + + +
+ +content; ?> + +
+ +display['footer']): ?> + + + + + +
\ No newline at end of file diff --git a/site/layout/default_layout.php b/site/layout/default_layout.php new file mode 100755 index 0000000..8f31ce3 --- /dev/null +++ b/site/layout/default_layout.php @@ -0,0 +1,65 @@ + +
+ +display['header']): ?> + + + + + +display['menu']): ?> + + + + + + + + +errors)): ?> +
+
    +errors as $err): ?> +
  • + +
+
+ + + + +messages)): ?> +
+
    +messages as $msg): ?> +
  • + +
+
+ + + +
+ +content; ?> + +
+ +
+ +display['footer']): ?> + + + + +
\ No newline at end of file diff --git a/site/layout/html.php b/site/layout/html.php new file mode 100755 index 0000000..e0afcb9 --- /dev/null +++ b/site/layout/html.php @@ -0,0 +1,26 @@ + + + + +<?php echo $this->title ?> +cssFiles as $file) +{ + print "\n"; +} + +# print out all of our Javascript file links +foreach($this->jsFiles as $file) +{ + print "\n"; +} + +?> + + +layout ?> + + \ No newline at end of file diff --git a/site/layout/iframe_layout.php b/site/layout/iframe_layout.php new file mode 100644 index 0000000..25c9aac --- /dev/null +++ b/site/layout/iframe_layout.php @@ -0,0 +1,4 @@ + +