/* IMPORTANT: Put script after tooltip div or 
put tooltip div just before the closing body tag. */

var dom = (document.getElementById) ? true : false;
var is_ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var is_ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var is_ns4 = (document.layers && !dom) ? true : false;
var is_ie4 = (document.all && !dom) ? true : false;
var nodyn = (!is_ns5 && !is_ns4 && !is_ie4 && !is_ie5) ? true : false;

//resize fix for ns4
var origWidth, origHeight;
if (is_ns4) {
    origWidth = window.innerWidth; origHeight = window.innerHeight;
    window.onresize = function() { if (window.innerWidth != origWidth || window.innerHeight != origHeight) history.go(0); }
}

//avoid error of passing event object in older browsers
if (nodyn) { event = "nope" }

///////////////////////  CUSTOMIZE HERE   ////////////////////
//settings for tooltip 
//Do you want tip to move when mouse moves over link?
var tipFollowMouse= true; 
//Be sure to set tipWidth wide enough for widest image
var tipWidth = 190;
var offX= 20; // how far from mouse to show tip
var offY= 12; 
var tipFontFamily= "Verdana, arial, helvetica, sans-serif";
var tipFontSize= "8pt";
//set default text color and background color for tooltip here
//individual tooltips can have their own (set in messages arrays)
//but don't have to
var tipFontColor= "#000000";
var tipBgColor= "#FFFFFF";//"#DDECFF"; 
var tipBorderColor= "#CCCCCC";
var tipBorderWidth= 3;
var tipBorderStyle= "ridge";
var tipPadding= 4;

//tooltip content goes here (image, description, optional bgColor, optional textcolor)
var messages = new Array();
var regionMsg = new Array();
////////////////////END OF CUSTOMIZATION AREA  ///////////////////

//to layout image and text, 2-row table, image centered in top cell
//these go in var tip in doTooltip function
//startStr goes before image, midStr goes between image and text
var startStr = '<table width="' + tipWidth + '"><tr><td align="center" width="100%">';
var midStr = '</td></tr><tr><td valign="top">';
var endStr = '</td></tr></table>';

////////////////////////////////////////////////////////////
//initTip - initialization for tooltip.
//Global variables for tooltip. 
//Set styles for all but ns4. 
//Set up mousemove capture if tipFollowMouse set true.
////////////////////////////////////////////////////////////
var tooltip, tipcss;
function initTip() {
    if (nodyn) return;
    tooltip = (is_ns4)? document.tipDiv.document: (is_ie4)? document.all['tipDiv']: (is_ie5||is_ns5)? document.getElementById('tipDiv'): null;
    tipcss = (is_ns4)? document.tipDiv: tooltip.style;
    if (is_ie4||is_ie5||is_ns5) { // ns4 would lose all this on rewrites
        tipcss.width = tipWidth+"px";
        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 (is_ns4) {document.captureEvents(Event.MOUSEMOVE);}
        document.onmousemove = trackMouse;
    }
}

addLoadEvent(initTip);

