/** Search Control (MFM) **/
var SearchCtrlLang = lang;
var APIRStr = SearchCtrlLang=="ar"?"عملية أخرى تجرى حالياً..أنتظر من فضلك":"Another Process is running";
var LSRStr = SearchCtrlLang=="ar"?"جاري تحميل النتائج":"Loading search results";
function al(mess,eType,title,w,h)
{
	var wi =w?w:408;
	var hi =h?h:160;
	Msg["msg"] = mess;
	Msg["msgType"] = eType;
	Msg["PageTitle"] = title;
	var retMsg = showModalDialog("/"+portalLoc+"/Common/Messages.aspx",Msg,"status:no;scroll:no;dialogWidth:"+wi+"px;dialogHeight:"+hi+"px;Help:No");
	return retMsg;
}//al
function SearchCtrl(objName,lang)
{
	//member objects
	var t = this;
	t.curTimeout = null;
	t.xml = new ActiveXObject("Microsoft.XMLDOM");
	t.searchSafe = new Array();
	t.combo = null;
	t.textbox=null;
	//member variables
	t.objName = objName;
	t.mainDiv = "SearchCtrlDiv";
	t.width = 180;
	t.height = 200;
	t.imgPath = "";
	t.lang = lang;
	t.page = "";
	t.ipage = "";
	t.isearchFlag = "";
	t.searchFlag = "";
	t.cssPath = "";
	t.timeout = 500;
	t.multiple = true;
	t.textDir = "left";
	t.iCri = "";
	t.cssClass = "";
	t.onfinish = "";
	t.init = true;
	t.url = "";
	t.curType = "1";
	t.optColor = "";
	//member functions
	t.ret = ret;
	t.iret = iret;
	t.render = render;
	t.beginTimeout = beginTimeout;
	t.loadSearch = loadSearch;
	t.displaySearch = displaySearch;
	t.showTextBox = showTextBox;
	t.getHTMLObjX = getHTMLObjX;
	t.getHTMLObjY = getHTMLObjY;
	t.hideTextBox = hideTextBox;
	t.loadInitialSearch = loadInitialSearch;
	t.loadCashed = loadCashed;
	t.disableCash = false;
	t.isStatic = false;
	t.latestSearch = "@$_$_$@";
	t.strResults = new Array();
	t.idResults = new Array();
	t.typeResults = new Array();
	
	function ret(id)
	{
		return document.getElementById(id);
	}//ret
	
	function iret(iframe,id)
	{
		return eval(iframe+".document.getElementById('"+id+"')");
	}//ret
	
	function getHTMLObjX(HTMLObj)
	{
		var o = HTMLObj;
		var oLeft = o.offsetLeft;
		while(o.offsetParent!=null) 
		{   
			oParent = o.offsetParent;
			oLeft += oParent.offsetLeft;
			o = oParent;
		}//while
		if(t.textDir=="right")
			return oLeft-100+t.width+5;
		else
			return oLeft-100;
	}//getTDX
	function getHTMLObjY(HTMLObj)
	{
		var o = HTMLObj;
		var oTop = o.offsetTop;
		while(o.offsetParent!=null) 
		{ 
			oParent = o.offsetParent;
			oTop += oParent.offsetTop;
			o = oParent;
		}
		return oTop+18;
	}//getTDX
	
	function render()
	{
		var str="<table cellpadding='1' cellspacing='2' border='0'><tr><td><input style=';width:"+t.width+
					";font-family:tahoma;font-size:12;border-style:solid;border-width:1;' id='searchCtrlTxt' "+
					"onkeypress='if(event.keyCode==13)return false;' onkeyup='parent."+t.objName+".beginTimeout();'></td></tr><tr><td><select size='2' ";
		if(t.multiple)str+=" multiple ";
		if(t.cssClass!="")str+= "class='"+t.cssClass+"'";	
		str+="style='width:"+(t.width)+";height:"+(parseInt(t.height)-20)+"' id='searcCtrlResults'></select>"+
				"</td></tr></table>";
		t.ret(t.mainDiv).innerHTML = str;
		t.combo = ret('searcCtrlResults');
		t.textbox = ret('searchCtrlTxt');
		t.combo.hasDetails = "yes";
	}//render
	
	function beginTimeout()
	{
		if(t.curTimeout)clearTimeout(t.curTimeout);
		t.curTimeout=setTimeout(t.objName+".loadSearch();",t.timeout);
	}//beginTimeout
	
	function loadSearch()
	{
		var cri = t.ret('searchCtrlTxt').value;
		if(searchControl.isStatic)
		{
			var combo = t.ret('searcCtrlResults');
				combo.options.length = 0;
			for(i=0;i<t.strResults.length;i++)
			{
				var tempOption = document.createElement("OPTION");
				if(t.strResults[i].indexOf("@$_$_$@"+cri)==0)
				{
					tempOption.desc = t.strResults[i].replace("@$_$_$@","");
					tempOption.text = t.strResults[i].replace("@$_$_$@","");
					tempOption.iid = t.idResults[i];
					tempOption.curType = t.typeResults[i];
					if(t.optColor!="")tempOption.style.color = t.optColor;
					combo.options[combo.options.length] = tempOption;
				}//if
			}//for
			return;
		}//if
		if(t.xml.readyState!=4){al(APIRStr,"ErrorCommon",uError);return;}
		//t.iret('searchIFrame','searchCtrlTxt').value;
		if(cri==""){return;}
		t.ret('searcCtrlResults').options.length = 0;
		var tempOption = document.createElement("OPTION");
		tempOption.text = LSRStr;
		t.ret('searcCtrlResults').options[0] = tempOption;
		t.xml.onreadystatechange = eval(this.objName+".displaySearch");
		var url = t.page+"?sflag="+t.searchFlag+"&lang="+t.lang+"&criteria="+cri;
		//alert(url)
		//if(t.searchSafe[url]&&!t.disableCash){t.loadCashed(url);return;}
		t.url = url;
		t.xml.load(url);
		//alert(url)
	}//loadSearch
	
	function loadInitialSearch()
	{
		t.xml.onreadystatechange = eval(this.objName+".displaySearch");
		var url = t.ipage+"?sflag="+t.isearchFlag+"&lang="+t.lang+"&criteria="+t.iCri;
		t.xml.load(url);
		//alert(url)
	}//loadSearch
	
	function displaySearch()
	{
		var xmlDoc=eval(t.objName+".xml");
		if(xmlDoc.readyState==4 || xmlDoc.readyState=="COMPLETED")
		{
			if(xmlDoc.parseError.errorCode == 0)
			{
				var resArr =new Array();
				var textArr = new Array();resArr[0]=textArr;
				var idArr = new Array();resArr[1]=idArr;
				var nodeList = xmlDoc.getElementsByTagName("result");
				var combo = t.ret('searcCtrlResults');
				combo.options.length = 0;
				for(i=0;i<nodeList.length;i++)
				{
					var node = nodeList[i];
					var tempOption = document.createElement("OPTION");
					tempOption.desc = node.getAttribute("desc");
					tempOption.text = tempOption.desc;
					tempOption.iid = node.getAttribute("value");
					tempOption.curType = t.curType;
					if(t.optColor!="")tempOption.style.color = t.optColor;
					combo.options[combo.options.length] = tempOption;
					textArr[i]=tempOption.desc;
					idArr[i]=tempOption.iid;
					t.strResults[t.strResults.length]="@$_$_$@"+tempOption.desc;
					t.idResults[t.idResults.length]=tempOption.iid;
					t.typeResults[t.typeResults.length]=tempOption.curType;
				}//for
				t.searchSafe[t.url] = resArr;
				if(t.init)if(t.onfinish!=""){eval(t.onfinish);t.init = false;}
			}
			else
			{
				alert("Error parse XML");
			}
		}//if
	}//displaySearch
	
	function showTextBox()
	{
		t.ret('searchDiv').style.left = t.getHTMLObjX(t.ret('searcCtrlResults'));
		t.ret('searchDiv').style.top = t.getHTMLObjY(t.ret('searcCtrlResults'));
		t.ret('searchDiv').style.visibility = 'visible';
		//t.iret('searchIFrame','searchCtrlTxt').focus();
		t.ret('searchCtrlTxt').focus();
	}//showTextBox
	
	function hideTextBox()
	{
		t.ret('searchDiv').style.visibility = 'hidden';
	}//showTextBox
	
	function loadCashed(cri)
	{
		//return;
		var textArr = t.searchSafe[cri][0];
		var idArr = t.searchSafe[cri][1];
		var combo = t.ret('searcCtrlResults');
		combo.options.length = 0;
		for(i=0;i<textArr.length;i++)
		{
			var tempOption = document.createElement("OPTION");
			tempOption.desc = textArr[i];
			tempOption.text = tempOption.desc;
			tempOption.iid = idArr[i];
			if(t.optColor!="")tempOption.style.color = t.optColor;
			combo.options[combo.options.length] = tempOption;
			//combo.options[combo.options.length].style.wordWrap = 'break-word';
		}//for
	}//loadCashed
	
}//SearchCtrl
