function createRequestObject() {
var browser = navigator.appName;
var ajax;
if(browser == "Microsoft Internet Explorer") {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
} else {
ajax = new XMLHttpRequest();
}
return ajax;
}
var ajax = createRequestObject();
function checkEmail(el) {
el = el ? el : document.getElementById('signup_email');
ajax.open('get', 'CheckEmail/?q='+escape(el.value));
ajax.onreadystatechange = checkEmailResponse;
ajax.send(null);
}
function checkEmailResponse() {
if(ajax.readyState == 4 && ajax.responseText != null) {
var email_response = document.getElementById('email_response');
var response = eval("(" + ajax.responseText + ")");
var signup_email = document.getElementById('signup_email');
var not_my = document.getElementById('not_my_university');
if(response[0] != null && response[0] == 1) {
email_response.innerHTML = "This email address is in use.
You seem to already have an account with our parent company Chegg.com.
Click Here to Login (Forgot Password?)";
email_response.style.padding = '10px;';
} else {
if(response.campus_id) {
var campus_id = document.getElementById('campus_id');
var el = document.getElementById('signup_university');
el.value = response.name_long;
campus_id.value = response.campus_id;
not_my.style.display = 'block';
}
email_response.innerHTML = '';
email_response.style.padding = '0px;';
}
}
}
function inArray(needle, arr) {
for(i=0;i
'+msg;
alertBox.style.opacity = '1';
alertBox.style.top = (e.offsetTop - 30) + 'px';
alertBox.style.left = (e.offsetLeft + e.offsetWidth + 5) + 'px';
alertBox.style.display = 'block';
setTimeout('fadeAlert()', 3000);
}
function fadeAlert() {
var alertBox = document.getElementById('alert');
alertBox.style.opacity = alertOpacity-0.1;
alertOpacity = alertOpacity-0.1;
if(alertOpacity > 0) {
setTimeout('fadeAlert()', 20);
} else {
alertOpacity = 1;
}
}
function addItem(item_id) {
document.getElementById('item_id').value = item_id;
document.getElementById('search_form').submit();
}
function toggleBilling(event) {
var billing_address = document.getElementById('billing_address');
var billing_is_shipping = document.getElementById('billing_is_shipping');
if(billing_is_shipping.checked) {
billing_address.style.display = 'none';
} else {
billing_address.style.display = 'block';
}
}
function hide_cards() {
var cards = document.getElementById('credit_cards');
var tables = cards.getElementsByTagName('table');
var new_card = document.getElementById('new_card');
new_card.style.display = 'none';
for(var i = 0; i < tables.length; i++) {
tables[i].style.display = 'none';
}
}
function select_card(e) {
hide_cards();
var event = window.event ? window.event : e;
var el = event.srcElement ? event.srcElement : event.target;
var credit_card_table = document.getElementById('credit_cards');
var new_card = document.getElementById('new_card');
if(el.value == '#') {
} else if(el.value == 'add') {
new_card.style.display = 'block';
var tbs = new_card.getElementsByTagName('table');
for(var i = 0; i < tbs.length; i++) { tbs[i].style.display = 'block'; }
} else {
var table = document.getElementById('saved_card_'+el.value);
table.style.display = 'block';
}
}
var current_search_by = 1;
function showTab(event) {
var tab = $('search_tab');
tab.style.visibility = 'shown';
if(current_search_by == 1) {
tab.innerHTML = 'Search by Course';
} else {
tab.innerHTML = 'Search by Keyword/Title/Author/ISBN';
}
}
function hideTab(event) {
var tab = $('search_tab');
tab.style.display = 'none';
}
function tabClick(event) {
var tab = $('search_tab');
//tab.style.display = 'none';
toggleSearchType();
}
function toggleSearchType(type) {
var box1 = $('search_by_keyword');
var box2 = $('search_by_course');
var tab = $('search_tab');
if(current_search_by == 1) {
box1.style.display = 'none';
box2.style.display = 'block';
current_search_by = 0;
tab.innerHTML = 'Search By Keyword';
} else {
box1.style.display = 'block';
box2.style.display = 'none';
current_search_by = 1;
tab.innerHTML = 'Search By Courses';
}
}
function checkIssue(e) {
var event = window.event ? window.event : e;
var el = event.srcElement ? event.srcElement : event.target;
var other = $('other');
if(el.value == 'other') {
other.style.display = 'block';
} else {
other.style.display = 'none';
}
}
var pressAjax = createRequestObject();
function getRandPress() {
pressAjax.open('get', 'press/?'+Math.random()*5);
pressAjax.onreadystatechange = fillPress;
pressAjax.send(null);
}
var pressArr = new Array();
function fillPress() {
if(pressAjax.readyState == 4) {
var res = eval('('+pressAjax.responseText+')');
if(res.length >= 1) {
for(var i = 0; i < res.length; i++) {
pressArr[ pressArr.length ] = res[i];
}
changePress(0);
}
}
}
function changePress(i) {
if(i >= pressArr.length) { i = 0; }
var pressScroller = document.getElementById('press_scroller');
pressScroller.style.backgroundImage = 'url("'+pressArr[i][0]+'")';
pressScroller.onclick = function() { window.open(pressArr[i][1], 'press_window'); }
setTimeout('changePress('+(i+1)+')', 3000);
}
function getUserComments() {
ajax.open('get', 'HappyCustomers/?'+Math.random()*5);
ajax.onreadystatechange = fillComments;
ajax.send(null);
}
var Comments = new Array();
var CurComment = 0;
function fillComments() {
if(ajax.readyState == 4) {
var res = eval('(' + ajax.responseText + ')' );
if(res.length >= 1) {
for(var i = 0; i < res.length; i++) {
Comments[ Comments.length ] = res[i];
}
var loading = $('user_comments_loading');
var comments = $('user_comments');
loading.style.display = 'none';
comments.style.display = 'block';
changeComments(0);
}
}
}
function changeComments(i) {
if(i >= Comments.length) i = 0;
var fname = $('user_comments_fname');
var from = $('user_comments_from');
var message = $('user_comments_message');
fname.innerHTML = Comments[i].full_name;
from.innerHTML = Comments[i].from;
message.innerHTML = Comments[i].comment;
CurComment = i;
}
function getRandBook() {
ajax.open('get', 'rbooksold/?'+Math.random()*5);
ajax.onreadystatechange = getRandBooks;
ajax.send(null);
}
var RandomBooks = new Array();
var CurBook = 0;
function getRandBooks() {
if(ajax && ajax.readyState == 4) {
var rand_book = document.getElementById('rand_book');
var rand_book_loading = document.getElementById('rand_book_loading');
var res = eval('('+ajax.responseText+')');
if(res.length >= 1) {
for(var i = 0; i < res.length; i++) {
RandomBooks[ RandomBooks.length ] = res[i];
}
changeRandBook();
rand_book_loading.style.display = 'none';
rand_book.style.display = 'block';
}
}
}
function changeRandBook() {
if(RandomBooks.length >= 1) {
var rand_book = document.getElementById('rand_book');
var randBookSchool = document.getElementById('rand_book_school');
var randBookTitle = document.getElementById('rand_book_title');
var randBookList = document.getElementById('rand_book_list');
var randBookRent = document.getElementById('rand_book_rent');
var randBookSavings = document.getElementById('rand_book_savings');
var randBookFrom = document.getElementById('rand_book_from');
var randBookFname = document.getElementById('rand_book_fname');
var rand = (Math.round((Math.random()*(RandomBooks.length))+1))
rand = rand >= RandomBooks.length ? RandomBooks.length-1 : rand;
randBookSchool.innerHTML = RandomBooks[rand].school;
randBookTitle.innerHTML = RandomBooks[rand].book_title;
randBookList.innerHTML = RandomBooks[rand].price_list;
randBookRent.innerHTML = RandomBooks[rand].rent_price;
randBookSavings.innerHTML = RandomBooks[rand].savings;
randBookFrom.innerHTML = RandomBooks[rand].first_name;
randBookFname.innerHTML = RandomBooks[rand].first_name;
}
}
var currOpacity = 0;
function fadeIn(el) {
el = document.getElementById(el);
currOpacity += 0.05;
el.style.opacity = currOpacity;
if(currOpacity < 1)
setTimeout("fadeIn('"+el.id+"')", 10);
}
function fadeOut(el) {
el = document.getElementById(el);
currOpacity -= 0.05;
el.style.opacity = currOpacity;
if(currOpacity > 0)
setTimeout("fadeOut('"+el.id+"')", 10);
}
var lastRes = false;
function campusSuggest(event) {
var el = document.getElementById('signup_university');
var suggest_box = document.getElementById('university_suggest');
var blank_suggest = document.getElementById('blank_suggest');
var not_my = document.getElementById('not_my_university');
if(
(event.keyCode >= 48 && event.keyCode <= 111) ||
(event.keyCode >= 186 && event.keyCode <= 222)
|| event.keyCode == 8) {
suggest_box.innerHTML = '';
if(el.value != '') {
ajax.open('get', 'campus_suggest/?q='+escape(el.value));
ajax.onreadystatechange = showCampusList;
ajax.send(null);
} else if(event.keyCode == 8) {
suggest_box.style.display = 'none';
blank_suggest.style.display = 'none';
not_my.style.display = 'none';
}
}
}
var not_listed = false;
function showCampusList() {
var not_my = document.getElementById('not_my_university');
if(ajax.readyState == 4) {
var res = eval('('+ajax.responseText+')')
var el = document.getElementById('signup_university');
var suggest_box = document.getElementById('university_suggest');
var blank_suggest = document.getElementById('blank_suggest');
if(res.length >= 1) {
if(res.length > 1) {
lastRes = res[1];
} else {
lastRes = res[0];
}
for(var i = 0; i < res.length; i++) {
var a = document.createElement('a');
a.innerHTML = ''+res[i].suggested+'';
a.id = res[i].campus_id;
a.title = res[i].name_long;
a.onclick = function(event) {
event = event ? event : window.event;
target = event.srcElement ? event.srcElement : event.target;
target = target.parentNode.id ? target.parentNode : target;
var campus_id = document.getElementById('campus_id');
campus_id.value = target.id;
el.value = target.title;
suggest_box.style.display = 'none';
blank_suggest.style.display = 'none';
not_my.style.display = 'block';
};
if(i == 0) {
a.style.background = '#e0ffab';
}
suggest_box.appendChild(a);
}
var pos = findPos(el);
suggest_box.style.display = 'block';
blank_suggest.style.display = 'block';
blank_suggest.style.top = (pos[1]+31)+'px';
blank_suggest.style.left = (pos[0]+2)+'px';
blank_suggest.style.width = suggest_box.offsetWidth+'px';
blank_suggest.style.height = suggest_box.offsetHeight+'px';
suggest_box.style.top = blank_suggest.style.top;
suggest_box.style.left = blank_suggest.style.left;
} else {
suggest_box.style.display = 'none';
blank_suggest.style.display = 'none';
not_my.style.display = 'block';
}
}
}
function hideCampusSuggest() {
var suggest_box = document.getElementById('university_suggest');
var blank_suggest = document.getElementById('blank_suggest');
suggest_box.style.display = 'none';
blank_suggest.style.display = 'none';
}
function noReturn(event) {
if(event.keyCode == 13) {
var el = document.getElementById('signup_university');
var suggest_box = document.getElementById('university_suggest');
var blank_suggest = document.getElementById('blank_suggest');
var user_id = document.getElementById('campus_id');
user_id.value = lastRes.campus_id ? lastRes.campus_id : user_id.value;
el.value = lastRes.name_long ? lastRes.name_long : el.value;
suggest_box.style.display = 'none';
blank_suggest.style.display = 'none';
return false;
}
}
function not_my_university(event) {
var not_my = document.getElementById('not_my_university');
var el = document.getElementById('signup_university');
var campus_id = document.getElementById('campus_id');
not_my.style.display = 'none';
el.value = 'University Not Listed';
el.onfocus = function() { el.select(); }
campus_id.value = 0;
not_listed = true;
}
function findPosX(obj) {
var curleft = 0;
if(obj.offsetParent) {
while(1) {
curleft += obj.offsetLeft;
if(!obj.offsetParent)
break;
obj = obj.offsetParent;
}
} else if(obj.x) {
curleft += obj.x;
}
obj.style.position = "static";
return curleft;
}
function findPosY(obj) {
var curtop = 0;
if(obj.offsetParent) {
while(1) {
curtop += obj.offsetTop;
if(!obj.offsetParent)
break;
obj = obj.offsetParent;
}
} else if(obj.y) {
curtop += obj.y;
}
return curtop;
}
function findPos(obj) {
var left = findPosX(obj);
var top = findPosY(obj);
return [left , top];
}
function findPosition( oElement ) {
if( typeof( oElement.offsetParent ) != 'undefined' ) {
for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
posX += oElement.offsetLeft;
posY += oElement.offsetTop;
}
return [ posX, posY ];
} else {
return [ oElement.x, oElement.y ];
}
}
function logReferrer( redirectUrl, isbn ) {
ajax.open( 'get', 'callback/?a=logreferrer&q='+ isbn );
ajax.send(null);
window.open( redirectUrl );
}
var curr = 0;
var pages = ['why_rent','whos_renting','happy_customers'];
function setupHomepage() {
getRandPress();
getRandBook();
setTimeout('beginCycle()', 5000);
}
function beginCycle() {
getUserComments();
cyclePages(0);
}
var is_playing = true;
var current_scroll = 0;
function toggle_scroll() {
is_playing = !is_playing;
if(is_playing) {
$('play_pause').style.background = "url('images/pause.gif') no-repeat";
cyclePages(current_scroll);
} else {
$('play_pause').style.background = "url('images/play.gif') no-repeat";
}
}
function cyclePages(i) {
if(is_playing == false) { current_scroll = i; return; }
Effect.DropOut(pages[i],
{
duration: 1,
afterFinish:
function() {
i++;
if(i>=pages.length) i = 0;
$(pages[i]).style.display = 'none';
Effect.Appear(pages[i], { duration:1 });
if(pages[i] == 'whos_renting') changeRandBook();
if(pages[i] == 'happy_customers') changeComments(CurComment+1);
setTimeout('cyclePages('+i+')', 10000);
}
}
);
}
function getParent(node, nodeType) {
if(node.parentNode) {
if(node.parentNode.tagName.toUpperCase == nodeType.toUpperCase) {
return node.parentNode;
} else {
return getParent(node.parentNode, nodeType);
}
}
}
// addEvent and removeEvent, designed by Aaron Moore
function addEvent(element, listener, handler)
{
//if the system is not set up, set it up, and
// store any outside script's event registration in the first handler slot
if(typeof element[listener] != 'function' ||
typeof element[listener + '_num'] == 'undefined'){
element[listener + '_num'] = 0;
if(typeof element[listener] == 'function'){
element[listener + 0] = element[listener];
element[listener + '_num']++;
}
element[listener] = function(e){
var r = true;
e = (e) ? e : window.event;
for(var i = 0; i < element[listener + '_num']; i++)
if(element[listener + i](e) === false) r = false;
return r;
}
}
//if handler is not already stored, assign it
for(var i = 0; i < element[listener + '_num']; i++)
if(element[listener + i] == handler) return;
element[listener + element[listener + '_num']] = handler;
element[listener + '_num']++;
}
function removeEvent(element, listener, handler)
{
//if the system is not set up, or there are no handlers to remove, exit
if(typeof element[listener] != 'function' ||
typeof element[listener + '_num'] == 'undefined' ||
element[listener + '_num'] == 0) return;
//loop through handlers,
// if target handler is reached, begin overwriting each
// handler with the handler in front of it until one before the last
var found = false;
for(var i = 0; i < element[listener + '_num']; i++){
if(!found)
found = element[listener + i] == handler;
if(found && (i+1) < element[listener + '_num'])
element[listener + i] = element[listener + (i+1)];
}
//if handler was found, decrement the handler count
if(found)
element[listener + '_num']--;
}
var rows = new Array();
function form_highlights() {
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length; i++) {
if(inputs[i].type == 'text' || inputs[i].type == 'password') {
var tr = getParent(inputs[i], 'tr');
if(tr) {
rows[i] = tr.parentNode;
inputs[i].row_id = i;
addEvent(inputs[i], 'onfocus', function(event) {
e = event ? event : window.event;
el = e.target ? e.target : e.srcElement;
rows[el.row_id].className = rows[el.row_id].className + ' selected';
});
addEvent(inputs[i], 'onblur', function(event) {
e = event ? event : window.event;
el = e.target ? e.target : e.srcElement;
rows[el.row_id].className = rows[el.row_id].className.indexOf('red') != -1 ? 'red' : '';
});
}
}
}
}
function getRentPrice(event, isbn) {
var e = window.event ? window.event : event;
var el = e.srcElement ? e.srcElement : e.target;
var rent_error = document.getElementById('rent_error_'+isbn);
var term = el.value;
rent_error.style.display = 'none';
var calc_button = document.getElementById('calc_text_'+isbn);
calc_button.innerHTML = 'Calculating...';
setTimeout('queryRentPrice(\''+isbn+'\', \''+term+'\')', 100);
}
function queryRentPrice(isbn, term) {
ajax.open('get', 'pricing/?isbn='+escape(isbn)+'&term='+term);
ajax.onreadystatechange = showRentPrice;
ajax.send(null);
}
function showRentPrice() {
if(ajax.readyState == 4) {
var res = eval('('+ajax.responseText+')');
var details = document.getElementById('rent_price_'+res['isbn']);
var rent_error = document.getElementById('rent_error_'+res['isbn']);
if(!res['renting']) {
rent_error.style.display = 'block';
rent_error.className = 'bold red';
rent_error.innerHTML = 'Sorry, but this book is not avaible for rent.';
} else {
details.style.display = 'inline';
details.innerHTML = '$' + (res.price);
details.parentNode.style.display = 'block';
}
var calc_button = document.getElementById('calc_text_'+res.isbn);
calc_button.style.display = 'none';
}
}
function addToCart(isbn) {
var termBox = document.getElementById('rent_term_'+isbn);
var term = termBox.value;
if(term != '#') {
ajax.open('get', 'AddToCart/?item_id='+escape(isbn)+'&term='+term);
ajax.onreadystatechange = itemAdded;
ajax.send(null);
}
}
function itemAdded() {
if(ajax.readyState == 4) {
var res = eval('('+ajax.responseText+')');
var add_button = document.getElementById('add_to_cart_'+res[0]);
var num_books = document.getElementById('num_books');
var calculated = document.getElementById('calculated_'+res[0]);
var rent_error = document.getElementById('rent_error_'+res[0]);
if(res[1] == 'added') {
add_button.src = 'images/added.gif';
books = parseInt(num_books.innerHTML) + 1;
books = books == 1 ? books+' book' : books+' books';
num_books.innerHTML = books;
} else {
calculated.style.display = 'none';
rent_error.innerHTML = 'Already Added.';
rent_error.className = 'bold red';
rent_error.style.display = 'block';
hideError = function() {
rent_error.innerHTML = '';
rent_error.style.display = 'none';
calculated.style.display = 'block';
}
setTimeout('hideError()', 1000);
}
}
}
function searchFocus(event, msg) {
doFocus(event, msg);
var e = window.event ? window.event : event;
var el = e.srcElement ? e.srcElement : e.target;
el.parentNode.parentNode.style.border = 'solid 3px #edf4fc';
}
function searchBlur(event) {
var e = window.event ? window.event : event;
var el = e.srcElement ? e.srcElement : e.target;
el.parentNode.parentNode.style.border = 'solid 3px #f7f7f7';
}
var open = false;
function replaceSelectBoxes() {
var selects = document.getElementsByTagName('select');
var suggest_box = document.getElementById('university_suggest');
var blank_suggest = document.getElementById('blank_suggest');
var hideOptions = function(el) {
el.style.display = 'none';
el.style.zIndex = 0;
}
var showOptions = function(el) {
el.style.display = 'block';
el.style.zIndex = 5;
}
var n = 0;
for(var i = selects.length-1; i >= 0; i--) {
var selected = selects[i].options[ selects[i].selectedIndex ].innerHTML;
var newSelect = document.createElement('div');
newSelect.className = 'select_replacement';
newSelect.innerHTML = selected;
newSelect.id = 'select_replacement_'+n;
selects[i].parentNode.appendChild( newSelect );
var ol = document.createElement('ol');
ol.className = 'replacement_options';
ol.id = 'ol_'+newSelect.id;
ol.style.width = (newSelect.offsetWidth-4) + 'px';
ol.style.left = selects[i].offsetLeft+'px';
ol.style.top = newSelect.offsetHeight + 'px';
var options = selects[i].getElementsByTagName('option');
var s = false;
for(var x = 0; x < options.length; x++) {
var li = document.createElement('li');
var a = document.createElement('a');
li.id = 'li_'+newSelect.id;
a.id = 'a_'+newSelect.id;
a.value = options[x].value;
a.innerHTML = options[x].innerHTML;
if(a.innerHTML == newSelect.innerHTML) {
a.className = 'selected';
s = a;
}
addEvent(a, 'onmouseover', function(ev) {
var e = window.event ? window.event : ev;
var el = e.srcElement ? e.srcElement : e.target;
s.className = '';
el.className = 'selected';
s = el;
});
addEvent(a, 'onclick', function(ev) {
var e = window.event ? window.event : ev;
var el = e.srcElement ? e.srcElement : e.target;
var rep = document.getElementById('hidden_'+newSelect.id);
var ol = document.getElementById('ol_'+newSelect.id);
rep.value = el.value;
newSelect.innerHTML = el.innerHTML;
hideOptions(ol);
});
addEvent(document, 'onclick', function(ev) {
var e = window.event ? window.event : ev;
var el = e.srcElement ? e.srcElement : e.target;
var els = document.getElementsByTagName('ol');
if(el.tagName != 'OL' && el.className != 'replacement_options' && el.className != 'select_replacement') {
for(var j = 0; j < els.length; j++) {
if(els[j].className == 'replacement_options') {
hideOptions(els[j]);
}
}
}
});
li.appendChild(a);
ol.appendChild(li);
}
var clear = document.createElement('div');
clear.className = 'clear';
selects[i].parentNode.appendChild( ol );
selects[i].parentNode.appendChild( clear );
selects[i].style.display = 'none';
var hidden = document.createElement('input');
hidden.type = 'hidden';
hidden.value = selects[i].value;
hidden.id = 'hidden_'+newSelect.id;
hidden.name = selects[i].name;
selects[i].parentNode.replaceChild(hidden, selects[i]);
newSelect.onclick = function(ev) {
var e = window.event ? window.event : ev;
var el = e.srcElement ? e.srcElement : e.target;
var ol = document.getElementById('ol_'+el.id);
if(open) { hideOptions(open); }
open = ol;
showOptions(ol);
}
n++;
}
}