diff --git a/README.md b/README.md index c33b6e9..cd607a3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,7 @@ -# PZone.SDK.XRM +# PZone SDK XRM Common assembly for MS Dynamics development. + +Documentation: + \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 4de8e97..c42a53d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,5 @@ # PZone SDK XRM +Common assembly for MS Dynamics development. \ No newline at end of file diff --git a/docs/v8/SearchHelp.aspx b/docs/v8/SearchHelp.aspx new file mode 100644 index 0000000..6e2a17b --- /dev/null +++ b/docs/v8/SearchHelp.aspx @@ -0,0 +1,233 @@ +<%@ Page Language="C#" EnableViewState="False" %> + + diff --git a/docs/v8/SearchHelp.inc.php b/docs/v8/SearchHelp.inc.php new file mode 100644 index 0000000..b905e13 --- /dev/null +++ b/docs/v8/SearchHelp.inc.php @@ -0,0 +1,173 @@ +filename = $file; + $this->pageTitle = $title; + $this->rank = $rank; + } +} + + +/// +/// Split the search text up into keywords +/// +/// The keywords to parse +/// A list containing the words for which to search +function ParseKeywords($keywords) +{ + $keywordList = array(); + $words = preg_split("/[^\w]+/", $keywords); + + foreach($words as $word) + { + $checkWord = strtolower($word); + $first = substr($checkWord, 0, 1); + if(strlen($checkWord) > 2 && !ctype_digit($first) && !in_array($checkWord, $keywordList)) + { + array_push($keywordList, $checkWord); + } + } + + return $keywordList; +} + + +/// +/// Search for the specified keywords and return the results as a block of +/// HTML. +/// +/// The keywords for which to search +/// The file list +/// The dictionary used to find the words +/// True to sort by title, false to sort by +/// ranking +/// A block of HTML representing the search results. +function Search($keywords, $fileInfo, $wordDictionary, $sortByTitle) +{ + $sb = "
    "; + $matches = array(); + $matchingFileIndices = array(); + $rankings = array(); + + $isFirst = true; + + foreach($keywords as $word) + { + if (!array_key_exists($word, $wordDictionary)) + { + return "Nothing found"; + } + $occurrences = $wordDictionary[$word]; + + $matches[$word] = $occurrences; + $occurrenceIndices = array(); + + // Get a list of the file indices for this match + foreach($occurrences as $entry) + array_push($occurrenceIndices, ($entry >> 16)); + + if($isFirst) + { + $isFirst = false; + foreach($occurrenceIndices as $i) + { + array_push($matchingFileIndices, $i); + } + } + else + { + // After the first match, remove files that do not appear for + // all found keywords. + for($idx = 0; $idx < count($matchingFileIndices); $idx++) + { + if (!in_array($matchingFileIndices[$idx], $occurrenceIndices)) + { + array_splice($matchingFileIndices, $idx, 1); + $idx--; + } + } + } + } + + if(count($matchingFileIndices) == 0) + { + return "Nothing found"; + } + + // Rank the files based on the number of times the words occurs + foreach($matchingFileIndices as $index) + { + // Split out the title, filename, and word count + $fileIndex = explode("\x00", $fileInfo[$index]); + + $title = $fileIndex[0]; + $filename = $fileIndex[1]; + $wordCount = intval($fileIndex[2]); + $matchCount = 0; + + foreach($keywords as $words) + { + $occurrences = $matches[$word]; + + foreach($occurrences as $entry) + { + if(($entry >> 16) == $index) + $matchCount += $entry & 0xFFFF; + } + } + + $r = new Ranking($filename, $title, $matchCount * 1000 / $wordCount); + array_push($rankings, $r); + + if(count($rankings) > 99) + break; + } + + // Sort by rank in descending order or by page title in ascending order + if($sortByTitle) + { + usort($rankings, "cmprankbytitle"); + } + else + { + usort($rankings, "cmprank"); + } + + // Format the file list and return the results + foreach($rankings as $r) + { + $f = $r->filename; + $t = $r->pageTitle; + $sb .= "
  1. $t
  2. "; + } + + $sb .= "rank - $x->rank; +} + +function cmprankbytitle($x, $y) +{ + return strcmp($x->pageTitle, $y->pageTitle); +} + +?> diff --git a/docs/v8/SearchHelp.php b/docs/v8/SearchHelp.php new file mode 100644 index 0000000..eaa1e11 --- /dev/null +++ b/docs/v8/SearchHelp.php @@ -0,0 +1,58 @@ + + Nothing found + $val) + { + $wordDictionary[$ftiWord] = $val; + } + } + } + } + + // Perform the search and return the results as a block of HTML + $results = Search($keywords, $fileList, $wordDictionary, $sortByTitle); + echo $results; +?> \ No newline at end of file diff --git a/docs/v8/Web.Config b/docs/v8/Web.Config new file mode 100644 index 0000000..26672e8 --- /dev/null +++ b/docs/v8/Web.Config @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/v8/WebKI.xml b/docs/v8/WebKI.xml new file mode 100644 index 0000000..32b1c2e --- /dev/null +++ b/docs/v8/WebKI.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/v8/WebTOC.xml b/docs/v8/WebTOC.xml new file mode 100644 index 0000000..dfa6f95 --- /dev/null +++ b/docs/v8/WebTOC.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/v8/fti/FTI_100.json b/docs/v8/fti/FTI_100.json new file mode 100644 index 0000000..002a35d --- /dev/null +++ b/docs/v8/fti/FTI_100.json @@ -0,0 +1 @@ +{"dll":[327681,393217,458753,655361,720897,786433,917505,983041,1048577],"default":[1],"description":[131073,196609,262145,524289,589825,851969,917505,983041,1048577]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_101.json b/docs/v8/fti/FTI_101.json new file mode 100644 index 0000000..e9783af --- /dev/null +++ b/docs/v8/fti/FTI_101.json @@ -0,0 +1 @@ +{"entitycollection":[655362],"execute":[196609,393218,1048577],"entity":[131073,327689,524289,786439,917506],"exception":[262145,458757,589825,983041],"extend":[131073,786434,917505],"entityextensions":[131075,327682,524289,786434,917508],"exposes":[131073,196609,917505,1048577],"extension":[327682,393218,458754,655362,720898,786434]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_102.json b/docs/v8/fti/FTI_102.json new file mode 100644 index 0000000..3dc3f8f --- /dev/null +++ b/docs/v8/fti/FTI_102.json @@ -0,0 +1 @@ +{"follow":[1],"first":[327681,393217,458753,655361,720897,786433],"fetchxml":[196609,655363,1048577],"following":[131073,196609,917505,1048577]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_103.json b/docs/v8/fti/FTI_103.json new file mode 100644 index 0000000..6c6e623 --- /dev/null +++ b/docs/v8/fti/FTI_103.json @@ -0,0 +1 @@ +{"guide":[327681,393217,458753,655361,720897,786433]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_104.json b/docs/v8/fti/FTI_104.json new file mode 100644 index 0000000..c25b98f --- /dev/null +++ b/docs/v8/fti/FTI_104.json @@ -0,0 +1 @@ +{"hierarchy":[917505,983041,1048577]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_105.json b/docs/v8/fti/FTI_105.json new file mode 100644 index 0000000..9d1c6e5 --- /dev/null +++ b/docs/v8/fti/FTI_105.json @@ -0,0 +1 @@ +{"instance":[327682,393218,458754,655362,720898,786434],"information":[327681,393217,458753,655361,720897,786433],"itracingservice":[262146,458756,524289,589826,720900,983043],"iorganizationservice":[393219,524289,655363,1048577],"inheritance":[917505,983041,1048577],"itracingserviceextensions":[262146,458754,524289,589826,720898,983043],"iorganizationserviceextensions":[196611,393218,524289,655362,1048580]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1072.json b/docs/v8/fti/FTI_1072.json new file mode 100644 index 0000000..a8cffa9 --- /dev/null +++ b/docs/v8/fti/FTI_1072.json @@ -0,0 +1 @@ +{"атрибутного":[131073,786433,917505],"атрибуты":[786434]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1074.json b/docs/v8/fti/FTI_1074.json new file mode 100644 index 0000000..099cc0b --- /dev/null +++ b/docs/v8/fti/FTI_1074.json @@ -0,0 +1 @@ +{"выполнение":[196609,393217,1048577],"возвращает":[327681,393217,655361],"выполняет":[393217]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1076.json b/docs/v8/fti/FTI_1076.json new file mode 100644 index 0000000..45c1b0d --- /dev/null +++ b/docs/v8/fti/FTI_1076.json @@ -0,0 +1 @@ +{"данных":[262146,458753,589826,720897,983042],"других":[131073,786434,917505],"данные":[458753],"для":[720897]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1079.json b/docs/v8/fti/FTI_1079.json new file mode 100644 index 0000000..26bed00 --- /dev/null +++ b/docs/v8/fti/FTI_1079.json @@ -0,0 +1 @@ +{"запросу":[196609,655361,1048577],"записей":[196609,655362,1048577],"записи":[720897],"запись":[262146,458753,589826,720897,983042],"запрос":[393218],"запроса":[196609,393218,655361,1048577]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_108.json b/docs/v8/fti/FTI_108.json new file mode 100644 index 0000000..584a66b --- /dev/null +++ b/docs/v8/fti/FTI_108.json @@ -0,0 +1 @@ +{"list":[589825],"link":[1]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1080.json b/docs/v8/fti/FTI_1080.json new file mode 100644 index 0000000..dc19483 --- /dev/null +++ b/docs/v8/fti/FTI_1080.json @@ -0,0 +1 @@ +{"исходного":[327681],"исходную":[786433],"интерфейс":[524290,983041,1048577],"исключения":[458753],"исключении":[262146,458753,589826,720897,983042],"исходная":[327681]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1082.json b/docs/v8/fti/FTI_1082.json new file mode 100644 index 0000000..e23fd0c --- /dev/null +++ b/docs/v8/fti/FTI_1082.json @@ -0,0 +1 @@ +{"клонирование":[131073,327681,917505],"классов":[524290,983041,1048577],"которых":[786433],"клонирования":[327681]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1084.json b/docs/v8/fti/FTI_1084.json new file mode 100644 index 0000000..ef830d6 --- /dev/null +++ b/docs/v8/fti/FTI_1084.json @@ -0,0 +1 @@ +{"метод":[327681,393217,655361,786433]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1085.json b/docs/v8/fti/FTI_1085.json new file mode 100644 index 0000000..8814dc4 --- /dev/null +++ b/docs/v8/fti/FTI_1085.json @@ -0,0 +1 @@ +{"найденных":[655361],"нескольких":[786433],"набор":[786433],"новый":[327681]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1086.json b/docs/v8/fti/FTI_1086.json new file mode 100644 index 0000000..4f9a44c --- /dev/null +++ b/docs/v8/fti/FTI_1086.json @@ -0,0 +1 @@ +{"объекта":[131073,327682,917505],"ответ":[393217],"одну":[786433],"ответа":[196609,393218,1048577],"объект":[327681,720897]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1087.json b/docs/v8/fti/FTI_1087.json new file mode 100644 index 0000000..26e486c --- /dev/null +++ b/docs/v8/fti/FTI_1087.json @@ -0,0 +1 @@ +{"получение":[196610,393217,655361,1048578],"переносятся":[786433],"путем":[327681],"перечисления":[524289,917505],"полученный":[327681],"последовательно":[786433]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1088.json b/docs/v8/fti/FTI_1088.json new file mode 100644 index 0000000..21c8621 --- /dev/null +++ b/docs/v8/fti/FTI_1088.json @@ -0,0 +1 @@ +{"расширение":[131073,524291,786433,917506,983041,1048577],"реализующих":[524290,983041,1048577]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1089.json b/docs/v8/fti/FTI_1089.json new file mode 100644 index 0000000..352b2e9 --- /dev/null +++ b/docs/v8/fti/FTI_1089.json @@ -0,0 +1 @@ +{"состава":[131073,786433,917505],"сущность":[327681,786434],"сущностей":[131073,786435,917505],"список":[655361],"сливает":[786433],"сущности":[131073,786433,917505],"списка":[196609,655361,1048577],"сервиса":[393217,458753,655361,720897]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_109.json b/docs/v8/fti/FTI_109.json new file mode 100644 index 0000000..7ba0098 --- /dev/null +++ b/docs/v8/fti/FTI_109.json @@ -0,0 +1 @@ +{"members":[131073,196609,917505,1048577],"methods":[131074,196610,262146,327682,393218,458754,655362,720898,786434,917505,983041,1048577],"method":[327685,393221,458757,589825,655365,720901,786437]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1090.json b/docs/v8/fti/FTI_1090.json new file mode 100644 index 0000000..196be24 --- /dev/null +++ b/docs/v8/fti/FTI_1090.json @@ -0,0 +1 @@ +{"трассеровки":[458753,720897],"текст":[655361],"типа":[196609,327681,393218,1048577],"трассировку":[262146,458753,589826,720898,983042],"тип":[393217]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1091.json b/docs/v8/fti/FTI_1091.json new file mode 100644 index 0000000..5217966 --- /dev/null +++ b/docs/v8/fti/FTI_1091.json @@ -0,0 +1 @@ +{"указанного":[196609,393218,1048577]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1092.json b/docs/v8/fti/FTI_1092.json new file mode 100644 index 0000000..d51c9c3 --- /dev/null +++ b/docs/v8/fti/FTI_1092.json @@ -0,0 +1 @@ +{"функционала":[524291,917505,983041,1048577]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_110.json b/docs/v8/fti/FTI_110.json new file mode 100644 index 0000000..d000287 --- /dev/null +++ b/docs/v8/fti/FTI_110.json @@ -0,0 +1 @@ +{"namespaces":[851970],"namespace":[131073,196609,262145,327682,393218,458754,524289,589825,655362,720898,786434,851969,917506,983042,1048578]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_1101.json b/docs/v8/fti/FTI_1101.json new file mode 100644 index 0000000..faed79b --- /dev/null +++ b/docs/v8/fti/FTI_1101.json @@ -0,0 +1 @@ +{"экземпляр":[393217,458753,655361,720897]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_111.json b/docs/v8/fti/FTI_111.json new file mode 100644 index 0000000..b7764cc --- /dev/null +++ b/docs/v8/fti/FTI_111.json @@ -0,0 +1 @@ +{"organizationrequest":[393218],"overload":[458753,589825,720897],"obj":[720898],"omit":[327681,393217,458753,655361,720897,786433],"organizationresponse":[393217],"object":[262145,327681,393217,458753,589825,655361,720900,786433,917505,983042,1048577],"otherentities":[786434]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_112.json b/docs/v8/fti/FTI_112.json new file mode 100644 index 0000000..0feba81 --- /dev/null +++ b/docs/v8/fti/FTI_112.json @@ -0,0 +1 @@ +{"params":[786433],"parameters":[327681,393218,458753,655361,720897,786433],"programming":[131073,196609,262145,327682,393218,458754,524289,589825,655362,720898,786434,851969,917505,983041,1048577],"public":[327681,393217,458753,655361,720897,786433,917505,983041,1048577],"pzone":[65537,131074,196610,262146,327685,393221,458757,524290,589826,655365,720901,786437,851970,917510,983046,1048582],"parameter":[327681,393217,458753,655361,720897,786433]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_114.json b/docs/v8/fti/FTI_114.json new file mode 100644 index 0000000..acd5a4b --- /dev/null +++ b/docs/v8/fti/FTI_114.json @@ -0,0 +1 @@ +{"return":[327681,393217,655361,786433],"reference":[131073,196609,262145,327681,393217,458753,589825,655361,720897,786433,917505,983041,1048577],"request":[393218],"redirected":[1],"retrievemultiple":[196609,655362,1048577]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_115.json b/docs/v8/fti/FTI_115.json new file mode 100644 index 0000000..fa029fe --- /dev/null +++ b/docs/v8/fti/FTI_115.json @@ -0,0 +1 @@ +{"sort":[65537],"search":[65537],"system":[458753,655361,720897,917505,983041,1048577],"syntax":[327682,393218,458754,655362,720898,786434,917505,983041,1048577],"static":[327681,393217,458753,655361,720897,786433,917505,983041,1048577],"service":[393218,458754,655362,720898],"string":[655362],"sdk":[65537,131074,196610,262146,327683,393219,458755,524290,589826,655363,720899,786435,851970,917508,983044,1048580]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_116.json b/docs/v8/fti/FTI_116.json new file mode 100644 index 0000000..3a5a812 --- /dev/null +++ b/docs/v8/fti/FTI_116.json @@ -0,0 +1 @@ +{"top":[131073,196609,262145,589825,917505,983041,1048577],"trace":[262146,458755,589827,720899,983042],"title":[65537],"topic":[1],"type":[131073,196609,327683,393221,458755,655364,720899,786436,917505,1048577],"tresponse":[196609,393222,1048577]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_117.json b/docs/v8/fti/FTI_117.json new file mode 100644 index 0000000..33dd6bc --- /dev/null +++ b/docs/v8/fti/FTI_117.json @@ -0,0 +1 @@ +{"usage":[327681,393217,458753,655361,720897,786433]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_118.json b/docs/v8/fti/FTI_118.json new file mode 100644 index 0000000..a61aea3 --- /dev/null +++ b/docs/v8/fti/FTI_118.json @@ -0,0 +1 @@ +{"void":[458753,720897,786433],"version":[327681,393217,458753,655361,720897,786433,917505,983041,1048577],"value":[327681,393217,655361,786433],"visual":[327682,393218,458754,655362,720898,786434]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_120.json b/docs/v8/fti/FTI_120.json new file mode 100644 index 0000000..d4f3621 --- /dev/null +++ b/docs/v8/fti/FTI_120.json @@ -0,0 +1 @@ +{"xrm":[65537,131074,196610,262146,327685,393221,458757,524290,589826,655365,720901,786437,851970,917510,983046,1048582]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_122.json b/docs/v8/fti/FTI_122.json new file mode 100644 index 0000000..3ec64a6 --- /dev/null +++ b/docs/v8/fti/FTI_122.json @@ -0,0 +1 @@ +{"zone":[131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_97.json b/docs/v8/fti/FTI_97.json new file mode 100644 index 0000000..3a41b34 --- /dev/null +++ b/docs/v8/fti/FTI_97.json @@ -0,0 +1 @@ +{"assembly":[327681,393217,458753,655361,720897,786433,917505,983041,1048577],"automatically":[1]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_98.json b/docs/v8/fti/FTI_98.json new file mode 100644 index 0000000..2d2e56f --- /dev/null +++ b/docs/v8/fti/FTI_98.json @@ -0,0 +1 @@ +{"basic":[327682,393218,458754,655362,720898,786434]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_99.json b/docs/v8/fti/FTI_99.json new file mode 100644 index 0000000..ca65ef4 --- /dev/null +++ b/docs/v8/fti/FTI_99.json @@ -0,0 +1 @@ +{"classes":[524289],"crm":[393217,655361],"call":[327682,393218,458754,655362,720898,786434],"class":[131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,917506,983042,1048578],"copy":[327681,393217,458753,655361,720897,786433,917505,983041,1048577],"copyright":[131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577],"clone":[131073,327682,917505]} \ No newline at end of file diff --git a/docs/v8/fti/FTI_Files.json b/docs/v8/fti/FTI_Files.json new file mode 100644 index 0000000..5da990e --- /dev/null +++ b/docs/v8/fti/FTI_Files.json @@ -0,0 +1 @@ +["PZone SDK XRM - Redirect\u0000index.html\u000018","PZone SDK XRM - Search\u0000search.html\u000012","EntityExtensions Methods\u0000html/Methods_T_PZone_Xrm_Sdk_EntityExtensions.htm\u000049","IOrganizationServiceExtensions Methods\u0000html/Methods_T_PZone_Xrm_Sdk_IOrganizationServiceExtensions.htm\u000052","ITracingServiceExtensions Methods\u0000html/Methods_T_PZone_Xrm_Sdk_ITracingServiceExtensions.htm\u000050","EntityExtensions.Clone Method\u0000html/M_PZone_Xrm_Sdk_EntityExtensions_Clone.htm\u0000161","IOrganizationServiceExtensions.Execute(TResponse) Method\u0000html/M_PZone_Xrm_Sdk_IOrganizationServiceExtensions_Execute__1.htm\u0000185","ITracingServiceExtensions.Trace Method (ITracingService, Exception)\u0000html/M_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace.htm\u0000164","PZone.Xrm.Sdk Namespace\u0000html/N_PZone_Xrm_Sdk.htm\u000045","ITracingServiceExtensions.Trace Method\u0000html/Overload_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace.htm\u000052","IOrganizationServiceExtensions.RetrieveMultiple Method\u0000html/M_PZone_Xrm_Sdk_IOrganizationServiceExtensions_RetrieveMultiple.htm\u0000168","ITracingServiceExtensions.Trace Method (ITracingService, Object)\u0000html/M_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace_1.htm\u0000167","EntityExtensions.Extend Method\u0000html/M_PZone_Xrm_Sdk_EntityExtensions_Extend.htm\u0000180","Namespaces\u0000html/R_Project_Documentation.htm\u000018","EntityExtensions Class\u0000html/T_PZone_Xrm_Sdk_EntityExtensions.htm\u000096","ITracingServiceExtensions Class\u0000html/T_PZone_Xrm_Sdk_ITracingServiceExtensions.htm\u0000100","IOrganizationServiceExtensions Class\u0000html/T_PZone_Xrm_Sdk_IOrganizationServiceExtensions.htm\u0000102"] \ No newline at end of file diff --git a/docs/v8/html/M_PZone_Xrm_Sdk_EntityExtensions_Clone.htm b/docs/v8/html/M_PZone_Xrm_Sdk_EntityExtensions_Clone.htm new file mode 100644 index 0000000..9afe07b --- /dev/null +++ b/docs/v8/html/M_PZone_Xrm_Sdk_EntityExtensions_Clone.htm @@ -0,0 +1,11 @@ +EntityExtensions.Clone Method
    EntityExtensionsClone Method
    + Клонирование объекта Entity. +

    + Namespace: +  PZone.Xrm.Sdk
    + Assembly: +  PZone.Xrm (in PZone.Xrm.dll) Version: 8.0.0.0 (8.0.0.0)
    Syntax
    C#
    public static Entity Clone(
    +	this Entity entity
    +)

    Parameters

    entity
    Type: Entity
    Исходная сущность.

    Return Value

    Type: Entity
    + Метод возвращает новый объект типа Entity, полученный путем клонирования исходного объекта. +

    Usage Note

    In Visual Basic and C#, you can call this method as an instance method on any object of type Entity. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/M_PZone_Xrm_Sdk_EntityExtensions_Extend.htm b/docs/v8/html/M_PZone_Xrm_Sdk_EntityExtensions_Extend.htm new file mode 100644 index 0000000..f6f6d6b --- /dev/null +++ b/docs/v8/html/M_PZone_Xrm_Sdk_EntityExtensions_Extend.htm @@ -0,0 +1,12 @@ +EntityExtensions.Extend Method
    EntityExtensionsExtend Method
    + Расширение атрибутного состава сущности из других сущностей. +

    + Namespace: +  PZone.Xrm.Sdk
    + Assembly: +  PZone.Xrm (in PZone.Xrm.dll) Version: 8.0.0.0 (8.0.0.0)
    Syntax
    C#
    public static void Extend(
    +	this Entity entity,
    +	params Entity[] otherEntities
    +)

    Parameters

    entity
    Type: Entity
    Сущность.
    otherEntities
    Type: Entity
    Набор других сущностей, атрибуты которых последовательно переносятся в исходную сущность.

    Return Value

    Type: 
    + Метод сливает атрибуты нескольких сущностей в одну. +

    Usage Note

    In Visual Basic and C#, you can call this method as an instance method on any object of type Entity. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/M_PZone_Xrm_Sdk_IOrganizationServiceExtensions_Execute__1.htm b/docs/v8/html/M_PZone_Xrm_Sdk_IOrganizationServiceExtensions_Execute__1.htm new file mode 100644 index 0000000..5cc75f8 --- /dev/null +++ b/docs/v8/html/M_PZone_Xrm_Sdk_IOrganizationServiceExtensions_Execute__1.htm @@ -0,0 +1,14 @@ +IOrganizationServiceExtensions.Execute(TResponse) Method
    IOrganizationServiceExtensionsExecuteTResponse Method
    + Выполнение запроса и получение ответа указанного типа. +

    + Namespace: +  PZone.Xrm.Sdk
    + Assembly: +  PZone.Xrm (in PZone.Xrm.dll) Version: 8.0.0.0 (8.0.0.0)
    Syntax
    C#
    public static TResponse Execute<TResponse>(
    +	this IOrganizationService service,
    +	OrganizationRequest request
    +)
    +where TResponse : OrganizationResponse
    +

    Parameters

    service
    Type: IOrganizationService
    Экземпляр сервиса CRM.
    request
    Type: OrganizationRequest
    Запрос.

    Type Parameters

    TResponse
    Тип ответа запроса.

    Return Value

    Type: TResponse
    + Метод выполняет запрос и возвращает ответ указанного типа. +

    Usage Note

    In Visual Basic and C#, you can call this method as an instance method on any object of type IOrganizationService. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/M_PZone_Xrm_Sdk_IOrganizationServiceExtensions_RetrieveMultiple.htm b/docs/v8/html/M_PZone_Xrm_Sdk_IOrganizationServiceExtensions_RetrieveMultiple.htm new file mode 100644 index 0000000..a12d158 --- /dev/null +++ b/docs/v8/html/M_PZone_Xrm_Sdk_IOrganizationServiceExtensions_RetrieveMultiple.htm @@ -0,0 +1,12 @@ +IOrganizationServiceExtensions.RetrieveMultiple Method
    IOrganizationServiceExtensionsRetrieveMultiple Method
    + Получение списка записей по запросу FetchXML. +

    + Namespace: +  PZone.Xrm.Sdk
    + Assembly: +  PZone.Xrm (in PZone.Xrm.dll) Version: 8.0.0.0 (8.0.0.0)
    Syntax
    C#
    public static EntityCollection RetrieveMultiple(
    +	this IOrganizationService service,
    +	string fetchXml
    +)

    Parameters

    service
    Type: IOrganizationService
    Экземпляр сервиса CRM.
    fetchXml
    Type: SystemString
    Текст запроса.

    Return Value

    Type: EntityCollection
    + Метод возвращает список найденных записей. +

    Usage Note

    In Visual Basic and C#, you can call this method as an instance method on any object of type IOrganizationService. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/M_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace.htm b/docs/v8/html/M_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace.htm new file mode 100644 index 0000000..da9b90e --- /dev/null +++ b/docs/v8/html/M_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace.htm @@ -0,0 +1,10 @@ +ITracingServiceExtensions.Trace Method (ITracingService, Exception)
    ITracingServiceExtensionsTrace Method (ITracingService, Exception)
    + Запись в трассировку данных об исключении. +

    + Namespace: +  PZone.Xrm.Sdk
    + Assembly: +  PZone.Xrm (in PZone.Xrm.dll) Version: 8.0.0.0 (8.0.0.0)
    Syntax
    C#
    public static void Trace(
    +	this ITracingService service,
    +	Exception exception
    +)

    Parameters

    service
    Type: ITracingService
    Экземпляр сервиса трассеровки.
    exception
    Type: SystemException
    Данные исключения.

    Usage Note

    In Visual Basic and C#, you can call this method as an instance method on any object of type ITracingService. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/M_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace_1.htm b/docs/v8/html/M_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace_1.htm new file mode 100644 index 0000000..93c438f --- /dev/null +++ b/docs/v8/html/M_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace_1.htm @@ -0,0 +1,10 @@ +ITracingServiceExtensions.Trace Method (ITracingService, Object)
    ITracingServiceExtensionsTrace Method (ITracingService, Object)
    + Запись в трассировку данных об исключении. +

    + Namespace: +  PZone.Xrm.Sdk
    + Assembly: +  PZone.Xrm (in PZone.Xrm.dll) Version: 8.0.0.0 (8.0.0.0)
    Syntax
    C#
    public static void Trace(
    +	this ITracingService service,
    +	Object obj
    +)

    Parameters

    service
    Type: ITracingService
    Экземпляр сервиса трассеровки.
    obj
    Type: SystemObject
    Объект для записи в трассировку.

    Usage Note

    In Visual Basic and C#, you can call this method as an instance method on any object of type ITracingService. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/Methods_T_PZone_Xrm_Sdk_EntityExtensions.htm b/docs/v8/html/Methods_T_PZone_Xrm_Sdk_EntityExtensions.htm new file mode 100644 index 0000000..18dc8df --- /dev/null +++ b/docs/v8/html/Methods_T_PZone_Xrm_Sdk_EntityExtensions.htm @@ -0,0 +1,7 @@ +EntityExtensions Methods
    EntityExtensions Methods

    The EntityExtensions type exposes the following members.

    Methods
    +   + NameDescription
    Public methodStatic memberClone
    + Клонирование объекта Entity. +
    Public methodStatic memberExtend
    + Расширение атрибутного состава сущности из других сущностей. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/Methods_T_PZone_Xrm_Sdk_IOrganizationServiceExtensions.htm b/docs/v8/html/Methods_T_PZone_Xrm_Sdk_IOrganizationServiceExtensions.htm new file mode 100644 index 0000000..99fe2d3 --- /dev/null +++ b/docs/v8/html/Methods_T_PZone_Xrm_Sdk_IOrganizationServiceExtensions.htm @@ -0,0 +1,7 @@ +IOrganizationServiceExtensions Methods
    IOrganizationServiceExtensions Methods

    The IOrganizationServiceExtensions type exposes the following members.

    Methods
    +   + NameDescription
    Public methodStatic memberExecuteTResponse
    + Выполнение запроса и получение ответа указанного типа. +
    Public methodStatic memberRetrieveMultiple
    + Получение списка записей по запросу FetchXML. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/Methods_T_PZone_Xrm_Sdk_ITracingServiceExtensions.htm b/docs/v8/html/Methods_T_PZone_Xrm_Sdk_ITracingServiceExtensions.htm new file mode 100644 index 0000000..b67fa41 --- /dev/null +++ b/docs/v8/html/Methods_T_PZone_Xrm_Sdk_ITracingServiceExtensions.htm @@ -0,0 +1,7 @@ +ITracingServiceExtensions Methods
    ITracingServiceExtensions Methods
    Methods
    +   + NameDescription
    Public methodStatic memberTrace(ITracingService, Exception)
    + Запись в трассировку данных об исключении. +
    Public methodStatic memberTrace(ITracingService, Object)
    + Запись в трассировку данных об исключении. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/N_PZone_Xrm_Sdk.htm b/docs/v8/html/N_PZone_Xrm_Sdk.htm new file mode 100644 index 0000000..581c4eb --- /dev/null +++ b/docs/v8/html/N_PZone_Xrm_Sdk.htm @@ -0,0 +1,9 @@ +PZone.Xrm.Sdk Namespace
    PZone.Xrm.Sdk Namespace
     
    Classes
    +   + ClassDescription
    Public classEntityExtensions
    + Расширение функционала перечисления Entity. +
    Public classIOrganizationServiceExtensions
    + Расширение функционала классов, реализующих интерфейс IOrganizationService. +
    Public classITracingServiceExtensions
    + Расширение функционала классов, реализующих интерфейс ITracingService. +
    \ No newline at end of file diff --git a/docs/v8/html/Overload_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace.htm b/docs/v8/html/Overload_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace.htm new file mode 100644 index 0000000..66ac819 --- /dev/null +++ b/docs/v8/html/Overload_PZone_Xrm_Sdk_ITracingServiceExtensions_Trace.htm @@ -0,0 +1,7 @@ +ITracingServiceExtensions.Trace Method
    ITracingServiceExtensionsTrace Method
    Overload List
    +   + NameDescription
    Public methodStatic memberTrace(ITracingService, Exception)
    + Запись в трассировку данных об исключении. +
    Public methodStatic memberTrace(ITracingService, Object)
    + Запись в трассировку данных об исключении. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/R_Project_Documentation.htm b/docs/v8/html/R_Project_Documentation.htm new file mode 100644 index 0000000..b268b16 --- /dev/null +++ b/docs/v8/html/R_Project_Documentation.htm @@ -0,0 +1,9 @@ +Namespaces
    Namespaces
    Namespaces
    NamespaceDescription
    PZone.Xrm.Sdk
     
    + \ No newline at end of file diff --git a/docs/v8/html/T_PZone_Xrm_Sdk_EntityExtensions.htm b/docs/v8/html/T_PZone_Xrm_Sdk_EntityExtensions.htm new file mode 100644 index 0000000..7f89fef --- /dev/null +++ b/docs/v8/html/T_PZone_Xrm_Sdk_EntityExtensions.htm @@ -0,0 +1,13 @@ +EntityExtensions Class
    EntityExtensions Class
    + Расширение функционала перечисления Entity. +
    Inheritance Hierarchy
    SystemObject
      PZone.Xrm.SdkEntityExtensions

    + Namespace: +  PZone.Xrm.Sdk
    + Assembly: +  PZone.Xrm (in PZone.Xrm.dll) Version: 8.0.0.0 (8.0.0.0)
    Syntax
    C#
    public static class EntityExtensions

    The EntityExtensions type exposes the following members.

    Methods
    +   + NameDescription
    Public methodStatic memberClone
    + Клонирование объекта Entity. +
    Public methodStatic memberExtend
    + Расширение атрибутного состава сущности из других сущностей. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/T_PZone_Xrm_Sdk_IOrganizationServiceExtensions.htm b/docs/v8/html/T_PZone_Xrm_Sdk_IOrganizationServiceExtensions.htm new file mode 100644 index 0000000..94a7d2e --- /dev/null +++ b/docs/v8/html/T_PZone_Xrm_Sdk_IOrganizationServiceExtensions.htm @@ -0,0 +1,13 @@ +IOrganizationServiceExtensions Class
    IOrganizationServiceExtensions Class
    + Расширение функционала классов, реализующих интерфейс IOrganizationService. +
    Inheritance Hierarchy
    SystemObject
      PZone.Xrm.SdkIOrganizationServiceExtensions

    + Namespace: +  PZone.Xrm.Sdk
    + Assembly: +  PZone.Xrm (in PZone.Xrm.dll) Version: 8.0.0.0 (8.0.0.0)
    Syntax
    C#
    public static class IOrganizationServiceExtensions

    The IOrganizationServiceExtensions type exposes the following members.

    Methods
    +   + NameDescription
    Public methodStatic memberExecuteTResponse
    + Выполнение запроса и получение ответа указанного типа. +
    Public methodStatic memberRetrieveMultiple
    + Получение списка записей по запросу FetchXML. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/v8/html/T_PZone_Xrm_Sdk_ITracingServiceExtensions.htm b/docs/v8/html/T_PZone_Xrm_Sdk_ITracingServiceExtensions.htm new file mode 100644 index 0000000..4d4f917 --- /dev/null +++ b/docs/v8/html/T_PZone_Xrm_Sdk_ITracingServiceExtensions.htm @@ -0,0 +1,13 @@ +ITracingServiceExtensions Class
    ITracingServiceExtensions Class
    + Расширение функционала классов, реализующих интерфейс ITracingService. +
    Inheritance Hierarchy
    SystemObject
      PZone.Xrm.SdkITracingServiceExtensions

    + Namespace: +  PZone.Xrm.Sdk
    + Assembly: +  PZone.Xrm (in PZone.Xrm.dll) Version: 8.0.0.0 (8.0.0.0)
    Syntax
    C#
    public static class ITracingServiceExtensions
    Methods
    +   + NameDescription
    Public methodStatic memberTrace(ITracingService, Exception)
    + Запись в трассировку данных об исключении. +
    Public methodStatic memberTrace(ITracingService, Object)
    + Запись в трассировку данных об исключении. +
    Top
    See Also
    \ No newline at end of file diff --git a/docs/v8/icons/AlertCaution.png b/docs/v8/icons/AlertCaution.png new file mode 100644 index 0000000..78f246f Binary files /dev/null and b/docs/v8/icons/AlertCaution.png differ diff --git a/docs/v8/icons/AlertNote.png b/docs/v8/icons/AlertNote.png new file mode 100644 index 0000000..0ab92b6 Binary files /dev/null and b/docs/v8/icons/AlertNote.png differ diff --git a/docs/v8/icons/AlertSecurity.png b/docs/v8/icons/AlertSecurity.png new file mode 100644 index 0000000..d40fcef Binary files /dev/null and b/docs/v8/icons/AlertSecurity.png differ diff --git a/docs/v8/icons/CFW.gif b/docs/v8/icons/CFW.gif new file mode 100644 index 0000000..cbcabf1 Binary files /dev/null and b/docs/v8/icons/CFW.gif differ diff --git a/docs/v8/icons/CodeExample.png b/docs/v8/icons/CodeExample.png new file mode 100644 index 0000000..a3b9fba Binary files /dev/null and b/docs/v8/icons/CodeExample.png differ diff --git a/docs/v8/icons/Search.png b/docs/v8/icons/Search.png new file mode 100644 index 0000000..42165b6 Binary files /dev/null and b/docs/v8/icons/Search.png differ diff --git a/docs/v8/icons/SectionCollapsed.png b/docs/v8/icons/SectionCollapsed.png new file mode 100644 index 0000000..8ded1eb Binary files /dev/null and b/docs/v8/icons/SectionCollapsed.png differ diff --git a/docs/v8/icons/SectionExpanded.png b/docs/v8/icons/SectionExpanded.png new file mode 100644 index 0000000..b693921 Binary files /dev/null and b/docs/v8/icons/SectionExpanded.png differ diff --git a/docs/v8/icons/TocClose.gif b/docs/v8/icons/TocClose.gif new file mode 100644 index 0000000..e6d7b5e Binary files /dev/null and b/docs/v8/icons/TocClose.gif differ diff --git a/docs/v8/icons/TocCollapsed.gif b/docs/v8/icons/TocCollapsed.gif new file mode 100644 index 0000000..108d492 Binary files /dev/null and b/docs/v8/icons/TocCollapsed.gif differ diff --git a/docs/v8/icons/TocExpanded.gif b/docs/v8/icons/TocExpanded.gif new file mode 100644 index 0000000..f774d9b Binary files /dev/null and b/docs/v8/icons/TocExpanded.gif differ diff --git a/docs/v8/icons/TocOpen.gif b/docs/v8/icons/TocOpen.gif new file mode 100644 index 0000000..4992a98 Binary files /dev/null and b/docs/v8/icons/TocOpen.gif differ diff --git a/docs/v8/icons/favicon.ico b/docs/v8/icons/favicon.ico new file mode 100644 index 0000000..2b9963f Binary files /dev/null and b/docs/v8/icons/favicon.ico differ diff --git a/docs/v8/icons/privclass.gif b/docs/v8/icons/privclass.gif new file mode 100644 index 0000000..0939694 Binary files /dev/null and b/docs/v8/icons/privclass.gif differ diff --git a/docs/v8/icons/privdelegate.gif b/docs/v8/icons/privdelegate.gif new file mode 100644 index 0000000..d3aa8a6 Binary files /dev/null and b/docs/v8/icons/privdelegate.gif differ diff --git a/docs/v8/icons/privenumeration.gif b/docs/v8/icons/privenumeration.gif new file mode 100644 index 0000000..47f387e Binary files /dev/null and b/docs/v8/icons/privenumeration.gif differ diff --git a/docs/v8/icons/privevent.gif b/docs/v8/icons/privevent.gif new file mode 100644 index 0000000..30db46d Binary files /dev/null and b/docs/v8/icons/privevent.gif differ diff --git a/docs/v8/icons/privextension.gif b/docs/v8/icons/privextension.gif new file mode 100644 index 0000000..51dd267 Binary files /dev/null and b/docs/v8/icons/privextension.gif differ diff --git a/docs/v8/icons/privfield.gif b/docs/v8/icons/privfield.gif new file mode 100644 index 0000000..cbf70f7 Binary files /dev/null and b/docs/v8/icons/privfield.gif differ diff --git a/docs/v8/icons/privinterface.gif b/docs/v8/icons/privinterface.gif new file mode 100644 index 0000000..f3b7950 Binary files /dev/null and b/docs/v8/icons/privinterface.gif differ diff --git a/docs/v8/icons/privmethod.gif b/docs/v8/icons/privmethod.gif new file mode 100644 index 0000000..71f8822 Binary files /dev/null and b/docs/v8/icons/privmethod.gif differ diff --git a/docs/v8/icons/privproperty.gif b/docs/v8/icons/privproperty.gif new file mode 100644 index 0000000..b1e8074 Binary files /dev/null and b/docs/v8/icons/privproperty.gif differ diff --git a/docs/v8/icons/privstructure.gif b/docs/v8/icons/privstructure.gif new file mode 100644 index 0000000..ed6d1ef Binary files /dev/null and b/docs/v8/icons/privstructure.gif differ diff --git a/docs/v8/icons/protclass.gif b/docs/v8/icons/protclass.gif new file mode 100644 index 0000000..0f92942 Binary files /dev/null and b/docs/v8/icons/protclass.gif differ diff --git a/docs/v8/icons/protdelegate.gif b/docs/v8/icons/protdelegate.gif new file mode 100644 index 0000000..b209f2d Binary files /dev/null and b/docs/v8/icons/protdelegate.gif differ diff --git a/docs/v8/icons/protenumeration.gif b/docs/v8/icons/protenumeration.gif new file mode 100644 index 0000000..cc96bb6 Binary files /dev/null and b/docs/v8/icons/protenumeration.gif differ diff --git a/docs/v8/icons/protevent.gif b/docs/v8/icons/protevent.gif new file mode 100644 index 0000000..0e510b2 Binary files /dev/null and b/docs/v8/icons/protevent.gif differ diff --git a/docs/v8/icons/protextension.gif b/docs/v8/icons/protextension.gif new file mode 100644 index 0000000..dcd07f5 Binary files /dev/null and b/docs/v8/icons/protextension.gif differ diff --git a/docs/v8/icons/protfield.gif b/docs/v8/icons/protfield.gif new file mode 100644 index 0000000..9ae6833 Binary files /dev/null and b/docs/v8/icons/protfield.gif differ diff --git a/docs/v8/icons/protinterface.gif b/docs/v8/icons/protinterface.gif new file mode 100644 index 0000000..a1b96d2 Binary files /dev/null and b/docs/v8/icons/protinterface.gif differ diff --git a/docs/v8/icons/protmethod.gif b/docs/v8/icons/protmethod.gif new file mode 100644 index 0000000..2bc9468 Binary files /dev/null and b/docs/v8/icons/protmethod.gif differ diff --git a/docs/v8/icons/protoperator.gif b/docs/v8/icons/protoperator.gif new file mode 100644 index 0000000..2cb75ab Binary files /dev/null and b/docs/v8/icons/protoperator.gif differ diff --git a/docs/v8/icons/protproperty.gif b/docs/v8/icons/protproperty.gif new file mode 100644 index 0000000..55473d1 Binary files /dev/null and b/docs/v8/icons/protproperty.gif differ diff --git a/docs/v8/icons/protstructure.gif b/docs/v8/icons/protstructure.gif new file mode 100644 index 0000000..af356a1 Binary files /dev/null and b/docs/v8/icons/protstructure.gif differ diff --git a/docs/v8/icons/pubclass.gif b/docs/v8/icons/pubclass.gif new file mode 100644 index 0000000..1a968ab Binary files /dev/null and b/docs/v8/icons/pubclass.gif differ diff --git a/docs/v8/icons/pubdelegate.gif b/docs/v8/icons/pubdelegate.gif new file mode 100644 index 0000000..0a43eb2 Binary files /dev/null and b/docs/v8/icons/pubdelegate.gif differ diff --git a/docs/v8/icons/pubenumeration.gif b/docs/v8/icons/pubenumeration.gif new file mode 100644 index 0000000..46888ad Binary files /dev/null and b/docs/v8/icons/pubenumeration.gif differ diff --git a/docs/v8/icons/pubevent.gif b/docs/v8/icons/pubevent.gif new file mode 100644 index 0000000..b9226da Binary files /dev/null and b/docs/v8/icons/pubevent.gif differ diff --git a/docs/v8/icons/pubextension.gif b/docs/v8/icons/pubextension.gif new file mode 100644 index 0000000..6262d1c Binary files /dev/null and b/docs/v8/icons/pubextension.gif differ diff --git a/docs/v8/icons/pubfield.gif b/docs/v8/icons/pubfield.gif new file mode 100644 index 0000000..5aed175 Binary files /dev/null and b/docs/v8/icons/pubfield.gif differ diff --git a/docs/v8/icons/pubinterface.gif b/docs/v8/icons/pubinterface.gif new file mode 100644 index 0000000..c38a4c4 Binary files /dev/null and b/docs/v8/icons/pubinterface.gif differ diff --git a/docs/v8/icons/pubmethod.gif b/docs/v8/icons/pubmethod.gif new file mode 100644 index 0000000..2c72988 Binary files /dev/null and b/docs/v8/icons/pubmethod.gif differ diff --git a/docs/v8/icons/puboperator.gif b/docs/v8/icons/puboperator.gif new file mode 100644 index 0000000..0ebe10a Binary files /dev/null and b/docs/v8/icons/puboperator.gif differ diff --git a/docs/v8/icons/pubproperty.gif b/docs/v8/icons/pubproperty.gif new file mode 100644 index 0000000..dfad7b4 Binary files /dev/null and b/docs/v8/icons/pubproperty.gif differ diff --git a/docs/v8/icons/pubstructure.gif b/docs/v8/icons/pubstructure.gif new file mode 100644 index 0000000..1344416 Binary files /dev/null and b/docs/v8/icons/pubstructure.gif differ diff --git a/docs/v8/icons/slMobile.gif b/docs/v8/icons/slMobile.gif new file mode 100644 index 0000000..5edc31f Binary files /dev/null and b/docs/v8/icons/slMobile.gif differ diff --git a/docs/v8/icons/static.gif b/docs/v8/icons/static.gif new file mode 100644 index 0000000..33723a9 Binary files /dev/null and b/docs/v8/icons/static.gif differ diff --git a/docs/v8/icons/xna.gif b/docs/v8/icons/xna.gif new file mode 100644 index 0000000..9e6a9d4 Binary files /dev/null and b/docs/v8/icons/xna.gif differ diff --git a/docs/v8/index.html b/docs/v8/index.html new file mode 100644 index 0000000..ab96f03 --- /dev/null +++ b/docs/v8/index.html @@ -0,0 +1,14 @@ + + + + + + + PZone SDK XRM - Redirect + + +

    If you are not redirected automatically, follow this link to the default topic.

    + + diff --git a/docs/v8/scripts/branding-Website.js b/docs/v8/scripts/branding-Website.js new file mode 100644 index 0000000..06ab980 --- /dev/null +++ b/docs/v8/scripts/branding-Website.js @@ -0,0 +1,624 @@ +//=============================================================================================================== +// System : Sandcastle Help File Builder +// File : branding-Website.js +// Author : Eric Woodruff (Eric@EWoodruff.us) +// Updated : 03/04/2015 +// Note : Copyright 2014-2015, Eric Woodruff, All rights reserved +// Portions Copyright 2014 Sam Harwell, All rights reserved +// +// This file contains the methods necessary to implement the lightweight TOC and search functionality. +// +// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be +// distributed with the code. It can also be found at the project website: https://GitHub.com/EWSoftware/SHFB. This +// notice, the author's name, and all copyright notices must remain intact in all applications, documentation, +// and source files. +// +// Date Who Comments +// ============================================================================================================== +// 05/04/2014 EFW Created the code based on a combination of the lightweight TOC code from Sam Harwell and +// the existing search code from SHFB. +//=============================================================================================================== + +// Width of the TOC +var tocWidth; + +// Search method (0 = To be determined, 1 = ASPX, 2 = PHP, anything else = client-side script +var searchMethod = 0; + +// Table of contents script + +// Initialize the TOC by restoring its width from the cookie if present +function InitializeToc() +{ + tocWidth = parseInt(GetCookie("TocWidth", "280")); + ResizeToc(); + $(window).resize(SetNavHeight) +} + +function SetNavHeight() +{ + $leftNav = $("#leftNav") + $topicContent = $("#TopicContent") + leftNavPadding = $leftNav.outerHeight() - $leftNav.height() + contentPadding = $topicContent.outerHeight() - $topicContent.height() + // want outer height of left navigation div to match outer height of content + leftNavHeight = $topicContent.outerHeight() - leftNavPadding + $leftNav.css("min-height", leftNavHeight + "px") +} + +// Increase the TOC width +function OnIncreaseToc() +{ + if(tocWidth < 1) + tocWidth = 280; + else + tocWidth += 100; + + if(tocWidth > 680) + tocWidth = 0; + + ResizeToc(); + SetCookie("TocWidth", tocWidth); +} + +// Reset the TOC to its default width +function OnResetToc() +{ + tocWidth = 0; + + ResizeToc(); + SetCookie("TocWidth", tocWidth); +} + +// Resize the TOC width +function ResizeToc() +{ + var toc = document.getElementById("leftNav"); + + if(toc) + { + // Set TOC width + toc.style.width = tocWidth + "px"; + + var leftNavPadding = 10; + + document.getElementById("TopicContent").style.marginLeft = (tocWidth + leftNavPadding) + "px"; + + // Position images + document.getElementById("TocResize").style.left = (tocWidth + leftNavPadding) + "px"; + + // Hide/show increase TOC width image + document.getElementById("ResizeImageIncrease").style.display = (tocWidth >= 680) ? "none" : ""; + + // Hide/show reset TOC width image + document.getElementById("ResizeImageReset").style.display = (tocWidth < 680) ? "none" : ""; + } + + SetNavHeight() +} + +// Toggle a TOC entry between its collapsed and expanded state +function Toggle(item) +{ + var isExpanded = $(item).hasClass("tocExpanded"); + + $(item).toggleClass("tocExpanded tocCollapsed"); + + if(isExpanded) + { + Collapse($(item).parent()); + } + else + { + var childrenLoaded = $(item).parent().attr("data-childrenloaded"); + + if(childrenLoaded) + { + Expand($(item).parent()); + } + else + { + var tocid = $(item).next().attr("tocid"); + + $.ajax({ + url: "../toc/" + tocid + ".xml", + async: true, + dataType: "xml", + success: function(data) + { + BuildChildren($(item).parent(), data); + } + }); + } + } +} + +// HTML encode a value for use on the page +function HtmlEncode(value) +{ + // Create an in-memory div, set it's inner text (which jQuery automatically encodes) then grab the encoded + // contents back out. The div never exists on the page. + return $('
    ').text(value).html(); +} + +// Build the child entries of a TOC entry +function BuildChildren(tocDiv, data) +{ + var childLevel = +tocDiv.attr("data-toclevel") + 1; + var childTocLevel = childLevel >= 10 ? 10 : childLevel; + var elements = data.getElementsByTagName("HelpTOCNode"); + + var isRoot = true; + + if(data.getElementsByTagName("HelpTOC").length == 0) + { + // The first node is the root node of this group, don't show it again + isRoot = false; + } + + for(var i = elements.length - 1; i > 0 || (isRoot && i == 0); i--) + { + var childHRef, childId = elements[i].getAttribute("Url"); + + if(childId != null && childId.length > 5) + { + // The Url attribute has the form "html/{childId}.htm" + childHRef = childId.substring(5, childId.length); + childId = childId.substring(5, childId.lastIndexOf(".")); + } + else + { + // The Id attribute is in raw form. There is no URL (empty container node). In this case, we'll + // just ignore it and go nowhere. It's a rare case that isn't worth trying to get the first child. + // Instead, we'll just expand the node (see below). + childHRef = "#"; + childId = elements[i].getAttribute("Id"); + } + + var existingItem = null; + + tocDiv.nextAll().each(function() + { + if(!existingItem && $(this).children().last("a").attr("tocid") == childId) + { + existingItem = $(this); + } + }); + + if(existingItem != null) + { + // First move the children of the existing item + var existingChildLevel = +existingItem.attr("data-toclevel"); + var doneMoving = false; + var inserter = tocDiv; + + existingItem.nextAll().each(function() + { + if(!doneMoving && +$(this).attr("data-toclevel") > existingChildLevel) + { + inserter.after($(this)); + inserter = $(this); + $(this).attr("data-toclevel", +$(this).attr("data-toclevel") + childLevel - existingChildLevel); + + if($(this).hasClass("current")) + $(this).attr("class", "toclevel" + (+$(this).attr("data-toclevel") + " current")); + else + $(this).attr("class", "toclevel" + (+$(this).attr("data-toclevel"))); + } + else + { + doneMoving = true; + } + }); + + // Now move the existing item itself + tocDiv.after(existingItem); + existingItem.attr("data-toclevel", childLevel); + existingItem.attr("class", "toclevel" + childLevel); + } + else + { + var hasChildren = elements[i].getAttribute("HasChildren"); + var childTitle = HtmlEncode(elements[i].getAttribute("Title")); + var expander = ""; + + if(hasChildren) + expander = ""; + + var text = "
    " + + expander + "" + + childTitle + "
    "; + + tocDiv.after(text); + } + } + + tocDiv.attr("data-childrenloaded", true); +} + +// Collapse a TOC entry +function Collapse(tocDiv) +{ + // Hide all the TOC elements after item, until we reach one with a data-toclevel less than or equal to the + // current item's value. + var tocLevel = +tocDiv.attr("data-toclevel"); + var done = false; + + tocDiv.nextAll().each(function() + { + if(!done && +$(this).attr("data-toclevel") > tocLevel) + { + $(this).hide(); + } + else + { + done = true; + } + }); +} + +// Expand a TOC entry +function Expand(tocDiv) +{ + // Show all the TOC elements after item, until we reach one with a data-toclevel less than or equal to the + // current item's value + var tocLevel = +tocDiv.attr("data-toclevel"); + var done = false; + + tocDiv.nextAll().each(function() + { + if(done) + { + return; + } + + var childTocLevel = +$(this).attr("data-toclevel"); + + if(childTocLevel == tocLevel + 1) + { + $(this).show(); + + if($(this).children("a").first().hasClass("tocExpanded")) + { + Expand($(this)); + } + } + else if(childTocLevel > tocLevel + 1) + { + // Ignore this node, handled by recursive calls + } + else + { + done = true; + } + }); +} + +// This is called to prepare for dragging the sizer div +function OnMouseDown(event) +{ + document.addEventListener("mousemove", OnMouseMove, true); + document.addEventListener("mouseup", OnMouseUp, true); + event.preventDefault(); +} + +// Resize the TOC as the sizer is dragged +function OnMouseMove(event) +{ + tocWidth = (event.clientX > 700) ? 700 : (event.clientX < 100) ? 100 : event.clientX; + + ResizeToc(); +} + +// Finish the drag operation when the mouse button is released +function OnMouseUp(event) +{ + document.removeEventListener("mousemove", OnMouseMove, true); + document.removeEventListener("mouseup", OnMouseUp, true); + + SetCookie("TocWidth", tocWidth); +} + +// Search functions + +// Transfer to the search page from a topic +function TransferToSearchPage() +{ + var searchText = document.getElementById("SearchTextBox").value.trim(); + + if(searchText.length != 0) + document.location.replace(encodeURI("../search.html?SearchText=" + searchText)); +} + +// Initiate a search when the search page loads +function OnSearchPageLoad() +{ + var queryString = decodeURI(document.location.search); + + if(queryString != "") + { + var idx, options = queryString.split(/[\?\=\&]/); + + for(idx = 0; idx < options.length; idx++) + if(options[idx] == "SearchText" && idx + 1 < options.length) + { + document.getElementById("txtSearchText").value = options[idx + 1]; + PerformSearch(); + break; + } + } +} + +// Perform a search using the best available method +function PerformSearch() +{ + var searchText = document.getElementById("txtSearchText").value; + var sortByTitle = document.getElementById("chkSortByTitle").checked; + var searchResults = document.getElementById("searchResults"); + + if(searchText.length == 0) + { + searchResults.innerHTML = "Nothing found"; + return; + } + + searchResults.innerHTML = "Searching..."; + + // Determine the search method if not done already. The ASPX and PHP searches are more efficient as they + // run asynchronously server-side. If they can't be used, it defaults to the client-side script below which + // will work but has to download the index files. For large help sites, this can be inefficient. + if(searchMethod == 0) + searchMethod = DetermineSearchMethod(); + + if(searchMethod == 1) + { + $.ajax({ + type: "GET", + url: encodeURI("SearchHelp.aspx?Keywords=" + searchText + "&SortByTitle=" + sortByTitle), + success: function(html) + { + searchResults.innerHTML = html; + } + }); + + return; + } + + if(searchMethod == 2) + { + $.ajax({ + type: "GET", + url: encodeURI("SearchHelp.php?Keywords=" + searchText + "&SortByTitle=" + sortByTitle), + success: function(html) + { + searchResults.innerHTML = html; + } + }); + + return; + } + + // Parse the keywords + var keywords = ParseKeywords(searchText); + + // Get the list of files. We'll be getting multiple files so we need to do this synchronously. + var fileList = []; + + $.ajax({ + type: "GET", + url: "fti/FTI_Files.json", + dataType: "json", + async: false, + success: function(data) + { + $.each(data, function(key, val) + { + fileList[key] = val; + }); + } + }); + + var letters = []; + var wordDictionary = {}; + var wordNotFound = false; + + // Load the keyword files for each keyword starting letter + for(var idx = 0; idx < keywords.length && !wordNotFound; idx++) + { + var letter = keywords[idx].substring(0, 1); + + if($.inArray(letter, letters) == -1) + { + letters.push(letter); + + $.ajax({ + type: "GET", + url: "fti/FTI_" + letter.charCodeAt(0) + ".json", + dataType: "json", + async: false, + success: function(data) + { + var wordCount = 0; + + $.each(data, function(key, val) + { + wordDictionary[key] = val; + wordCount++; + }); + + if(wordCount == 0) + wordNotFound = true; + } + }); + } + } + + if(wordNotFound) + searchResults.innerHTML = "Nothing found"; + else + searchResults.innerHTML = SearchForKeywords(keywords, fileList, wordDictionary, sortByTitle); +} + +// Determine the search method by seeing if the ASPX or PHP search pages are present and working +function DetermineSearchMethod() +{ + var method = 3; + + try + { + $.ajax({ + type: "GET", + url: "SearchHelp.aspx", + async: false, + success: function(html) + { + if(html.substring(0, 8) == "") + method = 1; + } + }); + + if(method == 3) + $.ajax({ + type: "GET", + url: "SearchHelp.php", + async: false, + success: function(html) + { + if(html.substring(0, 8) == "") + method = 2; + } + }); + } + catch(e) + { + } + + return method; +} + +// Split the search text up into keywords +function ParseKeywords(keywords) +{ + var keywordList = []; + var checkWord; + var words = keywords.split(/\W+/); + + for(var idx = 0; idx < words.length; idx++) + { + checkWord = words[idx].toLowerCase(); + + if(checkWord.length > 2) + { + var charCode = checkWord.charCodeAt(0); + + if((charCode < 48 || charCode > 57) && $.inArray(checkWord, keywordList) == -1) + keywordList.push(checkWord); + } + } + + return keywordList; +} + +// Search for keywords and generate a block of HTML containing the results +function SearchForKeywords(keywords, fileInfo, wordDictionary, sortByTitle) +{ + var matches = [], matchingFileIndices = [], rankings = []; + var isFirst = true; + + for(var idx = 0; idx < keywords.length; idx++) + { + var word = keywords[idx]; + var occurrences = wordDictionary[word]; + + // All keywords must be found + if(occurrences == null) + return "Nothing found"; + + matches[word] = occurrences; + var occurrenceIndices = []; + + // Get a list of the file indices for this match. These are 64-bit numbers but JavaScript only does + // bit shifts on 32-bit values so we divide by 2^16 to get the same effect as ">> 16" and use floor() + // to truncate the result. + for(var ind in occurrences) + occurrenceIndices.push(Math.floor(occurrences[ind] / Math.pow(2, 16))); + + if(isFirst) + { + isFirst = false; + + for(var matchInd in occurrenceIndices) + matchingFileIndices.push(occurrenceIndices[matchInd]); + } + else + { + // After the first match, remove files that do not appear for all found keywords + for(var checkIdx = 0; checkIdx < matchingFileIndices.length; checkIdx++) + if($.inArray(matchingFileIndices[checkIdx], occurrenceIndices) == -1) + { + matchingFileIndices.splice(checkIdx, 1); + checkIdx--; + } + } + } + + if(matchingFileIndices.length == 0) + return "Nothing found"; + + // Rank the files based on the number of times the words occurs + for(var fileIdx = 0; fileIdx < matchingFileIndices.length; fileIdx++) + { + // Split out the title, filename, and word count + var matchingIdx = matchingFileIndices[fileIdx]; + var fileIndex = fileInfo[matchingIdx].split(/\0/); + + var title = fileIndex[0]; + var filename = fileIndex[1]; + var wordCount = parseInt(fileIndex[2]); + var matchCount = 0; + + for(var idx = 0; idx < keywords.length; idx++) + { + occurrences = matches[keywords[idx]]; + + for(var ind in occurrences) + { + var entry = occurrences[ind]; + + // These are 64-bit numbers but JavaScript only does bit shifts on 32-bit values so we divide + // by 2^16 to get the same effect as ">> 16" and use floor() to truncate the result. + if(Math.floor(entry / Math.pow(2, 16)) == matchingIdx) + matchCount += (entry & 0xFFFF); + } + } + + rankings.push({ Filename: filename, PageTitle: title, Rank: matchCount * 1000 / wordCount }); + + if(rankings.length > 99) + break; + } + + rankings.sort(function(x, y) + { + if(!sortByTitle) + return y.Rank - x.Rank; + + return x.PageTitle.localeCompare(y.PageTitle); + }); + + // Format and return the results + var content = "
      "; + + for(var r in rankings) + content += "
    1. " + + rankings[r].PageTitle + "
    2. "; + + content += "
    "; + + if(rankings.length < matchingFileIndices.length) + content += "

    Omitted " + (matchingFileIndices.length - rankings.length) + " more results

    "; + + return content; +} diff --git a/docs/v8/scripts/branding.js b/docs/v8/scripts/branding.js new file mode 100644 index 0000000..3e55541 --- /dev/null +++ b/docs/v8/scripts/branding.js @@ -0,0 +1,560 @@ +//=============================================================================================================== +// System : Sandcastle Help File Builder +// File : branding.js +// Author : Eric Woodruff (Eric@EWoodruff.us) +// Updated : 10/08/2015 +// Note : Copyright 2014-2015, Eric Woodruff, All rights reserved +// Portions Copyright 2010-2014 Microsoft, All rights reserved +// +// This file contains the methods necessary to implement the language filtering, collapsible section, and +// copy to clipboard options. +// +// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be +// distributed with the code and can be found at the project website: https://GitHub.com/EWSoftware/SHFB. This +// notice, the author's name, and all copyright notices must remain intact in all applications, documentation, +// and source files. +// +// Date Who Comments +// ============================================================================================================== +// 05/04/2014 EFW Created the code based on the MS Help Viewer script +//=============================================================================================================== + +// The IDs of all code snippet sets on the same page are stored so that we can keep them in synch when a tab is +// selected. +var allTabSetIds = new Array(); + +// The IDs of language-specific text (LST) spans are used as dictionary keys so that we can get access to the +// spans and update them when the user changes to a different language tab. The values of the dictionary +// objects are pipe separated language-specific attributes (lang1=value|lang2=value|lang3=value). The language +// ID can be specific (cs, vb, cpp, etc.) or may be a neutral entry (nu) which specifies text common to multiple +// languages. If a language is not present and there is no neutral entry, the span is hidden for all languages +// to which it does not apply. +var allLSTSetIds = new Object(); + +// Help 1 persistence support. This code must appear inline. +var isHelp1; + +var curLoc = document.location + "."; + +if(curLoc.indexOf("mk:@MSITStore") == 0) +{ + isHelp1 = true; + curLoc = "ms-its:" + curLoc.substring(14, curLoc.length - 1); + document.location.replace(curLoc); +} +else + if(curLoc.indexOf("ms-its:") == 0) + isHelp1 = true; + else + isHelp1 = false; + +// The OnLoad method +function OnLoad(defaultLanguage) +{ + var defLang; + + if(typeof (defaultLanguage) == "undefined" || defaultLanguage == null || defaultLanguage == "") + defLang = "vb"; + else + defLang = defaultLanguage; + + // In MS Help Viewer, the transform the topic is ran through can move the footer. Move it back where it + // belongs if necessary. + try + { + var footer = document.getElementById("pageFooter") + + if(footer) + { + var footerParent = document.body; + + if(footer.parentElement != footerParent) + { + footer.parentElement.removeChild(footer); + footerParent.appendChild(footer); + } + } + } + catch(e) + { + } + + var language = GetCookie("CodeSnippetContainerLanguage", defLang); + + // If LST exists on the page, set the LST to show the user selected programming language + UpdateLST(language); + + // If code snippet groups exist, set the current language for them + if(allTabSetIds.length > 0) + { + var i = 0; + + while(i < allTabSetIds.length) + { + var tabCount = 1; + + // The tab count may vary so find the last one in this set + while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) + tabCount++; + + tabCount--; + + // If not grouped, skip it + if(tabCount > 1) + SetCurrentLanguage(allTabSetIds[i], language, tabCount); + + i++; + } + } + + InitializeToc(); +} + +// This is just a place holder. The website script implements this function to initialize it's in-page TOC pane +function InitializeToc() +{ +} + +// This function executes in the OnLoad event and ChangeTab action on code snippets. The function parameter +// is the user chosen programming language. This function iterates through the "allLSTSetIds" dictionary object +// to update the node value of the LST span tag per the user's chosen programming language. +function UpdateLST(language) +{ + for(var lstMember in allLSTSetIds) + { + var devLangSpan = document.getElementById(lstMember); + + if(devLangSpan != null) + { + // There may be a carriage return before the LST span in the content so the replace function below + // is used to trim the whitespace at the end of the previous node of the current LST node. + if(devLangSpan.previousSibling != null && devLangSpan.previousSibling.nodeValue != null) + devLangSpan.previousSibling.nodeValue = devLangSpan.previousSibling.nodeValue.replace(/\s+$/, ""); + + var langs = allLSTSetIds[lstMember].split("|"); + var k = 0; + var keyValue; + + while(k < langs.length) + { + keyValue = langs[k].split("="); + + if(keyValue[0] == language) + { + devLangSpan.innerHTML = keyValue[1]; + + // Help 1 and MS Help Viewer workaround. Add a space if the following text element starts + // with a space to prevent things running together. + if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) + { + if (devLangSpan.parentNode.nextSibling.nodeValue != null && + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/)) + { + devLangSpan.innerHTML = keyValue[1] + " "; + } + } + break; + } + + k++; + } + + // If not found, default to the neutral language. If there is no neutral language entry, clear the + // content to hide it. + if(k >= langs.length) + { + if(language != "nu") + { + k = 0; + + while(k < langs.length) + { + keyValue = langs[k].split("="); + + if(keyValue[0] == "nu") + { + devLangSpan.innerHTML = keyValue[1]; + + // Help 1 and MS Help Viewer workaround. Add a space if the following text element + // starts with a space to prevent things running together. + if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) + { + if(devLangSpan.parentNode.nextSibling.nodeValue != null && + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/)) + { + devLangSpan.innerHTML = keyValue[1] + " "; + } + } + break; + } + + k++; + } + } + + if(k >= langs.length) + devLangSpan.innerHTML = ""; + } + } + } +} + +// Get the specified cookie. If not found, return the specified default value. +function GetCookie(cookieName, defaultValue) +{ + if(isHelp1) + { + try + { + var globals = Help1Globals; + + var value = globals.Load(cookieName); + + if(value == null) + value = defaultValue; + + return value; + } + catch(e) + { + return defaultValue; + } + } + + var cookie = document.cookie.split("; "); + + for(var i = 0; i < cookie.length; i++) + { + var crumb = cookie[i].split("="); + + if(cookieName == crumb[0]) + return unescape(crumb[1]) + } + + return defaultValue; +} + +// Set the specified cookie to the specified value +function SetCookie(name, value) +{ + if(isHelp1) + { + try + { + var globals = Help1Globals; + + globals.Save(name, value); + } + catch(e) + { + } + + return; + } + + var today = new Date(); + + today.setTime(today.getTime()); + + // Set the expiration time to be 60 days from now (in milliseconds) + var expires_date = new Date(today.getTime() + (60 * 1000 * 60 * 60 * 24)); + + document.cookie = name + "=" + escape(value) + ";expires=" + expires_date.toGMTString() + ";path=/"; +} + +// Add a language-specific text ID +function AddLanguageSpecificTextSet(lstId) +{ + var keyValue = lstId.split("?") + + allLSTSetIds[keyValue[0]] = keyValue[1]; +} + +var clipboardHandler; + +// Add a language tab set ID +function AddLanguageTabSet(tabSetId) +{ + allTabSetIds.push(tabSetId); + + // Create the clipboard handler on first use + if(clipboardHandler == null && typeof (Clipboard) == "function") + { + clipboardHandler = new Clipboard('.copyCodeSnippet', + { + text: function (trigger) + { + // Get the code to copy to the clipboard from the active tab of the given tab set + var i = 1, tabSetId = trigger.id; + var pos = tabSetId.indexOf('_'); + + if(pos == -1) + return ""; + + tabSetId = tabSetId.substring(0, pos); + + do + { + contentId = tabSetId + "_code_Div" + i; + tabTemp = document.getElementById(contentId); + + if(tabTemp != null && tabTemp.style.display != "none") + break; + + i++; + + } while(tabTemp != null); + + if(tabTemp == null) + return ""; + + return document.getElementById(contentId).innerText; + } + }); + } +} + +// Switch the active tab for all of other code snippets +function ChangeTab(tabSetId, language, snippetIdx, snippetCount) +{ + SetCookie("CodeSnippetContainerLanguage", language); + + SetActiveTab(tabSetId, snippetIdx, snippetCount); + + // If LST exists on the page, set the LST to show the user selected programming language + UpdateLST(language); + + var i = 0; + + while(i < allTabSetIds.length) + { + // We just care about other snippets + if(allTabSetIds[i] != tabSetId) + { + // Other tab sets may not have the same number of tabs + var tabCount = 1; + + while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) + tabCount++; + + tabCount--; + + // If not grouped, skip it + if(tabCount > 1) + SetCurrentLanguage(allTabSetIds[i], language, tabCount); + } + + i++; + } +} + +// Sets the current language in the specified tab set +function SetCurrentLanguage(tabSetId, language, tabCount) +{ + var tabIndex = 1; + + while(tabIndex <= tabCount) + { + var tabTemp = document.getElementById(tabSetId + "_tab" + tabIndex); + + if(tabTemp != null && tabTemp.innerHTML.indexOf("'" + language + "'") != -1) + break; + + tabIndex++; + } + + if(tabIndex > tabCount) + { + // Select the first non-disabled tab + tabIndex = 1; + + if(document.getElementById(tabSetId + "_tab1").className == "codeSnippetContainerTabPhantom") + { + tabIndex++; + + while(tabIndex <= tabCount) + { + var tab = document.getElementById(tabSetId + "_tab" + tabIndex); + + if(tab.className != "codeSnippetContainerTabPhantom") + { + tab.className = "codeSnippetContainerTabActive"; + document.getElementById(tabSetId + "_code_Div" + j).style.display = "block"; + break; + } + + tabIndex++; + } + } + } + + SetActiveTab(tabSetId, tabIndex, tabCount); +} + +// Set the active tab within a tab set +function SetActiveTab(tabSetId, tabIndex, tabCount) +{ + var i = 1; + + while(i <= tabCount) + { + var tabTemp = document.getElementById(tabSetId + "_tab" + i); + + if (tabTemp != null) + { + if(tabTemp.className == "codeSnippetContainerTabActive") + tabTemp.className = "codeSnippetContainerTab"; + else + if(tabTemp.className == "codeSnippetContainerTabPhantom") + tabTemp.style.display = "none"; + + var codeTemp = document.getElementById(tabSetId + "_code_Div" + i); + + if(codeTemp.style.display != "none") + codeTemp.style.display = "none"; + } + + i++; + } + + // Phantom tabs are shown or hidden as needed + if(document.getElementById(tabSetId + "_tab" + tabIndex).className != "codeSnippetContainerTabPhantom") + document.getElementById(tabSetId + "_tab" + tabIndex).className = "codeSnippetContainerTabActive"; + else + document.getElementById(tabSetId + "_tab" + tabIndex).style.display = "block"; + + document.getElementById(tabSetId + "_code_Div" + tabIndex).style.display = "block"; +} + +// Copy the code from the active tab of the given tab set to the clipboard +function CopyToClipboard(tabSetId) +{ + var tabTemp, contentId; + var i = 1; + + if(typeof (Clipboard) == "function") + return; + + do + { + contentId = tabSetId + "_code_Div" + i; + tabTemp = document.getElementById(contentId); + + if(tabTemp != null && tabTemp.style.display != "none") + break; + + i++; + + } while(tabTemp != null); + + if(tabTemp == null) + return; + + if(window.clipboardData) + { + try + { + window.clipboardData.setData("Text", document.getElementById(contentId).innerText); + } + catch(e) + { + alert("Permission denied. Enable copying to the clipboard."); + } + } + else if(window.netscape) + { + try + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance( + Components.interfaces.nsIClipboard); + + if(!clip) + return; + + var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance( + Components.interfaces.nsITransferable); + + if(!trans) + return; + + trans.addDataFlavor("text/unicode"); + + var str = new Object(); + var len = new Object(); + var str = Components.classes["@mozilla.org/supports-string;1"].createInstance( + Components.interfaces.nsISupportsString); + + var copytext = document.getElementById(contentId).textContent; + + str.data = copytext; + trans.setTransferData("text/unicode", str, copytext.length * 2); + + var clipid = Components.interfaces.nsIClipboard; + + clip.setData(trans, null, clipid.kGlobalClipboard); + } + catch(e) + { + alert("Permission denied. Enter \"about:config\" in the address bar and double-click the \"signed.applets.codebase_principal_support\" setting to enable copying to the clipboard."); + } + } +} + +// Expand or collapse a section +function SectionExpandCollapse(togglePrefix) +{ + var image = document.getElementById(togglePrefix + "Toggle"); + var section = document.getElementById(togglePrefix + "Section"); + + if(image != null && section != null) + if(section.style.display == "") + { + image.src = image.src.replace("SectionExpanded.png", "SectionCollapsed.png"); + section.style.display = "none"; + } + else + { + image.src = image.src.replace("SectionCollapsed.png", "SectionExpanded.png"); + section.style.display = ""; + } +} + +// Expand or collapse a section when it has the focus and Enter is hit +function SectionExpandCollapse_CheckKey(togglePrefix, eventArgs) +{ + if(eventArgs.keyCode == 13) + SectionExpandCollapse(togglePrefix); +} + +// Help 1 persistence object. This requires a hidden input element on the page with a class of "userDataStyle" +// defined in the style sheet that implements the user data binary behavior: +// +var Help1Globals = +{ + UserDataCache: function() + { + var userData = document.getElementById("userDataCache"); + + return userData; + }, + + Load: function(key) + { + var userData = this.UserDataCache(); + + userData.load("userDataSettings"); + + var value = userData.getAttribute(key); + + return value; + }, + + Save: function(key, value) + { + var userData = this.UserDataCache(); + userData.setAttribute(key, value); + userData.save("userDataSettings"); + } +}; diff --git a/docs/v8/scripts/clipboard.min.js b/docs/v8/scripts/clipboard.min.js new file mode 100644 index 0000000..580433f --- /dev/null +++ b/docs/v8/scripts/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v1.5.12 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,o){function i(a,c){if(!n[a]){if(!e[a]){var s="function"==typeof require&&require;if(!c&&s)return s(a,!0);if(r)return r(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n?n:t)},u,u.exports,t,e,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;ao;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,a=o.length;a>r;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if("undefined"!=typeof o)r(n,e("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=function(){function t(t,e){for(var n=0;na?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="
    ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f +}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="
    a",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/\s*$/g,sb={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:l.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?""!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("