// Filename: goalrewards.js



var sUserAgent = navigator.userAgent;
var fAppVersion = parseFloat(navigator.appVersion);

function compareVersions(sVersion1, sVersion2) {

    var aVersion1 = sVersion1.split(".");
    var aVersion2 = sVersion2.split(".");
    
    if (aVersion1.length > aVersion2.length) {
        for (var i=0; i < aVersion1.length - aVersion2.length; i++) {
            aVersion2.push("0");
        }
    } else if (aVersion1.length < aVersion2.length) {
        for (var i=0; i < aVersion2.length - aVersion1.length; i++) {
            aVersion1.push("0");
        }    
    }
    
    for (var i=0; i < aVersion1.length; i++) {
 
        if (aVersion1[i] < aVersion2[i]) {
            return -1;
        } else if (aVersion1[i] > aVersion2[i]) {
            return 1;
        }    
    }
    
    return 0;
}


var isOpera = sUserAgent.indexOf("Opera") > -1;
var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false;

if (isOpera) {
    var fOperaVersion;
    if(navigator.appName == "Opera") {
        fOperaVersion = fAppVersion;
    } else {
        var reOperaVersion = new RegExp("Opera (\\d+\\.\\d+)");
        reOperaVersion.test(sUserAgent);
        fOperaVersion = parseFloat(RegExp["$1"]);
    }

    isMinOpera4 = fOperaVersion >= 4;
    isMinOpera5 = fOperaVersion >= 5;
    isMinOpera6 = fOperaVersion >= 6;
    isMinOpera7 = fOperaVersion >= 7;
    isMinOpera7_5 = fOperaVersion >= 7.5;
}

var isKHTML = sUserAgent.indexOf("KHTML") > -1 
              || sUserAgent.indexOf("Konqueror") > -1 
              || sUserAgent.indexOf("AppleWebKit") > -1; 
              
var isMinSafari1 = isMinSafari1_2 = false;
var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false;

if (isKHTML) {
    isSafari = sUserAgent.indexOf("AppleWebKit") > -1;
    isKonq = sUserAgent.indexOf("Konqueror") > -1;

    if (isSafari) {
        var reAppleWebKit = new RegExp("AppleWebKit\\/(\\d+(?:\\.\\d*)?)");
        reAppleWebKit.test(sUserAgent);
        var fAppleWebKitVersion = parseFloat(RegExp["$1"]);

        isMinSafari1 = fAppleWebKitVersion >= 85;
        isMinSafari1_2 = fAppleWebKitVersion >= 124;
    } else if (isKonq) {

        var reKonq = new RegExp("Konqueror\\/(\\d+(?:\\.\\d+(?:\\.\\d)?)?)");
        reKonq.test(sUserAgent);
        isMinKonq2_2 = compareVersions(RegExp["$1"], "2.2") >= 0;
        isMinKonq3 = compareVersions(RegExp["$1"], "3.0") >= 0;
        isMinKonq3_1 = compareVersions(RegExp["$1"], "3.1") >= 0;
        isMinKonq3_2 = compareVersions(RegExp["$1"], "3.2") >= 0;
    } 
    
}

var isIE = sUserAgent.indexOf("compatible") > -1 
           && sUserAgent.indexOf("MSIE") > -1
           && !isOpera;
           
var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIE6 = false;

if (isIE) {
    var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
    reIE.test(sUserAgent);
    var fIEVersion = parseFloat(RegExp["$1"]);

    isMinIE4 = fIEVersion >= 4;
    isMinIE5 = fIEVersion >= 5;
    isMinIE5_5 = fIEVersion >= 5.5;
    isMinIE6 = fIEVersion >= 6.0;
}

var isMoz = sUserAgent.indexOf("Gecko") > -1
            && !isKHTML;

var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = false;

if (isMoz) {
    var reMoz = new RegExp("rv:(\\d+\\.\\d+(?:\\.\\d+)?)");
    reMoz.test(sUserAgent);
    isMinMoz1 = compareVersions(RegExp["$1"], "1.0") >= 0;
    isMinMoz1_4 = compareVersions(RegExp["$1"], "1.4") >= 0;
    isMinMoz1_5 = compareVersions(RegExp["$1"], "1.5") >= 0;
}

