var	_ie5    = (document.getElementById && document.all); 
var	_ns6 	= (document.getElementById && !document.all); 
if(!isDefined(_debug))
    var _debug  = false;

function otFindTopLeft(ctrl)
{
	var topLeft		= new Object;
	topLeft.top		= 0;
	topLeft.left	= 0;
	if(!ctrl)
	{
		return topLeft;
	}
	else
	{
		topLeft.top		= parseInt(ctrl.offsetTop,10);
		topLeft.left	= parseInt(ctrl.offsetLeft,10);
		var parentCtrl	= ctrl.offsetParent;
		var	top			= 0;
		var	left		= 0;
		while(1)
		{
			if(!parentCtrl)
				break;
            top     = parseInt(parentCtrl.offsetTop,10);
			left    = parseInt(parentCtrl.offsetLeft,10);					
    		topLeft.top		+= top;
	    	topLeft.left	+= left;
            parentCtrl	= parentCtrl.offsetParent;
		}
		return topLeft;
	}
}

function otFindParentDiv(ctrl)
{
	if(!ctrl)
	{
		return null;
	}
	else
	{
		var parentCtrl		= (_ns6 ? ctrl.parentNode : ctrl.parentElement);
		var sType			= new String("");
		while(1)
		{
			if(!parentCtrl)
				break;
	        sType				= parentCtrl.tagName;
			sType				= sType.toLowerCase();
			if( sType == "div")
			{
				return parentCtrl;
				break;
			}
			parentCtrl		= (_ns6 ? parentCtrl.parentNode : parentCtrl.parentElement);
		}
		return null;
	}
}

function isElemCalc(ctrl)
{
    if(ctrl)
    {
        var sType = new String(ctrl.tagName);
        sType = sType.toLowerCase();
        //ERROR IN DOM TR CANNOT BE USED WITH TR
        if( 
            sType == "td"       || 
            sType == "tr"       || 
            sType == "tbody"    || 
            sType == "input"    || 
            sType == "select"   ||
            sType == "table"    ||
            sType == "div"      ||
            sType == "a"        ||
            sType == "img"      ||
            sType == "span"     ||
            sType == "textarea")  
            return true;
        else
        {
            alert(ctrl.offsetLeft + ' ' + sType);
            return false;
        }
    }       
    else
        return false;
}

function otCancelEvent(e)
{
    if(_ns6)
    {
        if(e.preventDefault)
        {    
            e.preventDefault();
            e.stopPropagation();
        }
    }
    else
    {
		if(!e)
            e = window.event;
        if(e)
        {   
            e.cancelBubble 	= true;
		    e.returnValue 	= false;
        }
    }
}

function otGoTo(form, iId)
{
	try
	{
		__doPostBack("OTANCHORCALL", iId);
	}
	catch(e)
	{
		var theform;
		if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) 
		{
			theform = document.Form1;
		}
		else 
		{
			theform = document.forms["Form1"];
		}
		if(theform.__EVENTTARGET)
        {
            theform.__EVENTTARGET.value		= form;
		    theform.__EVENTARGUMENT.value	= iId;
		    theform.submit();
        }
		else
        {
            alert("There are no events on this page - so NET did not place a Post Back");
		    return false;
        }
	}	
	return true;
}

function otHideSelects(e,fShowHide, div)
{
	var oColl   = document.getElementsByTagName("select");
	var firstC	= null;
	var	secC	= null;
	var	cWidth	= 0;
	var	cHeight	= 0;
	var	dWidth	= 0;
	var	dHeight	= 0;
    var tmpColl = null;
	if(parseInt(fShowHide,10) == 0)
	{
		firstC	= otFindTopLeft(div);
        if(div.getAttribute("isMenu",false) == '1')
        {
            tmpColl     = div.getElementsByTagName("LABEL");
    		if(tmpColl)
                fHeight	= parseInt(firstC.top,10)   +    parseInt(tmpColl.length,10) * 20;
            else
                fHeight	= parseInt(firstC.top,10)   +    parseInt(div.offsetHeight,10);
        }
        else if(parseInt(div.getAttribute("iNavCnt",false),10) > 0)
        {
            fHeight	= parseInt(firstC.top,10)   +    parseInt(div.getAttribute("iNavCnt",false),10) * 25;
        }
        else
        {
            fHeight	= parseInt(firstC.top,10)   +    parseInt(div.offsetHeight,10);
        }
		fWidth	= parseInt(firstC.left,10)  +    parseInt(div.offsetWidth,10);
	}
    else
    {
        otHideDivs(e);
    }
    
    //START LOOKING AT SELECTS IN RECT
	for(var i = 0 ; i < oColl.length; i++)
	{
        ctrl    = oColl.item(i);
		secC	= otFindTopLeft(ctrl);
		sWidth	= parseInt(secC.left,10)    + parseInt(ctrl.offsetWidth,10);
		sHeight	= parseInt(secC.top,10)     + parseInt(ctrl.offsetHeight,10);
  		if(parseInt(fShowHide,10) == 0)
		{
			//RIGHT POINT AND TOP
			if(
					sWidth		>=  firstC.left && 
					secC.left	<   fWidth		&& 
					secC.top	>   firstC.top	&& 
					secC.top	<   fHeight		
			)
			{
				ctrl.style.visibility = "hidden";

			}
            else if(
					secC.top	>  firstC.top   && 
					secC.top	<  fHeight		&&
                    firstC.left >  secC.left    &&
                    (secC.left  <= firstC.left && sWidth >= fWidth)
            )
			{
				ctrl.style.visibility = "hidden";

			}
			if(_debug)
            {
                window.status = firstC.left + ' L ' + secC.left   +  ' W ' + fWidth + ' --> ' + sWidth   + ' -- ' +
                                firstC.top  + ' T ' + secC.top    +  ' H ' + fHeight + ' --> ' + sHeight;
            }
		}
		else
		{
    		var parentCtrl		= ctrl.offsetParent;
			if(parentCtrl)
            {
                //EXCLUDE SELECTS INSIDE A HIDDEN DIV
                if(parentCtrl.tagName == "DIV")
                {
                    if(parentCtrl.style.visibility == "visible" || parentCtrl.style.visibility == "")
                        ctrl.style.visibility = "visible";
                }
                else
                    ctrl.style.visibility = "visible";
            }
            else
                ctrl.style.visibility = "visible";
		}
	}
	return true;
}

