Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

For anyone who is efficient in javascipt programming Rewrite the cube program fr

ID: 3598381 • Letter: F

Question

For anyone who is efficient in javascipt programming

Rewrite the cube program from Chapter 4 as follows. Initially, a single cube is rotated 45 degrees around the x-axis and is rotating around the y-axis. Each face is a solid color, shown below. For the buttons, The "Rotate" button toggles between rotating around the y-axis and stopping the rotation. The "Faces" button toggles between assigning a single color for each vertex of a face and assigning a different color for each vertex so colors are interpolated across each face. . . The "Fill" button toggles between displaying each face as a solid square or as lines across each edge of the cube. The "Explode" button toggles between the single cube and nine cubes. Each of the nine cubes are 0.25 times the size of the original and are equally spaced around the origin by ±0.5 units in the x and y planes. An example is shown below.

Explanation / Answer

var windowFocus = true;

var username;

var chatHeartbeatCount = 0;

var minChatHeartbeat = 1000;

var maxChatHeartbeat = 33000;

var chatHeartbeatTime = minChatHeartbeat;

var originalTitle;

var blinkOrder = 0;

var chatboxFocus = new Array();

var chatBoxes = new Array();

var newMessages = new Array();

var newMessagesWin = new Array();

$(document).ready(function(){

originalTitle = document.title;

startChatSession();

alert("inside js");

$([window, document]).blur(function(){

windowFocus = false;

}).focus(function(){

windowFocus = true;

document.title = originalTitle;

});

});

$(document).keydown(function(e) {

if (e.keyCode == 27) {

if (chatBoxes != "") {

closeChatBox(chatBoxes[0]);

return false;

}

}

});

function chatWith(chatuser) {

alert("inside chatwith function");

createChatBox(chatuser);

$("#chatbox_"+chatuser+" .chatboxtextarea").focus();

}

function createChatBox(chatboxtitle,minimizeChatBox) {

alert("create chat bos");

if ($("#chatbox_"+chatboxtitle).length > 0) {

if ($("#chatbox_"+chatboxtitle).css('display') == 'none') {

$("#chatbox_"+chatboxtitle).css('display','block');

restructureChatBoxes();

}

$("#chatbox_"+chatboxtitle+" .chatboxtextarea").focus();

return;

}

$(" <div />" ).attr("id","chatbox_"+chatboxtitle)

.addClass("chatbox")

.html('<div class="chatboxhead"><div class="chatboxtitle">'+chatboxtitle+'</div><div class="chatboxoptions"><a href="#" title="Minimize">-</a> <a href="#" title="Close">X</a></div><br clear="all"/></div><div class="chatboxcontent"></div><div class="chatboxinput"><textarea class="chatboxtextarea"></textarea></div>')

.appendTo($( "body" ));

alert("complete");

$("#chatbox_"+chatboxtitle).css('bottom', '0px');

chatBoxeslength = 0;

for (x in chatBoxes) {

if ($("#chatbox_"+chatBoxes[x]).css('display') != 'none') {

chatBoxeslength++;

}

}

if (chatBoxeslength == 0) {

$("#chatbox_"+chatboxtitle).css('right', '20px');

} else {

width = (chatBoxeslength)*(225+7)+20;

$("#chatbox_"+chatboxtitle).css('right', width+'px');

}

chatBoxes.push(chatboxtitle);

if (minimizeChatBox == 1) {

minimizedChatBoxes = new Array();

if ($.cookie('chatbox_minimized')) {

minimizedChatBoxes = $.cookie('chatbox_minimized').split(/|/);

}

minimize = 0;

for (j=0;j<minimizedChatBoxes.length;j++) {

if (minimizedChatBoxes[j] == chatboxtitle) {

minimize = 1;

}

}

if (minimize == 1) {

$('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display','none');

$('#chatbox_'+chatboxtitle+' .chatboxinput').css('display','none');

}

}

chatboxFocus[chatboxtitle] = false;

$("#chatbox_"+chatboxtitle+" .chatboxtextarea").blur(function(){

chatboxFocus[chatboxtitle] = false;

$("#chatbox_"+chatboxtitle+" .chatboxtextarea").removeClass('chatboxtextareaselected');

}).focus(function(){

chatboxFocus[chatboxtitle] = true;

newMessages[chatboxtitle] = false;

$('#chatbox_'+chatboxtitle+' .chatboxhead').removeClass('chatboxblink');

$("#chatbox_"+chatboxtitle+" .chatboxtextarea").addClass('chatboxtextareaselected');

});

$("#chatbox_"+chatboxtitle).click(function() {

alert("click function");

if ($('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display') != 'none') {

$("#chatbox_"+chatboxtitle+" .chatboxtextarea").focus();

}

});

$("#chatbox_"+chatboxtitle).show();

$checkChatBoxInputKey(event,this,+chatboxtitle+"");

}

