// print functions
var func_before_print="";
var func_after_print="";
var PRINT_AF_DEBUG=false;

/* ===== PROTOTYPE SECTION FOR ALL BROWSERS ===== */

String.prototype.trim = function() {return this.replace(/^\s+|\s+$/,'');};
String.prototype.replaceAll = function(search, replace)
{
	return this.split(search).join(replace);
}

/* ===== END PROTOTYPE SECTION FOR ALL BROWSERS ===== */
	
function window_onbeforeprint()
{
	try
	{
		var oHttp=new ActiveXObject("Microsoft.XMLHTTP");
		window.status="Getting time from server...";
		oHttp.open("get", "../../utils/tools/time.aspx", false); 
		oHttp.send();
		if(oHttp.status==200)
		{
			var dataTime = "&nbsp;" + oHttp.responseText + "&nbsp;"; 
			
			if(document.getElementById("divPrintTime")!=null)
				document.getElementById("divPrintTime").innerHTML = dataTime;
			if(document.getElementById("divPrintTimeStar")!=null)
				document.getElementById("divPrintTimeStar").innerHTML = dataTime;
		}		
	}
	catch(e){}
	
	if(func_before_print!="")eval(func_before_print);
}

function window_onafterprint()
{
	if(PRINT_AF_DEBUG) return;
	if(func_after_print!="")eval(func_after_print);
}

//general functions
function fn_stock(pid)
{
	var url="dirstock.ashx?pid=" + pid + "&";
	fn_jscript(url);
}

function fn_pagedemo(id)
{  
}

function fn_open_foreign_paper_info(str)
{	
	var symbol=fn_search_encode(str);
	window.open("../../../info/abroad/abroaddetails.asp?symbol="+symbol+"&", "foreign", "toolbar=no,scrollbars=no,left=0,top=0,width=800,height=550,resizable=yes");
}

function fn_open_short_foreign_paper_info(str,RegionId)
{	
	var symbol=fn_search_encode(str);
	window.open("../../../info/abroad/abroaddetails.asp?symbol="+symbol+"&regionid="+RegionId+"&", "foreign", "toolbar=no,scrollbars=no,left=0,top=0,width=800,height=550,resizable=yes");
}

function fn_map(url) 
{
	 window.location.href  = url + "utils/tools/map.asp"; 
}

function fn_readCookie(name) 
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function fn_logout(AspSiteUrl)
{
	var oHttp;
	var browser;
	
	// url for logout from .NET
	var url = "../../zone/logout.aspx";
	var error;
	
	if (fn_readCookie("ASP.NET_SessionId") != null )
	{
		try
		{
			// code for Mozilla
			if (window.XMLHttpRequest)
			{
				oHttp = new XMLHttpRequest();
				browser = "Mozilla";
			}
			
			// code for IE
			if (window.ActiveXObject)
			{
				oHttp = new ActiveXObject("Microsoft.XmlHttp");
				browser = "IE";
			}
			
			if (oHttp != null)
			{
				oHttp.onreadystatechange=function(){CheckResponseLogout(oHttp,browser,AspSiteUrl);};
				oHttp.open("GET",url, true);
				oHttp.send(null);
			}
			else
			{
				alert("Your browser doesn't support XMLHTTP.")
			}
		}
		catch(e)
		{ 
			error = e.description;
			window.status='הגדרות הדפדפן לא מתאימות לדרישות האתר, אנא פנה למוקד';
		}
	}
	else
		window.location.href = AspSiteUrl + 'zone/logout.asp';
}

function CheckResponseLogout(oHttp,browser,LogOutUrl)
{
	if(oHttp.readyState==4)
	{
		window.status=oHttp.status + " - " + oHttp.statusText;
		
		try
		{
			if(oHttp.status!=200) return;
				
			// logout from asp
			window.location.href = LogOutUrl + 'zone/logout.asp'; 			
		}
		catch(e)
		{
			window.status=e.description;
		}
	}
}

function fn_goto_alerts()
{ 
	window.location.href = '../../../trade/alerts/alertsmain.asp'; 
}

function fn_open_pwd_settings() 
{ 
	window.open('../../../utils/tools/setpassword.asp','secsetwin','height=500,width=620,top=0,left=0,resizeable=1'); 
}

function fn_openbursagraph(pid)
{
	fn_jscript("../../utils/redirect/dirbursa.ashx?pid=" + pid + "&t=" + new Date() + "&");
	//window.open("../../info/graph/graphbursa.asp?pid=" + pid + "&", "bursagraph","top=0,left=0,height=715px,width=810px,scrollbars=yes,resizable=yes");
}

function fn_trade(pid, cmd, trade, evnt)
{
	if(cmd==null)
	{
		var ev = evnt.target || evnt.srcElement;
		cmd = (ev.offsetX >15)?1:2;
	}
	
	var url="dirtrade.ashx?pid=" + pid + "&cmd=" + cmd;
	if(trade!=null)
	{
		url=url + "&trade=" + trade;
	}
	url=url + "&t=" + new Date() + "&";
	fn_jscript(url);
}

function fn_trade_express(pid, cmd)
{
	var url="../../trade/express/TradeOpen.aspx?pid=" + pid + "&cmd=" + cmd + "&";
	window.location.href = url;
}

function fn_open_searchresult()
{
	window.open("../../utils/search/SearchResult.aspx","SearchResult","toolbar=no,left=0,top=0,width=600,height=662");
}

function fn_search(txtSearch, searchType, paperType, isMaof, RegionID, CountryID, BursaID)
{
	if(searchType==null)searchType=1;
	if(paperType==null) paperType=-1;
	if(isMaof==null)isMaof=0;
		
	if(!fn_checksearch(txtSearch)) return false;
	var txt=fn_search_encode(txtSearch);
	
	if (searchType=='5' || searchType=='6' || searchType=='7')
	{
		fn_jscript('../../net/searchengine.ashx?txt=' + txt + "&rid=" + RegionID + "&cid=" + CountryID + "&bid=" + BursaID + "&");
		return true;
	}
	if ((RegionID=='0') || (searchType!='5'))
	{
		window.open("../../utils/search/searchresults.asp?word=" + txt + "&type="+searchType+"&IsMaof="+isMaof+"&PaperType="+paperType+"&", "SrchRes", "toolbar=no,left=0,top=0,width=450,height=250");
		return true;
	}
	
	return true;
}

function fn_checksearch(str, fnc)
{
	if(!fnc) fnc = "alert";
	var invalidChars=".,-+_%", badchr;
	
	if (str.length==0) 
	{
		eval(fnc + "('הכנס טקסט לחיפוש');"); 
		return false;
	}
	if(str.length==1)
	{
		for(var i=0;i<invalidChars.length;i++)
		{
			badchr=invalidChars.charAt(i);
			if(str.indexOf(badchr,0) > -1)
			{
				eval(fnc + "('טקסט לא חוקי לחיפוש');")
				return false;
			}				  
		}
	}
	return true;		
}

