// ==UserScript==
// @name slader-infinite
// @namespace https://greasyfork.org/en/users/94062-oshaw
// @version 2.0.1
// @description Browse textbook answers on Slader.com in faster, cleaner interface.
// @author Oscar Shaw
// @include *://slader.*
// @grant GM_xmlhttpRequest
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @run-at document-start
// @noframes
// ==/UserScript==
function tag(str_tag) {
switch (str_tag[0]) {
case '.': return document.getElementsByClassName(str_tag.substring(1));
case '#': return document.getElementById(str_tag.substring(1));
default: return document.getElementsByTagName(str_tag);
}
}
function view(str) {
window.open().document.body.appendChild(document.createElement('pre')).innerHTML= str;
}
function attempt(anon) {
try {
anon();
}
catch(str_error) {
console.log(str_error);
}
}
function def(var_input) {
return !(var_input == null || var_input == undefined || var_input == "");
}
function numeric(char_input) {
return ("1234567890".indexOf(char_input) != -1);
}
function get(url, anon) {
GM_xmlhttpRequest({
method: "GET",
url: url,
onload: function(kvp) { anon(kvp.responseText); }
});
}
function trimSpaces(str) {
var int_start = 0;
var int_end = str.length - 1;
for (var i = 0; i < str.length; i++) {
if (str[i] != ' ' && str[i] != "\n") {
int_start = i;
break;
}
}
for (var i = str.length-1; i >= 0; i--) {
if (str[i] != ' ' && str[i] != "\n") {
int_end = i;
break;
}
}
return str.substring(int_start, int_end+1);
}
function urlEncode(url) {
var url_output = "";
for (var i=0; i < url.length; i++) {
url_output += (url[i] == ' ') ? "+" : url[i];
}
return url_output;
}
function clearBody() {
window.stop();
$("body").html("");
}
function titleCase(str) {
return str.replace(
/\w\S*/g,
function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
}
);
}
function class_sladerClient() {
var kvp_textbook = { chapters: [] };
var kvp_query = {};
var url_base = "http://slader.com";
var int_chapter = -1;
var int_section = -1;
var int_question = -1;
var int_searchResults = 20;
var bool_getLargeImages = false;
function func_dirToHeader(url) {
if (url.indexOf("#concept-check") != -1) {
return "Review: Concept Check";
}
else if (url.indexOf("#review-exercises") != -1) {
return "Exercises";
}
else if (url.indexOf("#review-true-false-quiz") != -1) {
return "Review: True-False Quiz";
}
else if (url.indexOf("#problems-plus") != -1) {
return "Problems Plus";
}
else return "Exercises";
}
function model_getTextbookResults(str_query) {
if (!def(str_query)) return;
kvp_query = {
str_query: str_query,
textbooks: []
}
GM_xmlhttpRequest({
method: "POST",
url: (
"https://8bbzgj41nl-dsn.algolia.net/"
+ "1/indexes/*/queries?"
+ "x-algolia-agent=Algolia%20for%20vanilla%20JavaScript%203.20.3"
+ "&x-algolia-application-id=8BBZGJ41NL"
+ "&x-algolia-api-key=ecc53b33402d31d49ed35804e2707bd6"
),
data: (
'{"requests":[{"indexName":"textbook_index",\
"params":"query=' + kvp_query.str_query
+ '&hitsPerPage=' + int_searchResults + '&page=0"}]}'
),
onload: function(kvp) {
var kvps_results = JSON.parse(kvp.responseText).results[0].hits;
$.each(kvps_results, function(i, kvp_result) {
kvp_query.textbooks.push({
str_name: kvp_result.title,
str_edition: kvp_result.edition,
str_author: kvp_result.authors_string,
str_isbn: kvp_result.isbn,
url_thumbnail: kvp_result.search_thumbnail,
url_path: kvp_result.get_absolute_url,
chapters: []
});
});
view_addTextbookResults();
}
});
}
function model_getTextbookContents(int_textbookIndex) {
get(kvp_query.textbooks[int_textbookIndex].url_path, function(html) {
var jsects_chapters = (
$("<div/>")
.html(html)
.find(".toc-item")
);
kvp_textbook = kvp_query.textbooks[int_textbookIndex];
kvp_textbook.chapters = [];
$.each(jsects_chapters, function(i, sect_chapter) {
var jsect_chapter = $("<div/>").html(sect_chapter.innerHTML);
kvp_textbook.chapters.push({
str_number: i + 1,
str_name: trimSpaces(
jsect_chapter
.find(".chapter").eq(0)
.find("p").eq(0).text()
),
sections: []
});
$.each(jsect_chapter.find(".exercise-group"), function(j, tr) {
kvp_textbook.chapters[i].sections
.push({ questions: [] });
kvp_textbook.chapters[i].sections[j]
.url_pageStart = url_base + tr.getAttribute("data-url");
var jtr = $("<div/>").html(tr.innerHTML);
$.each(jtr.find("td"), function(k, td) {
switch (k) {
case 0: {
kvp_textbook
.chapters[i].sections[j]
.str_number = trimSpaces(td.textContent);
break;
}
case 1: {
if (def(trimSpaces(td.textContent))) {
kvp_textbook
.chapters[i].sections[j]
.str_name = trimSpaces(td.textContent);
}
break;
}
case 2: {
if (!def(kvp_textbook
.chapters[i].sections[j]
.str_name)) {
kvp_textbook
.chapters[i].sections[j]
.str_name = trimSpaces(td.textContent);
}
break;
}
case 3: {
kvp_textbook
.chapters[i].sections[j]
.int_pageStart = parseInt(
td.textContent.substring(2)
);
break;
}
default: break;
}
});
});
});
view_pageTextbookContents();
});
}
function model_getQuestionsInSection(int_chapterIndex, int_sectionIndex) {
int_chapter = int_chapterIndex;
int_section = int_sectionIndex;
{ var int_page = (
kvp_textbook.chapters[int_chapter]
.sections[int_section].int_pageStart
); }
{ var url = kvp_textbook.url_path + int_page; }
{ var str_header = func_dirToHeader(
kvp_textbook.chapters[int_chapter]
.sections[int_section].url_pageStart
); }
var anon_loopThroughPages = function() {
model_getQuestionsOnPage(
url_base + kvp_textbook.url_path + int_page,
str_header,
int_page,
function(int_next) {
int_page = int_page + 1;
if (int_page == int_next) anon_loopThroughPages();
}
);
}
view_addQuestionPageHeader();
anon_loopThroughPages();
}
function model_getQuestionsOnPage(url, str_header, int_page, anon_callback) {
get(url, function(html) {
var jdivs_questions = $("<div/>").html(html).find(".list").children();
var bool_inSection = false;
$.each(jdivs_questions, function(i, div_question) {
var bool_isHeader = false;
if (div_question.tagName == "H3") {
bool_isHeader = true;
if (div_question.textContent == str_header) {
bool_inSection = true;
}
else bool_inSection = false;
}
if (bool_inSection && !bool_isHeader) {
var jdiv_question = $("<div/>").html(div_question);
var str_number = jdiv_question.find(".answer-number").eq(0).text();
str_number = str_number.substring(0, str_number.indexOf('.'));
var url_solutions = div_question.getAttribute("data-url");
var kvp_question = ({
str_number: str_number,
url_solutions: url_base + url_solutions,
solutions: []
});
if (i == 1) kvp_question.int_page = int_page;
var jp_answer = (jdiv_question.find(".answer").eq(0));
$.each(jp_answer.children(), function(j, lmt) {
if (lmt.tagName == "IMG") {
if (bool_getLargeImages
&& lmt.src.indexOf("large") != -1) {
kvp_question.url_imgAnswer = lmt.src;
} else if (lmt.src.indexOf("large") == -1) {
kvp_question.url_imgAnswer = lmt.src;
}
}
});
if (!def(kvp_question.url_imgAnswer)) {
kvp_question.str_answer = trimSpaces(jp_answer.text());
}
kvp_textbook.chapters[int_chapter]
.sections[int_section].questions.push(kvp_question);
}
});
view_addUnaddedQuestions();
anon_callback(parseInt($("<div/>").html(html).find(".next").eq(0).text()));
});
}
function model_getSolutions(int_questionIndex) {
int_question = int_questionIndex;
var url_solution = (
kvp_textbook.chapters[int_chapter]
.sections[int_section].questions[int_question].url_solutions
);
get(url_solution, function(html) {
GM_xmlhttpRequest({
method: "GET",
url: "https://slader.com" + (
$("<div/>").html(html).find(".left").eq(0)
.children().eq(2).attr("data-url")
),
headers: { "X-Requested-With": "XMLHttpRequest" },
onload: function(kvp) {
var jartcs_solutions = (
$("<div/>").html(kvp.responseText)
.find("article")
);
$.each(jartcs_solutions, function(i, artc_solution) {
{ kvp_textbook.chapters[int_chapter]
.sections[int_section].questions[int_question]
.solutions.push({ steps: [] }); }
{ var kvp_solution = (
kvp_textbook
.chapters[int_chapter].sections[int_section]
.questions[int_question].solutions[i]
); }
{ kvp_solution.str_answerer = titleCase(
$(artc_solution).find(".profile-name").eq(0)
.text()
); }
var jartc_solution = $("<div/>").html(artc_solution);
{ var jdivs_steps = (
jartc_solution.find(".solution-row.explanation-row")
); }
$.each(jdivs_steps, function(j, div_step) {
kvp_textbook
.chapters[int_chapter].sections[int_section]
.questions[int_question].solutions[i]
.steps.push({
url_imgWork: "",
str_work: "",
url_imgExplain: "",
str_explain: ""
});
var jdivs_cells = (
$("<div/>").html(div_step)
.find(".solution-content")
);
$.each(jdivs_cells, function(k, div_cell) {
var jlmts = (
$("<div/>").html(div_cell)
.children().eq(0).children()
);
var kvp_step = (
kvp_textbook
.chapters[int_chapter]
.sections[int_section]
.questions[int_question]
.solutions[i].steps[j]
);
$.each(jlmts, function(l, lmt) {
switch (lmt.tagName) {
case "IMG": {
if (lmt.src.indexOf("large") == -1 && bool_getLargeImages) break;
if (lmt.src.indexOf("large") != -1 && !bool_getLargeImages) break;
if (!def(kvp_step.url_imgWork) && !def(kvp_step.p_work)) {
kvp_step.url_imgWork = lmt.src;
}
else kvp_step.url_imgExplain = lmt.src;
break;
}
case "P": {
if (lmt.classList.contains("center")) break;
if (!def(kvp_step.url_imgWork) && !def(kvp_step.p_work)) {
kvp_step.str_work = trimSpaces(lmt.textContent);
}
else kvp_step.str_explain = trimSpaces(lmt.textContent);
break;
}
case "A": {
if (!def(kvp_step.url_imgWork) && !def(kvp_step.p_work)) {
kvp_step.url_imgWork = lmt.getElementsByTagName("IMG")[0].src;
}
else kvp_step.url_imgExplain = lmt.getElementsByTagName("IMG")[0].src;
break;
}
default: break;
}
});
});
});
{ var jlmts_answerElements = (
jartc_solution
.find(".solution-row.result-row").eq(0)
.find(".solution-content").eq(0).children()
); }
$.each(jlmts_answerElements, function(j, lmt) {
switch (lmt.tagName) {
case "IMG": {
if (lmt.src.indexOf("large") == -1 && bool_getLargeImages) break;
if (lmt.src.indexOf("large") != -1 && !bool_getLargeImages) break;
kvp_solution.url_imgAnswer = lmt.src;
break;
}
case "P": {
kvp_solution.str_answer = trimSpaces(lmt.textContent);
break;
}
default: break;
}
});
});
view_pageSolutions();
}
});
});
}
var kvp_colors = {
css_black: "rgb(38, 38, 38)",
css_graySearch: "rgb(127, 127, 127)",
css_grayText: "rgb(191, 191, 191)",
css_blueMask: "rgb(229, 241, 255)",
css_grayLine: "rgb(217, 217, 217)",
css_blueBg: "rgb(229, 241, 255)",
css_grayBg: "rgb(237, 237, 237)",
css_whiteBg: "rgb(255, 255, 255)"
}
var kvp_images = {
uri_search: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAAzCAMAAAF+jSCzAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACTUExURQAAAD8/Px8fHyoqKh8fHyYmJioqKiUlJScnJyMjIygoKCUlJSQkJCYmJicnJyUlJSYmJiUlJSYmJiUlJSYmJiUlJSUlJSUlJSUlJSYmJiUlJSYmJiUlJSUlJSYmJiYmJiUlJSUlJSYmJiUlJSUlJSUlJSUlJSYmJiUlJSUlJSUlJSYmJiUlJSYmJiUlJSYmJiYmJh9o+NMAAAAwdFJOUwAECAwQFBgbICQsMDg8VFhcYGRscHR8gJufo6err7O7v8PHy8zT19vf4efv8/f7+zSf2k8AAAAJcEhZcwAAFxEAABcRAcom8z8AAAJISURBVDhPxZXpdhoxDIXNWhIKaYCkFAIFWgKlw9Tv/3TVla6XWchJ86ffgfGVZJmxLRvn3GYgD+e8AEseaAdsgx/so8DjgAej8n2QLz5qeq9dRLEF6BvHMuH9Ec3BrBGj0utBdOjqjqL3cUhDbG2/nJfaCvcY3l/MUM3hpZXn3DLib7QYm2Q8en/tfbNM5646GA3XE/UcLaVuUVQ4YQTwSIdhrx240itY/3vIrcqeumXO0Q/03ajPmbb3DNayEsHEogXt56ZL6GfTwkVjkZ90K9iVjMruRGSbPhqjepPB8nDeVpcTyOYZlw49Rj6dz/SBgj5jQq9zP+gJhNG6an2HvFPJorMpfaWhkUyX1JbDBYecmRRg7ZLsmxRgFUmOTQqwTkm+mBRgrZOMy7mCcWd6Ac3XsjUzzRS/GvWmVvoL+jnfRKhJ56b0BFLkdo7DMRJeP1mbRQJaxB+LVDdf0UicTI5EWv0SueFv0J3v9fyQ/aLLQDvDenkpR+5Nk0m1TDOKKbtUGNZOb5VL83fisRHK7Wzc749nm3xGrNmIXKmkDEWvPKWkdJeAQQzo4cl5YcD7ET2K3ltgS0eGljJY0aHIn4mRDkkE/yoKj4yhtyZI5y3CUoqnz7D7WGjePekc8CAbcW3LxroPw79LrQDtfgRP9JC0T6/0kG624+u4jMO4Tt7/rk+xU7vG6/xqqeHbhajsW06km7xZjO05nXkj6Q9b0JojjOar3akoTrv1AmvdS+t4O6fG/8h57y0Tct7bHyDnX/oD3p7O/QU6/7WrNM7DhwAAAABJRU5ErkJggg=="
, uri_back: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAAtCAMAAAGheIgcAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAtUExURQAAACoqKioqKiUlJSYmJiUlJSQkJCYmJiUlJSUlJSUlJSYmJiUlJSUlJSYmJv/1pYIAAAAOdFJOUwAMGGx4j5+fw9fY3d/lzwLVSgAAAAlwSFlzAAAXEQAAFxEByibzPwAAAQNJREFUOE/dlOuywiAMhEE9inrk/R/XEBYIlwjtjI7j90OyLktpuZiC97KhluDCsTbmD20Evfn3gc4O2ZQoowUwHsOBSJDO56cwpI8oeyrHeTEtil1RNuLeiMSFJEoiqGqaxESiVanmJ6HpEScoQTTKbDOqId6nwO8SF6aFrbEJKz2sWpTC1FTeuVm7Cou2x9afXECO4rEz9OAcIAUfdhp0Z2a9GFDxopW84Zd/owdVwx7qFvJQ9ejbZg2rHlAVigS2xBAJrMZEhA79YBv1fG/khu6BxYi81HZEJqR77gy9RL4c7fheHZJDW2IiRLF//Btwyxu+Wqffje04hjsO/NbIDGOerNknYTaMYyIAAAAASUVORK5CYII="
, uri_cross: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAtCAMAAAGVAUkAAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAtUExURQAAAD8/PyoqKioqKicnJyUlJSUlJSYmJiYmJiUlJSUlJSUlJSUlJSUlJSYmJvl4FQgAAAAOdFJOUwAEDBhUWGBwd7/D09f7tQnJcwAAAAlwSFlzAAAXEQAAFxEByibzPwAAAYBJREFUOE+FkwF2gzAMQzNYy0Yp9z/uLFkhNkk6vY7Y8l+wA5Sq0372ZxdcPcaVHmIJBfwCZtBZVgZlo20hc8JOMlDE0JO8jHXuvhiyn0wM/1biIZMaeqIQgDZAeCgh4LuJteTXEv+3/c0latMmEge0cdvuJmQseDdeYBg7Q4HL1aPJC1AwITcPZZKbUOjKDY5lUoFxnYoxCmszIRR84jXf3U7kk85FAbWpSdss+HZE9HHH5vPgzF9oV58uO4l+c6Mf3eZn9/Kp5kY/us3Pbik/boe5IL+bKfmXm3x1xmvza79trujGeaMb/SeD2q98i+xND1PQ57M9gktfT/zli7Tk92CoR5iu05PfRxVa32c4iseF+5QTvBYdfyiDOryi0OvLjKV9Yjc8ou86+BgfolCPT1Eo43q7qA6FEn5piEI9PkWhjH9E81im4WOSbig0wwcoNMLzufbnHtQ/gineo9AQH6NQj6/4DF39uQZcReE9CgkPRcPHKGT4rYiv4B+V8gdsgyznJwkzBgAAAABJRU5ErkJggg=="
}
var bool_displayQuestions = false;
var bool_viewingSolution = false;
var bool_searchingTextbook = false;
var int_iconFrameSize = 48;
var int_iconSize = 20;
var int_iconToTextPadding = 10;
var int_searchMaskPercentOpacity = 30;
var int_leftPadding = int_iconFrameSize + int_iconToTextPadding;
function view_formatTextLarge(jp, bool_bold = true) {
jp.css({
"color": kvp_colors.css_black,
"font-size": "16px",
"font-weight": (bool_bold) ? "bold" : "normal"
});
}
function view_formatTextSmall(jp, bool_gray = false) {
jp.css({
"color": (bool_gray)
? kvp_colors.css_grayText
: kvp_colors.css_black,
"font-size": "12px"
});
}
function view_formatBlueBgOnHover(jdiv, jdiv_applyEffectTo = null) {
if (!def(jdiv_applyEffectTo)) jdiv_applyEffectTo = jdiv;
jdiv.hover(function() {
$(jdiv_applyEffectTo).css("backgroundColor", kvp_colors.css_blueBg);
}, function() {
$(jdiv_applyEffectTo).css("backgroundColor", kvp_colors.css_whiteBg);
});
}
function view_formatGrayBgOnHover(jdiv, jdiv_applyEffectTo = null) {
if (!def(jdiv_applyEffectTo)) jdiv_applyEffectTo = jdiv;
jdiv.hover(function() {
$(jdiv_applyEffectTo).css("backgroundColor", kvp_colors.css_grayBg);
}, function() {
$(jdiv_applyEffectTo).css("backgroundColor", kvp_colors.css_whiteBg);
});
}
function view_addBackHeader(str_title, str_subtitle, anon_onClick) {
var uri_back = kvp_images.uri_back;
{ $("body").append(
'<div id="div_header">'
+ '<div id="div_imgBackWrapper">'
+ '<img id="img_back" src="' + uri_back + '">'
+ '</div>'
+ '<div id="div_headerDetailWrapper">'
+ '<p id="p_headerTitle">' + str_title + '</p>'
+ '<p id="p_headerSubtitle">' + str_subtitle + '</p>'
+ '</div>'
+ '</div>'
); }
$("#div_header").css({
"background-color": kvp_colors.css_grayBg,
"display": "flex"
});
$("#div_imgBackWrapper").click(anon_onClick);
$("#div_imgBackWrapper").css({
"cursor": "pointer",
"display": "flex",
"flex-shrink": "0",
"height": int_iconFrameSize.toString() + "px",
"width": int_iconFrameSize.toString() + "px"
});
$("#img_back").css({
"bottom": "0",
"display": "flex",
"margin": "auto",
"height": int_iconSize.toString() + "px",
"width": int_iconSize.toString() + "px",
});
$("#div_headerDetailWrapper").css({
"display": "flex",
"flex-direction": "column",
"justify-content": "center",
"padding-left": int_iconToTextPadding.toString() + "px"
});
view_formatTextLarge($("#p_headerTitle"));
view_formatTextSmall($("#p_headerSubtitle"));
}
function view_addTextbookSearch(str_query = "") {
clearBody();
var str_placeholder = "Search textbooks";
var html_iconSearch = kvp_images.uri_search;
{ $("body").append(
'<div id="div_searchDummy"></div>'
+ '<div id="div_search">'
+ '<div id="div_imgSearchWrapper">'
+ '<img id="img_search" src="' + html_iconSearch + '">'
+ '</div>'
+ '<div id="div_intextWrapper">'
+ '<input id="intext" type="text"'
+ 'placeholder="' + str_placeholder
+ '">'
+ '</input>'
+ '</div>'
+ '</div>'
); }
$(document).keypress(function(int_keycode) {
if (int_keycode.which == 13
&& $("#intext").is(':focus')
&& !bool_searchingTextbook) {
if (kvp_query.str_query != $("#intext").val()) {
bool_searchingTextbook = true;
model_getTextbookResults($("#intext").val());
} else view_addTextbookResults();
}
});
$("#div_imgSearchWrapper").click(function() { $("#intext").focus(); });
$("#div_searchDummy").css({
"height": int_iconFrameSize.toString() + "px"
});
$("#div_search").css({
"background-color": kvp_colors.css_whiteBg,
"border-bottom": "1px solid",
"display": "flex",
"flex-direction": "row",
"position": "absolute",
"top": "0",
"width": "100%"
});
$("#div_imgSearchWrapper").css({
"cursor": "pointer",
"display": "flex",
"flex-shrink": "0",
"height": int_iconFrameSize.toString() + "px",
"width": int_iconFrameSize.toString() + "px"
});
$("#div_intextWrapper").css({
"padding-left": int_iconToTextPadding.toString() + "px",
"width": "100%"
});
$("#img_search").css({
"bottom": "0",
"display": "flex",
"margin": "auto",
"height": int_iconSize.toString() + "px",
"width": int_iconSize.toString() + "px",
});
$("#intext").css({
"border-style": "none",
"font-size": "1em",
"height": "100%",
"width": "100%"
});
if (def(str_query)) $("#intext").val(str_query);
}
function view_clearTextbookResults() {
$("#div_searchResultsWrapper").remove();
$("#div_searchMask").remove();
$("#div_noResults").remove();
$.each($(".div_textbook"), function(i, div_textbook) {
$(div_textbook).remove();
});
$("body").css({
"overflow": "scroll",
"overflow-x": "hidden"
});
$("#img_search").attr("src", kvp_images.uri_search);
$("#div_imgSearchWrapper").click(function() { $("#intext").focus(); });
}
function view_addTextbookResults() {
bool_searchingTextbook = false;
view_clearTextbookResults();
{ var str_noResultsSubtitle = (
"No results for \""
+ kvp_query.str_query
+ "\""
); }
{ $("body").append(
'<div id="div_searchResultsWrapper"></div>'
+ '<div id="div_searchMask"></div>'
); }
$("#div_searchResultsWrapper").css({
"height": "100%",
"overflow-y": "scroll",
"position": "absolute",
"top": int_iconFrameSize.toString() + "px",
"width": "100%",
"z-index": 1
});
$("#div_searchMask").css({
"background-color": kvp_colors.css_black,
"height": "100%",
"opacity": "0." + int_searchMaskPercentOpacity.toString(),
"position": "absolute",
"top": int_iconFrameSize.toString() + "px",
"width": "100%",
"z-index": 0
});
$("#div_search").css({
"z-index": (kvp_query.textbooks.length + 3).toString()
});
$("body").css({
"overflow": "hidden"
});
$("#img_search").attr("src", kvp_images.uri_cross);
$("#div_imgSearchWrapper").click(function() { view_clearTextbookResults(); });
$.each(kvp_query.textbooks, function(i, kvp_textbook) {
var str_subtitle = "";
if (def(kvp_textbook.str_edition)) {
str_subtitle += kvp_textbook.str_edition;
}
if (def(kvp_textbook.str_edition) && def(kvp_textbook.str_isbn)) {
str_subtitle += ", ";
}
if (def(kvp_textbook.str_isbn)) {
str_subtitle += "ISBN " + kvp_textbook.str_isbn;
}
{ $("#div_searchResultsWrapper").append(
'<div class="div_textbook">'
+ '<div class="div_imgBookThumb"></div>'
+ '<div class="div_textbookDetailWrapper">'
+ '<p class="p_textbookTitle">'
+ kvp_textbook.str_name
+ '</p>'
+ '<p class="p_textbookSubtitle">'
+ str_subtitle
+ '</p>'
+ '</div>'
+ '</div>'
); }
$(".div_textbook").eq(i).click(function() {
model_getTextbookContents(i);
});
view_formatGrayBgOnHover($(".div_textbook").eq(i));
$(".div_textbook").eq(i).css({
"background-color": kvp_colors.css_whiteBg,
"border-bottom": "1px solid " + kvp_colors.css_grayLine,
"cursor": "pointer",
"display": "flex",
"width": "100%"
});
$(".div_imgBookThumb").eq(i).css({
"background-image": 'url("' + kvp_textbook.url_thumbnail + '")',
"height": int_iconFrameSize.toString() + "px",
"width": int_iconFrameSize.toString() + "px"
});
$(".div_textbookDetailWrapper").eq(i).css({
"display": "flex",
"flex-direction": "column",
"justify-content": "center",
"padding-left": int_iconToTextPadding.toString() + "px"
});
view_formatTextLarge($(".p_textbookTitle").eq(i));
view_formatTextSmall($(".p_textbookSubtitle").eq(i));
});
if (kvp_query.textbooks.length == 0) {
{ $("#div_searchResultsWrapper").append(
'<div id="div_noResults">'
+ '<div id="div_noResultsDetailWrapper">'
+ '<p id="p_noResultsSubtitle">'
+ str_noResultsSubtitle
+ '</p>'
+ '</div>'
+ '</div>'
); }
$("#div_noResults").css({
"background-color": kvp_colors.css_whiteBg,
"border-bottom": "1px solid " + kvp_colors.css_grayLine,
"display": "flex",
"width": "100%"
});
$("#div_noResultsDetailWrapper").css({
"display": "flex",
"flex-direction": "column",
"height": int_iconFrameSize.toString() + "px",
"justify-content": "center",
"padding-left": int_leftPadding.toString() + "px"
});
view_formatTextLarge($("#p_noResultsTitle"));
view_formatTextSmall($("#p_noResultsSubtitle"));
}
}
function view_pageTextbookContents() {
view_clearTextbookResults();
view_addTextbookSearch();
document.title = kvp_textbook.str_name;
var str_subtitle = "";
if (def(kvp_textbook.str_edition)) {
str_subtitle += kvp_textbook.str_edition;
}
if (def(kvp_textbook.str_edition) && def(kvp_textbook.str_isbn)) {
str_subtitle += ", ";
}
if (def(kvp_textbook.str_isbn)) {
str_subtitle += "ISBN " + kvp_textbook.str_isbn;
}
{ $("body").append(
'<div id="div_selectedBookBar">'
+ '<div id="div_imgSelectedBookThumb"></div>'
+ '<div id="div_selectedBookDetailWrapper">'
+ '<p id="p_selectedBookTitle">'
+ kvp_textbook.str_name
+ '</p>'
+ '<p id="p_selectedBookSubtitle">'
+ str_subtitle
+ '</p>'
+ '</div>'
+ '</div>'
); }
$("#div_selectedBookBar").css({
"background-color": kvp_colors.css_blueBg,
"display": "flex"
});
$("#div_imgSelectedBookThumb").css({
"background-image": (
'url("' + kvp_textbook.url_thumbnail + '")'
),
"height": int_iconFrameSize.toString() + "px",
"width": int_iconFrameSize.toString() + "px"
});
$("#div_selectedBookDetailWrapper").css({
"display": "flex",
"flex-direction": "column",
"justify-content": "center",
"padding-left": int_iconToTextPadding.toString() + "px"
});
view_formatTextLarge($("#p_selectedBookTitle"));
view_formatTextSmall($("#p_selectedBookSubtitle"));
$.each(kvp_textbook.chapters, function(i, kvp_chapter) {
{ $("body").append(
'<div class="div_chapter">'
+ '<p class="p_chapterName">' + kvp_chapter.str_name + '</p>'
+ '</div>'
); }
$(".div_chapter").eq(i).css({
"border-bottom": "1px solid " + kvp_colors.css_grayLine,
"padding-bottom": "5px",
"padding-top": "5px"
});
$(".p_chapterName").eq(i).css({
"padding-bottom": "5px",
"padding-top": "5px",
"padding-left": int_leftPadding.toString() + "px"
});
view_formatTextSmall($(".p_chapterName").eq(i), true);
$.each(kvp_chapter.sections, function(j, kvp_section) {
var div_section = document.createElement("div"); {
div_section.className = "div_section";
}
div_section.onclick = function() {
if (kvp_textbook.chapters[i]
.sections[j].questions.length == 0) {
model_getQuestionsInSection(i, j);
} else {
view_addQuestionPageHeader();
view_addUnaddedQuestions();
}
};
{ div_section.innerHTML += (
'<p class="p_sectionNumber">'
+ kvp_section.str_number
+ '</p>'
+ '<p class="p_sectionName">'
+ kvp_section.str_name
+ '</p>'
); }
var jdiv_chapter = $(".div_chapter").eq(i);
jdiv_chapter.append(div_section);
jdiv_chapter.find(".div_section").eq(j).css({
"cursor": "pointer",
"display": "flex",
"padding-bottom": "5px",
"padding-top": "5px",
"padding-left": int_leftPadding.toString() + "px",
"width": "100%"
});
jdiv_chapter.find(".p_sectionNumber").eq(j).css({
"padding-right": "10px"
});
view_formatGrayBgOnHover(jdiv_chapter.find(".div_section").eq(j));
view_formatTextLarge(jdiv_chapter.find(".p_sectionNumber").eq(j));
view_formatTextSmall(jdiv_chapter.find(".p_sectionName").eq(j));
if (!def($(".div_chapter").eq(i)
.find(".p_sectionNumber").eq(j).text())) {
$(".div_chapter").eq(i).find(".p_sectionNumber").eq(j)
.text((i + 1).toString() + ".*");
}
});
});
}
function view_addQuestionPageHeader() {
view_addTextbookSearch();
var str_number = "";
if (def(kvp_textbook.chapters[int_chapter].sections[int_section]
.str_number)) {
str_number = (
kvp_textbook.chapters[int_chapter].sections[int_section]
.str_number
);
} else str_number = (int_chapter + 1).toString() + ".*";
{ view_addBackHeader(
str_number,
kvp_textbook.chapters[int_chapter]
.sections[int_section].str_name,
function() {
bool_displayQuestions = false;
view_pageTextbookContents();
}
); }
{ document.title = ("Section " +
kvp_textbook.chapters[int_chapter]
.sections[int_section].str_number
); }
bool_displayQuestions = true;
}
function view_addUnaddedQuestions() {
{ var kvps_questions = (
kvp_textbook.chapters[int_chapter]
.sections[int_section].questions
); }
for (var i = $(".div_question").length; i < kvps_questions.length; i++) {
if (!bool_displayQuestions) return;
var kvp_question = kvps_questions[i];
var div_question = document.createElement("div");
div_question.className = "div_question";
div_question.id = i;
div_question.onclick = function() {
if (bool_viewingSolution) return;
bool_viewingSolution = true;
bool_displayQuestions = false;
if (kvp_textbook
.chapters[int_chapter]
.sections[int_section]
.questions[parseInt(this.id)]
.solutions.length > 0) {
int_question = parseInt(this.id);
view_pageSolutions();
} else model_getSolutions(this.id);
}
{ div_question.innerHTML += (
'<p class="p_number">' + kvp_question.str_number + '</p>'
); }
if (def(kvp_question.int_page)) {
{ $("body").append(
'<div id=div_page' + kvp_question.int_page + '>'
+ '<p class="p_page">Page ' + kvp_question.int_page + '</p>'
+ '</div>'
); }
{ view_formatTextSmall(
$("#div_page" + kvp_question.int_page)
.find("p").eq(0)
, true); }
$("#div_page" + kvp_question.int_page).find("p").eq(0).css({
"padding-top": "10px",
"padding-bottom": "5px",
"padding-left": int_leftPadding.toString() + "px"
});
if ($("body").find(".div_question").length > 1) {
$("#div_page" + kvp_question.int_page).css({
"border-top": "1px solid " + kvp_colors.css_grayLine,
"margin-top": "5px"
});
}
}
document.body.appendChild(div_question);
{ div_question.innerHTML += (
(def(kvp_question.str_answer))
? '<p>' + kvp_question.str_answer + '</p>'
: '<img src=' + kvp_question.url_imgAnswer + '>'
); }
view_formatTextLarge($("#" + i).find(".p_number").eq(0));
view_formatBlueBgOnHover($("#" + i));
$("#" + i).css({
"cursor": "pointer",
"display": "flex",
"flex-direction": "row",
"padding-bottom": "10px",
"padding-top": "10px",
"padding-left": int_leftPadding.toString() + "px"
});
$("#" + i).find("p").eq(0).css({
"padding-right": "10px"
});
$("#" + i).find("img").eq(0).css({
"padding-top": "4px"
});
}
}
function view_pageSolutions() {
view_addTextbookSearch();
var str_number = "";
if (def(kvp_textbook.chapters[int_chapter].sections[int_section]
.str_number)) {
str_number = (
kvp_textbook.chapters[int_chapter].sections[int_section]
.str_number
);
} else str_number = (int_chapter + 1).toString() + ".*";
{ view_addBackHeader(
kvp_textbook.chapters[int_chapter]
.sections[int_section].questions[int_question].str_number,
'Section ' + str_number,
function() {
bool_viewingSolution = false;
view_addQuestionPageHeader();
view_addUnaddedQuestions();
}
); }
{ document.title = (
"Section "
+ kvp_textbook.chapters[int_chapter]
.sections[int_section].str_number
+ " Question "
+ kvp_textbook.chapters[int_chapter]
.sections[int_section].questions[int_question].str_number
); }
{ var kvps_solutions = (
kvp_textbook.chapters[int_chapter]
.sections[int_section].questions[int_question].solutions
); }
$.each(kvps_solutions, function(i, kvp_solution) {
$("body").append('<div class="div_solution"></div>');
var jdiv_solution = $(".div_solution").eq(i);
{ jdiv_solution.append(
'<p class="p_answerer">Solution by "'
+ kvp_solution.str_answerer
+ '"</p>'
); }
{ view_formatTextSmall(
jdiv_solution.find(".p_answerer").eq(0)
, true); }
jdiv_solution.find(".p_answerer").eq(0).css({
"padding-top": "5px",
"padding-bottom": "5px",
"padding-left": int_leftPadding.toString() + "px"
});
$.each(kvp_solution.steps, function(j, kvp_step) {
{ jdiv_solution.append(
'<div class="div_step">'
+ '<p class="p_stepNumber">' + (j + 1).toString() + '</p>'
+ '<div class="div_stepContent"></div>'
+ '</div>'
); }
jdiv_solution.find(".div_step").eq(j).css({
"display": "flex",
"flex-direction": "row",
"padding-top": "5px",
"padding-bottom": "5px",
"padding-left": "55px",
"width": "100%"
});
jdiv_solution.find(".p_stepNumber").eq(j).css({
"padding-right": "20px"
});
view_formatTextLarge(jdiv_solution.find(".p_stepNumber").eq(j));
view_formatGrayBgOnHover(jdiv_solution.find(".div_step").eq(j));
var jdiv_step = jdiv_solution.find(".div_stepContent").eq(j);
if (def(kvp_step.str_explain) || def(kvp_step.url_imgExplain)) {
{ jdiv_solution.find(".div_stepContent").eq(j).append(
'<div class="div_work"></div>'
+ '<div class="div_explain"></div>'
); }
{ jdiv_solution.find(".div_stepContent").eq(j).css({
"display": "flex",
"flex-direction": "row"
}); }
{ jdiv_solution.find(".div_work").eq(j).css({
"padding-right": "20px"
}); }
jdiv_step = jdiv_solution.find(".div_work").eq(j);
jdiv_solution.find(".div_explain").eq(j).css({
"max-width": (
(
$(window).width()
- int_iconFrameSize
- int_iconToTextPadding
- jdiv_solution.find(".p_stepNumber")
.eq(j).width()
) / 2
).toString() + "px"
});
if (def(kvp_step.str_explain)) {
jdiv_solution.find(".div_explain").eq(j).append(kvp_step.str_explain);
} else {
jdiv_solution.find(".div_explain").eq(j).append(
"<img src=" + kvp_step.url_imgExplain + ">"
);
jdiv_solution.find(".div_explain").eq(j).find("img").eq(0).css({
"padding-top": "4px"
});
}
}
jdiv_step.find("img").eq(0).css({
"max-width": (
(
$(window).width()
- int_iconFrameSize
- int_iconToTextPadding
- jdiv_solution.find(".p_stepNumber")
.eq(j).width()
) / 2
).toString() + "px"
});
if (def(kvp_step.str_work)) {
jdiv_step.append(kvp_step.str_work);
} else {
jdiv_step.append(
"<img src=" + kvp_step.url_imgWork + ">"
);
jdiv_step.find("img").eq(0).css({
"padding-top": "4px"
});
}
});
{ $(".div_solution").eq(i).append(
'<div class="div_answer">'
+ '<p class="p_answerNumber">*</p>'
+ '<div class="div_answerContent"></div>'
+ '</div>'
); }
if (i != 0) {
$(".div_solution").eq(i).css({
"border-top": "1px solid " + kvp_colors.css_grayLine
});
}
$(".div_solution").eq(i).css({
"padding-bottom": "5px",
"padding-top": "5px"
});
$(".div_answer").eq(i).css({
"display": "flex",
"flex-direction": "row",
"padding-top": "5px",
"padding-bottom": "5px",
"padding-left": int_leftPadding.toString() + "px"
});
$(".p_answerNumber").eq(i).css({
"padding-right": "20px"
});
view_formatTextLarge($(".p_answerNumber").eq(i));
view_formatGrayBgOnHover($(".div_answer").eq(i));
if (def(kvp_solution.str_answer)) {
$(".div_answerContent").eq(i).append(kvp_solution.str_answer);
} else {
$(".div_answerContent").eq(i).append(
'<img src="' + kvp_solution.url_imgAnswer + '">'
);
}
});
}
function main() {
{ $("head").html("<style>\
* {\
margin: 0px;\
padding: 0px;\
font-family: Helvetica, Opens Sans, Sans-Serif;\
}\
</style>"); }
$("body").css({
"overflow-x": "hidden"
});
document.title = "Slader Infinite";
clearBody();
view_addTextbookSearch();
$("#intext").focus();
} main();
}
function main() {
window.stop();
$("html").html("<head></head><body></body>");
var obj_sladerCrawler = new class_sladerClient();
}
console.log("Compiled");
main();