/**
 * PopupPreview animation support
 * author: Marc Rullo     copyright 2008 ABCNews Internet Ventures
 **/
var allPopupPreviewsOnPage = new Object();
var ppLastEl;
var reset=true;

pupIE = false;
if(typeof document.all!="undefined"){ if(typeof document.getElementById!="undefined"){ if(navigator.userAgent.toLowerCase().indexOf("msie 6")!=-1){ pupIE = true; }}}
pupImgSrc = '';
pupImg = (pupIE)?'http://a.abcnews.com/images/site/vortex/spacer.gif' : 'http://a.abcnews.com/assets/images/bg-pup_box.png'
imgSrcFilter = (pupIE)?' style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=http://a.abcnews.com/assets/images/bg-pup_box.png, sizingMethod=scale); position:absolute;top:0px;left:0px;" ' : ' style="position:absolute;top:0px;left:0px;"';
pupImgSrc += '<img src="'+pupImg+'" ';
pupImgSrc += imgSrcFilter;
pupImgSrc += ' alt="" width="302" height="127" border="0">';

var ppCont = document.createElement('div');
ppCont.style.position="absolute";
ppCont.style.visibility="hidden";
ppCont.style.zIndex = "-1";
//ppCont.className = "tooltip";
addOnload(function(){getBodyElement().appendChild(ppCont)});

var ppFadeH=function(val){
	if(val==0.9){
		unhidePopupPreview();
	}
	else if(val==0){
		hidePopupPreview();
	}
};//makeFadeHandler(function(){return ppCont;});
var ppAnIn = new Animation();
var ppZ = new Sequence();
ppZ.init = function(){
	if(reset){
		//setOpacity(ppCont,0);
	}
}
var ppFi = new Sequence();
ppFi.duration = 20;
ppFi.end=0.9;
ppFi.init = function(){
	document.onmousemove=null;
	if(window.lastPPabsTop!=null){
		updatePosition(window.lastPPabsTop,window.lastPPabsLeft);
	}
	
	//ppFi.start = getOpacity(ppCont);
};
ppFi.handler = ppFadeH;
var ppFo = new Sequence();
ppFo.duration = 20;
ppFo.start=0.9;
ppFo.end=0;
ppFo.handler = ppFadeH;
ppFo.init=function(){
	//ppFo.start = getOpacity(ppCont);
}
ppAnIn.addSequence(0,ppZ);
ppAnIn.addSequence(300,ppFi);
ppAnIn.addSequence(20000,ppFo);

var ppAnOut = new Animation();
var ppFoc = ppFo.clone();
ppFoc.init=function(){
	//ppFoc.start = getOpacity(ppCont);
}
ppFoc.callback= function(){
	ppLastEl=null;
	document.onmousemove=null;
	hidePopupPreview();
}
ppAnOut.addSequence(150,ppFoc);

function hidePopupPreview(){
	ppCont.style.visibility="hidden";
	ppCont.style.zIndex = "-1";
	ppCont.style.display="none";
}

function unhidePopupPreview(){
	ppCont.style.visibility="visible";
	ppCont.style.zIndex = "20000";
	ppCont.style.display="block";
}

function getPopupPreview(text){
	if(!allPopupPreviewsOnPage[text]){
		allPopupPreviewsOnPage[text] = new PopupPreviewImpl(text);
	}
	return allPopupPreviewsOnPage[text];
}

function movePP(evt){
if(!evt) var evt=event;
window.lastPPabsTop = absTop(evt);
window.lastPPabsLeft = absLeft(evt);
}

function updatePositionPP(absTop,absLeft){
	var minx = 0;
	var miny=0;
	var body = getBodyElement();
	var maxx = body.offsetWidth;
	var maxy = body.offsetHeight;
	ppCont.style.display="block";
	var width = ppCont.offsetWidth;
	var height = ppCont.offsetHeight;
	ppCont.style.display="none";
	var left = absLeft;
	var top = absTop+20;
	var pane = findPane(ppLastEl);
	if(!isEmpty(pane)){
		minx = calcPosition(pane.viewport,"Left");
		miny = calcPosition(pane.viewport,"Top");
		maxx = minx+pane.viewport.offsetWidth;
		maxy = miny+pane.viewport.offsetHeight;
	}
	if(left <minx){
		left = minx;
	}
	else if((left+width)>maxx){
		left = left-width;
		if(left < minx){
			left = maxx - width;
		}
	}	
	if(top<miny){
		top = miny;
	}
	else if((top+height)>maxy){
		top = absTop - height - 15;
		if(top < miny){
			top=miny;
		}
	}
	ppCont.style.left = left+"px";
	ppCont.style.top = top+"px";
}

function popupPreview(event,element,text){
	var popuppreview = getPopupPreview(text);
	
	if(element !=null && ppLastEl == element){
		reset=false;
	}
	else{
		reset=true;
	}
	ppAnIn.cancel();
	ppAnIn.reset();
	ppAnOut.cancel();
	ppLastEl = element;
	if(element != null){
		element.onmouseout = cancelPopupPreview;
	}
	if(reset){
		while(ppCont.firstChild != null){
			ppCont.removeChild(ppCont.firstChild);
		}
		ppCont.appendChild(popuppreview.div);
		window.lastPPabsTop = null;
		window.lastPPabsLeft = null;
		updatePositionPP(absTop(event),absLeft(event));
		document.onmousemove = movePP;
	}
	ppAnIn.run();
}

function cancelPopupPreview(event){
	if(ppLastEl != null){
		ppLastEl.onmouseout = null;
	}
	ppAnIn.cancel();
	ppAnOut.reset();
	ppAnOut.run();
}

function PopupPreviewImpl(text){
	this.text = text;
	this.div = document.createElement('div');
	this.div.className = "popuppreview";
	this.div.innerHTML= pupImgSrc + text;
}