function fn_searchadv()
{
	window.open('../../../utils/search/searchadv.asp', "advsrch", "toolbar=no,left=0,top=0,width=350,height=320")
}

function fn_open_search_for_calc(st, url)
{
	url = (url==undefined) ? "../../" : url;
	
//	window.open(url + 'utils/search/searchcalc.asp?calc_type=' + st + '&', 'calcsearch', 'top=0,left=0');
	window.open(url + 'utils/search/searchcalc.aspx?calc_type=' + st + '&', 'calcsearch', 'top=0,left=0');
	
}
function fn_open_search_for_calc_Net(st, url)
{
	url = (url==undefined) ? "../../" : url;
	window.open(url + 'utils/search/searchcalc.aspx?calc_type=' + st + '&', 'calcsearch', 'top=0,left=0');
	
}
function fn_search_encode(str)
{
 var enc='';
 
	for(var i=0; i<str.length; i++) { enc+=str.charCodeAt(i,1) + "_"; }
	return enc;
}

function fn_open_makam_calc(pid, url)
{
	if(!pid)
		fn_open_search_for_calc('pop_makam', url);
	else
		{window.open('../../../utils/tools/calc_makam.asp?pid=' + pid + '&', 'mk_calc', 'top=0,left=0,width=600,height=390');}
}

function fn_open_makam_calc_Net(pid, url)
{
/*	if(!pid)
		fn_open_search_for_calc('pop_makam', url);
	else
		window.open(url + 'utils/tools/calc_makam.asp?pid=' + pid + '&', 'mk_calc', 'top=0,left=0,width=600,height=390');
*/
	if(!pid)
		fn_open_search_for_calc('pop_makam', url);
	
	else
	{
		url = (url==undefined) ? "../../" : url;
		window.open(url + 'utils/tools/calc_makam.aspx?pid=' + pid + '&', 'mk_calc', 'top=0,left=0,width=600,height=390');	
	}	
}

function fn_open_option_calc(pid, isShow, url)
{	
	if(!pid)
		fn_open_search_for_calc('pop_maof', url);
	else
		window.open('../../../utils/tools/calc_option.asp?opid=' + pid + '&isShow=' + isShow + '&', 'op_calc', 'top=0,left=0,width=600,height=530');
}

function fn_open_option_calc_Net(pid, isShow, AspSiteName)
{
	if(!pid)
		fn_open_search_for_calc('pop_maof', AspSiteName);
	else
	{
		str = AspSiteName + "utils/tools/calc_option.asp?opid=" + pid + "&isShow=" + isShow + "&";		
		window.open(str, 'op_calc', 'top=0,left=0,width=600,height=530');
	}	
}

function fn_download_excel(url)
{
 if(url=='')
 {
	alert("לא נמצאו נתונים");
	return;
 }
 
 var cook=fn_get_cookie("CC_Msg");
 var IsOK;

 if(cook.toUpperCase()=="NO")
	IsOK=1;
 else
	IsOK=window.showModalDialog("../../netutils/excel/excelwarning.aspx","", "dialogWidth:600px; dialogHeight:320px; status:no; center:yes; scroll:no; help:no; resizable:yes");

	if(IsOK==1)
	window.location.href = url;
}

function fn_get_cookie(sName)
{
  // cookies are separated by semicolons
  var aCookie = document.cookie.split("; ");
  for (var i=0; i < aCookie.length; i++)
  {
    // a name/value pair (a crumb) is separated by an equal sign
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0]) 
      return unescape(aCrumb[1]);
  }

  // a cookie with the requested name does not exist
  return "";
}

function fn_show_ask(val)
{
	switch(val.toString())
	{
		case '0':	//	No/Time's up
			window.location.href = "../../../zone/logout.asp";
			break;
		case '1':	//	Yes
			window.location.reload(true);
			break;
		case '2':	//	X	(continue till time's up)
			return;
		default:
			return;
	}	
}

function fn_trim(st)
{
	return st.replace(/ /g, '');
}

function fn_open_declaration(base)
{
// TODO: ASPX
	var w=window.open(base + 'trade/inc/cover_declaration.asp?', 'declaration','left=0px,top=0px,width=500px,height=248px,resizable =1');	
	//var w=window.open(/LTIASP/trade/inc/cover_declaration.asp?', 'declaration','left=0px,top=0px,width=500px,height=248px,resizable =1');	
	
	w.focus();
}

function fn_help(key)
{
	var w=window.open("../../utils/redirect/dirhelp.aspx?type=2&key=" + key + "&", "itemhelp", "left=0,top=0,width=500,height=200,resizable=yes,scrollbars=yes"); 
	w.focus();
}

function fn_helpforpage(key)
{
	var w=window.open("../../utils/redirect/dirhelp.aspx?type=1&key=" + key + "&", "pagehelp", "left=0,top=0,width=762,height=602,resizable=yes,scrollbars=yes"); 
	w.focus();
}

function fn_helpsite(key)
{
	var w=window.open("../../utils/redirect/dirhelp.aspx?type=3&key=" + key + "&", "sitehelp", "left=0,top=0,width=762,height=602,resizable=yes,scrollbars=yes"); 
	w.focus();
}

function open_graph_compare(url,id, period)
{
	if(id==1334)id=198;
	var str = url + "info/graph/graphcompare.asp?pid=" + id + "&pdb_cbo_prd=" + period + "&";
	window.open(str, 'graph_comp', 'top=0,left=0,width=700,height=600,status=0,scrollbars=1');
}

// TODO: remove function
function show(id, url)
{
	var str = url + "info/stock/stockdetails.asp?group=14000&menu=maof&item=mf_dt&inp_pid=" + id + "&";
	window.location.href = str;
}

function fn_popup(key)
{
	var src="../../utils/redirect/dirlink.aspx?key=" + key + "&type=4&";
	
	if(arguments.length>1)
	{
		for(var i=1; i<arguments.length; i++)
		{
			src+="p" + (i-1) + "=" + arguments[i] + "&";
		}
	}
	fn_jscript(src);	
}
function fn_link(key)
{
	var src="../../utils/redirect/dirlink.aspx?key=" + key + "&type=1&";
	fn_jscript(src);	
}

function fn_jscript(src)
{
	var j = document.createElement("script");
	j.type = "text/javascript";
	j.name="js" + Math.random();
	j.src=src;
	document.body.insertBefore(j, null);		
}

function fn_opentradeinfo(id, type)
{	
	if (window.screen.availHeight<=600)	
		window.open('../../../trade/ppr/addinfo.asp?inp_pid=' + id + '&inp_tid=' + type + '&', 'trade_info','top=0,left=0,width=365,height=510,scrollbars=yes,resizable=yes,status=no');
	else
		window.open('../../../trade/ppr/addinfo.asp?inp_pid=' + id + '&inp_tid=' + type + '&', 'trade_info','top=0,left=0,width=365,height=660,scrollbars=yes,resizable=yes,status=no');
}

