
//var <% =me.id %>_ArrayVals = new Array();
//var <% =me.id %>_ArrayText = new Array();

//var m_selectedText;
var m_selectedIndex;
var m_txtwithfocus;
var m_lstwithfocus;
var m_btnwithfocus;
var m_keypressedoncontrol;
var m_currentctl;

function Cbo_Init(ctlname)
{
        var old = (window.onload) ? window.onload : function () {};
	window.onload = function () {old(); Cbo_OnLoad(ctlname)};
	//alert('init');
}

function Cbo_OnLoad(ctlname)
{
//alert('onload');
	var btn = document.getElementById(ctlname + "_combobutton");
	var txt = document.getElementById(ctlname + "_txtText");
//	alert(navigator.userAgent.substr(0,6));
//	alert(btn.offsetHeight + ', ' + txt.offsetHeight);*/
	if (btn) {
		if (btn.offsetHeight != txt.offsetHeight) {
			btn.style.height = txt.offsetHeight + "px";
			if (btn.offsetTop < txt.offsetTop) 
				btn.style.marginBottom = 0;
		}
	}
}

function Cbo_ClearSelection(ctlname)
{
	var lst = document.getElementById(ctlname + "_divList");
	var divs = lst.childNodes;
	var found = false;
	//alert(divs.length);
	for (var i=0; i<divs.length; i++) {
		//if (i < 2) {alert(Cbo_GetLineText(divs[i])); alert(txt.value); }
		if (divs[i].nodeType==1) {
			divs[i].style.backgroundColor = 'White';
			divs[i].style.color = 'Black';
		}
	}
}

/*function Cbo_SelectLine(line)
{
	line.style.backgroundColor = 'MidnightBlue';
	line.style.color = 'White';
}*/

function Cbo_HighlightLine(ctlname, index)
{
	var d = document.getElementById(ctlname + '_div_' + index);
	d.style.backgroundColor = 'MidnightBlue';
	d.style.color = 'White';
}

function Cbo_GetLineText(line)
{
	var s = '';
	if (line.innerText)
		s = line.innerText;
	else {
		s += line.innerHTML;
		/*var s2 = 'abc';
		var s3 = s2.replace('a','d');
		alert(s3);
		if (h.toString)
			s = h.toString();
		else
			s=h;*/
		s = Cbo_ConvertToText(s);
		//alert('line text: ' + s);
	}
	return s;
}

function Cbo_FindAndSelectLine(ctlname, s)
{
//alert('find');
	var lst = document.getElementById(ctlname + "_divList");
	var divs = lst.childNodes;
	var found = false;
	//alert(divs.length);
	Cbo_ClearSelection(ctlname);
	var arrT = Cbo_GetTextArray(ctlname);
	for (var i=0; i<arrT.length; i++) {
		//if (i < 2) {alert(Cbo_GetLineText(divs[i])); alert(txt.value); }
		//if (divs[i].nodeType==1)
			//if (Cbo_GetLineText(divs[i])==s) {
			if (arrT[i]==s) {	
				//Cbo_SelectLine(divs[i]);
				Cbo_HighlightLine(ctlname, i);
				found = true;
				break;
			}
	}
	//if (!found) Cbo_SelectLine(divs[0]);
//	if (found) alert('found');
	return found;
}

function Cbo_TextKeyUp(ctlname, depname, e)
{
	if (!e) e = window.event;
//	alert(e.keyCode);
	m_keypressedoncontrol = ctlname;
	var txt = document.getElementById(ctlname + "_txtText");
	var lst = document.getElementById(ctlname + "_divList");
	if (e.keyCode == 40 && Cbo_ListIsShowing(ctlname)) {
		Cbo_SetFocusToList(ctlname);
//		var divs = document.getElementsByName(ctlname + '_div');
		if (!Cbo_FindAndSelectLine(ctlname, txt.value)) {
			//Cbo_SelectLine(lst.childNodes[0]);
			Cbo_HighlightLine(ctlname, 0);
		}
		/*var divs = lst.childNodes;
		var found = false;
		for (var i=0; i<divs.length; i++) {
			if (Cbo_GetLineText(divs[i])==txt.value) {
				Cbo_SelectLine(divs[i]);
				found = true;
				break;
			}
		}
		if (!found) Cbo_SelectLine(divs[0]);*/
	}
	else {
		m_selectedIndex = "";
		Cbo_CallServer(ctlname, depname, txt.value) //, depvalue, deptext);
	
		Cbo_ShowList(ctlname);
	}
}

