﻿// 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 = 30;
var yOffset = -5;
function showPopupObj (targetObjectId , obj) {
    
    
	hideCurrentPopup2();
	if(obj == null)
	   return ;
	   
	var top = getTop(obj) ; ;
    var left = getLeft(obj) ;
    top += obj.offsetHeight ;
   var div = document.getElementById(targetObjectId) ;
	if(div != null)
	{
	    
	     var h = div.offsetHeight ;
	      var w = div.offsetWidth ;
	     var pageh = document.documentElement.clientHeight+document.documentElement.scrollTop ;
	     var pageW = document.documentElement.clientWidth +document.documentElement.scrollLeft ;
	     if(top + h >pageh )
	     {
	         top = pageh - h ;
	     }
	       if(left + w >pageW )
	     {
	         left = pageW - w ;
	     }
	   
	        
	}
	
	moveObject(targetObjectId, left, top);
	
	
	if( changeObjectVisibility(targetObjectId, 'visible') ) {
	    window.currentlyVisiblePopup = targetObjectId;
	    return true;
	} else {
	    return false;
	}
    
} 

function showPopupCenter (targetObjectId) {
    
    
	hideCurrentPopup2();
	// stop event from bubbling up any farther
	
	var newXCoordinate = document.documentElement.clientWidth/2 + ((document.documentElement.scrollLeft)?document.documentElement.scrollLeft:0);
	var newYCoordinate = document.documentElement.clientHeight/2 + ((document.documentElement.scrollTop)?document.documentElement.scrollTop:0);
    var div = document.getElementById(targetObjectId) ;
    if(div != null) 
    {

       newXCoordinate = newXCoordinate - div.offsetWidth/2 ;
     
       newYCoordinate = newYCoordinate -div.offsetHeight/2 ;

    
    }
    
 //    var newXCoordinate = (eventObj.pageX)?eventObj.pageX + xOffset:eventObj.x + xOffset + ((document.documentElement.scrollLeft)?document.documentElement.scrollLeft:0);

	moveObject(targetObjectId, newXCoordinate, newYCoordinate);
	
	
	if( changeObjectVisibility(targetObjectId, 'visible') ) {
	//alert(div.style.visibility) ;
	    window.currentlyVisiblePopup = targetObjectId;
	    return true;
	} else {
	    // we couldn't show the popup, boo hoo!
	    return false;
	}
    
} 
   function cutString(s)
   {
     var index = s.indexOf('px' , 0 ) ;
	 if(index > 0)
	   s = s.substring(0 , index) ;
	 return Number(s) ;
   }
   
function showPopupInIE(targetDiv,targetObjectId, eventObj)
{
     if(eventObj) {
	
	hideCurrentPopup2();

	eventObj.cancelBubble = true;
	
	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);
	newXCoordinate = newXCoordinate + getLeft(targetDiv) ;
	newYCoordinate = newYCoordinate + getTop(targetDiv) ;
	//alert(newXCoordinate + "," + newYCoordinate) ;
	moveObject(targetObjectId, newXCoordinate, newYCoordinate);

	if( changeObjectVisibility(targetObjectId, 'visible') ) {
	   
	    window.currentlyVisiblePopup = targetObjectId;
	    return true;
	} else {
	    return false;
	}
    } else {
	return false;
    }
}
function showPopup (targetObjectId, eventObj) {


       if(eventObj) {
	// hide any currently-visible popups
	hideCurrentPopup2();
	// stop event from bubbling up any farther
	eventObj.cancelBubble = true;
	
	var newXCoordinate = (eventObj.pageX)?eventObj.pageX + xOffset:eventObj.x + xOffset + ((document.documentElement.scrollLeft)?document.documentElement.scrollLeft:0);
	var newYCoordinate = (eventObj.pageY)?eventObj.pageY + yOffset:eventObj.y + yOffset + ((document.documentElement.scrollTop)?document.documentElement.scrollTop:0);
	//alert(eventObj) ;
	var div = document.getElementById(targetObjectId) ;
	if(div != null)
	{
	     //if(div.parentNode != null)
	     //   var height = div.parent
	     
	     var h = div.offsetHeight ;
	      var w = div.offsetWidth ;
	     var pageh = document.documentElement.clientHeight+document.documentElement.scrollTop ;
	     var pageW = document.documentElement.clientWidth +document.documentElement.scrollLeft ;
	     if(newYCoordinate + h >pageh )
	     {
	         newYCoordinate = pageh - h ;
	     }
	       if(newXCoordinate + w >pageW )
	     {
	         newXCoordinate = pageW - w ;
	     }
	   //  if(newYCoordinate + h >document.documentElement.clientHeight )
	   //     newYCoordinate = document.documentElement.clientHeight - h ;
	      
	        
	}
	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;
	    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 hideCurrentPopup2() {
    // note: we've stored the currently-visible popup on the global object window.currentlyVisiblePopup
    if(window.currentlyVisiblePopup) {
	changeObjectVisibility(window.currentlyVisiblePopup, 'hidden');
	window.currentlyVisiblePopup = false;
    }
}
function hideCurrentPopup() {
    // note: we've stored the currently-visible popup on the global object window.currentlyVisiblePopup
    /*if(window.currentlyVisiblePopup) {
	changeObjectVisibility(window.currentlyVisiblePopup, 'hidden');
	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
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);
}


function getTop(e){
var offset=e.offsetTop;
if(e.offsetParent!=null) offset+=getTop(e.offsetParent);
return offset;
}
//获取元素的横坐标
function getLeft(e){
var offset=e.offsetLeft;
if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);
return offset;
} 