function fn_openmaoftradeinfo(id,type)
{
	if (window.screen.availHeight<=600)	
		window.open('../../trade/maof/MaofAddInfo.aspx?inp_pid=' + id + '&inp_tid=' + type + '&', 'trade_info','top=0,left=0,width=365,height=510,scrollbars=yes,resizable=yes');
	else
		window.open('../../trade/maof/MaofAddInfo.aspx?inp_pid=' + id + '&inp_tid=' + type + '&', 'trade_info','top=0,left=0,width=365,height=660,scrollbars=yes,resizable=yes');
}

function fn_map_local(url)
{
	fn_map(url);
}

function getInternetExplorerVersion()
{
	var rv = -1;
	if(navigator.appName == 'Microsoft Internet Explorer')
	{
		var ua = navigator.userAgent;
		var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if(re.exec(ua)!=null)
			rv = parseFloat(RegExp.$1);
	}
	return rv;
}

function fn_identifybrowser()
{
	var browser = window.navigator.appName.toUpperCase();
	
	if(browser)
	{
		if(browser.indexOf("MICROSOFT") != -1)
			return "ie";
		
		return "dom";
	}
}

function fn_getxmlhttp()
{
	var browser=fn_identifybrowser();
	
	try	
	{
		switch(browser)
		{
			case "ie":
				return new ActiveXObject("Microsoft.XmlHttp");
				break;
				
			case "dom":
				return new XMLHttpRequest();
				break;
				
			default:
				return null;
		}
	}
	catch(e)
	{ 
		window.status=e.description;
		return null;
	}
}

function fn_gettimestamp()
{
	var d = new Date();
	return d.getHours() + "_" + d.getMinutes() + "_" + d.getSeconds() + "_" + d.getMilliseconds();
}

function fn_getasyncdata(method, url, params, callback)
{
	try	
	{
		var oHttp=fn_getxmlhttp();
		
		if (oHttp != null)
		{
			oHttp.onreadystatechange=function(){fn_checkresponse(oHttp, callback);};
			oHttp.open(method.toUpperCase(), url, true);
			
			if(method.toUpperCase()=="POST")
			{
				oHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
				
			}
			oHttp.setRequestHeader("CharSet","windows-1255");
			oHttp.send(params);
			
		}
	}
	catch(e)
	{ 
		window.status=e.description;
	}
}

function fn_checkresponse(oHttp, callback)
{
	if(oHttp.readyState==4)
	{
		window.status=oHttp.statusText;
		
		//try
		{
			if(oHttp.status  == 200)
				eval(callback + "(oHttp)");
			else
			{
				//var w=window.open("", "_blank");
				//w.document.write(oHttp.responseText);
			}
		}
		//catch(e)
		//{
		//	window.status=e.description;
		//}	
	}
}

function fn_posneg(val)
{
	if(parseFloat(val)>0) return "positive";
	if(parseFloat(val)<0) return "negative";
	return "netrual";
}

function GetHtmlData(url, div, addFormValues)
{
	var e = document.getElementById("frmMain").elements;
	var browser;
	var error = "";
	
	var oHttp=null;


	if (addFormValues)
	{
		// check '?' and '&' in url
		if(url.indexOf("?")==-1)
			url+="?";
		else
			if(url.indexOf("&", url.length-1)==-1) url+="&";

		for(var i=0; i<e.length; i++) url+=(e[i].name + "=" + e[i].value + "&");
		
	}
	else
	{
		// if parameters were passed
		if(url.indexOf("?") != -1)
			{
				// just add & for url 
				if(url.indexOf("&", url.length-1)==-1) url+="&";
			}
	}
	

	try
	{
		oHttp = fn_getxmlhttp();
		
		if (oHttp != null)
		{
			oHttp.onreadystatechange=function(){CheckResponse(oHttp, div);};
			oHttp.open("GET",url, true);
			oHttp.send(null);
		}
		else
		{
			alert("Your browser doen't support XMLHTTP.")
		}
	}
	catch(e)
	{ 
	error = e.description;
	window.status='הגדרות הדפדפן לא מתאימות לדרישות האתר, אנא פנה למוקד';
	}
}

function CheckResponse(oHttp, oDiv)
{
	var error = "";
	var browser=fn_identifybrowser();
	
	if(oHttp.readyState==4)
	{
		window.status=oHttp.statusText;
		try
		{
			if(oHttp.status  == 200)
			{
				UpdateDivByXmlHttpResults(oHttp,oDiv);
			
			// on send after event
				if (document.getElementById("oDivXmlHttp"))
				{
					var onsendafter;
					if (browser.toLowerCase()=="ie")
						onsendafter = document.getElementById("oDivXmlHttp").onsendafter;
				
					if (browser == "dom")
					onsendafter = document.getElementById("oDivXmlHttp").attributes["onsendafter"].value;
					
					if(onsendafter)
						eval(onsendafter + "()");
				}
			}
			else
			{
				var w=window.open("", "_blank");
				w.document.write(oHttp.responseText);
			}
		}
		catch(e)
		{
			window.status='הגדרות הדפדפן לא מתאימות לדרישות האתר, אנא פנה למוקד';
			error = e.description;
		}
			
	}
}

function UpdateDivByXmlHttpResults(oHttp, oDiv)
{
	var parser;
	var respText;
	var doc;
	var browser=fn_identifybrowser();
		
	// IE 
	respText = oHttp.responseText.replace(/[\n\r\t]/g,"");
	respText =  "<?xml version='1.0' encoding='windows-1255'?>"+
				"<htmlsections>" +
				"<htmlsection><![CDATA[" + 
				respText + 
				"]]>" +
				"</htmlsection>" +
				"</htmlsections>";
			
	if (browser.toLowerCase() == "ie")
	{
		doc = new ActiveXObject("Microsoft.XMLDOM");
		doc.async = "false";
		doc.loadXML(respText);
	}
						
	if(browser == "dom")
	{
		parser  = new DOMParser();
		doc = parser.parseFromString(respText,"text/xml");
	}
	
	var docElem = doc.documentElement;
	
	if (docElem != null)
	{
		if (docElem.childNodes[0] != null)
		{
			if (docElem.childNodes[0].childNodes[0] != null)
			{
				if (oDiv && docElem.childNodes[0].childNodes[0].nodeValue != null )
				oDiv.innerHTML = docElem.childNodes[0].childNodes[0].nodeValue;
			}
		}
	}	
}
// function added for Mozilla compatibility
// 16/04/2007	
modalWin = null;
function xShowModalDialog( sURL, vArguments, sFeatures ) 
    { 
    if (sURL==null||sURL=='') 
    { 
        alert ("Invalid URL input."); 
        return false; 
    } 
    if (vArguments==null||vArguments=='') 
    { 
        vArguments=''; 
    } 
    if (sFeatures==null||sFeatures=='') 
    { 
        sFeatures=dFeatures; 
    } 
    
    sFeatures = sFeatures.replace(/ /gi,''); 
    aFeatures = sFeatures.split("#"); 
    sWinFeat = "directories=0,menubar=0,titlebar=0,toolbar=0,"; 
    
    for ( x in aFeatures ) 
    { 
        aTmp = aFeatures[x].split(":"); 
        sKey = aTmp[0].toLowerCase(); 
        sVal = aTmp[1]; 
        switch (sKey) 
        { 
            case "dialogheight": 
                sWinFeat += "height="+sVal+","; 
                pHeight = sVal; 
                break; 
            case "dialogwidth": 
                sWinFeat += "width="+sVal+","; 
                pWidth = sVal; 
                break; 
            case "dialogtop": 
                sWinFeat += "screenY="+sVal+","; 
                break; 
            case "dialogleft": 
                sWinFeat += "screenX="+sVal+","; 
                break; 
            case "resizable": 
                sWinFeat += "resizable="+sVal+","; 
                break; 
            case "status": 
                sWinFeat += "status="+sVal+","; 
                break; 
            case "center": 
                if ( sVal.toLowerCase() == "yes" ) 
                { 
                    sWinFeat += "screenY="+((screen.availHeight-pHeight)/2)+","; 
                    sWinFeat += "screenX="+((screen.availWidth-pWidth)/2)+","; 
                } 
                break; 
        } 
    } 
    modalWin=window.open(String(sURL),"",sWinFeat); 
    if (vArguments!=null&&vArguments!='') 
    { 
        modalWin.dialogArguments=vArguments; 
    } 
 }
 
  // Function added  for Mozilla use
