
//---------------------------------------------------
// An Awesome jquery function that fixes ie's zIndex
// bug (not layering divs properly).
//---------------------------------------------------
$(function() {
	var zIndexNumber = 1000;
	$('div').each(function() {
		$(this).css('zIndex', zIndexNumber);
		zIndexNumber -= 10;
	});
});




//---------------------------------------------------
// Summary: sets the class of an element making it
//  an active nav element. Uses JQuery.
// (elementId): the id of the dom element to change.
//---------------------------------------------------
function setPrimaryNavElementActive(elementId) {
	$('#'+elementId).removeClass('navElement');
	$('#'+elementId).addClass('navElementActive');
}


//---------------------------------------------------
// Summary: writes out the current year.
//---------------------------------------------------
function writeCurrentYear() {
	var time = new Date();
	var current_year = time.getFullYear();
	document.write(current_year);
}


//---------------------------------------------------
// Toggles the visiblity of a faq link
//---------------------------------------------------
function showHideFaqDescription(faqId) {

	if ($("#"+faqId).is(".faqDescription")) 
	{
		$("#"+faqId).removeClass("faqDescription");
		$("#"+faqId).addClass("faqDescriptionVisible");
	}
	else {
		$("#"+faqId).removeClass("faqDescriptionVisible");
		$("#"+faqId).addClass("faqDescription");
	}	
}

//---------------------------------------------------
// Sets the css display of the specified element to
// visible.
//---------------------------------------------------
function showElement(elementId) {
    $('#'+elementId).css("display", "block");
}

//---------------------------------------------------
// Sets the css display of the specified element to
// none.
//---------------------------------------------------
function hideElement(elementId) {
    $('#'+elementId).css("display", "none");
}

//---------------------------------------------------
//  Removes all classes from the specified element
//  and then adds a specified class.
//---------------------------------------------------
function changeClass(elementId, newClass) {
    $("#"+elementId).removeClass();
    $("#"+elementId).addClass(newClass);
}

//---------------------------------------------------
//  Hides a specified page of a specified demo
//  diagram
//---------------------------------------------------
function hideDemoPage(methodPrefix, pageNumber) {
    hideElement(methodPrefix+"Image"+pageNumber);
    hideElement(methodPrefix+"Description"+pageNumber);
    changeClass(methodPrefix+"PageIcon"+pageNumber,"demoPageIcon");
}

//---------------------------------------------------
//  Shows a specified page of a specified demo
//  diagram
//---------------------------------------------------
function showDemoPage(methodPrefix, pageNumber) {
    showElement(methodPrefix+"Image"+pageNumber);
    showElement(methodPrefix+"Description"+pageNumber);
    changeClass(methodPrefix+"PageIcon"+pageNumber,"demoPageIconFilled");
}

//---------------------------------------------------
// Hides/shows the elements required to move the
// specified demo diagram to the next panel.
//
// methodPrefix: the prefix such as 'demoMethod1' 
//   that is at the beginning of all names.
// totalPages: the total number of diagram panel pages
//---------------------------------------------------
function demoMethodNext(methodPrefix, totalPages) {
    var pageNum = parseInt($("#"+methodPrefix+"Container").attr("class"));
    
    var currentPage = pageNum
    var nextPage = pageNum+1;

    if(nextPage <= totalPages) {
        hideDemoPage(methodPrefix, currentPage);
        showDemoPage(methodPrefix, nextPage);
        changeClass(methodPrefix+"Container", nextPage+'');
    }
    else if(nextPage > totalPages) {
        hideDemoPage(methodPrefix, currentPage);
        showDemoPage(methodPrefix, 1);
        changeClass(methodPrefix+"Container", '1');
    }
}


//---------------------------------------------------
// Hides/shows the elements required to move the
// specified demo diagram to the prev panel.
//
// methodPrefix: the prefix such as 'demoMethod1' 
//   that is at the beginning of all names.
// totalPages: the total number of diagram panel pages
//---------------------------------------------------
function demoMethodPrev(methodPrefix, totalPages) {
    var pageNum = parseInt($("#"+methodPrefix+"Container").attr("class"));
    
    var currentPage = pageNum
    var prevPage = pageNum-1;

    if(prevPage > 0) {
        hideDemoPage(methodPrefix, currentPage);
        showDemoPage(methodPrefix, prevPage);
        changeClass(methodPrefix+"Container", prevPage+'');
    }
    else if(prevPage == 0) {
        hideDemoPage(methodPrefix, currentPage);
        showDemoPage(methodPrefix, totalPages);
        changeClass(methodPrefix+"Container", totalPages+'');
    }
}

