var isNS4 = !isIE && !isOpera && !isMoz && !isKHTML 
            && (sUserAgent.indexOf("Mozilla") == 0) 
            && (navigator.appName == "Netscape") 
            && (fAppVersion >= 4.0 && fAppVersion < 5.0);

var isMinNS4 = isMinNS4_5 = isMinNS4_7 = isMinNS4_8 = false;

if (isNS4) {
    isMinNS4 = true;
    isMinNS4_5 = fAppVersion >= 4.5;
    isMinNS4_7 = fAppVersion >= 4.7;
    isMinNS4_8 = fAppVersion >= 4.8;
}

var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") 
            || (navigator.platform == "Macintosh");

var isUnix = (navigator.platform == "X11") && !isWin && !isMac;

var isWin95 = isWin98 = isWinNT4 = isWin2K = isWinME = isWinXP = false;
var isMac68K = isMacPPC = false;
var isSunOS = isMinSunOS4 = isMinSunOS5 = isMinSunOS5_5 = false;

if (isWin) {
    isWin95 = sUserAgent.indexOf("Win95") > -1 
              || sUserAgent.indexOf("Windows 95") > -1;
    isWin98 = sUserAgent.indexOf("Win98") > -1 
              || sUserAgent.indexOf("Windows 98") > -1;
    isWinME = sUserAgent.indexOf("Win 9x 4.90") > -1 
              || sUserAgent.indexOf("Windows ME") > -1;
    isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1 
              || sUserAgent.indexOf("Windows 2000") > -1;
    isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1 
              || sUserAgent.indexOf("Windows XP") > -1;
    isWinNT4 = sUserAgent.indexOf("WinNT") > -1 
              || sUserAgent.indexOf("Windows NT") > -1 
              || sUserAgent.indexOf("WinNT4.0") > -1 
              || sUserAgent.indexOf("Windows NT 4.0") > -1 
              && (!isWinME && !isWin2K && !isWinXP);
} 

if (isMac) {
    isMac68K = sUserAgent.indexOf("Mac_68000") > -1 
               || sUserAgent.indexOf("68K") > -1;
    isMacPPC = sUserAgent.indexOf("Mac_PowerPC") > -1 
               || sUserAgent.indexOf("PPC") > -1;  
}

if (isUnix) {
    isSunOS = sUserAgent.indexOf("SunOS") > -1;

    if (isSunOS) {
        var reSunOS = new RegExp("SunOS (\\d+\\.\\d+(?:\\.\\d+)?)");
        reSunOS.test(sUserAgent);
        isMinSunOS4 = compareVersions(RegExp["$1"], "4.0") >= 0;
        isMinSunOS5 = compareVersions(RegExp["$1"], "5.0") >= 0;
        isMinSunOS5_5 = compareVersions(RegExp["$1"], "5.5") >= 0;
    }
}

//
// EventUtil class
//

var EventUtil = new Object();

EventUtil.addEventHandler = function( oTarget, sEventType, fnHandler )
{
	if( oTarget.addEventListener )
	{
		oTarget.addEventListener(sEventType, fnHandler, false );
	}
	else if( oTarget.attachEvent )
	{
		oTarget.attachEvent("on" + sEventType, fnHandler );
	}
	else
	{
		oTarget["on" + sEventType] = fnHandler;
	}
}

EventUtil.removeEventHandler = function( oTarget, sEventType, fnHandler )
{
	if( oTarget.removeEventListener )
	{
		oTarget.removeEventListener(sEventType, fnHandler, false );
	}
	else if( oTarget.detachEvent )
	{
		oTarget.detachEvent("on" + sEventType, fnHandler );
	}
	else
	{
		oTarget["on" + sEventType] = null;
	}
}


EventUtil.formatEvent = function(oEvent) 
{
	if( isIE && isWin ) 
	{
		oEvent.charCode = (oEvent.type == "keypress" ) ? oEvent.keyCode : 0;
		oEvent.eventPhase = 2;
		oEvent.isChar = (oEvent.charCode > 0 );
		oEvent.pageX = oEvent.clientX + document.body.scrollLeft;
		oEvent.pageY = oEvent.clientY + document.body.scrollTop;
		oEvent.preventDefault = function() 
		{
			this.returnValue = false;
		};
		if ( oEvent.type == 'mouseout' )
		{
			oEvent.relatedTarget = oEvent.toElement;
		}
		else if( oEvent.type == 'mouseover' )
		{
			oEvent.relatedTarget = oEvent.fromElement;
		}

		oEvent.stopPropagation = function() {
			this.cancelBubble = true;
		};

		oEvent.target = oEvent.srcElement;
		oEvent.time = (new Date).getTime();
	}
	return oEvent;
};

