﻿
var fields = new Array();
var allFields = new Array();

window.onload = function() {
    var f = document.getElementsByTagName("form");
    for(var i=0; i<f.length; i++) {
        var fe = f[i];
        for( var j=0; j<fe.length; j++ ) {
            if( fe.elements[j].type == "select-one" || 
                fe.elements[j].type == "text" ) {
                fields[fields.length] = fe.elements[j];
                // if it's a select we add the onchange
                //if(fe.elements[j].type == "select-one")
                //{
                //    fe.elements[j].onchange = next;
                //}
            }
            else allFields[allFields.length] = fe.elements[j];
        }
    }
}

// our next function
function next(obj) {
    if( obj != null ) {
        for(var i=0; i<fields.length; i++) {
            if(fields[i].id == obj.id) {
                for(var g=i; g<fields.length-1; g++) {            
                    try {
                        if( fields[g+1] != undefined ) {                            
                            if( fields[g+1].style.display != "none" && 
                                fields[g+1].style.visibility != "hidden" ) {                               
                                try {
                                    if(document.selection ) {
                                        sel = fields[g+1].createTextRange();
                                        sel.moveEnd('character', fields[g+1].value.length);
                                        sel.moveStart('character', 0);
                                        sel.select();
                                    }
                                    else fields[g+1].setSelectionRange( 0, fields[g+1].value.length );
                                    fields[g+1].focus();
                                    return;                                    
                                }
                                catch(error) {
                                    // alert(error.value);
                                }
                            }
                        }
                    }
                    catch(err) { 
                    }
                }
                // if got to this point, that was the last control, return to the first one
                for(var g=0; g<fields.length-1; g++) {            
                    try {
                        if( fields[g] != undefined ) {                            
                            if( fields[g].style.display != "none" && 
                                fields[g].style.visibility != "hidden" ) {                               
                                try // combo-boxes don't have selection...
                                {
                                    if(document.selection ) // set the focus and stop looking
                                    {
                                        sel = fields[g].createTextRange();
                                        sel.moveEnd('character', fields[g].value.length);
                                        sel.moveStart('character', 0);
                                        sel.select();
                                    }
                                    else fields[g].setSelectionRange( 0, fields[g].value.length );
                                    
                                    // alert( 'id: ' + fields[g+1].id + ' display: ' +  fields[g+1].style.display + ' visible: ' + fields[g+1].style.visibility );
                                    fields[g].focus();
                                    return;                                    
                                }
                                catch(error)
                                {
                                    // alert(error.value);
                                }
                            }
                        }
                    }
                    catch(err)
                    { 
                    }
                }
            }
        }
    }
}

// our next function
function active(obj) {
    if( obj != null ) {
        // walk through the array to find the next field
        for(var i=0; i<fields.length; i++) {
            // we've found the select box we're on
            if(fields[i].id == obj.id) {
                // check if there is a next field
                for(var g=i; g<fields.length-1; g++) {           
                    try {
                        if( fields[g+1] != undefined ) {
                            if( fields[g+1].style.display != "none" && 
                                fields[g+1].style.visibility != "hidden" ) {
                                //alert( fields[g+1].id );
                                return fields[g+1];
                            }
                        }
                    }
                    catch(err) { 
                        /*alert( fields[g+1].id );*/
                    }
                }
            }
        }
    }
    return null;
}

function getposOffset(what, offsettype) {
    var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
    var parentEl=what.offsetParent;
    while (parentEl!=null) {
      totaloffset = (offsettype=="left") ? totaloffset+parentEl.offsetLeft + 10 : totaloffset+parentEl.offsetTop;
      parentEl = parentEl.offsetParent;
    }
    return totaloffset;
}

function iecompattest() {
    return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}
    
function clearbrowseredge(dropmenuobj, obj, whichedge) {
    var edgeoffset=(whichedge=="rightedge")? parseInt(horizontal_offset)*-1 : parseInt(vertical_offset)*-1
    if (whichedge=="rightedge")
    {
        var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
        dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
        if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
            edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
    }
    else
    {
        var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
        dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
        if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure)
        edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
    }
    return edgeoffset
}

var arrCmbHidden = new Array();
var arrCmbDisabled = new Array();
function hideComboBoxes(obj)
{
    var f = document.getElementsByTagName("form");
    for(var i=0; i<f.length; i++)
    {
        var fe = f[i];   
        for(var j=0; j<fe.length; j++)
        {
            if(fe.elements[j].type == "select-one")
            {
                if( fe.elements[j].style.visibility == "visible" || fe.elements[j].style.display == "block" || 
                   (fe.elements[j].style.visibility == "" && fe.elements[j].style.display == "")  ) {
                    
                    var x = findPosX(fe.elements[j]);
                    var y = findPosY(fe.elements[j]);
                    var h = fe.elements[j].offsetHeight;
                    var w = fe.elements[j].offsetWidth;                    

                    var left = findPosX(obj);
                    var top = findPosY(obj);
                    var height = obj.offsetHeight;
                    var width = obj.offsetWidth;
                    
                    //alert( "x:" + x + " y:" + y + " w:" + w + " h:" + h + "\n" +
                    //       "x:" + left + " y:" + top + " w:" + width + " h:" + height + "\n" );
                                                            
                    if( (x+w >= left && x <= left+width) && (y+h >= top && y <= top+height) ) {
                            arrCmbHidden[arrCmbHidden.length] = fe.elements[j];
                            document.getElementById(fe.elements[j].id).blur();
                            document.getElementById(fe.elements[j].id).style.visibility = "hidden";
                    }
                    else {
                            arrCmbDisabled[arrCmbDisabled.length] = fe.elements[j];                    
                            document.getElementById(fe.elements[j].id).blur();
                            document.getElementById(fe.elements[j].id).disabled = true;
                    }
                }
            }
        }
    }
}

function showComboBoxes()
{
     for(var i=0; i<arrCmbHidden.length; i++)
     {
        arrCmbHidden[i].style.visibility = "visible";
     }
     for(var i=0; i<arrCmbDisabled.length; i++)
     {
        arrCmbDisabled[i].disabled = false;
     }     
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