function Cbo_ButtonClick(ctlname, depname)
{
	//alert(ctlname);
	if (Cbo_ListIsShowing(ctlname))
		Cbo_HideList(ctlname);
	else {
		var txtbox = document.getElementById(ctlname + "_txtText");
		//var dep = document.getElementById(depname + "_txtText");
	
		//var depvalue='';
		//if (dep) depvalue = dep.value;
		//Cbo_CallServer(ctlname, txtbox.value, depvalue);
		Cbo_CallServer(ctlname, depname, '') //'', depvalue);
	
	//	alert('showlist');
		Cbo_ShowList(ctlname);
		txtbox.focus();
//		Cbo_SetFocusToList(ctlname);
	}
}

function Cbo_SetFocusToList(ctlname)
{
	var combolist = document.getElementById(ctlname + "_combolist");
	if (combolist.style.display != 'none') {
		var lst = document.getElementById(ctlname + "_divList");
		if (lst.style.display != 'none')
			if (lst.focus) lst.focus();
	}
}

function Cbo_GetClassName(ctlname)
{
	return eval(ctlname + '_GetClassName()');
}

function Cbo_GetMethodName(ctlname)
{
	return eval(ctlname + '_GetMethodName()');
}

function Cbo_GetValsArray(ctlname)
{
	return eval(ctlname + '_GetValsArray()');
}
	
function Cbo_GetTextArray(ctlname)
{
	return eval(ctlname + '_GetTextArray()');
}

function Cbo_CallServer(ctlname, depname, txt) //, depval, deptxt) 
{	
	//document.getElementById(ctlname + "_lblLoading").className = 'lblshow';
	//var txtBox = document.getElementById(ctlname + "_txtText");
	var depTxtBox = document.getElementById(depname + "_txtText");
	var depValBox = document.getElementById(depname + "_selectedvalue");
	var depval='';
	var deptxt='';
	if (depTxtBox) deptxt = depTxtBox.value;
	if (depValBox) depval = depValBox.value;
	var head = document.getElementsByTagName('head').item(0);	
	var old  = document.getElementById('lastLoadedCmds');	
	if (old) head.removeChild(old);	
	script = document.createElement('script');
	script.src = 'ComboSvrPg.aspx?txt=' + escape(txt) + '&class=' + Cbo_GetClassName(ctlname) + '&method=' + Cbo_GetMethodName(ctlname) + '&comboname=' + ctlname + '&depval=' + escape(depval) + '&deptxt=' + escape(deptxt);	
//	script.src = 'ComboSvrPg.aspx';
//	alert (script.src);
	script.type = 'text/javascript';	
	script.defer = true;	
	script.id = 'lastLoadedCmds';	
	void(head.appendChild(script));
}


function Cbo_ClearList(ctlname)
{
	var lst = document.getElementById(ctlname + "_divList");
	lst.value = '';
}

function Cbo_ListIsShowing(ctlname)
{
	var el = document.getElementById(ctlname + "_combolist");
//	el.className = 'listhide';
	return 	(el.style.display!='none');
}

function Cbo_HideList(ctlname)
{
	var el = document.getElementById(ctlname + "_combolist");
//	el.className = 'listhide';
	el.style.display='none';
}

function trim(str)
{
   return str.replace(/^\s*|\s*$/g,"");
}

