This is a bit of a mess and there is a lot going on here. I wonder if my jQuery files are working 100%. I just tried to update to 1.7. Why would this work in IE and not FF.
Thanks very much for taking a look.
Code:
var mainTitle = document.title;
var course_name;
var block_text;
var pages_arr = [];
var defaultBlockTitle;
var current_pg_ind = 0;
var contentDiv_id = "contentContainer";
var isParsed = false; // failsafe for stupid IE
var jxml;
var glossaryOpen_b = false;
var popup_w = 420;
var popup_h = 360;
var popup_rad = 20;
var moduleData_url;
$(document).ready(function(){
var path = getModuleDataUrl();
$.get(path, function(success)
{
jxml = $.xml2json(success);
parseJSON();
init();
});
});
////////////////////////////////////////////////////////////////////////////////////////////////
//dev:
function dev(msg) { alert("dev :: \n\n" + msg); }
////////////////////////////////////////////////////////////////////////////////////////////////
// communication with Console:
function thisMovie(movieName)
{
//artf2008 IE 9 reverts to following web standards more closely. Parse the version string and check the number for testing.
//Fetching number only and testing as integer so hopefully this patch can last more than one version if needed.
var ver = navigator.appVersion;
var ptr = ver.indexOf("MSIE")+5;
var chunk = ver.slice(ptr,ptr+4);
var vernum = chunk.slice(0,chunk.indexOf("."));
vernum = vernum*1;
if (navigator.appName.indexOf("Microsoft") != -1 && vernum < 9) { return window[movieName] } else { return document[movieName] }
}
/*function initConsole()
{
var c = thisMovie(consol_name);
if (c == undefined)
{
//alert("ERROR :: Consol.swf is undefined. :: vtang2.js :: initConsol");
} else if (consolIsReady && (pages_arr.length > 0)) {
if (consolInit_int != "")
{
window.clearInterval(consolInit_int);
consolInit_int = "";
}
var ind = parseInt(current_pg_ind) + 1;
c.initLocation(pages_arr, ind);
} else {
if (consolInit_int == "")
{
consolInit_int = window.setInterval(function()
{
initConsole();
}, 1000);
}
}
}*/
/*function onConsolReady()
{
//alert("onConsolReady");
consolIsReady = true;
}*/
function requestPage(page_ind)
{
hidePup(); //Hide the new popup. MH
hideGlossary();
resetPageEle();
var req = pages_arr[page_ind].url;
var title = pages_arr[page_ind].title;
var block_title;
if (pages_arr[page_ind].block_title != undefined)
{
block_title = pages_arr[page_ind].block_title;
} else {
block_title = defaultBlockTitle;
}
loadDivHTML(contentDiv_id, req);
$("#pageTitle").text(title);
$("#blockTitle").text(block_title);
$("#courseTitle").text(course_name);
document.title = mainTitle; //This forces the tab title. Page errors will affect tab title if this is not set. 'mainTitle' var set at top of this script MH.
//current_pg_ind = parseInt(page_ind);
bookmark();
checkClassification(); //Call the function to check content classification. Must be turned off when not needed MH.
}
function setGlossLinkListeners()
{
/*$('#contentContainer a.glossaryLink').each(function() {
alert('this will alert for every li found.');
}); */
$('#contentContainer a.glossaryLink').on('hover', function(){
onRollOverPULink();
});
/*$('a.glossaryLink').live("hover", function(event){
alert("WTF");
});
.onmouseout(function(event){;
onRollOutPULink(event);
}).click(function(event){
showHideGlossary();
})*/
}
function consolBtnClick(id)
{
switch (id)
{
case "glossary" :
showHideGlossary();
break;
case "index" :
//alert ("code not written: vtang2.js: consolBtnClick(id = 'index')");
window.parent.close();
//top.scorm_commnunication_form.showHideNav();
break;
case "guide" :
openPopUpWindow('course_guide/pages/course_guide2.html', 'Course Guide', '750', '550');
//showHidePup('course_guide/pages/course_guide2.html', 'Course Guide', '750', '550');
break;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////
//glossary pod:
/*function showTerm(term)
{
thisMovie("GlossaryPod").showTerm(term);
//$('#glossaryContainer').css('zIndex', 131);
window.setTimeout(GPOverPU, 200);
}*/
/*function toggleGlossaryPodOpen()
{
alert("toggleGlossaryPodOpen :: glossaryOpen_b: " + glossaryOpen_b);
if (glossaryOpen_b)
{
//closeGlossaryPod();
} else {
openGlossaryPod();
}
}*/
function openGlossaryPod(term)
{
$("#glossaryContainer").removeClass('glossaryHide').addClass('glossaryShow');
GPOverPU();
if (!glossaryOpen_b)
{
document.getElementById("glossaryContainer").style.top="100px";
$("#glossaryContainer").draggable('enable');
}
if (term)
{
showTerm(term);
}
glossaryOpen_b = true;
}
/*function closeGlossaryPod()
{
//if (glossaryOpen_b)
//{
//$("#glossaryContainer").draggable('disable');
document.getElementById("glossaryContainer").style.top="-1000px";
//}
glossaryOpen_b = false;
}*/
function openPopUpWindow(content_path, pop_title, w, h)
{
//alert("In openPopUpWindow at least.");
var url = content_path;
newPopUp=window.open(url,'pop','width='+w+',height='+h+',screenX=150,screenY=100,top=100,left=150,resizable=1,scrollbars=1');
}
function getModuleDataUrl()
{
var vars_obj = getQueryVars();
moduleData_url = vars_obj.moduleData_url;
return moduleData_url;
}
function getQueryVars()
{
var url = document.location.toString();
var start = url.indexOf("?") + 1;
var vars_str = url.substring(start);
var vars_arr = vars_str.split('&');
var vars_obj = {};
/*var dev = "";*/
for (i=0; i<vars_arr.length; i++)
{
var_arr = vars_arr[i].split("=");
vars_obj[var_arr[0]] = var_arr[1];
//dev += "\r\r" + var_arr[0] + "=" + var_arr[1];
}
return vars_obj;
}
function parseJSON()
{
course_name = jxml.course_name;
//alert("course_name: " + course_name);
block_text = jxml.block_text;
defaultBlockTitle = jxml.defaultBlockTitle;
pages_arr = new Array();
var page_arr;
if (jxml.pages_arr)
{
//alert("parseJSON :: (jxml.pages_arr): true");
page_arr = jxml.pages_arr.page;
} else {
//alert("parseJSON :: (jxml.pages_arr): false");
page_arr = jxml.page;
}
for (var i=0; i<page_arr.length; i++)
{
var pg_obj = new Object();
pg_obj.title = page_arr[i].pageTitle;
pg_obj.url = page_arr[i].url;
pages_arr.push(pg_obj);
}
}
/*function initBlocktext()
{
if (block_text.length > 0)
{
document.getElementById("headerBlockContainer").style.display="inline";
$("#headerBlockContainer").text(block_text);
}
else
{
document.getElementById("headerBlockContainer").style.display="none";
}
}*/
function isIE()
{
return (navigator.appName == "Microsoft Internet Explorer");
}
function init() // called on page open/refresh
{
current_pg_ind = 0;
var bk = window.location.hash;
if (bk.length > 1)
{
current_pg_ind = parseInt(bk.substr(1));
}
if (current_pg_ind > pages_arr.length) { current_pg_ind = pages_arr.length; }
bookmark();
requestPage(current_pg_ind);
createScrubberTicks();
setScrubberIndex();
$("#dev_current_pages").text(parseInt(current_pg_ind) + 1); // Displays the current page number
$("#dev_pages_total").text("of " + pages_arr.length + " total"); // Displays total number of pages in lesson
glossaryOpen_b = false;
getFile('glossary/glossary_data.xml');
/*$("div.clickableGP").click(
function()
{
GPOverPU();
});
$("div.clickablePU").click(
function()
{
PUOverGP();
});*/
hidePup(); //New popup code. Removes popup on page load.
}
function reqFocusGP() {GPOverPU(); }// cach GP EI
function GPOverPU()
{
$('#glossaryContainer').css('zIndex', 131);
$('#layerPopup').css('zIndex', 101);
$('#glossaryLabelPopUp').css('zIndex', 132);
return false;
}
function PUOverGP()
{
$('#glossaryContainer').css('zIndex', 100);
$('#layerPopup').css('zIndex', 130);
$('#glossaryLabelPopUp').css('zIndex', 132);
return false;
}
function resetPageEle()
{
clearFlowDiv();
}
function loadDivHTML(div_id, content_src)
{
$("#" + div_id).load(content_src, bookmark);
setGlossLinkListeners(); //Each time new content is loaded this function sets listeners on PU links.
}
function bookmark()
{
if (navigator.appName == "Netscape")
{
if (current_pg_ind.length < 1)
{
//alert("bookmark: current_pg_ind.length < 1");
} else {
//alert("bookmark: current_pg_ind: " + current_pg_ind);
}
current_pg_ind = parseInt(current_pg_ind);
window.location.hash = current_pg_ind;//.toString();
return false;
}
}
function goToPrev()
{
var prev_ind = current_pg_ind - 1;
if (prev_ind > -1)
{
current_pg_ind = prev_ind;
requestPage(current_pg_ind);
$("#dev_current_pages").text(current_pg_ind + 1);
setScrubberIndex();
}
}
function goToNext()
{
var next_ind = current_pg_ind + 1;
if (next_ind <= pages_arr.length - 1)
{
current_pg_ind = next_ind;
requestPage(current_pg_ind);
$("#dev_current_pages").text(current_pg_ind + 1);
setScrubberIndex();
}
}
function clearFlowDiv() {
swfobject.removeSWF("flow");
swfobject.removeSWF("inPut");
swfobject.removeSWF("WCLC");
}
function clearInputSWF() {
swfobject.removeSWF("inPut");
}
/* This function creates the tick marks and the listeners for the console page scrubber. MH */
function createScrubberTicks(){
for(i=0; i< pages_arr.length; i++){
$('#scrubberList').append('<li><span id="' + pages_arr[i].title + '" index="' + i + '" class="scrubberBtn">'</span></li>');
}
$('.scrubberBtn')
.click(function(){
$(this).removeClass("scrubberBtn").addClass("scrubberBtnSelected").parent().siblings().children().removeClass('scrubberBtnSelected').addClass('scrubberBtn');
current_pg_ind = this.getAttribute("index");
$("#dev_current_pages").text(parseInt(current_pg_ind) + 1);
requestPage(current_pg_ind);
})
.mouseenter(function () {$('#page_display').html(this.id);})
.mouseleave(function () {$('#page_display').html("");});
}
function setScrubberIndex()
{
$("#scrubberList li span[index]").filter(function() { return $(this).attr('index'); }).each(function()
{
if($(this).attr("index") == parseInt(current_pg_ind))
{
$(this).removeClass("scrubberBtn").addClass("scrubberBtnSelected").parent().siblings().children().removeClass('scrubberBtnSelected').addClass('scrubberBtn');
return false;
}
});
}
function onRollOverPULink() //e, txt
{
alert("onRollOverPULink");
/*var target = document.getElementById('glossaryLabelPopUp');
target.style.display = 'inline';
target.innerHTML = getDef(txt);
// TODO: if undefined, don't popup
posPopupLabel(target, e);*/
}
function onRollOutPULink(e)
{
document.getElementById('glossaryLabelPopUp').style.display = 'none';
}
function onClickPULink()
{
alert("onClickPULink");
}