// 16/04/2007
function checkFocus() 
{ 
    if(window.focus)
    {
		if (modalWin!=null)
		{
			if (!modalWin.closed) 
			{ 
				self.blur(); 
				try
				{
					modalWin.focus(); 
				}
				catch(e)
				{
				}
			}
		}
	} 
} 

function fn_isnumeric(value)
{
	if(!value)return false;
	// I use this function like this: if (isNumeric(myVar)) { } 
	// regular expression that validates a value is numeric 
	var RegExp = /^[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?$/; 
	// compare the argument to the RegEx 
	// the 'match' function returns 0 if the value didn't match 
	var result = value.match(RegExp);
	if ((!result) ||(!result[0]))
		return false;
	else
		return result[0]!= "0";
}

function fn_cboonchange(cbo)
{
	if(cbo.issend==1 || cbo.issend==null)
	{
		if(cbo.onchangeaction)
			eval(cbo.onchangeaction);
		else
			eval(cbo.value);
			
		if(cbo.isreset) cbo.options[0].selected=true;
	}
	else
		cbo.issend=1;
}

function fn_cbokeypressed(cbo, evnt)
{
	evnt=evnt || window.event;
	if(evnt.keyCode==13)
	{
		cbo.issend=1;
		fn_cboonchange(cbo);
	}
	else
		cbo.issend=0;
}

function fn_get(id)
{
	return document.getElementById(id);
}

function fn_checkinteger(event, oTxt)
{
 var browser = fn_identifybrowser();
 var KeyCode;
 var unsigned;

	switch(browser)
	{
	case "ie":
		KeyCode=event.keyCode;
		unsigned = oTxt.unsigned;
		break;

	case "dom":
		KeyCode = event.charCode;
		if (KeyCode == 0) KeyCode = event.keyCode;
		unsigned = oTxt.attributes["unsigned"].nodeValue;
		break;
	}
	
	//Don't change order of the if operators !!!!
	//delete or backspace pressed
	if(KeyCode==8) return;
		
	//prevet zero on the first position									
	if(KeyCode==48 && (oTxt.value=='' || oTxt.value=='-')) 
	{
		switch(browser)
		{
		case "ie":
			event.returnValue=false;
			return;
		
		case "dom":
			event.preventDefault();
			return;
		}
	}
		
	if((unsigned + '').toLowerCase()=='true' && KeyCode==45)
	{
		switch(browser)
		{
		case "ie":
			event.keyCode=0;
			return;

		case "dom":
			event.preventDefault();
			event.stopPropagation();
			return;
		}
	}
	else
	{
		//prevent minus on the middle place and more than one minus
		if((oTxt.value!='' || oTxt.value.indexOf('-',0)!=-1) && KeyCode==45)
		{
			switch (browser)
			{
			case "ie":
				event.keyCode=0;
				return;
				
			case "dom":
				event.preventDefault();
				event.stopPropagation();
				return;
			}
		}
	}
		
	//prevent non-numeric symbols
	if((KeyCode<48 || KeyCode >57) && KeyCode !=45)
	{
		switch (browser)
		{
		case "ie":
			event.returnValue=false;
			return;
			
		
		case "dom":
			event.preventDefault();
			return;
		}
	}
}

function fn_checkpasteinteger(event,evtElement)
{
	var CBData=window.clipboardData.getData("Text");
	var unsigned;
	var browser = fn_identifybrowser();
	
	switch(browser)
	{
	case "ie":
		unsigned = evtElement.unsigned;
		break;

	case "dom":
		unsigned = evtElement.attributes["unsigned"].nodeValue;
		break;
	}
	 
	if(!parseFloat(CBData) || CBData.length > this.maxLength)
	{
		window.clipboardData.clearData("Text");
		return;
	}

	var val=Math.round(CBData);
	
	if ((unsigned + '').toLowerCase()=='true' && isNaN(val))
	{
		window.clipboardData.clearData("Text");
		return
	}
	
	if((unsigned + '').toLowerCase()=='true' && val<0)
		window.clipboardData.clearData("Text");
	//else
		//window.clipboardData.setData("Text", val.toString());	
}

function fn_checkfloat(event, oTxt)
{
	var browser = fn_identifybrowser();
	var KeyCode;
	var unsigned;

	switch(browser)
	{
	case "ie":
		KeyCode=event.keyCode;
		unsigned = oTxt.unsigned;
		break;

	case "dom":
		KeyCode = event.charCode;
		if (KeyCode == 0) KeyCode = event.keyCode;
		unsigned = oTxt.attributes["unsigned"].nodeValue;
		break;
	}
	

	//Don't change order of the if operators !!!!

	//delete or backspace pressed
	if(KeyCode==8) return;									
	
	//prevent number of zero before point
	if((oTxt.value=='0' || oTxt.value=='-0') && KeyCode!=46)
	{
		event.keyCode=0;
		return;
	}
	
	//prevent point on the first place and more than one point
	if((oTxt.value=='' || oTxt.value.indexOf('.',0)!=-1) && KeyCode==46)
	{
		event.keyCode=0;
		return;
	}

	if((unsigned + '').toLowerCase()=='true' && KeyCode==45)
	{
		event.keyCode=0;
		return;
	}
	else
	{
		//prevent minus on the middle place and more than one minus
		if((oTxt.value!='' || oTxt.value.indexOf('-',0)!=-1) && KeyCode==45)
		{
			event.keyCode=0;
			return;
		}
	}
	
	//prevent non-numeric symbols
	if((KeyCode<48 || KeyCode >57) && KeyCode !=46 && KeyCode !=45)
	{
		event.keyCode=0;
		return;
	}
}

function fn_checkpastefloat(event, evtElement)
{
	var CBData=window.clipboardData.getData("Text");
	var unsigned;
	var browser = fn_identifybrowser();
	
	switch(browser)
	{
	case "ie":
		unsigned = evtElement.unsigned;
		break;

	case "dom":
		unsigned = evtElement.attributes["unsigned"].nodeValue;
		break;
	}
	
	if(!parseFloat(CBData) || CBData.length>9)
		window.clipboardData.clearData("Text");
	//else
		//window.clipboardData.setData("Text", parseFloat(CBData).toString());
}

function fn_search_main(str, RegionID)
{
	if(fn_checksearch(str))
	{
		var result = fn_search_encode(str);
		fn_jscript('../../utils/searchengine.ashx?txt=' + result + "&rid=" + RegionID + "&");
	}
	else
		return false;
}	

function fn_asproot()
{
	return "../../../";
}

function fn_netroot()
{
	return "../../";
}

var var_stock_func="fn_stock";
var var_open_search_result="fn_open_searchresult";

function setPaperData(pid, cmd)
{

}

function fn_trade_new(pid,cmd)
{	
	if(cmd==null)
	{
		if(window.event.offsetX >15)
			cmd=1;
		else
			cmd=2;
	}
		
	window.location.href="../../../utils/redirect/dirtrade.asp?pid=" + pid + "&cmd=" + cmd + "&";
}

function fn_showbulls(page, id, sector, geo, hold)
{
	var p='';
	
	if(id!=null) p=p + '&idx=' + id;
	if(sector!=null) p=p + '&sector=' + sector;
	if(geo!=null) p=p + '&geo=' + geo;
	if(hold!=null) p=p + '&hold=' + hold;

	window.open("../../utils/redirect/dirbulls.ashx?page=" + page + p + "&", "bulls", "toolbar=no,menubar=no,left=0,top=0,width=830,height=550,location=no,resizable=yes,scrollbars=yes");
}	

function fn_abroadnews(abr)
{
	var group_abr;
	if(abr == "Usa")
		group_abr = 18000;
	if(abr == "Europe")
		group_abr = 19000;
		
	document.location="../../abroad/usa/UsaNews.aspx?group=" + group_abr + "&amp;";
}

function fn_showsegmentationinfo()
{
	var d=document.getElementById('divsigment');
	if(d)d.style.display = 'none';
	var w=window.open('../../../utils/segmentation/seginfo.asp',null,'height=600px,width=640px,status=no,toolbar=no,menubar=no,location=no');
	return false;
}
//region for trade
function ShowFltr(win)
{
	SetCntrVis("hidden",document.getElementsByTagName("select"));
	SetCntrVis("hidden",window.parent.document.getElementsByTagName("select"));
	var d = win.document.getElementById("FltrDiv");
	if(d) return;
	d = win.document.createElement("div");
	d.id = "FltrDiv";
	var h = win.document.body.scrollHeight;
	//if(h < win.screen.height) h = win.screen.height;
	
	d.style.height = h + "px";
	d.className = "fltr";
	var i = win.document.createElement("img");
	i.src = "../../images/btn_buysell/progressbar.gif";
	i.id = "PrgImg";
	i.className = "IgnoreScroll";
	i.attachEvent("onclick",CancelProgress);
	//addEvent(i,'click',CancelProgress);

	with(i.style)
	{
		cursor = "pointer";
		zIndex = "101";
		position = "absolute";
		width = "120px";
		height = "22px";
		left = (win.screen.width / 2 - parseInt(width) / 2) + "px";
	}

	win.document.body.appendChild(d);
	win.document.body.appendChild(i);
	
	//win.document.body.scroll = "no";
}
function addEvent(obj, evType, fn)
{
	if (obj.addEventListener)
		return obj.addEventListener(evType, fn, false);
	else 
		return obj.attachEvent("on" + evType, fn);
}

function SetOuterHTML(el,str)
{
	if(!el) return;
	if(el.outerHTML)
	{
		el.outerHTML = "";
	}
	else
	{
		var range = document.createRange(); 
		range.setStartBefore(el); 
		var docFrag = range.createContextualFragment(str); 
		el.parentNode.replaceChild(docFrag,el);
	}
}

function HideFltr(win)
{	
	SetCntrVis("",document.getElementsByTagName("select"));
	SetCntrVis("",window.parent.document.getElementsByTagName("select"));
	var d = win.document.getElementById("FltrDiv");
	if(!d)
	{
		d = document.getElementById("FltrDiv");
	}
	SetOuterHTML(d,"");
	if(win.document.body)
		win.document.body.scroll = "yes";
	HidePrgImg(win);
}

function CancelProgress()
{
	top.location.href = top.location.href;
}

function HidePrgImg(win)
{
	if(!win) win = top;
	var i = win.document.getElementById("PrgImg");
	SetOuterHTML(i,"")
}

function GetInnerText(el)
{
	if(el.innerText) return el.innerText;
	return el.textContent;
}

function SetInnerText(el,txt)
{
	if(el.innerText) el.innerText = txt;
	else el.textContent = txt;
}

function SetIfrSz(win,IfrId,ElId)
{		
	var d = win.document.getElementById(IfrId);
	var r = document.getElementById(ElId);
	if(!d || !r) return;
	r = r.getBoundingClientRect();
	var w = r.right - r.left;
	var h = r.bottom - r.top;
	with(d.style)
	{
		width = w + "px";
		height = h + "px"
		left = (win.screen.width / 2 - w / 2) + "px";
		top = win.document.body.scrollTop + 30 + "px";
	}
}

function SetCntrVis(val,ar)
{
	if(!ar) ar = document.getElementsByTagName("select");
	for(var i = 0;i < ar.length;i++)
		ar[i].style.visibility = val;

}

function GetAlertAsync(oHttp)
{
	if(typeof(oHttp) == "string")
	{
		GetAlertIframe(oHttp);
		return;
	}
	var w = window.parent;
	if(w.document.getElementById("ermsg")) return;
	var d = w.document.createElement("div");
	d.id = "ermsg";
	//d.innerHTML = oRs(0);
	d.style.position = "absolute";
	d.style.zIndex = 1001;
	d.className = "IgnoreScroll";
//	d.style.top = (w.screen.height + w.document.body.scrollTop) / 2;
	d.style.left = (w.screen.width - 250) / 2;
	
	var browser = fn_identifybrowser();
	// IE 
	if ( browser == "ie")
	{
		var oRs = new ActiveXObject("Adodb.Recordset");
		oRs.Fields.Append("he", 200, 100000);
		oRs.Open();
		oRs.AddNew();
		oRs(0).AppendChunk(oHttp.responseBody);
		d.innerHTML = oRs(0);
	}
	// Mozilla
	if (browser == "dom")
	{
		d.innerHTML = oHttp.responseText;
	}	

	w.document.body.appendChild(d);
	HidePrgImg();
}

function GetAlertIframe(url)
{

	if(top.document.getElementById("ermsg")) return;
	var d = top.document.createElement("div");
	d.id = "ermsg";
	d.style.position = "absolute";
	d.style.zIndex = 1001;
	d.className = "IgnoreScroll";
	d.style.left = (top.screen.width - 250) / 2;
	d.style.top = (top.screen.height - 250) / 2;
	var ifr = top.document.createElement("iframe");
	ifr.setAttribute("frameBorder","0");
	ifr.setAttribute("scrolling","no");
	url += "ifr=1&";
	ifr.setAttribute("src",url);
	ifr.setAttribute("id","errifr");
	d.appendChild(ifr);
	top.document.body.appendChild(d);
	HidePrgImg();	
}

function GetHorizCenter(el)
{
	var r = el.getBoundingClientRect();
	var w = r.right - r.left;
	return (screen.width - w) / 2;
}
function openReport(rep)
{
	window.open('../../utils/pdf/' + rep + '.pdf', 'sector', 'top=0,left=0,width=700,height=600,status=0,scrollbars=1');
}
//end region for trade

function GetEventTarget(evnt)
{
	if (evnt == null) return null;
	return evnt.target || evnt.srcElement;
}

function JSFormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
/**********************************************************************
	IN:
		NUM - the number to format
		decimalNum - the number of decimal places to format the number to
		bolLeadingZero - true / false - display a leading zero for
										numbers between -1 and 1
		bolParens - true / false - use parenthesis around negative numbers
		bolCommas - put commas as number separators.
 
	RETVAL:
		The formatted number!
 **********************************************************************/
{ 
    if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}

	// See if we need to use parenthesis
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

	return tmpNumStr;		// Return our formatted string!
}


