From eaaf97ef7e2a04ee36a5c5f066b486ba5aca506a Mon Sep 17 00:00:00 2001 From: Sam Stevens Date: Fri, 8 Feb 2013 20:18:32 +0000 Subject: [PATCH] Initial Commit --- .htaccess | 23 + Classes/HtRule/Form.php | 155 ++++ Classes/HtRule/HtRule.php | 47 ++ Classes/HtRule/List.php | 188 +++++ Classes/HtRule/Param.php | 60 ++ Classes/HtRule/Rule/AppendSlash.php | 26 + Classes/HtRule/Rule/Comment.php | 26 + Classes/HtRule/Rule/Custom.php | 22 + Classes/HtRule/Rule/DenyFiles.php | 38 + Classes/HtRule/Rule/EnableRewrite.php | 31 + Classes/HtRule/Rule/FromWWW.php | 36 + Classes/HtRule/Rule/IndexToRoot.php | 33 + Classes/HtRule/Rule/MapIndex.php | 39 + Classes/HtRule/Rule/RedirectDomain.php | 45 ++ Classes/HtRule/Rule/RedirectUrls.php | 96 +++ Classes/HtRule/Rule/ToWWW.php | 36 + Classes/HtRule/Rule/UseHttps.php | 48 ++ Classes/System.php | 26 + LICENSE | 7 + Media/Images/loading.gif | Bin 0 -> 9427 bytes Media/Images/menu-wrapper.jpg | Bin 0 -> 1086 bytes Media/Images/page-fullwidth.jpg | Bin 0 -> 980 bytes Media/Images/page.jpg | Bin 0 -> 536 bytes Media/Images/pagebottom.jpg | Bin 0 -> 6911 bytes Media/Images/pagetop-fullwidth.jpg | Bin 0 -> 5309 bytes Media/Images/pagetop.jpg | Bin 0 -> 3103 bytes Media/Images/post.jpg | Bin 0 -> 1805 bytes Media/Images/sidebar.jpg | Bin 0 -> 415 bytes Media/impromptu.css | 60 ++ Media/index.js | 78 ++ Media/jquery-impromptu.3.2.min.js | 13 + Media/jquery.min.js | 4 + Media/nicEdit.js | 112 +++ Media/nicEditorIcons.gif | Bin 0 -> 3514 bytes Media/rules.js | 146 ++++ Media/style.css | 692 ++++++++++++++++++ .../css/themes/tooltipster-chocolate.css | 21 + .../css/themes/tooltipster-clean-cut.css | 22 + .../css/themes/tooltipster-smoke.css | 29 + Media/tooltipster-1.2/css/tooltipster.css | 96 +++ .../tooltipster-1.2/js/jquery.tooltipster.js | 389 ++++++++++ .../js/jquery.tooltipster.min.js | 2 + Saved/.htaccess | 4 + ajax.php | 86 +++ config.php | 7 + download.php | 18 + functions.php | 187 +++++ html/ajax/edit.php | 17 + html/ajax/rules.php | 46 ++ html/bottom.php | 26 + html/creator.php | 34 + html/footer.php | 7 + html/messages.php | 12 + html/sidebar.php | 41 ++ html/top.php | 93 +++ includer.php | 32 + index.php | 30 + recall.php | 30 + save.php | 17 + test.php | 22 + thanks.php | 20 + 61 files changed, 3375 insertions(+) create mode 100644 .htaccess create mode 100644 Classes/HtRule/Form.php create mode 100644 Classes/HtRule/HtRule.php create mode 100644 Classes/HtRule/List.php create mode 100644 Classes/HtRule/Param.php create mode 100644 Classes/HtRule/Rule/AppendSlash.php create mode 100644 Classes/HtRule/Rule/Comment.php create mode 100644 Classes/HtRule/Rule/Custom.php create mode 100644 Classes/HtRule/Rule/DenyFiles.php create mode 100644 Classes/HtRule/Rule/EnableRewrite.php create mode 100644 Classes/HtRule/Rule/FromWWW.php create mode 100644 Classes/HtRule/Rule/IndexToRoot.php create mode 100644 Classes/HtRule/Rule/MapIndex.php create mode 100644 Classes/HtRule/Rule/RedirectDomain.php create mode 100644 Classes/HtRule/Rule/RedirectUrls.php create mode 100644 Classes/HtRule/Rule/ToWWW.php create mode 100644 Classes/HtRule/Rule/UseHttps.php create mode 100644 Classes/System.php create mode 100644 LICENSE create mode 100644 Media/Images/loading.gif create mode 100644 Media/Images/menu-wrapper.jpg create mode 100644 Media/Images/page-fullwidth.jpg create mode 100644 Media/Images/page.jpg create mode 100644 Media/Images/pagebottom.jpg create mode 100644 Media/Images/pagetop-fullwidth.jpg create mode 100644 Media/Images/pagetop.jpg create mode 100644 Media/Images/post.jpg create mode 100644 Media/Images/sidebar.jpg create mode 100644 Media/impromptu.css create mode 100644 Media/index.js create mode 100644 Media/jquery-impromptu.3.2.min.js create mode 100644 Media/jquery.min.js create mode 100644 Media/nicEdit.js create mode 100644 Media/nicEditorIcons.gif create mode 100644 Media/rules.js create mode 100644 Media/style.css create mode 100644 Media/tooltipster-1.2/css/themes/tooltipster-chocolate.css create mode 100644 Media/tooltipster-1.2/css/themes/tooltipster-clean-cut.css create mode 100644 Media/tooltipster-1.2/css/themes/tooltipster-smoke.css create mode 100644 Media/tooltipster-1.2/css/tooltipster.css create mode 100644 Media/tooltipster-1.2/js/jquery.tooltipster.js create mode 100644 Media/tooltipster-1.2/js/jquery.tooltipster.min.js create mode 100644 Saved/.htaccess create mode 100644 ajax.php create mode 100644 config.php create mode 100644 download.php create mode 100644 functions.php create mode 100644 html/ajax/edit.php create mode 100644 html/ajax/rules.php create mode 100644 html/bottom.php create mode 100644 html/creator.php create mode 100644 html/footer.php create mode 100644 html/messages.php create mode 100644 html/sidebar.php create mode 100644 html/top.php create mode 100644 includer.php create mode 100644 index.php create mode 100644 recall.php create mode 100644 save.php create mode 100644 test.php create mode 100644 thanks.php diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..e6e679d --- /dev/null +++ b/.htaccess @@ -0,0 +1,23 @@ +Options -Indexes + +# Created by http://htaccess.xnet.tk/ +# Wed, 20 June 2012 + + +# Enable Rewrite Engine +RewriteEngine On +RewriteBase / + +# Redirect Domains (Permanent) +RewriteCond %{HTTP_HOST} ^htaccessbuilder\.co\.uk$ [OR] +RewriteCond %{HTTP_HOST} ^www\.htaccessbuilder\.co\.uk$ [OR] +RewriteCond %{HTTP_HOST} ^www\.htaccessbuilder\.com$ +RewriteRule ^(.*)$ http\://htaccessbuilder\.com/$1 [R=301,L] + +RewriteRule ^rules/([\w]+)/?$ recall.php?id=$1 + +RewriteCond %{HTTP_HOST} ^dev\.htaccessbuilder\.com$ +RewriteCond %{REMOTE_ADDR} !=109.224.133.59 +RewriteRule .* - [F] + + \ No newline at end of file diff --git a/Classes/HtRule/Form.php b/Classes/HtRule/Form.php new file mode 100644 index 0000000..18479a9 --- /dev/null +++ b/Classes/HtRule/Form.php @@ -0,0 +1,155 @@ +rule = $rule; + $rules = new HtRule_List(); + $this->index = array_search($rule, $rules->GetRules()); + } + + function Validate($values, &$error) + { + $params = $this->rule->GetParams(); + foreach($params as $p) + { + /* @var $p HtRule_Param */ + $name = $p->Name(); + $value = get_request($name); + if ($value === False && $p->Type() != HtRule_Param::TYPE_BOOLEAN) + { + $error = "Missing value for ".$p->Title(); + return False; + } + switch($p->Type()) + { + case HtRule_Param::TYPE_STRING: + + break; + case HtRule_Param::TYPE_TEXT: + + break; + case HtRule_Param::TYPE_INT: + if (!preg_match('/-?[0-9]+/', $value)) + { + $error = "Invalid integer for ".$p->Title(); + return False; + } + break; + case HtRule_Param::TYPE_DECIMAL: + if (!is_numeric($value)) + { + $error = "Invalid number for ".$p->Title(); + return False; + } + break; + }//Switch + }//For each + return True; + } + function Save($values) + { + $params = $this->rule->GetParams(); + foreach($params as $p) + { + /* @var $p HtRule_Param */ + $name = $p->Name(); + $value = get_request($name); + + if ($p->Type() == HtRule_Param::TYPE_BOOLEAN) + $p->Value(False); + + if ($value === False) + continue; + + if ($p->Type() == HtRule_Param::TYPE_BOOLEAN && + $value == 'yes') + $p->Value(True); + else + $p->Value($value); + } + } + + function ShowForm() + { + $params = $this->rule->GetParams(); + + $formName = 'form_'.get_class($this->rule); + echo '