EventUtil.getEvent = function() {

	if (window.event )
	{
		return this.formatEvent(window.event);
	}
	else
	{
		return EventUtil.getEvent.caller.arguments[0];
	}
}

//
// TextUtil 
//

var TextUtil = new Object();

TextUtil.blockChars = function( oTextBox, oEvent )
{
	oEvent = EventUtil.formatEvent(oEvent);

	var sInvalidChars = oTextbox.getAttribute('invalidchars');
	var sChar = String.fromCharCode(oEvent.charCode);

	var bIsValidChar = sInvalidChars.indexOf(sChar) == -1;

	return bIsValidChar || oEvent.ctrlKey;
};


TextUtil.allowChars = function( oTextBox, oEvent )
{
	oEvent = EventUtil.formatEvent(oEvent);

	var sValidChars = oTextbox.getAttribute('validchars');
	var sChar = String.fromCharCode(oEvent.charCode);

	var bIsValidChar = sValidChars.indexOf(sChar) > -1;

	return bIsValidChar || oEvent.ctrlKey;
};

TextUtil.allowCharRange = function( oTextBox, oEvent )
{
	oEvent = EventUtil.formatEvent(oEvent);

	var sCharRange = oTextbox.getAttribute('charrange');
	var sChar = String.fromCharCode(oEvent.charCode);

	if( sCharRange == 'alpha' )
	{
		sValidChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	}
	else if( sCharRange == 'alphaupper' )
	{
		sValidChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	}
	else if( sCharRange == 'alphalower' )
	{
		sValidChars = 'abcdefghijklmnopqrstuvwxyz';
	}
	else if( sCharRange == 'digits' )
	{
		sValidChars = '0123456789';
	}
	else if( sCharRange == 'numeric' )
	{
		sValidChars = '-+.0123456789';
	}
	else if( sCharRange == 'alphanum' )
	{
		sValidChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
	}
	else if( sCharRange == 'printable' )
	{
		sValidChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~`@#$%^&*()_-+={[}]|\\:;\"\'<,>.?/';
	}

	var bIsValidChar = sValidChars.indexOf(sChar) > -1;

	return bIsValidChar || oEvent.ctrlKey;
}

TextUtil.checkNumericLimits = function(oTextBox )
{
	
	var sNumericLimit = oTextbox.getAttribute('numericlimit');

	var aLimits = sNumericLimitsplit( ":" )

	return  oTextBox.value >= aLimits[0] && oTextBox.value <= aLimits[1] ;
}

TextUtil.checkHasValue = function( oTextBox )
{
	sValue = oTextBox.value;
	if( sValue.length == 0 ) return 0;
	for( i=0; i<sValue.length; i++ )
	{
		if( sValue[0] != ' ' ) return 1;
	}
	return 0;
}

TextUtil.checkRegExp = function( oTextBox )
{

	var sRegExp = oTextBox.getAttribute('regex');
	var chkExp = new RegExp(sRegExp);
	return chkExp.test(oTextBox.value);
}

//
// Position 
//

function getObjectX( sId )
{
		pos = document.getElementById(sId).offsetLeft;
		tempEl = document.getElementById(sId).offsetParent;
		while( tempEl )
		{
			pos += tempEl.offsetLeft;
			tempEl = tempEl.offsetParent;
		}
		return pos;
}

function getObjectY( sId )
{
		pos = document.getElementById(sId).offsetTop;
		tempEl = document.getElementById(sId).offsetParent;
		while( tempEl )
		{
			pos += tempEl.offsetTop;
			tempEl = tempEl.offsetParent;
		}
		return pos;
}

// 
// Tool tips
//

var iTimeoutId;
var toDiv;
var posX;
var posY;
function startTip()
{
	toDiv.style.left = posX+'px'; 
	toDiv.style.top = posY+'px';
	toDiv.style.visibility = 'visible'; 
}

function showTip()
{
	toEvent = EventUtil.getEvent();
	posX = toEvent.clientX;
	posY = toEvent.clientY;
	toDiv = document.getElementById(toEvent.target.getAttribute('tip'));
	oContents = document.getElementById('contents');
	posX -= getObjectX('contents')+5;
	posY -= getObjectY('contents')+5;
	iTimeoutId=setTimeout( "startTip()", 1000 ); 
}


function hideTip()
{
	clearTimeout(iTimeoutId);
	oEvent = EventUtil.getEvent();
	oDiv = document.getElementById(oEvent.target.getAttribute('tip'));
	oDiv.style.visibility='hidden';
}


//
// Menu functions
//


var timerIds= new Array(10);
var curCol=0;

// This function clears any pending timeouts and displays the submenu.

function showSubMenu(menucolid) {
	sMenuColId = new String(menucolid);
	  if(timerIds[curCol])
	  {
	    window.clearTimeout(timerIds[curCol]);
	  }
	 	hideSubMenu();
	 	var oTds = document.getElementsByTagName("div");
	 	var nodeCnt = oTds.length;
		col = parseInt(sMenuColId.slice( 7 ));

	 	curCol = col;
	 	for( ndx=0; ndx<nodeCnt; ndx++ )
	 	{
			var oTd = oTds[ndx];
			var sId = new String(oTd.getAttribute("id"));
			if( sId.slice(0,11) == "submenuitem" )
			{
				col = parseInt(sId.slice( 11, sId.indexOf('_') ));
				row = parseInt(sId.slice( sId.indexOf('_')+1 ));
				if( col == curCol && row > 0 )
				{
			 		oTd.style.visibility='visible';
                                        oTd.style.display= 'block';


				}
		 	}
			if( sId.slice(0,7) == "submenu" )
			{
				col = parseInt(sId.slice( 7 ));
				if( col == curCol  )
				{
			 	//	oTd.style.visibility='visible';
                                //        oTd.style.zIndex='100';
				}
		 	}
		}
}

// This function changes the image of the menuitem with the focus

function highlightMenu(menuitemId)
{
   var oTd = document.getElementById(menuitemId);
	oTd.innerHTML = "<a href='"+oTd.getAttribute("href")+"' ><img src='"+
		oTd.getAttribute("highlight")+"' alt='"+oTd.getAttribute("alt")+"' border='0' ></a>";
}

// This function changes the color when a menuitem loses the focus

function normalMenu(menuItemId)
{
   var oTd = document.getElementById( menuItemId );
	oTd.innerHTML = "<a href='"+oTd.getAttribute("href")+"' ><img src='"+
		oTd.getAttribute("normal")+"' alt='"+oTd.getAttribute("alt")+"' border='0' ></a>";
}

// This function sets a delay before the submenu is hidden

function hideSubMenuDelay(menuColId) {
	sMenuColId = new String(menuColId);
	curCol = parseInt(sMenuColId.slice( 7 ));
   timerIds[curCol] = window.setTimeout('hideSubMenu()', 500 );
}

// This function hides the currently displayed submenu

function hideSubMenu() {
   var oTds = document.getElementsByTagName("div");
   var nodeCnt = oTds.length;
	for( ndx=0; ndx<nodeCnt; ndx++ )
	{
			var oTd = oTds[ndx];
			var sId = new String(oTd.getAttribute("id"));
			if( sId.slice(0,11) == "submenuitem" )
			{
				col = parseInt(sId.slice( 11, sId.indexOf('_') ));
				row = parseInt(sId.slice( sId.indexOf('_')+1 ));
				if( col == curCol && row > 0 )
				{
			 	        oTd.style.visibility='hidden';
                                        oTd.style.display='none';
				}
		 }
		if( sId.slice(0,7) == "submenu" )
		{
			col = parseInt(sId.slice( 7 ));
			if( col == curCol  )
			{
		 	//	oTd.style.visibility='hidden';
                        //        oTd.style.zIndex='1';
			}

		 }
	 }
}

//
// Utility for find labels 
//


function getLabelByFor(sFor)
{
	aLabels = document.getElementsByTagName("label");
	for( i=0; i<aLabels.length; i++ )
	{
		if( aLabels[i].getAttribute('for') == sFor )
		{
			return aLabels[i];
		}
	}
	return null;
}


function fillnbsp( vStr )
{
	return vStr.replace( " ", "&nbsp;" );
}