//region DateTime functions
		function js_CheckDates(val1,val2)
		{
			if (js_DateDiff(val1,val2) < 0 )
			{
				alert("תאריך סיום קטן מתאריך התחלה");
				return false;
			}
			else
				return true;
		}
		
		function js_DateDiff (val1,val2)
		{
		
			var toDate = GetDateByFormat(val2,'dd/mm/yyyy') ;
			var prevDay=GetDateByFormat(val1,'dd/mm/yyyy') ;

			//Get 1 day corresponding milliseconds
			var msInOneDay=1000*60*60*24;
			
			//return parseInt(toDate.getTime()-prevDay.getTime())/(msInOneDay));
			//Calculate difference btw the two dates, and convert to days
			return parseInt(toDate.getTime()-prevDay.getTime())/(msInOneDay);	
		}
		
		/*
 * Date Format 1.2.3
 * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
 * MIT license
 *
 * Includes enhancements by Scott Trenda <scott.trenda.net>
 * and Kris Kowal <cixar.com/~kris.kowal/>
 *
 * Accepts a date, a mask, or a date and a mask.
 * Returns a formatted version of the given date.
 * The date defaults to the current date/time.
 * The mask defaults to dateFormat.masks.default.
 */

var dateFormat = function () {
	var	token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
		timezoneClip = /[^-+\dA-Z]/g,
		pad = function (val, len) {
			val = String(val);
			len = len || 2;
			while (val.length < len) val = "0" + val;
			return val;
		};

	// Regexes and supporting functions are cached through closure
	return function (date, mask, utc) {
		var dF = dateFormat;

		// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
		if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
			mask = date;
			date = undefined;
		}

		// Passing date through Date applies Date.parse, if necessary
		date = date ? new Date(date) : new Date;
		if (isNaN(date)) throw SyntaxError("invalid date");

		mask = String(dF.masks[mask] || mask || dF.masks["default"]);

		// Allow setting the utc argument via the mask
		if (mask.slice(0, 4) == "UTC:") {
			mask = mask.slice(4);
			utc = true;
		}

		var	_ = utc ? "getUTC" : "get",
			d = date[_ + "Date"](),
			D = date[_ + "Day"](),
			m = date[_ + "Month"](),
			y = date[_ + "FullYear"](),
			H = date[_ + "Hours"](),
			M = date[_ + "Minutes"](),
			s = date[_ + "Seconds"](),
			L = date[_ + "Milliseconds"](),
			o = utc ? 0 : date.getTimezoneOffset(),
			flags = {
				d:    d,
				dd:   pad(d),
				ddd:  dF.i18n.dayNames[D],
				dddd: dF.i18n.dayNames[D + 7],
				m:    m + 1,
				mm:   pad(m + 1),
				mmm:  dF.i18n.monthNames[m],
				mmmm: dF.i18n.monthNames[m + 12],
				yy:   String(y).slice(2),
				yyyy: y,
				h:    H % 12 || 12,
				hh:   pad(H % 12 || 12),
				H:    H,
				HH:   pad(H),
				M:    M,
				MM:   pad(M),
				s:    s,
				ss:   pad(s),
				l:    pad(L, 3),
				L:    pad(L > 99 ? Math.round(L / 10) : L),
				t:    H < 12 ? "a"  : "p",
				tt:   H < 12 ? "am" : "pm",
				T:    H < 12 ? "A"  : "P",
				TT:   H < 12 ? "AM" : "PM",
				Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
				o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
				S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
			};

		return mask.replace(token, function ($0) {
			return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
		});
	};
}();

// Some common format strings
dateFormat.masks = {
	"default":      "ddd mmm dd yyyy HH:MM:ss",
	shortDate:      "m/d/yy",
	mediumDate:     "mmm d, yyyy",
	longDate:       "mmmm d, yyyy",
	fullDate:       "dddd, mmmm d, yyyy",
	shortTime:      "h:MM TT",
	mediumTime:     "h:MM:ss TT",
	longTime:       "h:MM:ss TT Z",
	isoDate:        "yyyy-mm-dd",
	isoTime:        "HH:MM:ss",
	isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
	isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
	dayNames: [
		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
		"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
	],
	monthNames: [
		"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
		"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
	]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
	return dateFormat(this, mask, utc);
};

function GetDateByFormat (dt, format)
{
	var d = dt.split("/");
	var dt1 =new Date(d[1],d[0],d[2]);
	return new Date(dt1.format(format));
}
//-------------------------------------------------------/
/* ===== PROTOTYPE SECTION FOR DOM MODEL BROWSERS ===== */
//-------------------------------------------------------/

if( document.implementation.hasFeature("XPath", "3.0") )
{
	if( typeof XMLDocument == "undefined" )
		{
			 XMLDocument = Document; 
		}
		
		//SELECTNODES
		XMLDocument.prototype.selectNodes = function(cXPathString, xNode)
		{
		//alert("XMLDocument.prototype.selectNodes");
			if( !xNode ) { xNode = this; } 
			var oNSResolver = this.createNSResolver(this.documentElement)
			var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
			//console.log(aItems.snapshotLength);
			var aResult = [];
			for( var i = 0; i < aItems.snapshotLength; i++)
				{
					aResult[i] =  aItems.snapshotItem(i);
				}
			return aResult;
		}
		
		Element.prototype.selectNodes = function(sXPath)
		{
			//alert("Element.prototype.selectNodes");
			var oEvaluator = new XPathEvaluator();

			//var oResult = this.evaluate(sXPath, this, null, 0, null);
			var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
			//console.log(oResult);
			var aNodes = new Array();
			if (oResult != null)
			{
				var oElement = oResult.iterateNext();
				//console.log(oElement);
				while(oElement) 
				{
					aNodes.push(oElement);
					oElement = oResult.iterateNext();
					//console.log(oElement);
				}
			}
			return aNodes;
			//console.log(aResult);

		}

				
		//SELECTSINGLENODE
		XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode)
		{
			if( !xNode ) xNode = this; 
			
			var xItems = this.selectNodes(cXPathString, xNode);
			if( xItems.length > 0 )
				return xItems[0];
			else
				return null;
		}
	
		Element.prototype.selectSingleNode = function(cXPathString)
		{	
			if(this.ownerDocument.selectSingleNode)
				return this.ownerDocument.selectSingleNode(cXPathString, this);
			else
				throw "For XML Elements Only";
		}

		Node.prototype.transformNode = function (oXslDom)
		{
			var oProcessor = new XSLTProcessor();
			oProcessor.importStylesheet(oXslDom);
			var oResultDom = oProcessor.transformToDocument(this);
			var sResult = new XMLSerializer().serializeToString(oResultDom);
			if (sResult.indexOf("<transformiix:result") > -1)
			{
				sResult = sResult.substring(sResult.indexOf(">") + 1, 
					sResult.lastIndexOf("<"));
			}
			return sResult;                
		};
		
		Object.prototype.navigate = function(url)
		{	
			this.location.href = url;
		}
		HTMLDocument.prototype.navigate = function(url)
		{	
			this.location.href = url;
		}


		// support microsoft's "all" property
		HTMLDocument.prototype.__defineGetter__("all", function() {
			return this.getElementsByTagName("*");
		});	
		HTMLElement.prototype.__defineGetter__("all", function() {
			return this.getElementsByTagName("*");
		});

		var allGetter = function () {
		var a = this.getElementsByTagName("*");
		var node = this;
		a.tags = function (sTagName) {
			return node.getElementsByTagName(sTagName);
		};
		return a;
		};
		HTMLDocument.prototype.__defineGetter__("all", allGetter);
		HTMLElement.prototype.__defineGetter__("all", allGetter);
		
		

	
		//support microsoft's  "parentElement" property
		Node.prototype.__defineGetter__("parentElement",
			 function () {return(this.parentNode);	}
		);
		
		//support microsoft's  "text" property
		Node.prototype.__defineGetter__("text",
			 function () {return(this.textContent);	}
		);
		Node.prototype.__defineSetter__("text", 
			function ( txt ) {this.textContent = txt;}
		);
		
		
		//support microsoft's  "innerText" property
		HTMLElement.prototype.__defineGetter__("innerText", 
              function () { return(this.textContent); }
        );
		HTMLElement.prototype.__defineSetter__("innerText", 
              function (txt) { this.textContent = txt; }
        );			

		//support microsoft's  "outerHTML" property
		HTMLElement.prototype.__defineGetter__("outerHTML",
			function()
			{
				var attr;
				var attrs=this.attributes;
				var str="<"+this.tagName.toLowerCase();
				
				for(var i=0;i<attrs.length;i++)
				{
					attr=attrs[i];
					if(attr.specified)
						str+=" "+attr.name+'="'+attr.value+'"';
				}
				
				if(!this.canHaveChildren)
					return str+">";
				return str+">"+this.innerHTML+"</"+this.tagName.toLowerCase()+">";
			}
		);
 		HTMLElement.prototype.__defineSetter__("outerHTML", 
              function (str)
               { 
					//if(!str)
						//this.outerHTML = "";
					//else 
					{
						var range = document.createRange(); 
						range.setStartBefore(this); 
						var docFrag = range.createContextualFragment(str); 
						this.parentNode.replaceChild(docFrag,this);
					}
              }
        );
               
		//support microsoft's  "canHaveChildren" property
		HTMLElement.prototype.__defineGetter__("canHaveChildren",function(){
		switch(this.tagName.toLowerCase()){
				case "area":
				case "base":
				case "basefont":
				case "col":
				case "frame":
				case "hr":
				case "img":
				case "br":
				case "input":
				case "isindex":
				case "link":
				case "meta":
				case "param":
				return false;
			}
			return true;

		});
		
        
		//support microsoft's  "offsetX, offsetY" properties
		Event.prototype.__defineGetter__("offsetX", function() {
			return this.layerX;
		});
		Event.prototype.__defineGetter__("offsetY", function() {
			return this.layerY;
		});       			
		// ----- Event objects -----

		//attachEvent
		Object.prototype.attachEvent = function(event, handler)
		{
			this.addEventListener(event.substring(2), handler, false);					
		};
		
		//detachEvent
		Object.prototype.detachEvent = function(event, handler)
		{
			this.removeEventListener(event.substring(2), handler, false);					
		};
		
		Object.prototype.changeaction = function(event, handler)
		{
			this.addEventListener(event.substring(2), handler, false);					
		};
		

		// srcElement 
		Event.prototype.__defineGetter__("srcElement", 
		function () 
		{
			var node = this.target;
			while( node.nodeType != 1 ) node = node.parentNode;
			// test this:
			if( node != this.target ) alert("Unexpected event.target!") // it still happens sometime, why ?
			return node;
		}
		
		
		);
		// keyCode 