function Cbo_GetPosition(o)    
{
    var fixBrowserQuirks = true;
    var top = 0;
    var left = 0;
    var parentNode = null;
    var offsetParent = null;
  
    offsetParent = o.offsetParent;

    var originalObject = o;
    var el = o; // "el" will be nodes as we walk up, "o" will be saved for offsetParent references
    while (el.parentNode!=null) {
      el = el.parentNode;
//      alert(el.id);
      if (el.offsetParent==null) {
      }
      else {
        var considerScroll = true;
        /*
        In Opera, if parentNode of the first object is scrollable, then offsetLeft/offsetTop already 
        take its scroll position into account. If elements further up the chain are scrollable, their 
        scroll offsets still need to be added in. And for some reason, TR nodes have a scrolltop value
        which must be ignored.
        */
        if (fixBrowserQuirks && window.opera) {
          if (el==originalObject.parentNode || el.nodeName=="TR") {
            considerScroll = false;
          }
        }
        if (considerScroll) {
          if (el.scrollTop && el.scrollTop>0) {
            top -= el.scrollTop;
          }
          if (el.scrollLeft && el.scrollLeft>0) {
            left -= el.scrollLeft;
          }
        }
      }
      // If this node is also the offsetParent, add on the offsets and reset to the new offsetParent
      if (el == offsetParent) {
        left += o.offsetLeft;
        if (el.clientLeft && el.nodeName!="TABLE") { 
          left += el.clientLeft;
        }
        top += o.offsetTop;
        if (el.id!='container1') // for new Office National site
        {
	    if (el.clientTop && el.nodeName!="TABLE") {
	      top += el.clientTop;
	    }
	        
	    o = el;
	    if (o.offsetParent==null) {
	      if (o.offsetLeft) {
	        left += o.offsetLeft;
	      }
	      if (o.offsetTop) {
	        top += o.offsetTop;
	      }
	    }
        }
        
        offsetParent = o.offsetParent;
      }
    }
    
    return {'left':left, 'top':top };

}

function Cbo_GetTopOfElement(el)
{
	var obj = el;
	var Y = 0;
	if (obj.offsetParent) {	
		while (obj.offsetParent) {
			Y += obj.offsetTop;
			obj = obj.offsetParent; //offsetParent;
		}
		if (!obj.offsetParent)
			Y += obj.offsetTop;		
	}
	else if (obj.y)
		Y += obj.y;
	return Y;
}

function Cbo_GetLeftOfElement(el)
{
	var obj = el;
	var X = 0;
	if (obj.offsetParent) {	
		while (obj.offsetParent) {
//			alert('tag: ' + obj.tagName + ', offset =' + obj.offsetLeft);
			X += obj.offsetLeft;
			obj = obj.offsetParent;
		}
		if (!obj.offsetParent)
			X += obj.offsetLeft;		
	}
	else if (obj.x)
		X += obj.x;
	return X;
}

function Cbo_TxtMouseDown(ctlname)
{
//	alert('txtmousedown');
}

function Cbo_TxtGotFocus(ctlname)
{
	//alert('txtfocus');
	m_txtwithfocus = ctlname;
	m_keypressedoncontrol = null;
}

function Cbo_LstLostFocus(ctlname)
{
	m_lstwithfocus = null;
	setTimeout('Cbo_CLoseListIfNecessary("' + ctlname + '");', 200);
}

function Cbo_CLoseListIfNecessary(ctlname)
{
	if (m_txtwithfocus!=ctlname && m_lstwithfocus!=ctlname && m_btnwithfocus!=ctlname) {
		Cbo_HideList(ctlname);
		//alert(m_selectedText);
		var txt = document.getElementById(ctlname + "_txtText");
		if (m_selectedIndex && m_selectedIndex!='' & m_currentctl==ctlname) {
			//txt.value = m_selectedText;
			Cbo_SetSelectedText(ctlname);
		}
	}	
}

function Cbo_TxtLostFocus(ctlname)
{
	m_txtwithfocus = null;
	setTimeout('Cbo_CLoseListIfNecessary("' + ctlname + '");', 200);
}

function Cbo_LstGotFocus(ctlname)
{
	m_lstwithfocus = ctlname;
}