function checkChatBoxInputKey(event,chatboxtextarea,chatboxtitle) {

if(event.keyCode == 13 && event.shiftKey == 0) {

message = $(chatboxtextarea).val();

message = message.replace(/^s+|s+$/g,"");

alert(message);

$(chatboxtextarea).val('');

$(chatboxtextarea).focus();

$(chatboxtextarea).css('height','44px');

if (message != '') {

var username = $("#chatbox_"+chatboxtitle+" .chatboxtitle").html();

alert(username);

Object.keys(map).forEach(function (ico) {

var icoE = ico.replace(/([.?*+^$[]\(){}|-])/g, "\$1");

message = message.replace(new RegExp(icoE, 'g'), " " + map[ico] + " ");

});

//$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+username+':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">'+message+'</span></div>');

//$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);

$.post("savechat.jsp?username="+username+"", {to: chatboxtitle, message: message} , function(data){

//message = message.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;");

//message = message.replace(new RegExp(icoE, 'g'), " " + map[ico] + " ");

$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+username+':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">'+message+'</span></div>');

$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);

});

}

chatHeartbeatTime = minChatHeartbeat;

chatHeartbeatCount = 1;

return false;

}

var adjustedHeight = chatboxtextarea.clientHeight;

var maxHeight = 94;

if (maxHeight > adjustedHeight) {

adjustedHeight = Math.max(chatboxtextarea.scrollHeight, adjustedHeight);

if (maxHeight)

adjustedHeight = Math.min(maxHeight, adjustedHeight);

if (adjustedHeight > chatboxtextarea.clientHeight)

$(chatboxtextarea).css('height',adjustedHeight+8 +'px');

} else {

$(chatboxtextarea).css('overflow','auto');

}

}

function toggleChatBoxGrowth(chatboxtitle) {

alert("inside toggle");

if ($('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display') == 'none') {  

var minimizedChatBoxes = new Array();

if ($.cookie('chatbox_minimized')) {

minimizedChatBoxes = $.cookie('chatbox_minimized').split(/|/);

}

var newCookie = '';

for (var i=0;i<minimizedChatBoxes.length;i++) {

if (minimizedChatBoxes[i] != chatboxtitle) {

newCookie += chatboxtitle+'|';

}

}

newCookie = newCookie.slice(0, -1)

$.cookie('chatbox_minimized', newCookie);

$('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display','block');

$('#chatbox_'+chatboxtitle+' .chatboxinput').css('display','block');

$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);

} else {

var newCookie = chatboxtitle;

if ($.cookie('chatbox_minimized')) {

newCookie += '|'+$.cookie('chatbox_minimized');

}

$.cookie('chatbox_minimized',newCookie);

$('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display','none');

$('#chatbox_'+chatboxtitle+' .chatboxinput').css('display','none');

}

}

function closeChatBox(chatboxtitle)

{

alert("close");

chatBoxes = $.grep(chatBoxes, function(value) {

return value!= chatboxtitle;

});

$('#chatbox_'+chatboxtitle).remove();

restructureChatBoxes();

}

function restructureChatBoxes() {

alert("inside resturcture chatbox");

align = 0;

for (x in chatBoxes) {

chatboxtitle = chatBoxes[x];

if ($("#chatbox_"+chatboxtitle).css('display') != 'none') {

if (align == 0) {

$("#chatbox_"+chatboxtitle).css('right', '20px');

} else {

width = (align)*(225+7)+20;

$("#chatbox_"+chatboxtitle).css('right', width+'px');

}

align++;

}

}

}

jQuery.cookie = function(name, value, options) {

alert("jquery cookies")

if (typeof value != 'undefined') { // name and value given, set cookie

options = options || {};

if (value === null) {

value = '';

options.expires = -1;

}

var expires = '';

if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {

var date;

if (typeof options.expires == 'number') {

date = new Date();

date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));

} else {

date = options.expires;

}

expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE

}

// CAUTION: Needed to parenthesize options.path and options.domain

// in the following expressions, otherwise they evaluate to undefined

// in the packed version for some reason...

var path = options.path ? '; path=' + (options.path) : '';

var domain = options.domain ? '; domain=' + (options.domain) : '';

var secure = options.secure ? '; secure' : '';

document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');

} else { // only name given, get cookie

var cookieValue = null;

if (document.cookie && document.cookie != '') {

var cookies = document.cookie.split(';');

for (var i = 0; i < cookies.length; i++) {

var cookie = jQuery.trim(cookies[i]);

// Does this cookie string begin with the name we want?

if (cookie.substring(0, name.length + 1) == (name + '=')) {

cookieValue = decodeURIComponent(cookie.substring(name.length + 1));

break;

}

}

}

return cookieValue;

}

};