/*		Object.prototype.__defineSetter__("keyCode", 
              function (value) 
              {alert ("keyCode:setter");
				if (isNaN(value)) 
				{
					alert("Value is not number!");
					return;
				}
				
				//this.charCode = value; 
              }
        );			
*/        
        
/*        Event.prototype.__defineGetter__("keyCode", 
		function () 
		{
		alert ("keyCode:getter1 = " + this.charCode);
			if (this.charCode == "undefined" || this.charCode == null)
				this.charCode = 0;
			alert ("keyCode:getter2 = " + this.charCode);
			return this.charCode;
		}
		);
*/
}	//end dom prototypes

/* ===== END PROTOTYPE SECTION FOR DOM MODEL BROWSERS ===== */

function fn_CallFunctionFromIFrame(nameIFrame, nameFunction, params)
{
	var strParams = "";
	var i;
	var p ; 
	if (params != null)
	{
		p=params[0];
	
		for(i=0; i<params.length; i++)
		{
			strParams +=params[i];
			if (i < params.length -1)
				strParams +=",";
		}
	}
	i = document.getElementById(nameIFrame);
	if (!i) return;
	var funcCall;
	var browser = fn_identifybrowser();
	if (browser == "ie")
		funcCall = "window.frames."+nameIFrame+"."+nameFunction ;
	else
		funcCall = "i.contentWindow."+nameFunction ;
	if (eval("typeof " + funcCall) =="function")
	{
		if (params == null)
			eval(funcCall+ "()");
		else
			eval(funcCall + "(params[0])");//it works
			//eval(funcCall + "("+strParams+ ")"); //missing ] after element list TODO
	}

}
//*****eval(callback + "(oHttp)");
function fn_GetArrayElementsFromIFrame(nameIFrame, nameElement)
{
	i = document.getElementById(nameIFrame);
	if (!i) return;
	var browser = fn_identifybrowser();
	if (browser == "ie")
		return i.document.getElementsByTagName(nameElement);
	else
		return i.contentWindow.document.getElementsByTagName(nameElement);
}	
function fn_GetElementFromWindowIFrame(win, nameIFrame, nameElement)
{
	i = win.document.getElementById(nameIFrame);
	if (!i) return;
	return i.contentWindow.document.getElementById(nameElement);
}	