Edit "'.$this->rule->GetName().'"

'; + echo '
'; + echo ''; + foreach($params as $p) + { + /* @var $p HtRule_Param */ + $id = 'field-'.$p->Name(); + $name = $p->Name(); + $class = ''; + if ($p->IsMulti()) + { + $class .= ' multi'; + $name .= '[]'; + } + $value = $p->Value(); + + if ($p->Help() != "") + $help = 'class="tooltip" title="'.$p->Help().'"'; + else + $help = ''; + + switch($p->Type()) + { + case HtRule_Param::TYPE_STRING: + $class .= ' type-string'; + if ($p->IsMulti()) + { + echo '
'; + foreach($p->Value() as $value) + { + echo "'; + echo ''; + } + echo '
'; + } + else + { + echo ''; + echo ''; + } + break; + case HtRule_Param::TYPE_TEXT: + $class .= ' type-text'; + echo ''; + break; + case HtRule_Param::TYPE_DUALTEXT: + $class .= ' type-dualtext'; + echo ''. + '
'. + ''. + ''; + break; + case HtRule_Param::TYPE_INT: + $class .= ' type-int'; + echo ''; + break; + case HtRule_Param::TYPE_DECIMAL: + $class .= ' type-decimal'; + echo ''; + break; + case HtRule_Param::TYPE_BOOLEAN: + $class .= ' type-checkbox'; + $checked = ''; + if ($value == True) + $checked = ' checked="checked"'; + echo ''; + break; + }//Switch + }//Foreach param + echo ''; + echo '
'; + echo '
'; + }//ShowForm +} \ No newline at end of file diff --git a/Classes/HtRule/HtRule.php b/Classes/HtRule/HtRule.php new file mode 100644 index 0000000..afebe2b --- /dev/null +++ b/Classes/HtRule/HtRule.php @@ -0,0 +1,47 @@ +params; + } + + function AddParam(HtRule_Param $param) + { + $this->params[$param->Name()] = $param; + } + + function ParamValues() + { + $values = array(); + foreach($this->params as $param) + { + /* @var $param HtRule_Param */ + $values[$param->Name()] = $param->Value(); + } + return $values; + } + + function RequireRewriteEngine() + { + return false; + } + + function __toString() + { + return ''; + } +} \ No newline at end of file diff --git a/Classes/HtRule/List.php b/Classes/HtRule/List.php new file mode 100644 index 0000000..e94d21b --- /dev/null +++ b/Classes/HtRule/List.php @@ -0,0 +1,188 @@ +Load(); + } + public function __destruct() + { + $this->Save(); + } + + public function Load() + { + if (!isset($_SESSION['HtRules']['rules'])) + { + $this->AddRule(new HtRule_Rule_EnableRewrite()); + } + else + { + $this->rules = $_SESSION['HtRules']['rules']; + if (!is_array($this->rules)) + $this->rules = array(); + } + if (isset($_SESSION['HtRules']['id'])) + $this->id = $_SESSION['HtRules']['id']; + } + public function Save() + { + if ($this->changed) + { + $this->id = false; + } + $_SESSION['HtRules']['rules'] = $this->rules; + $_SESSION['HtRules']['id'] = $this->id; + } + public function MarkChanged() + { + $this->changed = true; + } + + public function SetID($id) + { + $this->id = $id; + } + public function GetID() + { + return $this->id; + } + public function SaveToFile() + { + $this->id = uniqid(); + + $ds = DIRECTORY_SEPARATOR; + $dir = BASE_PATH.$ds.'Saved'.$ds; + $dir .= substr($this->id, 0,2).$ds; + $dir .= substr($this->id, 2,2).$ds; + + if (!is_dir($dir)) + mkdir($dir, 0755, True); + + file_put_contents($dir.$this->id.'.txt', serialize($this)); + } + + public function AddRule(HtRule $rule, $position=False) + { + if (count($this->rules) > 250) + return; + if ($position !== False) + { + array_splice($this->rules, $position, 0, array($rule)); + } + else + $this->rules[] = $rule; + + $this->MarkChanged(); + + return array_search($rule, $this->rules); + } + public function DeleteRule(HtRule $rule) + { + array_splice($this->rules, array_search($rule, $this->rules), 1); + $this->MarkChanged(); + } + public function GetRules() + { + return $this->rules; + } + public function GetAtIndex($index) + { + if (isset($this->rules[$index])) + return $this->rules[$index]; + return False; + } + public function ClearRules() + { + $this->rules = array(); + $this->MarkChanged(); + } + + public function UpdateOrder(array $newOrder) + { + $newRules = array(); + + foreach($newOrder as $index) + { + $rule = $this->GetAtIndex($index); + if ($rule) + $newRules[] = $rule; + } + + $this->rules = $newRules; + $this->MarkChanged(); + } + + public function GetHeaderText() + { + $str = '# Created by '.System::Config()->BasePath."\n"; + if ($this->GetID()) + $str .= '# Edit at '.System::Config()->BasePath.'rules/'.$this->GetID()."/\n"; + $str.= "# ". date('D, jS F Y'); + foreach($this->rules as $rule) + { + /* @var $rule HtRule */ + if ($rule->RequireRewriteEngine()) + { + $str .= "\n"; + break; + } + } + return $str; + } + + public function GetFooterText() + { + $str = ''; + foreach($this->rules as $rule) + { + /* @var $rule HtRule */ + if ($rule->RequireRewriteEngine()) + { + $str .= ""; + break; + } + } + return $str; + } + + public function __toString() + { + $str = $this->GetHeaderText()."\n\n"; + foreach($this->rules as $rule) + { + /* @var $rule HtRule */ + $str .= strval($rule); + $str .= "\n\n"; + } + + $str .= $this->GetFooterText(); + return $str; + } +} \ No newline at end of file diff --git a/Classes/HtRule/Param.php b/Classes/HtRule/Param.php new file mode 100644 index 0000000..d3606fe --- /dev/null +++ b/Classes/HtRule/Param.php @@ -0,0 +1,60 @@ +name; } + public function Title() { return $this->title; } + public function Type() { return $this->type; } + public function IsMulti() { return $this->multi; } + public function DefaultValue() { return $this->default; } + public function Help() { return $this->help; } + + public function __construct($name, $title, $type, $default='', $help='', $multi=false) + { + $this->name = (string)$name; + $this->title = (string)$title; + $this->multi = (bool)$multi; + $this->type = (int)$type; + $this->default = (string)$default; + $this->help = (string)$help; + + $this->Value($this->default); + + if (!($type == self::TYPE_STRING || + $type == self::TYPE_TEXT || + $type == self::TYPE_INT || + $type == self::TYPE_DECIMAL || + $type == self::TYPE_BOOLEAN || + $type == self::TYPE_DUALTEXT)) + throw new Exception("Invalid Type"); + } + + function Value($newValue = null) + { + if ($newValue !== null) + { + if ($this->multi) + $this->value = $newValue; + else + $this->value = (string)$newValue; + } + + return $this->value; + } +} \ No newline at end of file diff --git a/Classes/HtRule/Rule/AppendSlash.php b/Classes/HtRule/Rule/AppendSlash.php new file mode 100644 index 0000000..4ae256e --- /dev/null +++ b/Classes/HtRule/Rule/AppendSlash.php @@ -0,0 +1,26 @@ +AddParam(new HtRule_Param('text', 'Comment', HtRule_Param::TYPE_TEXT, 'A Comment')); + parent::__construct(); + } + public static function GetName() + { + return 'Comment'; + } + public function RequireRewriteEngine() + { + return False; + } + public function __toString() + { + $text = $this->params['text']->Value(); + + $text = '# '.str_replace("\n", "\n# ", $text); + + return $text; + } +} \ No newline at end of file diff --git a/Classes/HtRule/Rule/Custom.php b/Classes/HtRule/Rule/Custom.php new file mode 100644 index 0000000..699a65e --- /dev/null +++ b/Classes/HtRule/Rule/Custom.php @@ -0,0 +1,22 @@ +AddParam(new HtRule_Param('Text', 'Directives', HtRule_Param::TYPE_TEXT)); + + parent::__construct(); + } + + public function __toString() + { + $params = $this->ParamValues(); + + return $params['Text']; + } +} \ No newline at end of file diff --git a/Classes/HtRule/Rule/DenyFiles.php b/Classes/HtRule/Rule/DenyFiles.php new file mode 100644 index 0000000..7b03d54 --- /dev/null +++ b/Classes/HtRule/Rule/DenyFiles.php @@ -0,0 +1,38 @@ +AddParam(new HtRule_Param('filetypes', 'File Type', HtRule_Param::TYPE_TEXT, ".sql\n.log", 'Specify the file extensions that you want to deny access to (one per line)', False)); + + parent::__construct(); + } + + public function __toString() + { + $params = $this->ParamValues(); + + $types = $params['filetypes']; + + $types = str_replace("\r", "", $types); + $types = explode("\n", $types); + + $rules = ''; + for($i=0;$i < count($types);$i++) + { + $type = preg_quote($types[$i]); + $rules .= "RewriteCond %{REQUEST_FILENAME} $type$"; + if ($i < count($types)) + $rules .= ' [OR]'; + $rules .= "\n"; + } + $rules .= "RewriteRule .* - [F,L]\n"; + + return $rules; + } +} \ No newline at end of file diff --git a/Classes/HtRule/Rule/EnableRewrite.php b/Classes/HtRule/Rule/EnableRewrite.php new file mode 100644 index 0000000..9991ff9 --- /dev/null +++ b/Classes/HtRule/Rule/EnableRewrite.php @@ -0,0 +1,31 @@ +AddParam(new HtRule_Param('base', 'Rewrite Base', HtRule_Param::TYPE_STRING, '/', 'With leading and trailing slashes')); + + parent::__construct(); + } + public function __toString() + { + $base = $this->params['base']->Value(); + $name = self::GetName(); + return <<AddParam(new HtRule_Param('domain', 'Domain Name', HtRule_Param::TYPE_STRING, 'domain.com', 'The domain without the www')); + $this->AddParam(new HtRule_Param('https', 'Use Https', HtRule_Param::TYPE_BOOLEAN, False, 'Redirect to https')); + + parent::__construct(); + } + + public function __toString() + { + $domain = $this->params['domain']->Value(); + $name = self::GetName(); + $proto = 'http'; + if ($this->params['https']->Value()) + $proto = 'https'; + return <<AddParam(new HtRule_Param('indexfile', 'Index File', HtRule_Param::TYPE_STRING, 'index.php')); + + parent::__construct(); + } + + public function __toString() + { + $name = self::GetName(); + $file = str_replace('.', '\\.', $this->params['indexfile']->Value()); + return <<AddParam(new HtRule_Param('Target', 'Target File', HtRule_Param::TYPE_STRING, 'index.php', 'The file to map request to')); + $this->AddParam(new HtRule_Param('AppendUrl', 'Append Url to rewrite', HtRule_Param::TYPE_BOOLEAN, False, 'This adds the url to the end of the rewritten url, ie /test/ => /index.php/test/')); + $this->AddParam(new HtRule_Param('AppendMethod', 'Method of appending', HtRule_Param::TYPE_STRING, '/', 'eg. ? or ?page= (/ May not work in a CGI environment)')); + + parent::__construct(); + } + + public function __toString() + { + $params = $this->ParamValues(); + + $append = ''; + if ($params['AppendUrl']) + $append .= $params['AppendMethod'].'$1'; + + return <<AddParam(new HtRule_Param('permanent', 'Permanent', HtRule_Param::TYPE_BOOLEAN, true, '')); + $this->AddParam(new HtRule_Param('subdomains', 'Include All Subdomains', HtRule_Param::TYPE_BOOLEAN, true, '')); + $this->AddParam(new HtRule_Param('to', 'Destination Domain', HtRule_Param::TYPE_STRING, 'http://newdomain.com/', 'The full url to direct to')); + $this->AddParam(new HtRule_Param('from', 'Source Domains', HtRule_Param::TYPE_TEXT, 'olddomain.com', '')); + + parent::__construct(); + } + public static function GetName() + { + return 'Redirect Domains'; + } + public function __toString() + { + $values = $this->ParamValues(); + + $type = ($values['permanent']) ? 301 : 302; + $typeText = ($values['permanent']) ? 'Permanent' : 'Temporary'; + + $domains = explode("\n", str_replace("\r", '', $values['from'])); + + $subdomains = ($values['subdomains']) ? '' : '^'; + + $rules = "# Redirect Domains ($typeText)".PHP_EOL; + if (empty($domains)) + return $rules; + foreach($domains as $domain) + { + $rules .= "RewriteCond %{HTTP_HOST} {$subdomains}".preg_quote($domain)."$ [OR]".PHP_EOL; + } + $rules = substr($rules, 0, strlen($rules)-strlen(" [OR]".PHP_EOL)).PHP_EOL; + + $destination = rtrim($values['to'], '/'); + $destination = preg_quote($destination); + + $rules .= "RewriteRule ^(.*)$ {$destination}/$1 [R=$type,L]"; + + return $rules; + } +} \ No newline at end of file diff --git a/Classes/HtRule/Rule/RedirectUrls.php b/Classes/HtRule/Rule/RedirectUrls.php new file mode 100644 index 0000000..4759e81 --- /dev/null +++ b/Classes/HtRule/Rule/RedirectUrls.php @@ -0,0 +1,96 @@ +AddParam(new HtRule_Param('permanent', 'Permanent Redirects', HtRule_Param::TYPE_BOOLEAN, True, '')); + $this->AddParam(new HtRule_Param('host', 'Check Host', HtRule_Param::TYPE_BOOLEAN, false, 'Check the hostname is correct for each redirect')); + $this->AddParam(new HtRule_Param('ignorewww', 'Ignore www. prefix', HtRule_Param::TYPE_BOOLEAN, false, 'Ignores the www, from the domain name. Requires check host be enabled')); + $this->AddParam(new HtRule_Param('urls', 'Urls', HtRule_Param::TYPE_DUALTEXT, '', 'Full Urls, from on the left, to on the right', True)); + + parent::__construct(); + } + public static function GetName() + { + return 'Redirect Urls'; + } + + public function __toString() + { + $values = $this->ParamValues(); + + $type = ($values['permanent']) ? 301 : 302; + $typeText = ($values['permanent']) ? 'Permanent' : 'Temporary'; + + $urls = $values['urls']; + + $rules = ''; + if (is_array($urls) && count($urls) == 2) + { + $fromUrls = explode("\n", str_replace("\r", '', $urls[0])); + $toUrls = explode("\n", str_replace("\r", '', $urls[1])); + foreach($fromUrls as $key => $from) + { + $from = trim($from); + if ($from == "") + continue; + if (isset($toUrls[$key])) + { + $to = trim($toUrls[$key]); + if ($to == "") + continue; + $rule = $this->CreateRewrite($from, $to, $type, $values['host'], @$values['ignorewww']); + if ($rule) + $rules .= $rule.PHP_EOL; + } + } + } + + return <<false,'host'=>false,'port'=>false,'path'=>false,'query'=>false,'fragment'=>false); + $from = array_replace($default, $from); + $to = array_replace($default, $to); + $rule = ''; + if ($checkhost) + { + $domain = $from['host']; + $domainCheck = '^'.str_replace(array('.','\-'),array('\.','\-'),$domain).'$'; + if ($ignorewww) + { + $domain = preg_replace('/^www\./', '', $domain); + $domainCheck = "^(www\.)?".str_replace(array('.','\-'),array('\.','\-'),$domain)."\$"; + } + $rule .= 'RewriteCond %{HTTP_HOST} '.$domainCheck.PHP_EOL; + } + if (!empty($from['query'])) + { + $end = ''; + if ($to['query'] == false) + $end = '?'; + + + $rule .= "RewriteCond %{QUERY_STRING} ^".str_replace('.','\.',$from['query'])."\$".PHP_EOL; + $rule .= "RewriteRule ^".ltrim(preg_quote($from['path']),'/')."\$ $toUrl$end [R=$type,L]"; + } + else + { + $rule .= "RewriteRule ^".ltrim(preg_quote($from['path']),'/')."\$ $toUrl [R=$type,L]"; + } + + return $rule; + } +} \ No newline at end of file diff --git a/Classes/HtRule/Rule/ToWWW.php b/Classes/HtRule/Rule/ToWWW.php new file mode 100644 index 0000000..93327e1 --- /dev/null +++ b/Classes/HtRule/Rule/ToWWW.php @@ -0,0 +1,36 @@ +AddParam(new HtRule_Param('domain', 'Domain Name', HtRule_Param::TYPE_STRING, 'domain.com', 'The domain without the www')); + $this->AddParam(new HtRule_Param('https', 'Use Https', HtRule_Param::TYPE_BOOLEAN, False, 'Redirect to https')); + + parent::__construct(); + } + + public function __toString() + { + $domain = $this->params['domain']->Value(); + $name = self::GetName(); + $proto = 'http'; + if ($this->params['https']->Value()) + $proto = 'https'; + return <<AddParam(new HtRule_Param('DetectHttps', 'Detect Using %{HTTPS}', HtRule_Param::TYPE_BOOLEAN, True, 'This will work on most servers')); + $this->AddParam(new HtRule_Param('Domain', 'Rewrite To Domain', HtRule_Param::TYPE_STRING, 'www.domain.com', 'The full domain to rewrite to')); + $this->AddParam(new HtRule_Param('DetectPort', 'Detect By Port Number', HtRule_Param::TYPE_BOOLEAN, False, 'HTTP uses port 80 whereas HTTPS uses port 443 (default ports)')); + $this->AddParam(new HtRule_Param('HttpsPort', 'Https Port', HtRule_Param::TYPE_INT, 443, 'Redirect the request if the port in use is not this port')); + + parent::__construct(); + } + + public function __toString() + { + $params = $this->ParamValues(); + + $rule = "# Force clients to use https\n"; + if ($params['DetectPort']) + { + $rule .= "RewriteCond %{SERVER_PORT} !$params[HttpsPort]"; + if ($params['DetectHttps']) + $rule .= " [OR]"; + $rule .= "\n"; + } + if ($params['DetectHttps']) + $rule .= "RewriteCond %{HTTPS} !=on\n"; + + $port = ''; + if ($params['HttpsPort'] != 443) + $port = ':'.$params['HttpsPort']; + + $rule .= "RewriteRule (.*) https://$params[Domain]{$port}/$1 [R=301,L]"; + + return $rule; + } +} \ No newline at end of file diff --git a/Classes/System.php b/Classes/System.php new file mode 100644 index 0000000..0ef2b64 --- /dev/null +++ b/Classes/System.php @@ -0,0 +1,26 @@ +BasePath, $_SERVER['HTTP_HOST'], False, True); + session_start(); + } +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5db532f --- /dev/null +++ b/LICENSE @@ -0,0 +1,7 @@ +Copyright (C) 2013 Sam Stevens + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Media/Images/loading.gif b/Media/Images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e2a116c7280b4d9786ddb960fff4439a542866ec GIT binary patch literal 9427 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 OhM#~I&wK(i`}3bHw&zm- literal 0 HcmV?d00001 diff --git a/Media/Images/menu-wrapper.jpg b/Media/Images/menu-wrapper.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0d60ccd78cd97da3977b4b09dd502e65beb82350 GIT binary patch literal 1086 zcmeH@I|>3Z5QhKRNn%{Wl3DgRf(Rn0cmP{nD+?E| zGx>%LVZt^X;d`BK2b2J141^P;Js(dOASeL+sLse*nO)X-qt*2>Px9&z(;hzvIWsGswx;%4PUR0ezZhg5Y|47d_Z$(%`EE>u)2@)X| t3L6YS6#w{&rO2xQbj^PlK)y`a!!gC#ENEg`3@`6f{3RdL56^| zgLDBA4+lF3NCj!&{{aR;4hAmf1I&y{3`~NI%z}*nk1)ssUC#;(7f{eZ0V5ML3o9GY zNnG4O1zQDx&Sz$30y>tJg$1a(7AViaBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpow zs2C>|HF0u@iAzXIsj8`KXlj|5nweWzS~We&gn?hmRgVdHU@6i$mSee*Oaai;;mD;w`w((EKF`^cNE_ z4p`Vh{$gY*2V!PH7FI<=HX+AA_QXPAC8I_T5vPd@Hy-3vHV*nAnpAX=OH9S&q3TDF z*T6m_&SOnv`3&wcguiYv@Gvt1Bac~-!JgsopG93741*XmPWZa~vf^w1W#5IkG!{)b O)TOb2i3*ti|4jg;SRvB@ literal 0 HcmV?d00001 diff --git a/Media/Images/page.jpg b/Media/Images/page.jpg new file mode 100644 index 0000000000000000000000000000000000000000..af03d199e31fbf13a701aa2bc27000bb6f43b932 GIT binary patch literal 536 zcmbVIu}T9$5PfrddpR$gWS6@@NCd5H#3B}gBA9>%6^paC(g=cuAf$*OSlIak`WJ#? zeTCo;SVTn;3q=&MF!ee~aVR$G8+PaMcINHu+K#=4UTiEhKn~F4fPICTZLMv#L2v;~ zv-F01y}7lzj%LCN*&FP`b6r=uo|N8z$1Cf5o}X1gkPQN*RUcaA3%Zb3VHibWI9RDv z28U8mCX>mjTuJLvxoC>z^x(I|CNMq%kq9zy3<*Q_94nw6c+3^=AW$zFW| Dj|4$z literal 0 HcmV?d00001 diff --git a/Media/Images/pagebottom.jpg b/Media/Images/pagebottom.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e7df83017d9a111feec2d93fbc0b9913b7de4e25 GIT binary patch literal 6911 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 CDr7SN literal 0 HcmV?d00001 diff --git a/Media/Images/pagetop.jpg b/Media/Images/pagetop.jpg new file mode 100644 index 0000000000000000000000000000000000000000..61d3998de9b9a999431f9fe39fa4968335229a90 GIT binary patch literal 3103 zcmeHJc~BEq7=N4Hgai>1v|3OE1naFF1_rH(AW{MXQczG4)BqZ=f=6hH;S{w~1q2T$ zN+Xp^A}XL*YfTWvRB1i92?AA#8UYdH2uHGgE9gxB=pRm}9jD`OXZC&j`|kI?*u!XyE5OAPnl3xP=M$$w(x3!_P z0>S=4bKaehN?&^k$8cvxaUDG@)#+sJ*-Hsi+EVgni|22md^GsD5C7FXWLLV)T~ofM z(!VoABKOQyHZ@eWw>B=Ec1lsT(S;RxzlK!VqQ1(chTucWcFo=~^Kw7di8QDgKZCW@ zvPnxXS0TTcc*9ZEE89lr6&qemyvgZ?J|@+HFj*X7gBfnyUuYISQw9_4bt4jBg!RlD zyvPX12MYz&=*}q6vED|in!P5}AEeRG>EYv-49LkIqXCg0}rN}5vyb)^{it&|Af;$!~RRPl^apHe}l5te@87BJPW3HD8W`FG{P&5|76? zcqZL)-dNU^Bx-+kVVrv)(At$5WNr5{?`n%@fk2j)+~c6V-#q?Qs&>5d9GXe~|4H<9 zVYFEIRpT^ZzhxuwI-Sjp3KwV2sc*Wz3j6f6CFDIof;o^7!uAP z3L7a~IlAWn7`WfJp^rZ3>Q1?wbOIDaISk_k1D1Gtbn990_QC?GV~KSTAcV zO}pGA%{3BLj0A=@cF5{GlSHk3BXi5eXW-x11&fQ<*nN86CTH~xuzju=ZdfONt@0dK zC=?PqzN@x#I7lWGRoqqoa5jpiQokyy+`hVH1+&}mixQ53mGgD;jj0x#Pt6bMJJHOr zl=u&lh~(cM@T;m+a{Sm9>jT6i>}nvF|_awd-FP=TCLaM6<38ZBW*Qqy&h{ z^H=a5Jqv&%9^D$&q$_)@vEq03bKCo6UB|+``5TF&BHiu9K@B^awXeQebu}fsZoyUI ztbKJ7)@qI7p3mjZG~=F_$%Vs9ebqaL9}U?sU#bYNe~fPa!V|7In2v+Ea$lc*wbT#3 z@fI?e;V?313HbhKtc5+CFdND;I0`06?}XQg#oMGoOO`c2ngH9bC2J_I>-PP{6Qp_q pW=6J8*uGWY4Mx@vO;$@iF;o{=v;^GnD0RsUZK7IjyJ|1CV5fNcw z8EI*08F@HhWM^mR<>8eO5Ri}(6%>_%OAyQWe}F-dgCUlwm6=hHfk}{&S&;Gn5r#yd zvzeHIu0#MPW=0kcMi4-V0a;9pECN8aKv^USCLu<_i$RkV3zY=HI*_#pelTQI{C|sq zhZ(3%kXewyp5di$@)8^8R!ehU5Z!Rcv~R*kKIVdJR?bH(cn?RsaGdx4U{{Kw?#3FW0 literal 0 HcmV?d00001 diff --git a/Media/Images/sidebar.jpg b/Media/Images/sidebar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3e8f1188857130766078657fe300b5f5f8086e8e GIT binary patch literal 415 zcmex=iF;o{=v;^GnD0RsUZK7IjyJ|1CV5fNcw z8EI*08F@HhWM^mR<>8eO5Ri}(6%>_%OAyQWe}F-dgMo?Bnwe3Mfk}{&S&;Gn5r#Mh zMn*=UBar|T2T+6=NdU-XWMUBjiZU{@B8g8iVl;G2WMVcp5d`T#F=i5@A(PYpTMRrv oVJ1OlK?ZwSave As : ', + focus: 1, + buttons: {Save: true, Cancel: false}, + submit: function(value) { + if (value == true) { + var val = $('#filename-prompt').val(); + if (val == '') { + $('#filename-prompt').css("border","solid #ff0000 1px"); + return false; + } + window.location = 'download.php?filename='+encodeURI(val); + return true; + } + } + } + },{ + show: 'fadeIn', + opacity: '0.7', + loaded: function() { + $('#filename-prompt').keydown(function(event){ + switch (event.keyCode) { + case 13: + $('#jqi_state0_buttonSave').click(); + break; + case 27: + jQuery.prompt.close(); + break; + } + }).focus(); + } + }); + + return false; + }); + + $('#delete').click(function(){ + return confirm('Delete Rules? This will also delete our saved copy (if any)'); + }); + + $('#save').click(function(){ + $.post($(this).attr('href'), {}, function(){ + rules.reloadRules(); + }); + return false; + }); + + $('#field-rule-select').change(function(){ + var val = $(this).val(); + if (val == '') + return; + $('#form-add-rule').submit(); + $(this).val(''); + }); + +}); +var ajaxes_running = 0; +function do_ajax(method, params, callback) +{ + ajaxes_running++; + $('#loading').show(); + $.ajax('ajax.php?action='+method,{ + cache : false, + data : params, + type : 'post', + success : callback, + complete : function(){ + ajaxes_running--; + if (ajaxes_running == 0) + $('#loading').hide(); + } + }); +} diff --git a/Media/jquery-impromptu.3.2.min.js b/Media/jquery-impromptu.3.2.min.js new file mode 100644 index 0000000..6910ae2 --- /dev/null +++ b/Media/jquery-impromptu.3.2.min.js @@ -0,0 +1,13 @@ +/* + * jQuery Impromptu + * By: Trent Richardson [http://trentrichardson.com] + * Version 3.2 + * Last Modified: 10/31/2011 + * + * Copyright 2011 Trent Richardson + * Dual licensed under the MIT and GPL licenses. + * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt + * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt + * + */ + (function($){$.prompt=function(message,options){options=$.extend({},$.prompt.defaults,options);$.prompt.currentPrefix=options.prefix;var ie6=($.browser.msie&&$.browser.version<7);var $body=$(document.body);var $window=$(window);options.classes=$.trim(options.classes);if(options.classes!='')options.classes=' '+options.classes;var msgbox='
';if(options.useiframe&&(($('object, applet').length>0)||ie6)){msgbox+='';}else{if(ie6){$('select').css('visibility','hidden');}msgbox+='
';}msgbox+='
X
';msgbox+='
';var $jqib=$(msgbox).appendTo($body);var $jqi=$jqib.children('#'+options.prefix);var $jqif=$jqib.children('#'+options.prefix+'fade');if(message.constructor==String){message={state0:{html:message,buttons:options.buttons,focus:options.focus,submit:options.submit}};}var states="";$.each(message,function(statename,stateobj){stateobj=$.extend({},$.prompt.defaults.state,stateobj);message[statename]=stateobj;states+='';});$jqi.find('#'+options.prefix+'states').html(states).children('.'+options.prefix+'_state:first').css('display','block');$jqi.find('.'+options.prefix+'buttons:empty').css('display','none');$.each(message,function(statename,stateobj){var $state=$jqi.find('#'+options.prefix+'_state_'+statename);$state.children('.'+options.prefix+'buttons').children('button').click(function(){var msg=$state.children('.'+options.prefix+'message');var clicked=stateobj.buttons[$(this).text()];if(clicked==undefined){for(var i in stateobj.buttons)if(stateobj.buttons[i].title==$(this).text())clicked=stateobj.buttons[i].value;}if(typeof clicked=='object')clicked=clicked.value;var forminputs={};$.each($jqi.find('#'+options.prefix+'states :input').serializeArray(),function(i,obj){if(forminputs[obj.name]===undefined){forminputs[obj.name]=obj.value;}else if(typeof forminputs[obj.name]==Array||typeof forminputs[obj.name]=='object'){forminputs[obj.name].push(obj.value);}else{forminputs[obj.name]=[forminputs[obj.name],obj.value];}});var close=stateobj.submit(clicked,msg,forminputs);if(close===undefined||close){removePrompt(true,clicked,msg,forminputs);}});$state.find('.'+options.prefix+'buttons button:eq('+stateobj.focus+')').addClass(options.prefix+'defaultbutton');});var fadeClicked=function(){if(options.persistent){var offset=(options.top.toString().indexOf('%')>=0?($window.height()*(parseInt(options.top,10)/100)):parseInt(options.top,10)),top=parseInt($jqi.css('top').replace('px',''),10)-offset;$('html,body').animate({scrollTop:top},'fast',function(){var i=0;$jqib.addClass(options.prefix+'warning');var intervalid=setInterval(function(){$jqib.toggleClass(options.prefix+'warning');if(i++>1){clearInterval(intervalid);$jqib.removeClass(options.prefix+'warning');}},100);});}else{removePrompt();}};var keyPressEventHandler=function(e){var key=(window.event)?event.keyCode:e.keyCode;if(key==27){fadeClicked();}if(key==9){var $inputels=$(':input:enabled:visible',$jqib);var fwd=!e.shiftKey&&e.target==$inputels[$inputels.length-1];var back=e.shiftKey&&e.target==$inputels[0];if(fwd||back){setTimeout(function(){if(!$inputels)return;var el=$inputels[back===true?$inputels.length-1:0];if(el)el.focus();},10);return false;}}};var positionPrompt=function(){var bodyHeight=$body.outerHeight(true),windowHeight=$window.height(),documentHeight=$(document).height(),height=bodyHeight>windowHeight?bodyHeight:windowHeight,top=parseInt($window.scrollTop(),10)+(options.top.toString().indexOf('%')>=0?(windowHeight*(parseInt(options.top,10)/100)):parseInt(options.top,10));height=height>documentHeight?height:documentHeight;$jqib.css({position:"absolute",height:height,width:"100%",top:0,left:0,right:0,bottom:0});$jqif.css({position:"absolute",height:height,width:"100%",top:0,left:0,right:0,bottom:0});$jqi.css({position:"absolute",top:top,left:"50%",marginLeft:(($jqi.outerWidth()/2)*-1)});};var stylePrompt=function(){$jqif.css({zIndex:options.zIndex,display:"none",opacity:options.opacity});$jqi.css({zIndex:options.zIndex+1,display:"none"});$jqib.css({zIndex:options.zIndex});};var removePrompt=function(callCallback,clicked,msg,formvals){$jqi.remove();$window.unbind('resize',positionPrompt);$jqif.fadeOut(options.overlayspeed,function(){$jqif.unbind('click',fadeClicked);$jqif.remove();if(callCallback){options.callback(clicked,msg,formvals);}$jqib.unbind('keypress',keyPressEventHandler);$jqib.remove();if(ie6&&!options.useiframe){$('select').css('visibility','visible');}});};positionPrompt();stylePrompt();$jqif.click(fadeClicked);$window.resize(positionPrompt);$jqib.bind("keydown keypress",keyPressEventHandler);$jqi.find('.'+options.prefix+'close').click(removePrompt);$jqif.fadeIn(options.overlayspeed);$jqi[options.show](options.promptspeed,options.loaded);$jqi.find('#'+options.prefix+'states .'+options.prefix+'_state:first .'+options.prefix+'defaultbutton').focus();if(options.timeout>0)setTimeout($.prompt.close,options.timeout);return $jqib;};$.prompt.defaults={prefix:'jqi',classes:'',buttons:{Ok:true},loaded:function(){},submit:function(){return true;},callback:function(){},opacity:0.6,zIndex:999,overlayspeed:'slow',promptspeed:'fast',show:'promptDropIn',focus:0,useiframe:false,top:'15%',persistent:true,timeout:0,state:{html:'',buttons:{Ok:true},focus:0,submit:function(){return true;}}};$.prompt.currentPrefix=$.prompt.defaults.prefix;$.prompt.setDefaults=function(o){$.prompt.defaults=$.extend({},$.prompt.defaults,o);};$.prompt.setStateDefaults=function(o){$.prompt.defaults.state=$.extend({},$.prompt.defaults.state,o);};$.prompt.getStateContent=function(state){return $('#'+$.prompt.currentPrefix+'_state_'+state);};$.prompt.getCurrentState=function(){return $('.'+$.prompt.currentPrefix+'_state:visible');};$.prompt.getCurrentStateName=function(){var stateid=$.prompt.getCurrentState().attr('id');return stateid.replace($.prompt.currentPrefix+'_state_','');};$.prompt.goToState=function(state,callback){$('.'+$.prompt.currentPrefix+'_state').slideUp('slow');$('#'+$.prompt.currentPrefix+'_state_'+state).slideDown('slow',function(){$(this).find('.'+$.prompt.currentPrefix+'defaultbutton').focus();if(typeof callback=='function')callback();});};$.prompt.nextState=function(callback){var $next=$('.'+$.prompt.currentPrefix+'_state:visible').next();$('.'+$.prompt.currentPrefix+'_state').slideUp('slow');$next.slideDown('slow',function(){$next.find('.'+$.prompt.currentPrefix+'defaultbutton').focus();if(typeof callback=='function')callback();});};$.prompt.prevState=function(callback){var $next=$('.'+$.prompt.currentPrefix+'_state:visible').prev();$('.'+$.prompt.currentPrefix+'_state').slideUp('slow');$next.slideDown('slow',function(){$next.find('.'+$.prompt.currentPrefix+'defaultbutton').focus();if(typeof callback=='function')callback();});};$.prompt.close=function(){$('#'+$.prompt.currentPrefix+'box').fadeOut('fast',function(){$(this).remove();});};$.fn.extend({prompt:function(options){if(options==undefined)options={};if(options.withDataAndEvents==undefined)options.withDataAndEvents=false;$.prompt($(this).clone(options.withDataAndEvents).html(),options);},promptDropIn:function(speed,callback){var $t=$(this);if($t.css("display")=="none"){var eltop=$t.css('top');$t.css({top:$(window).scrollTop(),display:'block'}).animate({top:eltop},speed,'swing',callback);}}});})(jQuery); diff --git a/Media/jquery.min.js b/Media/jquery.min.js new file mode 100644 index 0000000..198b3ff --- /dev/null +++ b/Media/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/Media/nicEdit.js b/Media/nicEdit.js new file mode 100644 index 0000000..d6c61a6 --- /dev/null +++ b/Media/nicEdit.js @@ -0,0 +1,112 @@ +/* NicEdit - Micro Inline WYSIWYG + * Copyright 2007-2008 Brian Kirchoff + * + * NicEdit is distributed under the terms of the MIT license + * For more information visit http://nicedit.com/ + * Do not remove this copyright message + */ +var bkExtend=function(){var A=arguments;if(A.length==1){A=[this,A[0]]}for(var B in A[1]){A[0][B]=A[1][B]}return A[0]};function bkClass(){}bkClass.prototype.construct=function(){};bkClass.extend=function(C){var A=function(){if(arguments[0]!==bkClass){return this.construct.apply(this,arguments)}};var B=new this(bkClass);bkExtend(B,C);A.prototype=B;A.extend=this.extend;return A};var bkElement=bkClass.extend({construct:function(B,A){if(typeof (B)=="string"){B=(A||document).createElement(B)}B=$BK(B);return B},appendTo:function(A){A.appendChild(this);return this},appendBefore:function(A){A.parentNode.insertBefore(this,A);return this},addEvent:function(B,A){bkLib.addEvent(this,B,A);return this},setContent:function(A){this.innerHTML=A;return this},pos:function(){var C=curtop=0;var B=obj=this;if(obj.offsetParent){do{C+=obj.offsetLeft;curtop+=obj.offsetTop}while(obj=obj.offsetParent)}var A=(!window.opera)?parseInt(this.getStyle("border-width")||this.style.border)||0:0;return[C+A,curtop+A+this.offsetHeight]},noSelect:function(){bkLib.noSelect(this);return this},parentTag:function(A){var B=this;do{if(B&&B.nodeName&&B.nodeName.toUpperCase()==A){return B}B=B.parentNode}while(B);return false},hasClass:function(A){return this.className.match(new RegExp("(\\s|^)nicEdit-"+A+"(\\s|$)"))},addClass:function(A){if(!this.hasClass(A)){this.className+=" nicEdit-"+A}return this},removeClass:function(A){if(this.hasClass(A)){this.className=this.className.replace(new RegExp("(\\s|^)nicEdit-"+A+"(\\s|$)")," ")}return this},setStyle:function(A){var B=this.style;for(var C in A){switch(C){case"float":B.cssFloat=B.styleFloat=A[C];break;case"opacity":B.opacity=A[C];B.filter="alpha(opacity="+Math.round(A[C]*100)+")";break;case"className":this.className=A[C];break;default:B[C]=A[C]}}return this},getStyle:function(A,C){var B=(!C)?document.defaultView:C;if(this.nodeType==1){return(B&&B.getComputedStyle)?B.getComputedStyle(this,null).getPropertyValue(A):this.currentStyle[bkLib.camelize(A)]}},remove:function(){this.parentNode.removeChild(this);return this},setAttributes:function(A){for(var B in A){this[B]=A[B]}return this}});var bkLib={isMSIE:(navigator.appVersion.indexOf("MSIE")!=-1),addEvent:function(C,B,A){(C.addEventListener)?C.addEventListener(B,A,false):C.attachEvent("on"+B,A)},toArray:function(C){var B=C.length,A=new Array(B);while(B--){A[B]=C[B]}return A},noSelect:function(B){if(B.setAttribute&&B.nodeName.toLowerCase()!="input"&&B.nodeName.toLowerCase()!="textarea"){B.setAttribute("unselectable","on")}for(var A=0;A.nicEdit-main p { margin: 0; } + + + \ No newline at end of file diff --git a/html/creator.php b/html/creator.php new file mode 100644 index 0000000..20c5e1c --- /dev/null +++ b/html/creator.php @@ -0,0 +1,34 @@ +
+