var map = {

':)': '<div class="emoIcon"/>',

'):': '<div class="emoIcon"/>',

':(': '<div class="emoIcon"/>',

'(:': '<div class="emoIcon"/>',

':]': '<div class="emoIcon"/>',

']:': '<div class="emoIcon"/>',

':[': '<div class="emoIcon"/>',

'[:': '<div class="emoIcon"/>',

'(-]': '<div class="emoIcon"/>',

'(-[': '<div class="emoIcon"/>',

')-[': '<div class="emoIcon"/>',

')-]': '<div class="emoIcon"/>',

':}': '<div class="emoIcon"/>',

'}:': '<div class="emoIcon"/>',

':{': '<div class="emoIcon"/>',

'{:': '<div class="emoIcon"/>',

'{+}': '<div class="emoIcon"/>',

'}-{': '<div class="emoIcon"/>',

'{-{': '<div class="emoIcon"/>',

'[+]': '<div class="emoIcon"/>',

'(+)': '<div class="emoIcon"/>',

'<->': '<div class="emoIcon"/>'

};

function chatHeartbeat(){

alert("smiles");

var itemsfound = 0;

if (windowFocus == false) {

var blinkNumber = 0;

var titleChanged = 0;

for (x in newMessagesWin) {

if (newMessagesWin[x] == true) {

++blinkNumber;

if (blinkNumber >= blinkOrder) {

document.title = x+' says...';

titleChanged = 1;

break;

}

}

}

if (titleChanged == 0) {

document.title = originalTitle;

blinkOrder = 0;

} else {

++blinkOrder;

}

} else {

for (x in newMessagesWin) {

newMessagesWin[x] = false;

}

}

for (x in newMessages) {

if (newMessages[x] == true) {

if (chatboxFocus[x] == false) {

//FIXME: add toggle all or none policy, otherwise it looks funny

$('#chatbox_'+x+' .chatboxhead').toggleClass('chatboxblink');

}

}

}

$.ajax({

type: "post",

url:"savechat.jsp?username="+username,

cache: false,

dataType: "user="+username,

contentType: "application/json",

success: function(data) {

alert("inside ajax");

$.each(data.items, function(i,item){

if (item) { // fix strange ie bug

chatboxtitle = item.f;

if ($("#chatbox_"+chatboxtitle).length <= 0) {

createChatBox(chatboxtitle);

}

if ($("#chatbox_"+chatboxtitle).css('display') == 'none') {

$("#chatbox_"+chatboxtitle).css('display','block');

restructureChatBoxes();

}

if (item.s == 1) {

item.f = username;

}

if (item.s == 2) {

$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxinfo">'+item.m+'</span></div>');

} else {

newMessages[chatboxtitle] = true;

newMessagesWin[chatboxtitle] = true;

$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">'+item.m+'</span></div>');

}

$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);

itemsfound += 1;

}

});

chatHeartbeatCount++;

if (itemsfound > 0) {

chatHeartbeatTime = minChatHeartbeat;

chatHeartbeatCount = 1;

} else if (chatHeartbeatCount >= 10) {

chatHeartbeatTime *= 2;

chatHeartbeatCount = 1;

if (chatHeartbeatTime > maxChatHeartbeat) {

chatHeartbeatTime = maxChatHeartbeat;

}

}

setTimeout('chatHeartbeat();',chatHeartbeatTime);

}});

}

function toggleChatBoxGrowth(chatboxtitle) {

if ($('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display') == 'none') {  

var minimizedChatBoxes = new Array();

if ($.cookie('chatbox_minimized')) {

minimizedChatBoxes = $.cookie('chatbox_minimized').split(/|/);

}

var newCookie = '';

for (i=0;i<minimizedChatBoxes.length;i++) {

if (minimizedChatBoxes[i] != chatboxtitle) {

newCookie += chatboxtitle+'|';

}

}

newCookie = newCookie.slice(0, -1)

$.cookie('chatbox_minimized', newCookie);

$('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display','block');

$('#chatbox_'+chatboxtitle+' .chatboxinput').css('display','block');

$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);

} else {

var newCookie = chatboxtitle;

if ($.cookie('chatbox_minimized')) {

newCookie += '|'+$.cookie('chatbox_minimized');

}

$.cookie('chatbox_minimized',newCookie);

$('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display','none');

$('#chatbox_'+chatboxtitle+' .chatboxinput').css('display','none');

}

}

function startChatSession(){  

$.ajax({

url: "session.jsp?username="+username,

type:'post',

cache: false,

//data:{}

dataType: "json",

success: function(data) {

username = data.username;

$.each(data.items, function(i,item){

if (item) { // fix strange ie bug

chatboxtitle = item.f;

if ($("#chatbox_"+chatboxtitle).length <= 0) {

createChatBox(chatboxtitle,1);

}

if (item.s == 1) {

item.f = username;

}

if (item.s == 2) {

$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxinfo">'+item.m+'</span></div>');

} else {

$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">'+item.m+'</span></div>');

}

}

});

for (i=0;i<chatBoxes.length;i++) {

chatboxtitle = chatBoxes[i];

$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);

setTimeout('$("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight);', 100); // yet another strange ie bug

}

setTimeout('chatHeartbeat();',chatHeartbeatTime);

}});

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote