ï»¿	var isIE = navigator.userAgent.toLowerCase().indexOf("msie") > -1;
	var isMoz = document.implementation && document.implementation.createDocument;

	var affilosophy_funcs_version = 3.6;

	var g_AffFuncs_LastTextArr = new Array();
	function TextAreaMaxLength(a_id, a_MaxLen)
	{
		var l_Text = '';
		var l_TextObj = GetDocElement(a_id);
		
		if (typeof(g_AffFuncs_LastTextArr[a_id]) == 'undefined')
		{
			g_AffFuncs_LastTextArr[a_id] = '';
		}
		
		var l_currLen = l_TextObj.value.length;

		if (l_currLen > a_MaxLen)
		{
			l_TextObj.value = g_AffFuncs_LastTextArr[a_id];
		}
		
		g_AffFuncs_LastTextArr[a_id] = l_TextObj.value;
	}

	function DocumentWrite(a_Str)
	{
		document.write(a_Str);
	}

	function SA_DoFlashBanner(a_Wrapper, a_Src, a_Width, a_Height, a_Alt, a_Title, a_BGColor, a_Quality)
	{
		if (!a_Quality) a_Quality = 'high';
		if (!a_BGColor) a_BGColor = 'white';
	
		if (!a_Src) a_Src = "images/none.swf";
		
		var l_Str = ' \
			<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="' + a_Width + '" height="' + a_Height + '"> \
				<param name="movie" value="' + a_Wrapper + '"> \
				<param name="quality" value="' + a_Quality + '"> \
				<param name="bgcolor" value="' + a_BGColor + '"> \
				<param name="FlashVars" value="sa_src=&sa_target=&sa_swf=' + a_Src + '"> \
				<embed name="banner" flashvars="sa_src=&sa_target=&sa_swf=' + a_Src + '" src="' + a_Wrapper + '" width="' + a_Width + '" height="' + a_Height + '" quality="' + a_Quality + '" bgcolor="' + a_BGColor + '" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> \
			</object> \
			';

		return l_Str;
	}
	
	function GetXMLNodeValByName(a_XmlElement, a_NodeName)
	{
		try
		{
			return a_XmlElement.getElementsByTagName(a_NodeName)[0].childNodes[0].nodeValue;
		}
		catch (e)
		{
			return null;
		}
	}
	
	function GetXMLFromString(a_Str)
	{
		if (window.ActiveXObject)
		{
			var l_xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			l_xmlDoc.async = false;
			l_xmlDoc.loadXML(a_Str);			
		}
		else
		{
			var l_XmlParser = new DOMParser();
			var l_xmlDoc    = l_XmlParser.parseFromString(a_Str, "text/xml");	
		}
		
		return l_xmlDoc;
	}
	
	function GetXMLFromUrl(a_Url)
	{
		if (window.ActiveXObject)
		{
			var l_xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			l_xmlDoc.async = false;
		}
		else
		{
			l_xmlDoc = document.implementation.createDocument("","",null);
			l_xmlDoc.async= false;
		}
		l_xmlDoc.load(a_Url);
		
		return l_xmlDoc;
	}
	
	function XSLTarsform(a_XML, a_XSL)
	{
		var l_Ans;
		if (window.ActiveXObject)
		{
			l_Ans = a_XML.transformNode(a_XSL);
		}
		else if (document.implementation && document.implementation.createDocument)
		{
			var l_xsltProcessor = new XSLTProcessor();
			l_xsltProcessor.importStylesheet(a_XSL);
			l_Ans = l_xsltProcessor.transformToFragment(a_XML, document);
		}
		
		return l_Ans;
	}
	
	function StrToXMLSafe(a_Str)
	{
		var l_str = a_Str;
			
		l_str = l_str.replace(/&/g,'&amp;');
		l_str = l_str.replace(/</g,'&lt;');
		l_str = l_str.replace(/>/g,'&gt;');
		l_str = l_str.replace(/"/g,'&quot;');
			
		return l_str;
	}

	function GetBareXmlHttp()
	{
		var xmlHttp = null;
		
		if (window.XMLHttpRequest)
		{
			xmlHttp = new XMLHttpRequest(); 
		}
		else if (window.ActiveXObject)
		{
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
//			xmlHttp = new ActiveXObject("MSXML2.ServerXMLHTTP"); 
		}
		
		return xmlHttp;
	}
	
	function GetXmlHttpAsync(a_xmlHttpObj, a_Url, a_Params, a_Callback)
	{
		if (a_xmlHttpObj)
		{
			a_xmlHttpObj.abort();
			a_xmlHttpObj.onreadystatechange = a_Callback;
			a_xmlHttpObj.open ('GET',a_Url + a_Params, true);
			a_xmlHttpObj.send (null);
			
			return true;
		}
		
		return false;
	}
	
	function IsXmlHttpLoaded(a_XmlObj)
	{
		try {
			if (a_XmlObj.readyState==4)
			{
				return (a_XmlObj.status==200);
			}	
		}
		catch (e)
		{
		}	
		
		return false;
	}
	

	function GetXmlHttp(a_Url, a_Params)
	{
		var xmlHttp = GetBareXmlHttp();

		if (xmlHttp)
		{
			xmlHttp.open ('GET',a_Url + a_Params, false);
			xmlHttp.send (null);
		}
			
		return xmlHttp;
	}

	function PostXmlHttp(a_Url, a_Params, a_Sync, a_SyncFunc)
	{
		if (!a_Sync) a_Sync = false;
		var xmlHttp = GetBareXmlHttp();

		if (xmlHttp)
		{
			xmlHttp.open ('POST',a_Url, a_Sync);
			xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xmlHttp.setRequestHeader("Content-length", a_Params.length);
			xmlHttp.setRequestHeader("Connection", "close");
			
			if (a_Sync)
			{
				xmlHttp.onreadystatechange = function() {if (xmlHttp.readyState == 4) {if (xmlHttp.status == 200) {a_SyncFunc(xmlHttp.responseText);} else {a_SyncFunc(false);}}};
			}
			
			xmlHttp.send (a_Params);
		}
			
		return xmlHttp;
	}


	function IsActiveElement(a_Element)
	{
		if (document.activeElement)
		{
			return (document.activeElement === a_Element);
		}
		else
		{
			return true;
		}
	}

	function Round(a_Number, a_Digits)
	{
		return Math.round(a_Number * Math.pow(10,a_Digits)) / Math.pow(10,a_Digits);
	}

	function Dump(a_Str)
	{
		document.write(a_Str);
	}

	function LocalDate (a_IETF_Date)
	{
		l_date = new Date(a_IETF_Date);
		if (isNaN(l_date))
		{
			return '';
		}
		return l_date.toLocaleDateString();
	}

	function LocalTimeStamp (a_IETF_Date)
	{
		l_date = new Date(a_IETF_Date);
		if (isNaN(l_date))
		{
			return '';
		}
		return l_date.toLocaleString();
	}

	function str_dates_to_local_func(a_Str, p1, p2, p3)
	{
		if (p3 == '00:00:00') 
		{
			return LocalDate(p1.replace('-','/','g'));
		}
		else
		{
			return LocalTimeStamp(p1.replace('-','/','g'));
		}
	}
	

	function str_dates_to_local(a_Str)
	{
		return a_Str.replace(/((\d{4}[\-/]\d{2}[\-/]\d{2}) (\d{2}:\d{2}:\d{2}) GMT)/g, str_dates_to_local_func);
	}

	function marked_str_dates_to_local(a_Str)
	{
		return a_Str.replace(/(?:L((\d{4}[\-/]\d{2}[\-/]\d{2}) (\d{2}:\d{2}:\d{2}) GMT)L)/g, str_dates_to_local_func);
	}



	function bodyOffsetTop(a_Obj)
	{
		l_Offset = 0;
		while (a_Obj)
		{
			l_Offset += a_Obj.offsetTop; 
			a_Obj = a_Obj.offsetParent;
		}
		
		return l_Offset;
	}

	function bodyOffsetLeft(a_Obj)
	{
		l_Offset = 0;
		while (a_Obj)
		{
			l_Offset += a_Obj.offsetLeft; 
			a_Obj = a_Obj.offsetParent;
		}
		
		return l_Offset;
		
	}

	function divOffsetTop(a_Obj)
	{
		l_Offset = 0;

		while (a_Obj)
		{
			l_Offset += a_Obj.offsetTop; 
			a_Obj = a_Obj.offsetParent;
			if (a_Obj.tagName == 'DIV') break;
		}
		
		return l_Offset;
	}

	function divOffsetLeft(a_Obj)
	{
		l_Offset = 0;
		while (a_Obj)
		{
			l_Offset += a_Obj.offsetLeft; 
			a_Obj = a_Obj.offsetParent;
			if (a_Obj.tagName == 'DIV') break;
		}
		
		return l_Offset;
	}

	function isChildOf(a_Obj, a_ParentObjId)
	{
		l_parentObj = a_Obj;
		
		while (l_parentObj)
		{
			if (l_parentObj.id == a_ParentObjId)
			{
				return true;
			}
		
			l_parentObj = l_parentObj.parentNode;
		}
		
		return false;
	}
	
	function forEach(a_Arr, a_Func, a_Obj)
	{
		var i;
		
		if (!a_Arr) return;
		
		for (i = 0; i < a_Arr.length; i++)
		{
			a_Func.call(a_Obj, a_Arr[i]);
		}
	}
	
	
	function PopWnd(a_Prefix, a_Target, a_Method, a_Params, a_Height, a_Width)
	{
		var l_FormName = a_Prefix + '_form';
		var l_SubmitName = l_FormName + '_submit';
		var l_Form = document.getElementById(l_FormName);
		
		if (!a_Height)
		{
			a_Height = "200";
		}

		if (!a_Width)
		{
			a_Width = "400";
		}
		
		if (l_Form)
		{
			document.body.removeChild(l_Form);
			l_Form = document.getElementById(l_FormName);
		}
		
		if (!l_Form)
		{
			var l_ParamsObj = {
				PArr: [],
							
				set: function (a_PArr)
				{
					this.PArr.push('<INPUT type="hidden" name="' + escape(a_PArr[0]) + '" value="'+ escape(a_PArr[1]) + '"/>');
				},
							
				toString: function()
				{
					return this.PArr.join('\n');
				}	
			};
				
			var l_Method = a_Method === undefined ? 'get' : a_Method.toLowerCase();
			var l_WndName = l_FormName + '_wnd';
					
			if (l_Method == 'get')
			{
				var l_tmpParamsArr = GetParamsFromUrl(a_Target);
				forEach(l_tmpParamsArr, l_ParamsObj.set, l_ParamsObj);
			}
					
			if (!(a_Params === undefined))
			{
				var l_tmpParamsArr = GetParamsFromUrl("?" + a_Params);
				forEach(l_tmpParamsArr, l_ParamsObj.set, l_ParamsObj);
			}
				
			l_Form = document.createElement("FORM");
			l_Form.setAttribute("id",l_FormName);
			l_Form.setAttribute("action",a_Target);
			l_Form.setAttribute("method",l_Method);
			l_Form.innerHTML = '\<input style="display: none;" id="' + l_SubmitName + '" type="submit"/\>';
			l_Form.innerHTML += l_ParamsObj.toString();
			l_Form.style.display ='none';
					
			document.body.appendChild(l_Form);
			l_Form = document.getElementById(l_FormName);

			AttachEvent(l_Form, 'submit', DoPopWnd , false);
			l_Form.submit_cmd = "var l_wnd_name='" + l_WndName + "'; mywnd=window.open('', l_wnd_name,'height=" + a_Height + ", width=" + a_Width + ", scrollbars=yes, status=yes, resizable=yes, menubar=no, location=no'); l_Form.target=l_wnd_name; mywnd.focus();";
		}
		var l_SubmitForm = document.getElementById(l_SubmitName);
		if (l_SubmitForm)
		{
			l_SubmitForm.click();
		}
	}

	function DoPopWnd(e)
	{
		e = !e ? event : e;
		l_Form = !e.srcElement ? this : e.srcElement;

		eval(l_Form.submit_cmd)
		return true;
	}
	
	
	
	function IntToHex(a_int, a_padding)
	{
		var l_int = Math.abs(a_int);
		var l_hexStr = '';
		var l_hex_arr = new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
		
		while (l_int > 0)
		{
			l_hexStr = l_hexStr + l_hex_arr[l_int % 16];
			l_int = (l_int - (l_int % 16)) / 16;
		}
		
		while (l_hexStr.length < a_padding)
		{
			l_hexStr = '0' + l_hexStr;
		}
		
		return l_hexStr;
	}
	

	function url_getparam(a_url, a_Name)
	{
		var l_param_val = null;
		if (l_param = a_url.match('[?&]' + a_Name + '=([^&]*)'))
		{
		    l_param_val = l_param[1];
		}
		
		return l_param_val;	
	}

	function GetParamsFromUrl(a_Url)
	{
		var l_re = /(?:[?&](([^=&#]+)(?:=([^&#]*))?))/ig;
		var l_arr;
		var l_retArr = new Array();
		var i = 0;

		while ((l_arr = l_re.exec(a_Url)) != undefined)
		{
			l_retArr[i++] = new Array(l_arr[2],l_arr[3]===undefined?'':l_arr[3]);
		}
		
		return l_retArr;
	}

	function GetPosFromUrl(a_Url)
	{
		var l_re = /(?:#([^#]*)$)/i;
		var l_arr;
		var l_retArr = new Array();
		var i = 0;

		if ((l_arr = l_re.exec(a_Url)) != undefined)
		{
			return (l_arr[1]);
		}
		
		return '';
	}


	function AttachEvent(a_Obj, a_Event, a_Function, a_UseCapture)
	{
		if (a_Obj.addEventListener)
		{
			a_Obj.addEventListener(a_Event, a_Function, a_UseCapture); 
		} 
		else if (a_Obj.attachEvent)
		{
			a_Obj.attachEvent('on'+a_Event.replace(/^on/g,''), a_Function);
		}
	}

	function GetCurrentStyle(a_Obj)
	{
		var l_Style = null;
		
		if (a_Obj.currentStyle)
		{
			l_Style = a_Obj.currentStyle;
		}
		else if (window.getComputedStyle)
		{
			l_Style = window.getComputedStyle(a_Obj,null);
		}
		
		return l_Style;
	}

	//-------------------------------------------------------------------------
	// Calendar Object
	//-------------------------------------------------------------------------

	function cal_Cancel(a_Div)
	{
		l_Div   = document.getElementById(a_Div);
		l_Input = document.getElementById(a_Div + '_input');
			
		l_Input.disabled = false;
		l_Div.style.display='none';
	}

	function cal_ShowCal_popup(a_Div)
	{
		cal_ShowCalV2(a_Div, true);
	}

	function cal_ShowCal(a_Div)
	{
		cal_ShowCalV2(a_Div, false);
	}
		
	function cal_ShowCalV2(a_Div, a_InLayer)
	{
		l_Div     = document.getElementById(a_Div);
		l_Input   = document.getElementById(a_Div + '_input');
		l_Value   = document.getElementById(a_Div + '_value');

			
		l_Input.disabled = true;

		if (a_InLayer)
		{
			l_Div.style.top  = divOffsetTop(l_Input); 
			l_Div.style.left = divOffsetLeft(l_Input); 
		}
		else if (isMoz)
		{			
			l_Div.style.top  = bodyOffsetTop(l_Input); 
			l_Div.style.left = bodyOffsetLeft(l_Input); 
		}

		l_Div.style.display = '';
			
		l_date = new Date(l_Value.value);
		if (isNaN(l_date))
		{
			l_date = new Date();
			// Getting only the string value of the date
			l_date = new Date(l_date.getFullYear(), l_date.getMonth(), l_date.getDate());
		}

		cal_CreateCalendar(a_Div,l_date, l_date);		
	}
		
	function cal_SelectedDate(a_Div, a_Date)
	{
		var c_DaysNames = new Array('sun','mon','thu','wed','tue','fri','sat');
		var c_MonthsNames = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	
		l_Div   = document.getElementById(a_Div);
		l_Input = document.getElementById(a_Div + '_input');
		l_value = document.getElementById(a_Div + '_value');
			
		l_Input.value = a_Date.toLocaleDateString() ;

//		l_value.value = a_Date.toUTCString();
		l_value.value = a_Date.getDate() + ' ' + c_MonthsNames[a_Date.getMonth()] + ' ' + a_Date.getFullYear() ;
			
		l_Input.disabled = false;
		l_Div.style.display='none';
		
		if (l_Input.onchange) l_Input.onchange();
	}
	
	function cal_KeyPress(a_Event, a_Obj, a_Div, a_StartDay, a_SelectedDate)
	{
		var l_ch = window.event ? a_Event.keyCode : a_Event.which;
		
		l_dir = GetCurrentStyle(a_Obj).direction;
		if (l_dir == 'rtl')
		{
			l_Left  = 39;
			l_Right = 37;
		}
		else
		{
			l_Left  = 37;
			l_Right = 39;
		}
		
	
		switch (l_ch)
		{
			case 27: // Esc
				cal_Cancel(a_Div);
				break;
				
			case 13: // Enter
			case 32: // Space
				cal_SelectedDate(a_Div, a_StartDay);				
				break;
								
			case l_Left:  // Day before
				a_StartDay = new Date(a_StartDay.getFullYear(), a_StartDay.getMonth(), a_StartDay.getDate()-1);
				cal_CreateCalendar(a_Div, a_StartDay, a_SelectedDate);
				break;
			case 38:      // Week before
				a_StartDay = new Date(a_StartDay.getFullYear(), a_StartDay.getMonth(), a_StartDay.getDate()-7);
				cal_CreateCalendar(a_Div, a_StartDay, a_SelectedDate);
				break;
			case l_Right: // Day after
				a_StartDay = new Date(a_StartDay.getFullYear(), a_StartDay.getMonth(), a_StartDay.getDate()+1);
				cal_CreateCalendar(a_Div, a_StartDay, a_SelectedDate);
				break;
			case 40:      // Week After
				a_StartDay = new Date(a_StartDay.getFullYear(), a_StartDay.getMonth(), a_StartDay.getDate()+7);
				cal_CreateCalendar(a_Div, a_StartDay, a_SelectedDate);
				break;
				
			case 33:	  // Month Before
				a_StartDay = new Date(a_StartDay.getFullYear(), a_StartDay.getMonth()-1, a_StartDay.getDate());
				cal_CreateCalendar(a_Div, a_StartDay, a_SelectedDate);
				break;
			case 34:	  // Month After
				a_StartDay = new Date(a_StartDay.getFullYear(), a_StartDay.getMonth()+1, a_StartDay.getDate());
				cal_CreateCalendar(a_Div, a_StartDay, a_SelectedDate);
				break;

			case 36:	  // Back to selected
				cal_CreateCalendar(a_Div, a_SelectedDate, a_SelectedDate);
				break;
			
			default:
		}
		
		return false;
	}

	var cal_Lang = "en";
	
	function cal_Today(a_Div, a_SelectedDate)
	{
		l_date = new Date();
		// Getting only the string value of the date
		l_date = new Date(l_date.getFullYear(), l_date.getMonth(), l_date.getDate());
		cal_CreateCalendar(a_Div, l_date, a_SelectedDate);
	}

	function cal_SetLang(a_Lang)
	{
		cal_Lang = a_Lang;
	}	

	function cal_GetLang()
	{
		return cal_Lang;
	}

	function cal_CreateCalendar(a_Div, a_StartDay, a_SelectedDate)
	{
		//---------------------------------------------------------------------
		// Parameters adjustment
		//---------------------------------------------------------------------
	
		c_days_in_week = 7 ;
		c_max_weeks_in_month = 7;
		
		var l_Lang = cal_GetLang();
		
		if (l_Lang == "he")
		{
			c_DaysNames   = new Array('×?','×‘','×’','×“','×”','×•','×©');
			c_MonthsNames = new Array('×™× ×•×?×¨','×¤×‘×¨×•×?×¨','×?×¨×¥','×?×¤×¨×™×?','×?×?×™','×™×•× ×™','×™×•×?×™','×?×•×’×•×¡×˜','×¡×¤×˜×?×‘×¨','×?×•×§×˜×•×‘×¨','× ×•×‘×?×‘×¨','×“×¦×?×‘×¨');
		}
		else
		{
			c_DaysNames = new Array('su','mo','tu','we','th','fr','sa');
			c_MonthsNames = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
		}
		
		l_StartDate = new Date(a_StartDay.getFullYear(), a_StartDay.getMonth(), 1);
		
		l_sYear    = l_StartDate.getFullYear();
		l_sMonth   = l_StartDate.getMonth();
		l_sWeekDay = l_StartDate.getDay();

		//---------------------------------------------------------------------
		// On blur the control must shutdown. 
		//---------------------------------------------------------------------
	
		if (isIE)
		{
			l_onBlur = ' onblur="if (!isChildOf(document.activeElement,\'' + a_Div + '\')) {cal_Cancel(\'' + a_Div + '\');} else (this.focus()) " ';
			l_ChildrenOnBlur = l_onBlur;
		}
		else
		{
			l_onBlur = ' onblur="cal_Cancel(\'' + a_Div + '\'); " ';
			l_ChildrenOnBlur = '';
		}

		l_onkeydown = ' onkeydown=" javascript:cal_KeyPress(event, this, \'' + a_Div + '\',new Date(\'' + a_StartDay + '\'), new Date(\'' + a_SelectedDate + '\')) " ';
		
	
		l_Obj = document.getElementById(a_Div);
		l_OutStr = '<DIV tabIndex="1" ' + l_onBlur + l_onkeydown + ' class="dropdown_calendar" id="' + a_Div + '_control" style="width:155px; height:200px; border: 1px solid black">';


		//---------------------------------------------------------------------
		// Drawing the calendar
		//---------------------------------------------------------------------
		
		
		l_OutStr += '<TABLE border="0" cellspacing="0" cellpadding="0" width="150px"><TR>';
		l_OutStr += '<TD class="cal_prev_month" onclick="javascript:cal_CreateCalendar(\'' + a_Div + '\',new Date(' + l_sYear + ',' + (l_sMonth-1)  + ',' + a_StartDay.getDate() + '), new Date(\'' + a_SelectedDate + '\'));"><</TD><TD align="center" width="100%">';
		l_OutStr += (c_MonthsNames[l_sMonth] + ' ');
		l_OutStr += (l_sYear);
		l_OutStr += ('</TD><TD class="cal_next_month" onclick="javascript:cal_CreateCalendar(\'' + a_Div + '\',new Date(' + l_sYear + ',' + (l_sMonth+1) + ',' + a_StartDay.getDate() + '), new Date(\'' + a_SelectedDate + '\'));">></TD></TR></TABLE>');
		
		l_MonthDay = -l_sWeekDay+1;

		l_OutStr += ('<TABLE width="155px"  style="font-family: arial; font-size:12px;">');
		
		
		for (l_w = 0; l_w < c_max_weeks_in_month; l_w++)
		{
			l_OutStr += ('<TR height="20px">');

			for (l_d = 0; l_d < c_days_in_week; l_d++)
			{
				if (l_w == 0)
				{
					l_OutStr += ('<TD style="width: 25px" >' + c_DaysNames[l_d] + '</TD>');
				}
				else
				{
					l_StartDate = new Date(l_sYear, l_sMonth, l_MonthDay++);
					
					if (l_StartDate.getMonth() != l_sMonth)
					{
						l_OutStr += ('<TD disabled="true" class="cal_out_month_cell" align="center">' + l_StartDate.getDate() +'</TD>');
					}
					else
					{
						if ((l_StartDate - a_SelectedDate) == 0)
						{
							if ((l_StartDate - a_StartDay) == 0)
							{
								l_ClassName = "cal_today_cell_selected";
							}
							else
							{
								l_ClassName = "cal_today_cell";
							}
						}
						else if ((l_StartDate - a_StartDay) == 0)
						{
							l_ClassName = "cal_in_month_cell_selected";
						}
						else
						{
							l_ClassName = "cal_in_month_cell";
						}
						
						l_OutStr += ('<TD class="'+l_ClassName+'" onclick="cal_SelectedDate(\'' + a_Div + '\', new Date(\'' + l_StartDate + '\'));" align="center" >' + l_StartDate.getDate() +'</TD>');
					}
				}
			}
			
			l_OutStr += ('</TR>');
		}
		
		l_OutStr += ('</TABLE>');

		l_OutStr += ('<div style="height: 3px; line-height: 1px;"></div><DIV style="border-top: 1px solid gray; cursor:pointer;" onclick="javascript:cal_Today(\'' + a_Div + '\', new Date(\'' + a_SelectedDate + '\'));">Today</DIV>');

		l_OutStr += ('</DIV>');
		
		l_Obj.innerHTML = l_OutStr;
		document.getElementById(a_Div + '_control').focus();
		
	}


	// ---------------------------------------------------------------------------
	// DropDown Menu Control functions
	// ---------------------------------------------------------------------------
	
	function ddmenu_Cancel(a_Div)
	{
		l_Div   = document.getElementById(a_Div);
		l_Input = document.getElementById(a_Div + '_input');
			
		l_Div.style.display='none';
	}
		
	function ddmenu_ShowDropDownMenu(a_Div)
	{
		l_Div     = document.getElementById(a_Div);
		l_Input   = document.getElementById(a_Div + '_input');

		if (GetCurrentStyle(l_Div).direction.toLowerCase() == 'rtl')
		{
			l_Div.style.top  = bodyOffsetTop(l_Input) + l_Input.offsetHeight; 
			l_Div.style.left = bodyOffsetLeft(l_Input) - parseInt(l_Div.style.width) + l_Input.offsetWidth; 
		}
		else
		{
			l_Div.style.top  = bodyOffsetTop(l_Input) + l_Input.offsetHeight; 
			l_Div.style.left = bodyOffsetLeft(l_Input); 
		}
		
		l_Div.style.display = '';
		

		ddmenu_CreateDropDownMenu(a_Div);		

		var l_ctrl = document.getElementById(a_Div + '_control');
		
		l_ctrl.style.position = 'relative';
		mi = l_ctrl.offsetHeight;
		
		l_ctrl.style.top = -mi;
		l_ctrl.style.visibility = 'visible';
		
		setTimeout('ddmenu_animate(\'' + a_Div + '\')',10);

	}
	
	function ddmenu_animate(a_Div)
	{
		var l_ctrl = document.getElementById(a_Div + '_control');
		mi = parseInt(l_ctrl.style.top);
		if (mi < 0)
		{
			l_ctrl.style.top = min(0,mi+10);
			setTimeout('ddmenu_animate(\'' + a_Div + '\')',10);
		}
		else
		{
			try 
			{
				l_ctrl.style.position = 'static';
				l_ctrl.getElementsByTagName('a')[0].focus();
			}
			catch(e)
			{
			}
		}
	}
		
	function ddmenu_KeyPress(a_Event, a_Obj, a_Div)
	{
		var l_ch = window.event ? a_Event.keyCode : a_Event.which;
		
		switch (l_ch)
		{
			case 27: // Esc
				document.getElementById(a_Div + "_input").focus();
				break;
			
			default:
		}
		
		return false;
	}
	

	function ddmenu_CreateDropDownMenu(a_Div)
	{
		//---------------------------------------------------------------------
		// On blur the control must shutdown. 
		//---------------------------------------------------------------------
	
		if (isIE)
		{
			l_onBlur = ' onblur="if (!isChildOf(document.activeElement,\'' + a_Div + '\')) {ddmenu_Cancel(\'' + a_Div + '\');} " ';
			l_ChildrenOnBlur = l_onBlur;
		}
		else
		{
			l_onBlur = ' onblur="ddmenu_CloseIfNotInFocus(\'' + a_Div + '\'); " ';
			l_ChildrenOnBlur = '';
		}

		l_onBlur = '';
		l_ChildrenOnBlur = '';

		l_onkeydown = ' onkeydown=" javascript:ddmenu_KeyPress(event, this, \'' + a_Div + '\') " ';
		
	
		l_Obj = document.getElementById(a_Div);
		l_OutStr = '<DIV style="visibility: hidden;" ' + l_onBlur + l_onkeydown + ' class="dropdown_menu" id="' + a_Div + '_control" >';
		l_OutStr += document.getElementById(a_Div + "_data").innerHTML;
		l_OutStr += ('</DIV>');
		
		l_Obj.innerHTML = l_OutStr;
	}
	
	function ddmenu_item_in(l_item)
	{
		l_item.u_infocus = true;
	}

	function ddmenu_item_out(l_item)
	{
		var l_name = l_item.parentNode.parentNode.parentNode.id;
		l_name = l_name.substr(0,l_name.length-8);

		l_item.u_infocus = false; 
		setTimeout("ddmenu_CloseIfNotInFocus('" + l_name + "')",100);
	}
	
	
	function ddmenu_CloseIfNotInFocus(a_Div)
	{
	
		var l_Obj = document.getElementById(a_Div);
		var l_Arr = l_Obj.getElementsByTagName('a');
		var l_toClose = true;
		
		for (i = l_Arr.length-1; i >= 0; i--)
		{
			if (l_Arr[i].u_infocus)
			{
				l_toClose = false;
			}
		}
		
		if (l_toClose)
		{
			ddmenu_Cancel(a_Div);
		}
	}

	// ---------------------------------------------------------------------------
	// DropDown Menu Control functions
	// ---------------------------------------------------------------------------
	
	function flymenu_Cancel(a_Div)
	{
		l_Div   = document.getElementById(a_Div);
		l_Input = document.getElementById(a_Div + '_input');
			
		l_Div.style.display='none';
	}
		
	function flymenu_ShowDropDownMenu(a_Div)
	{
		l_Div     = document.getElementById(a_Div);
		l_Input   = document.getElementById(a_Div + '_input');

		if (GetCurrentStyle(l_Div).direction.toLowerCase() == 'rtl')
		{
			l_Div.style.top  = bodyOffsetTop(l_Input) + l_Input.offsetHeight; 
			l_Div.style.left = bodyOffsetLeft(l_Input) - parseInt(l_Div.style.width) + l_Input.offsetWidth; 
		}
		else
		{
			l_Div.style.top  = bodyOffsetTop(l_Input) + l_Input.offsetHeight; 
			l_Div.style.left = bodyOffsetLeft(l_Input); 
		}
		
		l_Div.style.display = '';
		

		flymenu_CreateDropDownMenu(a_Div);		

		var l_ctrl = document.getElementById(a_Div + '_control');
		
		l_ctrl.style.position = 'relative';
		mi = l_ctrl.offsetHeight;
		
		l_ctrl.style.top = -mi;
		l_ctrl.style.visibility = 'visible';
		
		setTimeout('ddmenu_animate(\'' + a_Div + '\')',10);

	}
	
	function flymenu_animate(a_Div)
	{
		var l_ctrl = document.getElementById(a_Div + '_control');
		mi = parseInt(l_ctrl.style.top);
		if (mi < 0)
		{
			l_ctrl.style.top = min(0,mi+10);
			setTimeout('ddmenu_animate(\'' + a_Div + '\')',10);
		}
		else
		{
			try 
			{
				l_ctrl.style.position = 'static';
				l_ctrl.getElementsByTagName('a')[0].focus();
			}
			catch(e)
			{
			}
		}
	}
		
	function flymenu_KeyPress(a_Event, a_Obj, a_Div)
	{
		var l_ch = window.event ? a_Event.keyCode : a_Event.which;
		
		switch (l_ch)
		{
			case 27: // Esc
				document.getElementById(a_Div + "_input").focus();
				break;
			
			default:
		}
		
		return false;
	}
	

	function flymenu_CreateDropDownMenu(a_Div)
	{
		//---------------------------------------------------------------------
		// On blur the control must shutdown. 
		//---------------------------------------------------------------------
	
		if (isIE)
		{
			l_onBlur = ' onblur="if (!isChildOf(document.activeElement,\'' + a_Div + '\')) {ddmenu_Cancel(\'' + a_Div + '\');} " ';
			l_ChildrenOnBlur = l_onBlur;
		}
		else
		{
			l_onBlur = ' onblur="ddmenu_CloseIfNotInFocus(\'' + a_Div + '\'); " ';
			l_ChildrenOnBlur = '';
		}

		l_onBlur = '';
		l_ChildrenOnBlur = '';

		l_onkeydown = ' onkeydown=" javascript:ddmenu_KeyPress(event, this, \'' + a_Div + '\') " ';
		
	
		l_Obj = document.getElementById(a_Div);
		l_OutStr = '<DIV style="visibility: hidden;" ' + l_onBlur + l_onkeydown + ' class="dropdown_menu" id="' + a_Div + '_control" >';
		l_OutStr += document.getElementById(a_Div + "_data").innerHTML;
		l_OutStr += ('</DIV>');
		
		l_Obj.innerHTML = l_OutStr;
	}
	
	function flymenu_item_in(l_item)
	{
		l_item.u_infocus = true;
	}

	function flymenu_item_out(l_item)
	{
		var l_name = l_item.parentNode.parentNode.parentNode.id;
		l_name = l_name.substr(0,l_name.length-8);
		
		l_item.u_infocus = false; 
		setTimeout("flymenu_CloseIfNotInFocus('" + l_name + "')",100);
	}
	
	
	function flymenu_CloseIfNotInFocus(a_Div)
	{
		var l_Obj = document.getElementById(a_Div);
		var l_Arr = l_Obj.getElementsByTagName('a');
		var l_toClose = true;
		
		for (i = l_Arr.length-1; i >= 0; i--)
		{
			if (l_Arr[i].u_infocus)
			{
				l_toClose = false;
			}
		}
		
		if (l_toClose)
		{
			ddmenu_Cancel(a_Div);
		}
	}

	// ---------------------------------------------------------------------------
	// Utility functions
	// ---------------------------------------------------------------------------





	function CountStrOcc(a_Src, a_Str)
	{
		l_strLen = a_Str.length;
		l_Counter = 0;
		l_LastIndex = 0;
		
		l_LastIndex = a_Src.indexOf(a_Str);
		while (l_LastIndex > 0)
		{
			l_Counter++;
			l_LastIndex = a_Src.indexOf(a_Str, l_LastIndex+1);
		}
		
		return l_Counter;
	}

	function LTrim( aStr ) 
	{
		var l_re = /\s*((\S+\s*)*)/;
		return aStr.replace(l_re, "$1");
	}

	function RTrim( aStr ) 
	{
		var l_re = /((\s*\S+)*)\s*/;
		return aStr.replace(l_re, "$1");
	}

	function trim( aStr ) 
	{
		return (LTrim(RTrim(aStr)));
	}
	
	function IsValidEmail(aEmail)
	{
//		var re = new RegExp(/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z]([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9}$)/);
		var re = new RegExp(/^([0-9a-zA-Z]([\-.\w])*@([0-9a-zA-Z]([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9}$)/);
		return (re.test(aEmail));
	}

	function IsValidHttp_s(aUrl)
	{
		var re = new RegExp(/^http[s]?:\/\//);
		return (re.test(aUrl));
	}

	function IsValidUrl(aUrl)
	{
 		var re = new RegExp(/^http[s]?:\/\/[a-z0-9][a-z0-9\-_]*(\.[a-z0-9\-_]+)*(:([0-9])+)?([\/].*)?$/);
		return (re.test(aUrl));
	}
	
	function SetSelectedValue(a_SelectObj, a_Val)
	{
		if (!a_SelectObj)
		{
			return;			
		}
		
		a_SelectObj.value = a_Val;
	}
	
	function SetSelectedText(a_SelectObj, a_Text)
	{
		if (!a_SelectObj)
		{
			return;			
		}
		
		l_OptsCol = a_SelectObj.options;
		
		for (i = l_OptsCol.length-1 ; i > 0 ; i--)
		{
			l_OptsCol[i].selected = (l_OptsCol[i].value == a_Text);
		}
	}

	function min(a,b)
	{
		if (a < b) return a; return b;
	}

	function max(a,b)
	{
		if (a > b) return a; return b;
	}
	
	function ForceNumberInput(a_NumObj, a_LastKnownGoodNumber, a_Min, a_Max, a_Fix)
	{
		var l_Error = false;
		var l_re = new RegExp(/^(-)?([0-9]*)(?:\.([0-9]*))?$/);

		var l_val = a_NumObj.value;
		
		if (!l_re.test(l_val))
		{
			a_NumObj.value = a_LastKnownGoodNumber;
			return a_LastKnownGoodNumber;
		}
		
		var l_numArr = l_val.match(l_re);
		
		var l_num_Sign  = l_numArr[1] === undefined ? "" : l_numArr[1];
		var l_num_left  = l_numArr[2] === undefined ? "" : l_numArr[2];
		var l_num_Right = l_numArr[3] === undefined ? "" : l_numArr[3];

		var l_num = parseFloat(l_num_Sign + l_num_left + '.' + l_num_Right);
		
		if ((a_Min >= 0) && (l_num_Sign == "-"))
		{
			l_Error = true;
		}
		else if ((l_num < a_Min) || (l_num > a_Max))
		{
			l_Error = true;
		}
		else if ((a_Fix !== undefined) && (l_num_Right.length > a_Fix))
		{
			l_Error = true;
		}
		
		if (l_Error)
		{
			a_NumObj.value = a_LastKnownGoodNumber;
			return a_LastKnownGoodNumber;
		}
		
		return l_val;		
	}

	function ForceBaseUrl(a_BaseUrlStr, a_OtherUrl, a_KnownGoodUrl, a_ErrMsg)
	{
		l_baseUrlStr = a_BaseUrlStr;
		l_OtherUrl = a_OtherUrl;
		
		if (l_baseUrlStr.charAt(l_baseUrlStr.length-1) != '/')
		{
			l_baseUrlStr = l_baseUrlStr + '/';
		}

		l_delimPos = l_OtherUrl.value.indexOf(l_baseUrlStr);

		if (CountStrOcc(l_baseUrlStr,'/') < 3)
		{
			l_OtherUrl.disabled = true;
		}
		else
		{
			if (l_OtherUrl.disabled)
			{
				l_OtherUrl.disabled = false;
			}
		}
				
		if (l_delimPos != 0)
		{
			if (!(a_ErrMsg === undefined))
			{
				alert(a_ErrMsg);
			}
			l_OtherUrl.value = l_baseUrlStr + a_KnownGoodUrl;
		}
		else
		{
			a_KnownGoodUrl = (l_OtherUrl.value).substr(l_baseUrlStr.length);
		}
			
		return a_KnownGoodUrl;
	}

	function UpdateTextAreaRows(a_Ta, a_MinSize)
	{
		
		if (a_Ta.scrollHeight > a_Ta.offsetHeight)
		{
			a_Ta.style.height = max(a_Ta.scrollHeight + 4,a_MinSize);
		}
		else
		{
			if (isMoz)
			{
				if ((a_Ta.scrollHeight == a_Ta.clientHeight) && (a_Ta.offsetHeight > a_MinSize))
				{
					while ((a_Ta.scrollHeight == a_Ta.clientHeight) && (a_Ta.offsetHeight > a_MinSize))
					{
						a_Ta.style.height = a_Ta.offsetHeight-10;
					}
					a_Ta.style.height = a_Ta.offsetHeight+(a_Ta.scrollHeight - a_Ta.clientHeight);
				}
			}
			else  if (a_Ta.clientHeight > a_Ta.scrollHeight);
			{
				// IExplorer
				a_Ta.style.height = max(a_Ta.scrollHeight + 4,a_MinSize);
			}
		}
	}
	
	function get_cookie(a_Name)
	{
		var l_cname = a_Name;
		var i;
		
		var l_cookies = document.cookie.split("; ");
		for (i=0; i < l_cookies.length; i++)
		{
			var l_cookie = l_cookies[i].split("=");
			if (l_cname == l_cookie[0]) 
			{
				return l_cookie[1];
			}
		}

		return null;
	}
	
	function set_cookie(a_Name, a_Value, a_Days, a_Path, a_Domain)
	{
		var l_cname = a_Name;
		var c_DaysOffset = a_Days;

		if (c_DaysOffset != 0)
		{
			var l_date = new Date();
			l_date = new Date(l_date.getFullYear(), l_date.getMonth(), l_date.getDate() + c_DaysOffset);

			document.cookie = l_cname + '=' + a_Value +
				'; expires=' + l_date.toGMTString() + 
				'; path=' + a_Path + 
				'; domain=' + a_Domain;
		}
		else
		{
			document.cookie = l_cname + '=' + a_Value +
				'; path=' + a_Path + 
				'; domain=' + a_Domain;
		}
	}
	
	function InitColorPallete(a_placeholder_id, a_target_id)
	{
		var l_colorArr = new Array('00', '7F', 'BF', 'FF');
		var l_maxColor = 4;
		var l_red = 0;
		var l_green = 0;
		var l_blue = 0;
			
		var l_Table = document.createElement('TABLE');
		var l_Tbody = document.createElement('TBODY');
		document.getElementById(a_placeholder_id).appendChild(l_Table);
		l_Table.appendChild(l_Tbody);
		l_Table.style.fontSize = '1px';
		l_Table.style.lineHeight = '10px';
		l_Table.cellPadding = 0;
		l_Table.cellSpacing = 0;
			
		var l_newRow = null;
		var l_newCell = null;
			
		var l_MaxInLine = 16;
		var i = 0;
			
		for (l_red = 0; l_red < l_maxColor ; l_red++)
		{
			for (l_green = 0; l_green < l_maxColor ; l_green++)
			{
					
				for (l_blue = 0; l_blue < l_maxColor ; l_blue++)
				{
					if ((i % l_MaxInLine) == 0)
					{
						l_newRow = document.createElement('TR');
						l_Tbody.appendChild(l_newRow);
					}
					i++;
						
					l_newCell = document.createElement('TD');
					l_newRow.appendChild(l_newCell);
					l_newCell.style.background = '#' + l_colorArr[l_red] + l_colorArr[l_green] + l_colorArr[l_blue];
					l_newCell.innerHTML = '&nbsp;';
					l_newCell.style.cursor = 'pointer';
					l_newCell.m_color = '#' + l_colorArr[l_red] + l_colorArr[l_green] + l_colorArr[l_blue];
					l_newCell.m_targetid = a_target_id;
					l_newCell.className = 'cp';
					AttachEvent(l_newCell, 'click', UpdateColorValueInt, false);
				}
			}
		}
			
		l_newRow = document.createElement('TR');
		l_Tbody.appendChild(l_newRow);
		var l_color;
		var l_color_str;
			
		for (i = 0; i < l_MaxInLine ; i++)
		{
			l_color = (255/(l_MaxInLine-1)) * i;
			l_color_str = '#' + IntToHex(l_color,2) + IntToHex(l_color,2) + IntToHex(l_color,2);
			l_newCell = document.createElement('TD');
			l_newRow.appendChild(l_newCell);
			l_newCell.style.background = l_color_str;
			l_newCell.innerHTML = '&nbsp;';
			l_newCell.style.cursor = 'pointer';
			l_newCell.m_color = l_color_str;
			l_newCell.m_targetid = a_target_id;
			l_newCell.className = 'cp';
			AttachEvent(l_newCell, 'click', UpdateColorValueInt, false);
		}
			
	}
	
	
	function ShowColorPallete(a_placeholder_id, a_target_id, a_left, a_top, a_onchange_func)
	{
		var l_valObj = document.getElementById(a_target_id);
		var l_ph = document.getElementById(a_placeholder_id);
		var l_phIO = null;
		var l_phIO_Id = a_placeholder_id + '_io';
		
		l_ph.m_onchange_func = a_onchange_func;
		
		if (typeof(l_ph.m_IsInit) == "undefined")
		{
			// Should init
			
			//---------------------------------------------------------------------
			// On blur the control must shutdown. 
			//---------------------------------------------------------------------
	
			if (isIE)
			{
				l_onBlur = ' onblur="if (!isChildOf(document.activeElement,\'' + a_placeholder_id + '\')) {ColorPallete_Cancel(\'' + a_placeholder_id + '\');} " ';
				l_ChildrenOnBlur = l_onBlur;
			}
			else
			{
				l_onBlur = ' onblur="ColorPallete_CloseIfNotInFocus(\'' + a_placeholder_id + '\'); " ';
				l_ChildrenOnBlur = '';
			}

			l_onkeydown = ' onkeydown=" javascript:ddmenu_KeyPress(event, this, \'' + a_placeholder_id + '\') " ';
			l_onkeydown = ' ';
	
			l_OutStr = '<DIV tabIndex="1" ' + l_onBlur + l_onkeydown + ' id="' + a_placeholder_id + '_control" ></DIV>';
			l_ph.innerHTML = l_OutStr;
			
			l_phIO = document.createElement('INPUT');
			l_phIO.type = 'hidden'
			l_phIO.id = l_phIO_Id;
			l_phIO.value = a_target_id;
			l_ph.appendChild(l_phIO);
			
			InitColorPallete(a_placeholder_id + '_control', l_phIO_Id);
			l_ph.m_IsInit = true;
		}
		else
		{
			document.getElementById(l_phIO_Id).value = a_target_id;
		}
		
		l_ph.style.position = 'absolute';
		l_ph.style.left = a_left;
		l_ph.style.top = a_top;
		l_ph.style.display = '';
		
		document.getElementById(a_placeholder_id + '_control').focus();
		
	}
	
	function ColorPallete_CloseIfNotInFocus(a_placeholder_id)
	{
		document.getElementById(a_placeholder_id).style.display = 'none';
	}
	
	function ColorPallete_Cancel(a_placeholder_id)
	{
		ColorPallete_CloseIfNotInFocus(a_placeholder_id);
	}
		
	function UpdateColorValueInt(e)
	{
		e = !e ? event : e;
		var l_caller = !e.srcElement ? this : e.srcElement;
		var l_target_id = document.getElementById(l_caller.m_targetid).value
		
		var l_ph = document.getElementById(l_caller.m_targetid).parentNode;
			
		document.getElementById(l_target_id).value = l_caller.m_color;
		
		if (l_ph.m_onchange_func)
		{
			l_ph.m_onchange_func(document.getElementById(l_target_id));
		}
		
		document.getElementById(l_ph.id + '_control').focus();
			
	}

	// todo: remove this function and change it with GetDocElement()
	function GetElement(a_id) 
	{
		return document.getElementById(a_id);
	}
		
	function GetDocElement(a_id)
	{
		return document.getElementById(a_id);
	}
	
	function ChangeAlphaOpacity(a_Element, a_Opacity)
	{
		if (isMoz)
		{
			a_Opacity = a_Opacity/100; 
			a_Element.setAttribute('style', 'opacity: ' + a_Opacity + ';	-moz-opacity:' + a_Opacity + '; ');
		}
		else
		{
			a_Element.filters.item("DXImageTransform.Microsoft.Alpha").opacity = a_Opacity;
	//		a_Element.style.filter = 'alpha(opacity=' + a_Opacity + ')';
		}
	}
	
	function ShowScreenLayer(a_Show)
	{
		var l_screen_element = GetDocElement('screen_element');
		if (!l_screen_element)
		{	
			l_screen_element = document.createElement('DIV');
			l_screen_element.setAttribute('id', 'screen_element');
//				filter:alpha(opacity=70); opacity: 0.7;	-moz-opacity:0.7
			if (isMoz)
			{
				l_screen_element.setAttribute('style', 'opacity: 0.7;	-moz-opacity:0.7; ');
			}
			else
			{
				l_screen_element.style.filter += 'alpha(opacity=70)';
			}
							
			l_screen_element.style.width = '100%';
			l_screen_element.style.height = max(parseInt(document.body.scrollHeight), parseInt(document.body.clientHeight)) + 'px';
			l_screen_element.style.position = 'absolute';
			l_screen_element.style.top = parseInt(document.body.scrollTop) + 'px'; 
			l_screen_element.style.left = '0px'; 
			l_screen_element.style.backgroundColor = '#F0F0F0';				
			l_screen_element.innerHTML = '&nbsp;';
			document.body.appendChild(l_screen_element);
		}
		
		if (a_Show)
		{
			l_screen_element.style.display = '';
		}
		else
		{
			l_screen_element.style.display = 'none';
		}
		
		l_screen_element.show_me = a_Show;
	}


	function FlyWnd(a_Id, a_Show, a_PosX, a_PosY)
	{
		var l_wnd = GetElement(a_Id);
		
		ShowScreenLayer(a_Show)
		
		l_wnd.style.display = a_Show ? '' : 'none';
		l_wnd.style.position = 'absolute';
		l_wnd.style.left = parseInt(a_PosX) + 'px';
		l_wnd.style.top = parseInt(a_PosY) + 'px';
		l_wnd.style.zIndex = 100;
	}
				
	function GetParentByTagName(a_Element, a_TagName)
	{
		var l_parent = a_Element.parentNode;
		
		if (a_Element.tagName == 'BODY') return a_Element;
		
		while (l_parent && (l_parent != 'BODY') && (l_parent.tagName != a_TagName))
		{
			l_parent = l_parent.parentNode;
		}
		
		return l_parent;
	}
	
	function FlyWndMoveStart(e)
	{
		e = !e ? window.event : e;
		var l_element = e.target ? e.target : e.srcElement;
		if (l_element.nodeType == 3) l_element = l_element.parentNode;			
		
		if (e.button != 2)
		{
			document.moving_obj = GetParentByTagName(l_element, 'DIV');
			
			document.moving_obj.click_pos_x = e.clientX - parseInt(document.moving_obj.style.left);
			document.moving_obj.click_pos_y = e.clientY - parseInt(document.moving_obj.style.top);
			document.moving = true;
		}
		
		return true;
	}

	function FlyWndMoveEnd(e)
	{
		e = !e ? window.event : e;			
		var l_element = e.target ? e.target : e.srcElement;
		if (l_element.nodeType == 3) l_element = l_element.parentNode;			
		
		if (e.button != 2)
		{
			document.moving = false;
		}
					
		return false;
	}


	function FlyWndMove(e)
	{
		e = !e ? window.event : e;
		var l_element = e.target ? e.target : e.srcElement;
		if (l_element.nodeType == 3) l_element = l_element.parentNode;			
					
		if (document.moving)
		{
			// Move.
			document.moving_obj.style.left = e.clientX - document.moving_obj.click_pos_x;
			document.moving_obj.style.top = e.clientY - document.moving_obj.click_pos_y;
			return false;
		}
		return true;
	}
	
	function RefreshScreenLayer()
	{
		var l_screen_element = GetDocElement('screen_element');
		if (!l_screen_element) return;
		
		if (l_screen_element.show_me)
		{
			l_screen_element.style.height = max(document.body.scrollHeight, document.body.clientHeight);
		}
	}


	function RefreshProgressInd()
	{
		var l_progress_ind = GetDocElement('progressind_element');
		if (!l_progress_ind) return;
		
		l_progress_ind.style.top = document.body.scrollTop;			
	}

	function ShowProgressInd(a_Text)
	{
		ShowScreenLayer(true);
		var l_progress_ind = GetDocElement('progressind_element');
		if (!l_progress_ind)
		{	
			l_progress_ind = document.createElement('DIV');
			l_progress_ind.setAttribute('id', 'progressind_element');
			if (isMoz)
			{
				l_progress_ind.setAttribute('style', 'opacity: 0.7;	-moz-opacity:0.7;');
			}
			else
			{
				l_progress_ind.style.filter += 'alpha(opacity=70)';
			}
							
			l_progress_ind.style.width = '100%';
			l_progress_ind.style.padding = '3px 10px';
			l_progress_ind.style.color = 'white';
			l_progress_ind.style.textAlign = 'center';
			l_progress_ind.style.position = 'absolute';
			l_progress_ind.style.top = document.body.scrollTop; 
			l_progress_ind.style.left = 0; 
			l_progress_ind.style.backgroundColor = 'red';				
			l_progress_ind.innerHTML = a_Text;
			document.body.appendChild(l_progress_ind);
		}
	}

	function tdf(dummy)
	{
		return '';
	}

	function XMLGetElementByAttr(a_XmlDoc, a_AttrName, a_AttrVal, a_TagName)
	{
		var l_arr;
		if (a_TagName)
		{
			l_arr = g_xml_tasks_tree.getElementsByTagName(a_TagName);
		}
		else
		{
			l_arr = g_xml_tasks_tree.documentElement.childNodes;
		}
		
		for (i=0; i < l_arr.length ; i++)
		{
			if (l_arr[i].getAttribute(a_AttrName) == a_AttrVal)
			{
				return l_arr[i];
			}
		}
		
		return null;
	}

	function HTMLTreeRefreshItem(a_xmlNode, a_ID, a_Prefix, a_ClassItemFunc)
	{
		var l_TreeItem = GetDocElement(a_Prefix + '_tree_item_' + a_ID);
		var l_text = '';
		
		l_TreeItem.childNodes[0].className = 'label ' + a_ClassItemFunc(a_xmlNode);

		for (i = 0 ; i < a_xmlNode.childNodes.length ; i++)
		{
			if (a_xmlNode.childNodes[i].nodeName == "#text")
			{
				l_text += a_xmlNode.childNodes[i].nodeValue;
			}
		}
		
		l_TreeItem.childNodes[0].innerHTML = l_text;

	}
	
	function XMLToHTMLTree(a_xmlNode, a_Level, a_SelectedId, a_ClickFunc, a_ClassItemFunc, a_Prefix, a_ImgDir)
	{
		if (!a_xmlNode) return;
		
		if (!a_ClickFunc) a_ClickFunc = tdf;
		if (!a_ClassItemFunc) a_ClassItemFunc = tdf;
		

		var l_ans = "";					
		var i;
		var l_treeChildren = a_xmlNode.childNodes;
		var l_hasChildren = false;
		var l_text = '';
		var l_text_class = '';
		var l_item_id = 0;
		
		for (i = 0 ; i < l_treeChildren.length ; i++)
		{
			if (l_treeChildren[i].nodeName == "#text")
			{
				l_text += l_treeChildren[i].nodeValue;
			}
			else if (l_treeChildren[i].nodeName == "t")
			{
				l_hasChildren = true;
				l_ans += XMLToHTMLTree(l_treeChildren[i], a_Level + 1, a_SelectedId, a_ClickFunc, a_ClassItemFunc, a_Prefix, a_ImgDir);
			}
		}

		if (a_SelectedId == (l_item_id = a_xmlNode.getAttribute('id')))
		{
			l_text_class = 'tree_item_selected';
		}
		
		l_text = '<span tid="' + l_item_id + '" + id="' + a_Prefix + '_tree_item_' + l_item_id + '" class="' + l_text_class + '"><a canDrag="true" canDrop="true" href="' + a_ClickFunc(a_xmlNode) + '" class="label ' + a_ClassItemFunc(a_xmlNode) + '">' + StrToXMLSafe(l_text) + '</a></span>';
		
		if (l_hasChildren)
		{
			l_ans = '<div class="subtree" id="' + a_Prefix + '_tree_level_' + a_Level + '">' + l_ans + "</div>";
			l_ans = '<div class="tree_item tree_item_with_children"><table cellpadding="0" cellspacing="0"><tr><td class="cmd_spacer ico_expanded"><img onclick="treeCollapseExpand(this)" class="cmd_spacer" src="' + a_ImgDir + '/spacer.gif" border="0"/></td><td nowrap="true">' + l_text + "</td></tr></table></div>" + l_ans;
		}
		else
		{
			l_ans = '<div class="tree_item"><table cellpadding="0" cellspacing="0"><tr><td></td><td nowrap="true">' + l_text + "</td></tr></table></div>" + l_ans;
		}

		return l_ans;
	}
	
	function treeCollapseExpand(e)
	{
		e = !e ? event : e;
		var l_cmdIcon = !e.srcElement ? e : e.srcElement;
		var l_cmdIconPlaceHolder = l_cmdIcon.parentNode;
		var l_subtree = l_cmdIcon.parentNode.parentNode.parentNode.parentNode.parentNode.nextSibling;

		if (l_subtree.style.display == '')
		{
			// should collapse
			l_subtree.style.display = 'none';
			l_cmdIconPlaceHolder.className = 'cmd_spacer ico_collapsed';
		}
		else
		{
			// should expand
			l_subtree.style.display = '';
			l_cmdIconPlaceHolder.className = 'cmd_spacer ico_expanded';
		}
	}

	