/////////////////////////////////////////////////
//doTooltip function
// Assembles content for tooltip and writes 
// it to tipDiv
/////////////////////////////////////////////////
var t1,t2; // for setTimeouts
var tipOn = false; // check if over tooltip link
function doTooltip(type,evt,num) {
if (!tooltip) return;
    if (t1) clearTimeout(t1); if (t2) clearTimeout(t2);
    tipOn = true;
    curBgColor = tipBgColor;
    curFontColor = tipFontColor;
    if (is_ns4) {
        	var tip = '<table bgcolor="' + tipBorderColor + '" width="' + tipWidth + '" 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 (is_ie4||is_ie5||is_ns5) {
       
       if (type == 'region') {
       	var tip = startStr + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + regionMsg[num][0] + '</span>' + endStr;
       } else {
        var tip = buildTip(type,num);//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);
}

var mouseX, mouseY;
function trackMouse(evt) {
    if (document.documentElement && document.documentElement.scrollTop) {
        mouseX = (is_ns4||is_ns5)? evt.pageX: window.event.clientX + document.documentElement.scrollLeft;
        mouseY = (is_ns4||is_ns5)? evt.pageY: window.event.clientY + document.documentElement.scrollTop;
    } else {
        mouseX = (is_ns4||is_ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
        mouseY = (is_ns4||is_ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
    }
    if (tipOn) {
        positionTip(evt);
        shimit(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 = (is_ns4||is_ns5) ? evt.pageX : window.event.clientX + document.body.scrollLeft;
    mouseY = (is_ns4||is_ns5) ? evt.pageY : window.event.clientY + document.body.scrollTop;
}

// tooltip width and height
var tpWd = (is_ns4) ? tooltip.width: (is_ie4||is_ie5) ? tooltip.clientWidth : tooltip.offsetWidth;
var tpHt = (is_ns4) ? tooltip.height: (is_ie4||is_ie5) ? tooltip.clientHeight : tooltip.offsetHeight;

// document area in view (subtract scrollbar width for ns)
var winWd = (is_ns4||is_ns5) ? window.innerWidth-20+window.pageXOffset : document.body.clientWidth + document.body.scrollLeft;
var winHt = (is_ns4||is_ns5) ? window.innerHeight-20+window.pageYOffset : document.body.clientHeight + document.body.scrollTop;

// check mouse position against tip and window dimensions
// and position the tooltip 
//alert(document.documentElement.clientHeight);
if ((mouseX+offX+tpWd)>winWd) 
    tipcss.left = (is_ns4)? mouseX-(tpWd+offX): mouseX-(tpWd+offX)+"px";
else tipcss.left = (is_ns4)? mouseX+offX: mouseX+offX+"px";
if ((mouseY+offY+tpHt)>winHt) {
    tipcss.top = (is_ns4)? winHt-(tpHt+offY): winHt-(tpHt+offY)+"px";
} else { tipcss.top = (is_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;
    noshim()
}

//construct html to display as tooltip  --tricia
function buildTip(type,num){
    //alert("document.documentElement.scrollTop:" + document.documentElement.scrollTop +" document.documentElement.scrollLeft:"+document.documentElement.scrollLeft);
    var tip;
    var numDiscounts = 0;
    var startSpan = '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">';
    var midSpan = '</span><span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">';
    var endSpan = '</span>';
    var totalDiscount = messages[num][5];
    var yourPrice = messages[num][1];

	    tip =  midStr + startSpan  + "Price: " + messages[num][8]+ endSpan;
	    if (messages[num][2] != '' && messages[num][6] == 'HD' && messages[num][2] > 0){//hotDeal/promopercent
	      tip +=  midStr + startSpan + " Hot Deal Discount: " + midSpan + messages[num][2] + "%" + endSpan;
	      numDiscounts++;
	    }
	    if (messages[num][2] != '' && messages[num][6] == 'PR' && messages[num][2] > 0){//hotDeal/promopercent
	        tip +=  midStr + startSpan + " Promo Discount: " + midSpan + messages[num][2] + "%" + endSpan;
	        numDiscounts++;
	    }
	   if (messages[num][16] > '-1' && messages[num][15] == 'PC'){//coupon pc/percent
	   			tip+= midStr + startSpan + " Coupon Discount: " + midSpan + messages[num][14] +"%" + endSpan;
	   	    	numDiscounts++;
		}
	    if (messages[num][9] == 'true' && messages[num][10] > 0){//9-showMulticore/10-multicore percent
	        tip +=  midStr + startSpan + " Multi-Core Coefficient: " + midSpan + messages[num][10] + "%" + endSpan;
	        totalDiscount = messages[num][11];
	        yourPrice = messages[num][12];
	        numDiscounts++;
	    }
	    if (messages[num][3] > 0){//volume percent
	        tip +=  midStr + startSpan + " Volume Discount: " + midSpan + messages[num][3] + "%" + endSpan;
	        numDiscounts++;
	    }
	    if (messages[num][15] == 'DC' && messages[num][16] > '-1'){//coupon pc/percent
			tip+= midStr + startSpan + " Coupon Discount: " + midSpan + messages[num][14] +"%" + endSpan;
	    	numDiscounts++;
		}
	    if (messages[num][4] > 0){//partner percent
	      tip +=  midStr + startSpan + " Partner Discount: " + midSpan + messages[num][4] + "%" + endSpan;
	      numDiscounts++;
	    }
	    if (messages[num][5] != '' && numDiscounts > 1 && messages[num][5] > 0){//total percent
	      //tip +=  midStr + startSpan + " Total Compound Discount: " + midSpan + totalDiscount + "%" + endSpan;
	    } else {//total percent
	        //tip +=  midStr + startSpan + " Total Discount: " + midSpan + totalDiscount + "%" + endSpan;
	    }
	    tip += midStr + startSpan + " Your Price: " + midSpan + yourPrice + endSpan;
    
    return startStr + tip  + endStr;
}

function shimit(obj, evt){
    if (typeof shim=='undefined')
    return;
    var shimobj=document.getElementById('shim').style;
    var extra = tipPadding + tipBorderWidth;
    shimobj.height = tooltip.clientHeight + extra;
    shimobj.width = tooltip.clientWidth + extra;
    shimobj.left = mouseX + offX;
    shimobj.top = mouseY + offY;
    shimobj.zIndex=99
    shimobj.display='block';
}

function noshim(){
if (typeof shim=='undefined')
return;
setTimeout("document.getElementById('shim').style.display='none'", 100);
}