function Cbo_ShowList(ctlname)
{
	var combolist = document.getElementById(ctlname + "_combolist");
	var txt = document.getElementById(ctlname + "_txtText");
	var btn = document.getElementById(ctlname + "_combobutton");
	combolist.style.position='absolute';
	combolist.style.display='inline';
	var divList = document.getElementById(ctlname + "_divList");
	divList.style.display='block';
	divList.style.width=(txt.offsetWidth + btn.offsetWidth-2) + "px";
/*	combolist.style.left=(Cbo_GetLeftOfElement(txt)) + "px";
	combolist.style.top=(Cbo_GetTopOfElement(txt)+txt.offsetHeight ) + "px";
*/	
	var pos = Cbo_GetPosition(txt);
	combolist.style.left = (pos.left) + "px";
	combolist.style.top = (pos.top + txt.offsetHeight) + "px";
}

function Cbo_FillList(ctlname, arrVals, arrText)
{
	var lst = document.getElementById(ctlname + "_divList");
	var sLst = '';
	Cbo_ClearList(ctlname);
	var aArrayV = arrVals; //GetValsArray(ctlname)
	var aArrayT = arrText; //GetTextArray(ctlname)
	for (var i = 0; i < aArrayV.length; i++){
		sLst += '\n<div name=' + ctlname + '_div language=javascript '
			+ ' id=' + ctlname + '_div_' + i
			+ ' onmousedown="Cbo_ListMouseDown(\'' + ctlname + '\', event);" '
			+ ' onmouseup="Cbo_ListMouseUp(\'' + ctlname + '\', event);">' 
			+ aArrayT[i] 
			+ '</div>';
	}
	lst.innerHTML = sLst;
	if (aArrayV.length < 10) lst.style.height="";
	else {
		lst.style.height = "100px";
	}
	var txt = document.getElementById(ctlname + "_txtText");
	if (txt.value!='') Cbo_FindAndSelectLine(ctlname, txt.value);
}

function Cbo_ListMouseDown(ctlname, e)
{
	var line;
	if (e.target) 
		line = e.target;
	else 
		line = e.srcElement;
	if (line.nodeType == 3)
		line = line.parentNode;
//	alert(line.nodeType);
	
	Cbo_ClearSelection(ctlname);
	m_currentctl = ctlname;
	//m_selectedText = Cbo_GetLineText(line);
	m_selectedIndex = Cbo_GetIndexFromID(line.id);
	//alert(m_selectedIndex);
	//Cbo_SelectLine(line);
	Cbo_HighlightLine(ctlname, m_selectedIndex);
	//m_lstwithfocus = ctlname;
	return;
			
}

function Cbo_GetIndexFromID(id)
{
	var pos = id.lastIndexOf('_');
	var s = id.substring(pos+1, id.length);
	return s;
}

function Cbo_ConvertToText(sHTML)
{
	var s;
	//alert(sHTML);
	s = sHTML.replace('&amp;','&');
	return s;
}

function Cbo_ListMouseUp(ctlname, e)
{
			//alert('hi');
	Cbo_SetSelectedText(ctlname);
//	var txt = document.getElementById(ctlname + "_txtText");
	//txt.value = m_selectedText;
//	var arrT = Cbo_GetTextArray(ctlname);
//	txt.value = arrT[m_selectedIndex];
	if (m_lstwithfocus==ctlname)
		Cbo_HideList(ctlname);
		//if (document.selection) {
//			document.selection.clear;
		//}
	var lst = document.getElementById(ctlname + "_divList");
	if (lst.apb) aspnetForm.submit();
}

function Cbo_SetSelectedText(ctlname)
{
	var txt = document.getElementById(ctlname + "_txtText");
	var selval = document.getElementById(ctlname + "_selectedvalue");
	var arrT = Cbo_GetTextArray(ctlname);
	var arrV = Cbo_GetValsArray(ctlname);
	txt.value = arrT[m_selectedIndex];
	selval.value = arrV[m_selectedIndex];
}