//KeyCode consts
var KeyCode_Backspace = 8;
var KeyCode_Tab = 9;
var KeyCode_Enter = 13;
var KeyCode_Shift = 16;
var KeyCode_ESC = 27;
var KeyCode_Ctrl = 17;
var KeyCode_SpaceBar = 32;
var KeyCode_PageDown = 34;
var KeyCode_LeftArrow = 37;
var KeyCode_RightArrow = 39;
var KeyCode_Apostrophe = 39;
var KeyCode_DownArrow = 40;
var KeyCode_Insert = 45;
var KeyCode_Delete = 46;
var KeyCode_0 = 48;
var KeyCode_9 = 57;
var KeyCode_a = 65;
var KeyCode_z = 90;
var KeyCode_Numpad_0 = 96;
var KeyCode_Numpad_9 = 105;
var KeyCode_Comma = 188;
var KeyCode_SingleQuote = 222;
var KeyCode_Alef = 1488;
var KeyCode_Tav = 1514;
var KeyCode_ApostropheHeb = 1497;

function fn_CancelKeyCode(evnt)
{
	var browser = fn_identifybrowser();
	switch(browser)
	{
		case "ie":
			evnt.keyCode=0;
			return;
		break;
		case "dom":
			evnt.preventDefault();
			evnt.stopPropagation();
			return;
		break;
	}
}

//*****************temporary*********
function GetTextFromNode(node)
{
	if (node == null)
		return "";
	try
	{
		if(window.ActiveXObject)
			return node.text;
		else
			return node.textContent;
    }
   catch (ex)
   {
		window.status=ex.description;
		return "";
   }    
}
//For close button in confim from list
function CloseFromConfirm()
{
	var ifr = document.getElementById("approvalFrame");
	if(ifr) ifr.outerHTML = "";
	ifr = document.getElementById("TradeIfr");
	if(ifr) ifr.outerHTML = "";
	SetFullDiv();
	HideFltr(window,"freeze");
	SetSelectVisible("",document.getElementsByTagName("select"));
}

function SetSelectVisible(val,ar)
{
	for(var i = 0;i < ar.length;i++)
		ar[i].style.visibility = val;
}
function CloseErrorMessage()
{
	var d = document.getElementById("ermsg");
	if(d)
	{
		d.outerHTML = "";
		UnFreeze();
	}
	
	//window.frames.TradeIfr.ResetSelect();
	fn_CallFunctionFromIFrame("TradeIfr", "ResetSelect");
}

function UnFreeze()
	{
		HideFltr(window);
		SetSelectVisible("",document.getElementsByTagName("select"));
		//*****Anna*****Cross-browser code*****
		fn_CallFunctionFromIFrame("TradeIfr", "ResetSelect");
		//if(document.getElementById("TradeIfr"))
		//	if(typeof(window.frames.TradeIfr.ResetSelect) == "function")
		//		window.frames.TradeIfr.ResetSelect();
		//**********************************
	}
	
	function NotDisplayIframe(apr)
	{
		var w = window;
		var ifr = w.document.getElementById("approvalFrame");
		if(ifr) ifr.outerHTML = "";
		w = w.document.getElementById("TradeIfr");
		if(!w)
		{
			SetFullDiv();
			return;
		}
		if(!apr)
		{
			//if(typeof(window.frames.TradeIfr.ResetSelect) == "function") window.frames.TradeIfr.ResetSelect();
			fn_CallFunctionFromIFrame("TradeIfr", "ResetSelect");
			HideFltr(w,"freeze");
			SetSelectVisible("",w.document.getElementsByTagName("select"));
		}
		var d = document.getElementById('IFramePro')
		//TODO test it
		if(d) document.frames["IFramePro"].closeErrorPopup("h");
		if(d) document.frames["IFramePro"].closeErrorPopup("h");
		var r = document.getElementById('IFrameChangePro')
		if(r) document.frames["IFrameChangePro"].closeErrorPopup("h");
	}
	
	function errorfromapproval(code,desc,isFromApproval)
	{
		if(desc != "")
		{
			ShowAlertAsync(desc);
		}
		//code = 319
		NotDisplayIframe(isFromApproval);
		var errDiv
		var errTbl
		if(code.indexOf('319') != -1)
		{
			errDiv = "alertdiv";
			errTbl = "tblAlert";
		}
		else
		{
			errDiv = "errordiv"
			errTbl = "tblError";
		}
	}
	
	function ShowAlertAsync(msg,id)
	{
		var m,p;
		if(id)
		{
			m = "messageid";
			p = id;
		}
		else
		{	
			m = "messagedesc";
			p = fn_search_encode(msg);		
		}
		var src = "../../trade/tradebuysell/MessageError.aspx?t=" + new Date() + "&" + m + "=" + p + "&";
		fn_getasyncdata("GET", src, null, "GetAlertAsync");
	}
	
	function ConvertDoubleToString(val)
	{
		val = val.toString();
		var ind = val.indexOf('+')
		if(ind == -1) return val;
		var zero = parseInt(val.substring(ind + 1,val.length));
		val = val.substring(0,ind - 1);
		ind = val.indexOf('.');
		if(ind != -1)
		{
			var points = val.substring(ind + 1,val.length).length;
			val = val.replace(".","");
			zero -= points;
		}
		while(zero-- > 0)
		{
			val += "0";
		}
		return val;
	}
	
	function CheckValLength(id,val)
	{
		var el = document.getElementById(id);
		if(!el || !el.value) return true;
		var str = el.value.split('.');
		str = str[0];
		return (str.length <= val)
	}

function OpenEmissionDetails(emissionKeyNo)
{
	window.open("EmissionDetails.aspx?EmissionKey=" + emissionKeyNo + "&" ,'','top=0,left=0,width=550,height=630,status=0,scrollbars=auto');
}