Create

+
+
+ + +
+
+
+
+
+
+

Preview

+ + +
+
+
\ No newline at end of file diff --git a/html/footer.php b/html/footer.php new file mode 100644 index 0000000..50b015d --- /dev/null +++ b/html/footer.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/html/messages.php b/html/messages.php new file mode 100644 index 0000000..5d4a04d --- /dev/null +++ b/html/messages.php @@ -0,0 +1,12 @@ +Error: ".$_SESSION['error']."

"; + unset($_SESSION['error']); +} +if (isset($_SESSION['message'])) +{ + echo "

".$_SESSION['message']."

"; + unset($_SESSION['message']); +} \ No newline at end of file diff --git a/html/sidebar.php b/html/sidebar.php new file mode 100644 index 0000000..65ef01f --- /dev/null +++ b/html/sidebar.php @@ -0,0 +1,41 @@ + \ No newline at end of file diff --git a/html/top.php b/html/top.php new file mode 100644 index 0000000..ee1b7a8 --- /dev/null +++ b/html/top.php @@ -0,0 +1,93 @@ + + + + + + + Htaccess Builder + + + + + + + + + + + + + + + Debug): ?> + + + + + + +
+
+ +
+ + + +
> +
> +
> +
> + +
+ +
+ + + + + \ No newline at end of file diff --git a/includer.php b/includer.php new file mode 100644 index 0000000..2b08f63 --- /dev/null +++ b/includer.php @@ -0,0 +1,32 @@ +AddRule(new HtRule_EnableRewrite()); + redirect(''); +} +if (isset($_GET['delete'])) +{ + $file = BASE_PATH.DIRECTORY_SEPARATOR.'Saved'.DIRECTORY_SEPARATOR.$rules->GetID().'.txt'; + if (is_file($file) && $rules->GetID()) + unlink($file); + $rules->SetID(False); + $rules->ClearRules(); + redirect(''); +} + +$pageid = 'page-builder'; +include('html/top.php'); + +include('html/creator.php'); + +include('html/bottom.php'); \ No newline at end of file diff --git a/recall.php b/recall.php new file mode 100644 index 0000000..eadf6fd --- /dev/null +++ b/recall.php @@ -0,0 +1,30 @@ +SetID(false); +$rules->Save(); + +redirect ('/'); \ No newline at end of file diff --git a/save.php b/save.php new file mode 100644 index 0000000..411a518 --- /dev/null +++ b/save.php @@ -0,0 +1,17 @@ +GetID()) +{ + $rules->SaveToFile(); +} + +if ($_SERVER['REQUEST_METHOD'] != 'POST') +{ + redirect('/'); +} \ No newline at end of file diff --git a/test.php b/test.php new file mode 100644 index 0000000..2733e5d --- /dev/null +++ b/test.php @@ -0,0 +1,22 @@ + +

+ Test +

+

+ +

+ +

Thanks for the donation!

+

+ If you have any ideas or comments please drop me a mail at sam@xnet.tk. +

+

+ Cheers!
+ Sam +

+