/** * fix_js_Build_GapText * * @param xxx $str (passed by reference) * @param xxx $start * @param xxx $length * @return xxx */ function fix_js_Build_GapText(&$str, $start, $length) { $substr = substr($str, $start, $length); parent::fix_js_Build_GapText($substr, 0, strlen($substr)); if ($this->expand_CaseSensitive()) { $search = 'SelectorList = Shuffle(SelectorList);'; $replace = 'SelectorList = AlphabeticalSort(SelectorList, x);'; $substr = str_replace($search, $replace, $substr); $substr .= "\n" . "function AlphabeticalSort(SelectorList, x) {\n" . "\tif (MakeIndividualDropdowns) {\n" . "\t\tvar y_max = I[x][1].length - 1;\n" . "\t} else {\n" . "\t\tvar y_max = I.length - 1;\n" . "\t}\n" . "\tvar sorted = false;\n" . "\twhile (! sorted) {\n" . "\t\tsorted = true;\n" . "\t\tfor (var y=0; y<y_max; y++) {\n" . "\t\t\tvar y1 = SelectorList[y];\n" . "\t\t\tvar y2 = SelectorList[y + 1];\n" . "\t\t\tif (MakeIndividualDropdowns) {\n" . "\t\t\t\tvar s1 = I[x][1][y1][0].toLowerCase();\n" . "\t\t\t\tvar s2 = I[x][1][y2][0].toLowerCase();\n" . "\t\t\t} else {\n" . "\t\t\t\tvar s1 = I[y1][1][0][0].toLowerCase();\n" . "\t\t\t\tvar s2 = I[y2][1][0][0].toLowerCase();\n" . "\t\t\t}\n" . "\t\t\tif (s1 > s2) {\n" . "\t\t\t\tsorted = false;\n" . "\t\t\t\tSelectorList[y] = y2;\n" . "\t\t\t\tSelectorList[y + 1] = y1;\n" . "\t\t\t}\n" . "\t\t}\n" . "\t}\n" . "\treturn SelectorList;\n" . "}\n"; } $str = substr_replace($str, $substr, $start, $length); }