// Copyright © 2000 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.
// ********************************
// application-specific functions *
// ********************************

// store variables to control where the popup will appear relative to the cursor position
// positive numbers are below and to the right of the cursor, negative numbers are above and to the left
var xOffset = 100;
var yOffset = -200;

// function I'll use to get height
function getBrowserHeight(){
    if (window.innerHeight){
        return window.innerHeight;}	
    else if (document.documentElement && document.documentElement.clientHeight != 0){
        return document.documentElement.clientHeight;	}
    else if (document.body){return document.body.clientHeight;}		
        return 0; 
}

// function I'll use to get width
function getBrowserWidth(){
    if (window.innerWidth){
        return window.innerWidth;}	
    else if (document.documentElement && document.documentElement.clientWidth != 0){
        return document.documentElement.clientWidth;	}
    else if (document.body){return document.body.clientWidth;}		
        return 0; 
}

// In the next example the displayDivId is actually the name of a hidden div you want to view
function showPopup (targetObjectId, eventObj, displayDivId) {
    if(eventObj) {
	// hide any currently-visible popups
	hideCurrentPopup();
	// clear existing popup content
	document.getElementById(targetObjectId).innerHTML = '';
	// stop event from bubbling up any farther
	eventObj.cancelBubble = true;
	// move popup div to current cursor position 
	// (add scrollTop to account for scrolling for IE)
	//var newXCoordinate = (eventObj.pageX)?eventObj.pageX + xOffset:eventObj.x + xOffset + ((document.body.scrollLeft)?document.body.scrollLeft:0);
	//var newYCoordinate = (eventObj.pageY)?eventObj.pageY + yOffset:eventObj.y + yOffset + ((document.body.scrollTop)?document.body.scrollTop:0);
	var browserHeight = getBrowserHeight();
	var browserWidth = getBrowserWidth();
	var newYCoordinate = (browserHeight/2) - 150 + ((document.body.scrollTop)?document.body.scrollTop:0);
	var newXCoordinate = (browserWidth/2) - 250;
	moveObject(targetObjectId, newXCoordinate, newYCoordinate);
	// and make it visible
	if( changeObjectVisibility(targetObjectId, 'visible') ) {
	    // if we successfully showed the popup
	    // store its Id on a globally-accessible object
	    window.currentlyVisiblePopup = targetObjectId;
	    if(displayDivId) {
            //if (navigator.appVersion.indexOf("MSIE")!=-1) {
             //   var popup = document.getElementById(targetObjectId);
                //alert(popup.offsetHeight);                
              //  document.getElementById('popupFix').innerHTML = 'test';
                //'<iframe id="popupFix" src="javascript:false;" scrolling="no" frameborder="0" style="position:absolute;width:' + popup.offsetWidth + 'px;height:' + popup.offsetHeight + 'px;top:330;left:310;">test</iframe>';
           // }
            document.getElementById(targetObjectId).innerHTML = '<div class="popupTemplate"><div class=popupTemplateContent>' + document.getElementById(displayDivId).innerHTML + "</div><div class=popupTemplateFooter>[<a class=closeLink href='#' onclick='hideCurrentPopup(); return false;'>close this popup</a>]</div></div>";             
	    }
	    return true;
	} else {
	    // we couldn't show the popup, boo hoo!
	    return false;
	}
    } else {
	// there was no event object, so we won't be able to position anything, so give up
	return false;
    }
} // showPopup

function hideCurrentPopup() {
    // note: we've stored the currently-visible popup on the global object window.currentlyVisiblePopup
    if(window.currentlyVisiblePopup) {
    	changeObjectVisibility(window.currentlyVisiblePopup, 'hidden');

	    if (window.toggleFormElements) {
            for(j=0; j<window.toggleFormElements.length; j++) {
                for(i=0; i<document.forms[window.toggleFormElements[j]].elements.length; i++) {
                    document.forms[window.toggleFormElements[j]].elements[i].style.display = '';
                }
            }
        }
        
        window.currentlyVisiblePopup = false;
    }    
} // hideCurrentPopup



// ***********************
// hacks and workarounds *
// ***********************

// initialize hacks whenever the page loads
window.onload = initializeHacks;

// setup an event handler to hide popups for generic clicks on the document
// jlancaster disabled this functionality to make it so that dropdowns can initiate the popup function as well as normal links
//document.onclick = hideCurrentPopup;

function initializeHacks() {
    // this ugly little hack resizes a blank div to make sure you can click
    // anywhere in the window for Mac MSIE 5
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
	&& (navigator.platform.indexOf('Mac') != -1)
	&& getStyleObject('blankDiv')) {
	window.onresize = explorerMacResizeFix;
    }
    resizeBlankDiv();
    // this next function creates a placeholder object for older browsers
    createFakeEventObj();
}

function createFakeEventObj() {
    // create a fake event object for older browsers to avoid errors in function call
    // when we need to pass the event object to functions
    if (!window.event) {
	window.event = false;
    }
} // createFakeEventObj

function resizeBlankDiv() {
    // resize blank placeholder div so IE 5 on mac will get all clicks in window
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
	&& (navigator.platform.indexOf('Mac') != -1)
	&& getStyleObject('blankDiv')) {
	getStyleObject('blankDiv').width = document.body.clientWidth - 20;
	getStyleObject('blankDiv').height = document.body.clientHeight - 20;
    }
}

function explorerMacResizeFix () {
    location.reload(false);
}

// One nice thing to do will be to hide form elements that might be displaying over a popup.
function disableFormElements(formName) {
    if (typeof document.forms[formName] != 'undefined') {
        if (!window.toggleFormElements) { window.toggleFormElements = new Array(); }
        window.toggleFormElements.push(formName);
        for(i=0; i<document.forms[formName].elements.length; i++) {
            document.forms[formName].elements[i].style.display = 'none';
        }
    }
}