function otShowHide(e)
{
    if(!e)
        e = window.event;
    if(e.keyCode == 27)
    {
        otHideDivs(e);
        otHideSelects(e,1, null);
    }
}

function otHideDivs(e)
{
    var oColl   = document.getElementsByTagName("div");
    //************************************
    //  ADD ALL DOM CREATED WINDOWS WE USE 
    //************************************
    var token   = new String("_otDivDate");
    var token1  = new String("_otDivFilter");
    var token2  = new String("otDivHelp");
    var token3  = new String("_otDivDateNav");
    var token4  = new String("_otDivEdit");
    //************************************
    var test    = new String();
    var ctrl    = null;
    for(var i = 0 ; i < oColl.length; i++)
    {
        ctrl    = oColl.item(i);
        test    = ctrl.getAttribute("id", false);
        if(test)
        {
            if(test.indexOf(token) != -1 || test.indexOf(token2) != -1 || test.indexOf(token3) != -1 || test.indexOf(token4) != -1)
                ctrl.style.visibility = "hidden";
            else if(test.indexOf(token1) != -1)
            {
                ctrl.style.visibility = "hidden";
                for(var j=0;j < ctrl.childNodes.length;j++)
					ctrl.childNodes(j).style.visibility = "hidden";
		    }
        }
    }
}

function SetTabView(fWhich)
{
	if(document.all['otDate'])
		document.all['otDate'].style.visibility = "hidden";
	var	i		= parseInt(0, 10);
	var	tagNum	= 0;
	var	ctrl;
	var	label;
	for(i=0; i < 10; i++)
	{
		tagNum	= parseInt(i, 10) +1;
		ctrl 		= eval("document.all['Tab" 	+ tagNum + "']");
		label 	= eval("document.all['tLabel" + tagNum + "']");
		if(!ctrl || !label)
			break;
		if(i== parseInt(fWhich, 10))
		{
			ctrl.style.visibility	= "visible";
			label.style.borderColor	= "#FF0000";
		}
		else
		{
			ctrl.style.visibility	= "hidden";
			label.style.borderColor	= "#000000";
		}
	}	
}			

function isDefined( variable)
{
    return (typeof(window[variable]) == "undefined")?  false: true;
}

function itohex(sNum) 
{
    var i = 0;    
    for(i = 0; i < sNum.length; i++) 
    {
        var chr = sNum.substring(i, i + 1);		
        if((isNaN(chr))||(chr == ' ')) 
        {
            return 0;
        }
    }
    if(sNum > 255) 
    {
        return 0;
    }
    else 
    {
        var base    = sNum / 16;
        var rem     = sNum % 16;
        base        = base - (rem / 16);
        var sBase   = convertToHex(base);
        var sRem    = convertToHex(rem);
        return sBase + '' + sRem;
   }
}

function convertToHex(x) 
{
    if((x >= 0) && (x <= 9))
        return x;
    else 
    {
        switch(x) 
        {
            case 10: return "A"; 
            case 11: return "B";  
            case 12: return "C";  
            case 13: return "D";  
            case 14: return "E";  
            case 15: return "F";  
        }
   }
}

function htoi(sNumber) 
{
    var ones = 0;
    var tens = convertToNum(sNumber.substr(0,1));
    if(tens == 'X') 
    {
        return 0;
    }
    if(sNumber.length > 1)
    {
        ones = convertToNum(sNumber.substr(1,1));
    }
    if(ones == 'X') 
    {
        return 0;
    }
    return (parseInt(tens,10)  * 16) + parseInt(ones,10);
}

function convertToNum(str) 
{
    if((str >= 0) && (str <= 9))
        return str;
    switch(str.toUpperCase()) 
    {
        case "A": return 10;
        case "a": return 10;
        case "B": return 11;
        case "b": return 11;
        case "C": return 12;
        case "c": return 12;
        case "D": return 13;
        case "d": return 13;
        case "E": return 14;
        case "e": return 14;
        case "F": return 15;
        case "f": return 15;
        default:  return 'X';
   }
}

function addLoadListener(fn)
{
	if (typeof window.addEventListener != 'undefined')
	{
		window.addEventListener('load', fn, false);
	}
	else if (typeof document.addEventListener != 'undefined')
	{
		document.addEventListener('load', fn, false);
	}
	else if (typeof window.attachEvent != 'undefined')
	{
		window.attachEvent('onload', fn);
	}
	else
	{
		return false;
	}
	
	return true;
}

function attachEventListener(target, eventType, functionRef, capture)
{
    if (typeof target.addEventListener != "undefined")
    {
        target.addEventListener(eventType, functionRef, capture);
    }
    else if (typeof target.attachEvent != "undefined")
    {
        target.attachEvent("on" + eventType, functionRef);
    }
    else
    {
        return false;
    }

    return true;
}
