// Javascript functions for the homepage

// Global Variables

var ajax_controller_buttongallery = '/apps/photos/buttongallery/default_ajax.asp';

var dom = (document.getElementById) ? true : false;
var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ns4 = (document.layers && !dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;
 
var origWidth, origHeight;
if (ns4) {
	origWidth = window.innerWidth; origHeight = window.innerHeight;
	window.onresize = function() { if (window.innerWidth != origWidth || window.innerHeight != origHeight) history.go(0); }
}

if (nodyn) { event = "nope" }

var tipFollowMouse = true;	
var offX = 20;	// how far from mouse to show tip
var offY = -100; 
var tipFontFamily = "Verdana, arial, helvetica, sans-serif";
var tipFontSize = "8pt";
var tipFontColor= "#000000";
var tipBgColor= "#FFFFFF"; 
var tipBorderColor= "#0355A1";
var tipBorderWidth= 3;
var tipBorderStyle= "ridge";
var tipPadding= 4;
 
var startStr = '<table><tr><td align="center" width="100%"><img src="';
var midStr = '" border="0"></td></tr><tr><td valign="top">';
var endStr = '</td></tr></table>';
 
var tooltip, tipcss;
var t1,t2;	// for setTimeouts
var tipOn = false;	// check if over tooltip link
var mouseX, mouseY;
var messages = new Array();
var floatPosition = '';

 // ------------------------------------------------------------------------------

var buttonGallery = {

    render : function(vElementID,vFolderID,vCount,vThumbSize,vBorderColor,vMargin,vFloatPosition) {
	    v_callmethod = 'render';
	    strURL = ajax_controller_buttongallery + '?' + 'callmethod=' + v_callmethod
	    strURL = strURL + '&elementid=' + encodeURIComponent(vElementID);
	    strURL = strURL + '&folderid=' + encodeURIComponent(vFolderID);
	    strURL = strURL + '&count=' + encodeURIComponent(vCount);
	    strURL = strURL + '&thumbsize=' + encodeURIComponent(vThumbSize);
	    strURL = strURL + '&bordercolor=' + encodeURIComponent(vBorderColor);
	    strURL = strURL + '&margin=' + encodeURIComponent(vMargin);
	    
	    if (vFloatPosition) {
	        floatPosition = vFloatPosition;
	    }
	    
	    //alert(strURL); 
	    PassAjaxResponseToFunction(strURL, 'buttonGallery.renderReturn', 'null');
	    return true;
    },

    renderReturn : function(str_response) {
	    //alert('Response: ' + str_response);  
	    arr_response = str_response.split('||');
	    if ( arr_response[0] == '1') {
		    document.getElementById(arr_response[2]).innerHTML = arr_response[1];
		    arrImages = arr_response[3].split(',');
		    for (var i=0; i<arrImages.length; i++) {
		        messages[i] = new Array(arrImages[i],'','#ffffff','#000000');
		    }
            if (document.images) {
                var theImgs = new Array();
                for (var i=0; i<messages.length; i++) {
                theImgs[i] = new Image();
	                theImgs[i].src = messages[i][0];
                }
            }
	    } else {
		    alert(arr_response[1]);
	    }
	    return true;
    }

}

// --------------------------------------------------------------------------------

function initTip() {
	if (nodyn) return;
	tooltip = (ns4)? document.tipDiv.document: (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;
	tipcss = (ns4)? document.tipDiv: tooltip.style;
	if (ie4||ie5||ns5) {	// ns4 would lose all this on rewrites
		tipcss.fontFamily = tipFontFamily;
		tipcss.fontSize = tipFontSize;
		tipcss.color = tipFontColor;
		tipcss.backgroundColor = tipBgColor;
		tipcss.borderColor = tipBorderColor;
		tipcss.borderWidth = tipBorderWidth+"px";
		tipcss.padding = tipPadding+"px";
		tipcss.borderStyle = tipBorderStyle;
	}
	if (tooltip&&tipFollowMouse) {
		if (ns4) document.captureEvents(Event.MOUSEMOVE);
		document.onmousemove = trackMouse;
	}
}
 
/////////////////////////////////////////////////
//  doTooltip function
//			Assembles content for tooltip and writes 
//			it to tipDiv
/////////////////////////////////////////////////

function doTooltip(evt,num) {
	if (!tooltip) return;
	if (t1) clearTimeout(t1);	if (t2) clearTimeout(t2);
	tipOn = true;
	// set colors if included in messages array
	if (messages[num][2])	var curBgColor = messages[num][2];
	else curBgColor = tipBgColor;
	if (messages[num][3])	var curFontColor = messages[num][3];
	else curFontColor = tipFontColor;
	if (ns4) {
		var tip = '<table bgcolor="' + tipBorderColor + '" cellspacing="0" cellpadding="' + tipBorderWidth + '" border="0"><tr><td><table bgcolor="' + curBgColor + '" width="100%" cellspacing="0" cellpadding="' + tipPadding + '" border="0"><tr><td>'+ startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr + '</td></tr></table></td></tr></table>';
		tooltip.write(tip);
		tooltip.close();
	} else if (ie4||ie5||ns5) {
		var tip = startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr;
		tipcss.backgroundColor = curBgColor;
	 	tooltip.innerHTML = tip;
	}
	if (!tipFollowMouse) positionTip(evt);
	else t1=setTimeout("tipcss.visibility='visible'",100);
}
 
function trackMouse(evt) {
	//mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
	//mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
	
	var coords = getCorrectMousePosition(evt);
	mouseX = coords.x;
	mouseY = coords.y;
	
	if (tipOn) positionTip(evt);
}
 
/////////////////////////////////////////////////////////////
//  positionTip function
//		If tipFollowMouse set false, so trackMouse function
//		not being used, get position of mouseover event.
//		Calculations use mouseover event position, 
//		offset amounts and tooltip width to position
//		tooltip within window.
/////////////////////////////////////////////////////////////

function positionTip(evt) {
	/*
	if (!tipFollowMouse) {
		mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
		mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
	}
	*/
	
	var coords = getCorrectMousePosition(evt);
	mouseX = coords.x;
	mouseY = coords.y;
	
	// tooltip width and height
	var tpWd = (ns4)? tooltip.width: (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
	var tpHt = (ns4)? tooltip.height: (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;

	// document area in view (subtract scrollbar width for ns)
	var winWd = (ns4||ns5)? window.innerWidth-20+window.pageXOffset: document.body.clientWidth+document.body.scrollLeft;
	var winHt = (ns4||ns5)? window.innerHeight-20+window.pageYOffset: document.body.clientHeight+document.body.scrollTop;

	// check mouse position against tip and window dimensions
	// and position the tooltip 
	if ((mouseX+offX+tpWd)>winWd || floatPosition == 'left') 
		tipcss.left = (ns4)? mouseX-(tpWd+offX): mouseX-(tpWd+offX)+"px";
	else tipcss.left = (ns4)? mouseX+offX: mouseX+offX+"px";
	if ((mouseY+offY+tpHt)>winHt) 
		tipcss.top = (ns4)? winHt-(tpHt+offY): winHt-(tpHt+offY)+"px";
	else tipcss.top = (ns4)? mouseY+offY: mouseY+offY+"px";
	if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",100);
}
 
function hideTip() {
	if (!tooltip) return;
	t2=setTimeout("tipcss.visibility='hidden'",100);
	tipOn = false;
}
 
function getCorrectMousePosition(e) {
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	return {x:posx,y:posy}
}

window.onload = initTip;
 

