﻿/*********************** Global Function Begin	*********************/
for (i=0; i<document.all.length; i++){//ensure that all document elements  unselectable
	if(!document.all(i).type)
		document.all(i).unselectable = "on";
}
//window.onerror = function () { return true;}//Set no dispaly errors
window.document.oncontextmenu = function () { return false;}//Set to no context menu
function renewTimeout(){
	window.clearTimeout(timeID);
	if ( timeID1 )
		window.clearTimeout(timeID1);
	window.clearTimeout(closeID);
	timeID=window.setTimeout("WarnSession()",sessionTimeout);
	timeID1=window.setTimeout("WarnSession()",ticketTimeout);
}
var tmpWindow = null;
function IsPopupBlocker() {
	try{
		var oWin = window.open("","testpopupblocker","width=100,height=50,top=5000,left=5000");
		if (oWin==null || typeof(oWin)=="undefined") {
			return true;
		} else {
			oWin.close();
			return false;
		}
	}catch(e){
		return true;
	}
}
function OpenWindow( sUrl, sName, sPropertys ){
	try{
		if (tmpWindow != null)
			tmpWindow.close();
	}catch( e ){
		tmpWindow = null;
	}
	try{
		tmpWindow = window.open(sUrl, sName, sPropertys);
	}catch( e ){
		tmpWindow = null;
	}
	
	if ( tmpWindow == null ){
		try{
			ShowPopUpBlockerMessage();
		 }catch(e){
			alert("Unable to open Pop-Up window. Please check browser settingins and enable browser Pop-Up windows.");
		 }
	}else{
		try{
			renewTimeout();
			tmpWindow.focus();
		}catch(e){}
	}
	return tmpWindow;
}
function SetFocus(obj){
	try{ obj.focus(); return true;}catch(e){return false;}
}

function CheckClose(){     
	if(document.all){       
		var tempX = event.clientX + document.body.scrollLeft;      
		var tempY = event.clientY + document.body.scrollTop;   
		if(tempX<0&&tempY<0)
			WhatIfClosed();
	}      
	else{        
		thisPage=document.location.href;          
		if(thePage==thisPage)           
			WhatIfClosed();             
	}      
}    
	function XslTranslator(xmlLanguage,translatorXsl,root){
		this.XslArray=new Array();this.translatorXsl=new ActiveXObject("Msxml2.DOMDocument");
		this.translatorXsl.async=false;
		try{
			this.translatorXsl.load(translatorXsl);
		}
		catch(e){
			alert(e.description);
		}
		this.TranslateXsl=function(xslToTranslate){
			var output="";
			var xslUrl=xslToTranslate.url
			
			if(this.XslArray[xslUrl]!=null)
				return this.XslArray[xslUrl];
			
			if (this.translatorXsl.selectSingleNode("//xsl:param[@name='rootpath']") != null )	
				this.translatorXsl.selectSingleNode("//xsl:param[@name='rootpath']").text=root;
			
			if (this.translatorXsl.selectSingleNode("//xsl:param[@name='language']") != null)
				this.translatorXsl.selectSingleNode("//xsl:param[@name='language']").text=xmlLanguage;
				
			try{
				output=xslToTranslate.transformNode(this.translatorXsl);
			}
			catch(e){
				alert(e.description);
			}
			this.XslArray[xslUrl]=output;
			return output;
		}	
	}
	
		var JsCtrlsCollection = new Array();
	function AddJsCtrl2Collection(JsCtrl){
		JsCtrlsCollection[JsCtrlsCollection.length] = JsCtrl;
	}
	function DocumentHandlerOnClick(){
		for(i=0;i<JsCtrlsCollection.length;i++){
			JsCtrlsCollection[i].style.display = "none";
		}
	}
	document.onclick = DocumentHandlerOnClick;

var timer;
/*********************** Global End			*********************/
/*********************** Tab Menu Begin		*********************/
function SelcetBox_Init(SelectBox,Text,defaultText,isShowSelectedItem,isHasValue,isHavName,isHavCursor,Cursor,defaultAction,onClick,index,MaxItems,isFull,isActive)
{
this.defaultText = defaultText;
this.SelectBox = SelectBox;
this.Text = Text;
this.isShowSelectedItem = isShowSelectedItem;
this.isHasValue = isHasValue;
this.isHavName = isHavName;
this.isHavCursor = isHavCursor;
this.Cursor = Cursor;
this.defaultAction = defaultAction;
this.onClick = onClick;
this.index = index;
this.Action = this.defaultAction;
this.MaxItems = MaxItems;
this.isFull = isFull;
this.isActive = isActive;
				//"this.isActive = isActive;
}
function setButtonDisableState(strButtonID, state){
try{document.all[strButtonID].disabled = state;}catch(e){return;}
}
function makeFlat(){
var el=event.srcElement;
try{
//window.clearTimeout(timer);
if(el.tagName!="SPAN" && el.tagName!="BUTTON") flatElement(el);
else if(el.previousSibling.tagName=="BUTTON"){
if(el.nextSibling.style.display=="none"){
flatElement(el.previousSibling);
flatElement(el);
if(timer)window.clearTimeout(timer);
//timer = window.setTimeout("WrapClick(" + el.id + ")",2500);
}
else{
//el.nextSibling.style.display="none";
}
}
else if(el.nextSibling.nextSibling.tagName=="DIV"){
if(el.nextSibling.nextSibling.style.display=="none"){
flatElement(el.nextSibling);
flatElement(el);

}//else{el.nextSibling.nextSibling.style.display=="none";}
}
}catch(ee){alert(ee.description)
}
if ((strpos=el.className.indexOf('Pressed'))>=0) {
el.className=el.className.substring(0,strpos);
}
}
function flatElement(el){
if ((strpos=el.className.indexOf('Over'))>=0) {
el.className=el.className.substring(0,strpos);
}
}
function raiseElement(el){
if (el.className.indexOf('Over')<0)
el.className+='Over';
}
function makeRaised(){
var el=event.srcElement;
doTimer = false;
if(el.tagName=="TD"){raiseElement(el);return;}
if(el.nextSibling.tagName=="BUTTON"){
raiseElement(el.nextSibling);
}
else if(el.previousSibling.tagName=="BUTTON"){
raiseElement(el.previousSibling);
doTimer = true;
}
//window.clearTimeout(timer);
if(doTimer){
timer = window.setTimeout("WrapClick(' + el.id + ')",2500);
}
raiseElement(el);
}
function makePressed() {
var el=event.srcElement;
if (el.className.indexOf('Pressed')<0 && el.className.indexOf('Over')<0) {
el.className+='Pressed';
}
}
function setPostion_SelectBox(aboveElement){
buttNo = aboveElement.nextSibling.id.substring(16,butt.id.length);
try{
contId = "SelectBoxContener_" + buttNo;
var belowElement = document.all[contId];
if (belowElement.style.display=="none")
return true;
var top = aboveElement.offsetHeight;
var left = 0;
while (aboveElement != null) {
left += aboveElement.offsetLeft;
top += aboveElement.offsetTop;
aboveElement = aboveElement.offsetParent;
}
belowElement.style.left = left;
belowElement.style.top  = top;
return true;
}catch(e){
return false;
}
}
function WrapClick(elem){
buttNo = elem.id.substring(16,elem.id.length);
var sb = eval("sb_"+buttNo);
var sbValues = eval("sbValues_"+buttNo);
SelectBox_OnClick(sb,sbValues,elem);
}
function SelectBox_OnClick(sb,sbValues,elem){
toggle=false;
if(elem==null){
elem = event.srcElement;
if(timer)window.clearTimeout(timer);
}

if(elem.nextSibling.tagName=="BUTTON"){
butt = elem.nextSibling;
}
else {butt = elem;toggle=true;}
buttNo = butt.id.substring(16,butt.id.length);
try{
if(toggle){
ToggleSelectBoxDisplay(true,buttNo);
setPostion_SelectBox(butt.previousSibling);
}
if (sb.onClick.length>0 && sb.defaultText==sb.Text && elem.nextSibling.tagName=="BUTTON"){
sb.onClick = sb.defaultAction + "('"+sbValues[sb.index]+"','"+butt.innerHTML+"',"+buttNo+",1)";
eval(sb.onClick);
return;
}
for(i=0;i<count;i++)
{
if((i+1)==buttNo){
continue;
}
else{
el = document.all[("SelectBoxButton_"+(i+1))];
flatElement(el);
flatElement(el.previousSibling);
ToggleSelectBoxDisplay(false,i+1);
}
}
return false;
}catch(e){alert(e.description);
return false
}
}
function ToggleSelectBoxDisplay(boolDisplay,id){
try	{
contId = "SelectBoxContener_" + id;
to = document.all[contId];
to.style.display = (boolDisplay) ? ((to.style.display=="none") ? "" : "none") : "none";
}catch(e){
return;
}
}
function Handle_SelectBox_OnSelect(sender,sb,id,sbValues,itemId){
try{

/*if (sb.isShowSelectedItem){sb.Text = sender.innerHTML;//document.all[(sb.SelectBox + "SelectedItem")].innerHTML = "<u>"+sb.Text+"</u>";document.all[("SelectBoxSelectedItem_" + id)].innerHTML = "<u>"+sb.Text+"</u>";}*/
if (sb.isHavCursor && sb.Cursor.length>0){
try	{//Clear previous
sender.parentElement.parentElement.rows(sb.index).cells(0).innerHTML = "";
//Set new cursor
sender.parentElement.cells(0).innerHTML = sb.Cursor;
}catch(e){}
}
sb.index = (sender.parentElement.rowIndex!=null) ? sender.parentElement.rowIndex : 0;

if (sb.isHasValue && sb.isHavName)
sb.Action = sb.defaultAction + "('"+sbValues[sb.index]+"','"+sender.innerHTML+"',"+id+","+itemId+")";
else if (sb.isHasValue)
sb.Action = sb.defaultAction + "('"+sbValues[sb.index]+"')";
else if (sb.isHavName)
sb.Action = sb.defaultAction + "('"+sender.innerHTML+"')";
eval(sb.Action);
return false;
}catch(e){
	alert(e.description);
return true;
}
}
function CreateNewSelectBoxItems(objectXML,strXPath,strName,strValue,strSelected){
try{
if (document.all["SelectBoxButton"])
document.all["SelectBoxButton"].disabled = false;
nodes = objectXML.selectNodes(strXPath);
if (nodes.length==0){
document.all["SelectBoxButton"].disabled = true;
return;
}
var htmlItem = '<table id="SelectBoxTable" cellspacing="0" cellpadding="2" width="100%" border="0">';
if (strSelected=="")
strSelected = "selected";
if (strXPath=="")
strXPath="//items/item";
if (strName=="")
strName="name";
if (strValue=="")
strValue = "value";
sbValues = new Array();
var itemCursor = (sb.isHavCursor) ? sb.Cursor : "";
for (var i=0;i<nodes.length;i++){
if (i==sb.MaxItems)
break;
if (sb.isShowSelectedItem && nodes.item(i).selectSingleNode(strSelected)!=null){
sb.Text = nodes.item(i).selectSingleNode(strName).text;
itemCursor = (sb.isHavCursor) ? sb.Cursor : "";
}
htmlItem +=
'<tr><td class="MenuMainWebSymbols"  nowrap width="4%">'
+itemCursor
+'</td>'
+'<td class="MenuMainItem" nowrap onclick="SelectBox_OnSelect()" width="96%" onmouseover="makeRaised()" onmouseout="makeFlat()">'
+nodes.item(i).selectSingleNode(strName).text
+'</td></tr>';
sbValues[i] = nodes.item(i).selectSingleNode(strValue).text;
itemCursor = "";
}
if (sb.isShowSelectedItem && document.all[(sb.SelectBox + "SelectedItem")])
document.all[(sb.SelectBox + "SelectedItem")].innerHTML = "<u>"+sb.Text+"</u>";
if (document.all[(sb.SelectBox + "ItemsContener")]){
document.all[(sb.SelectBox + "ItemsContener")].innerHTML = htmlItem + "</table>";
}else{
if (document.all[(sb.SelectBox + "Contener")])
document.all[(sb.SelectBox + "Contener")].innerHTML = htmlItem + "</table>";
}
}catch(e){//alert(e.description);
return;
}
}

function MenuItem_OnSelect(link,sender,id,itemId){
if(link.indexOf("?")>0)
queryString = "&"+"tID="+id+","+itemId;
else queryString = "?"+"tID="+id+","+itemId;
document.body.style.cursor = 'wait';
window.location.href = link+queryString;
}

function Index_OnClick(link,sender,id,itemId){
if(itemId==1){
queryString = "?"+"tID="+id+","+itemId;
window.location.href = link+queryString;
}
}

function SelectBox_OnSelect(sb,id,sbValues,itemId){
var sender = event.srcElement;
ToggleSelectBoxDisplay(Handle_SelectBox_OnSelect(sender,sb,id,sbValues,itemId),id);
}

/*********************** Tab Menu End		*********************/
/*********************** Modal dialog begin *********************/
function ClientModalDialog(basehtmlurl){
	this.BaseHtmlUrl=basehtmlurl;
	this.Show=function(title,htmlcontent,sfeatures,vobj){
		var objContent=new Object();
		objContent.Title=title;
		objContent.HtmlContent=htmlcontent;
		objContent.VObj=vobj;
		return window.showModalDialog(this.BaseHtmlUrl,objContent,sfeatures);
	}
}
/*********************** Modal dialog end   *********************/	
/*********************** Dialog Processor begin ******************/
//-----------------------------		Dialog Processor	-----------------	// labels:  Array with labels
	// callback: call function on close
	// title_ : dialog title
	// header_ : dialog caption
	// features_ : dialog features
	function DialogProcessor(labels,callback, title_,header_, features_){
		
		this.html = "";
		this.title = title_;
		this.header = header_;
		var features ="dialogHeight:150px;dialogWidth:400px;"
		var default_features = ";menubar=no,scrollbars=no,resizable=no;status=no;"
		var object = this ;
		this.root_url = BaseRootURL;
		
		//constructor
		function constructor(){
			//debugger
			var curLabel;
			var curInput;
			var curRow;
			var  l =  labels.length;
			for(var i=0;i< labels.length; i++){
				curRow = eval("Type"+l+"row" +(i+1));
				curRow.style.display="block";
				curLabel = eval("Type" + l +"label" +(i+1));
				curLabel.innerHTML = labels[i];
				//curLabel.id =labels[i].split(" ")[0];
			    //curInput = eval("input" +(i+1))
				//curInput.id = labels[i].split(" ")[0]+"Input";
			}
			if(features_ != null){
				features = features_;
			}
			var Type;
			if(labels.length == 1){
				Type  =Type1;
			};
			if(labels.length > 1){
				Type  =Type2;
			};
			object.html = Type.innerHTML ;
			var o = window.showModalDialog(TemplateSourceURL + "/DialogHost.aspx",object,features + default_features);
			callback(o==null?null:o.IdValuePar)
			
		}
//---------------------------------------------------------------------------------
		if(labels.length>3)throw  new Error(0x13,"Error@dialog processor:toomuch elements in label array  ?") ;
		constructor()
	}
//---------------------------------------------------------------------------------
//sample of using RichDialogCtrl
/*	
	var label = new Array("Name")
	try{
		var  o =new DialogProcessor(label,callback,"Group","");
	}catch(x){
		alert(x.description)
	}
	function callback(obj){
		if(obj == null){return }
		var r = obj["input1"];
		}
*/
/*********************** Dialog Processor end   ******************/
/*********************** Progress Bar Begin **********************/

	function jsProgresBar()
	{
	var object=this;
	this.tmpactive=null;
	this.tdlist=null;
	this.counter=1;
	this.inID=null;
	this.incrise=1;
	this.State="stop";
	this.BitColor="";
	this.BitColorActive="";
	this.BgColor="";
	
		this.StartProgress = function()
		{
			this.State="start";
			this.tdlist=ProgressBarControl.all.tags("TD");
			this.inID=setInterval("ProgressObj.ProgressStart()",200);
		}
		
		this.ProgressStart = function()
		{
			if (object.counter!=1)
				object.tdlist[object.counter-object.incrise].className="progressbar";
				//object.tdlist[object.counter-object.incrise].style.background=object.BitColor;
			
			if(object.counter==object.tdlist.length)
				object.counter=1;		
			
			object.tmpactive = object.tdlist[object.counter];
			//object.tmpactive.style.background=object.BitColorActive;
			object.tmpactive.className = "progressbaractive";
			object.counter += object.incrise;
			
			if(object.counter==object.tdlist.length+1)
				object.counter=1;
		}
		
		this.EndProgress = function()
		{
			if (this.tmpactive!=null)
				this.tmpactive.className="progressbar";
				//this.tmpactive.style.background=this.BitColor;
			this.counter=1;
			this.State="stop";
			clearInterval(this.inID);
		}
		
		this.ShowProgressBar = function()
		{
			for(var i=1;i<ProgressBarControl.all.tags("TD").length;i++)
			{
				ProgressBarControl.all.tags("TD")[i].className="progressbar";
			}
			setTimeout("try{ProgressBarControl.style.visibility='visible'}catch(e){}",50);
		}
		
		this.HideProgressBar = function()
		{
			setTimeout("try{ProgressBarControl.style.visibility='hidden'}catch(e){}",50);
		}
	}
/*********************** Progress Bar End **********************/
/*********************** Cookie Begin ********************************/
function getCookieVal(offset){
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1) endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie(name){
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal(j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return null;
}
/*********************** Cookie End ********************************/
/*********************** Client Login Begin ************************/
function UserInfo(userID,pwd,mc,sc,lm)
{
	this.userID = userID;
	this.pwd = pwd;
	this.mc = mc;
	this.sc = sc;
	this.lm = lm;
}
function myLogin(UserName,MC,SC, visible){
try{	
	if (!visible)
		visible = true;
	var DisplayDiv = "loginDiv";
	var TopHeding = myLogin_TopHeding;
	var MainHeding = myLogin_MainHeding;
	var Text = myLogin_Text;
	var Close_Msg = myLogin_CloseText;

	if (!trnview){
		trnhc="#6F786D";
		TopHeding = myLogin_TopHeding;
		hclass="class='darkbg'";
		bgcolor="white";
	}else{
		trnhc="#595959";
		TopHeding = myLogin_TopHeding+' == '+TrnViewTitle;
		hclass="";
		bgcolor="#595959";
	}

	myLoginHTML = 
	'<div class="moveme" id="myLogin1" style="border-bottom:1px solid #cfcfcf;border-right:1px solid #cfcfcf;z-index:99;left:150px; width:400px; position:absolute; top:50px">'+
	'<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%"><tr onmouseleave="moveme_onmouseup()" onmouseup="moveme_onmouseup();" onmousemove="moveme_onmousemove();" onmousedown="moveme_onmousedown()"><td width="100%" bgcolor="'+trnhc+'" '+hclass+' bordercolor="#6F786D" style="padding:2px 6px 2px 2px;color:white"  id="myLoginTopHading">'+
	'&nbsp;&nbsp;&nbsp;<b class="normal">'+TopHeding+'<b></td>'+
	'</tr><tr><td class="bgLight" width="100%" valign="top"><table border="1" cellpadding="10" cellspacing="0" style="border-collapse: collapse" bordercolor="#6F786D" width="100%"><tr><td width="25%" align="center" id="myLoginImage" class="GuideSymbol400" bgcolor="'+bgcolor+'" style="COLOR: #ddd9cd;padding-top:10px;color:darkblue" valign="top" title="Login"><span class="colorMiddle">&nbsp;</span></td>'+
	'<td width="75%" valign="top" id="myLoginMain" bgcolor="white"><h4>'+MainHeding+'</h4>'+
	'<p class="normal">'+Text+'</p>'+
	'<div class="normal" id="msgLogin" style="COLOR:#990000; HEIGHT:30px">&nbsp;</div>'+
	'<form name="loginForm" id="loginForm" autocomplete="off" onsubmit="return false;">'+
	'<table>'+
	'	<tr>'+
	'		<td width="50%" class="normal" nowrap><span class="normal" style="COLOR:#990000">*</span> '+myLogin_UserNameLabel+'&nbsp;</td>'+                                                               
	'		<td width="50%" nowrap><input type="text" size="20" name="UserNameId" id="UserNameId" value="'+UserName+'"></td></tr>'+
	'	<tr>'+
	'		<td class="normal" nowrap></td>'+                 
	'		<td nowrap></td>'+
	'	</tr>'+
	'	<tr>'+
	'		<td class="normal" nowrap><span class="normal" style="COLOR:#990000">*</span> '+myLogin_UserPwdLabel+'&nbsp;</td>'+                 
	'		<td nowrap><input size="20" type="password" id="UserPwdId" name="UserPwdId"></td>'+
	'	</tr>'+
	'	<tr>'+
	'		<td class="normal" align="right" nowrap ></td>'+
	'		<td class="normal" nowrap></td>'+
	'	</tr>'+
	'	<tr>'+
	'		<td width="50%" class="normal" align="right" nowrap >Login Medium</td>'+
	'		<td width="50%" nowrap ><input type="radio" name="medium" id="medium2" ';
	if (MC) myLoginHTML+=' checked ';
	myLoginHTML+='value="MiniDisc"><label for="medium2" class="normal">Mini CD</label><input type="radio" name="medium" id="medium1" value="SmartCard"';
	if (SC) myLoginHTML+=' checked ';
	myLoginHTML+=
	'><label class="normal" for="medium1">SmartCard</label></td>'+
	'	</tr>'+
	'</table>'+
	'<hr style="hegiht:1px;color:#CFCFCF;">'+
	'<div align="right">';
	myLoginHTML +='<input type="submit" id="mixLoginButtonId" onclick="if(mixLoginButtonId_onClick()) document.all[\'' + DisplayDiv + '\'].style.display=\'none\';" class="Button1Class" style="font-size:9pt;" title="' + myLogin_ConfirmText + '" value="' + myLogin_ConfirmText + '">&nbsp;&nbsp;&nbsp;<button class="Button1Class" onclick="CloseMyLogin()" ID="closeButton">'+Close_Msg+'</button></div>'+
	'</form></td></tr></table></td></tr></table></div>';
	if (document.all[DisplayDiv])
		document.all[DisplayDiv].innerHTML = myLoginHTML;
	if (visible){
		
		myLogin1.style.display='';
		if (document.all[DisplayDiv])
			document.all[DisplayDiv].style.display=''
	}
	if (document.all["myLogin1"]){
		doCenter(document.all["myLogin1"]);
		try{
			if (document.all["UserPwdId"])
				document.all["UserPwdId"].focus();
		}catch(e){ }
	}
}catch(e){//alert(e.description);
}
}
function doCenter(divId){
		divId.style.top  = (document.body.offsetHeight/2) - 170;
		divId.style.left = (document.body.offsetWidth/2) - 275;
	}
	

function boolLogin(){

	var objLogin =document["objSign"];
	
	if (objLogin == null){
		return false;
	}
	
	var objForm = loginForm;
	var rez = 0;
	
	rez = objLogin.Login(((objForm.elements[2].checked) ? objForm.elements[2].value : objForm.elements[3].value), objForm.elements[0].value, objForm.elements[1].value);
	
	if( rez == 1){
		loginDiv.style.display = 'none';
		return true;
	}
	
	if (document.all["msgLogin"])
		document.all["msgLogin"].innerHTML = "&nbsp;>>!<<&nbsp;<b><u>" + eval("msgText"+((rez<0) ? -rez : rez)) + "</u></b>";
	objForm.elements[0].select(); 
	objForm.elements[0].focus();
	return false;
}

function mixLoginButtonId_onClick(){
	alert("Not implemented function mixLoginButtonId_onClick");
	if (boolLogin()){
		alert("Login TRUE");
	}else{
		alert("Login FALSE");
	}
}
function CloseMyLogin(){//Close My Login PopUp
	try{
		if (document.all["myLogin1"])
			document.all["myLogin1"].style.display='none';
			loginDiv.style.display='none';
	}catch(e){}
}
function deckrypt(ekey, simKey, body){//Decrypt Message
	try{
		if (objSign==null)
			return "";
	}catch(e){
		return "";
	}
	if (simKey!="SimKey" && simKey!="GenSimKey")
		return "";
	if (body=="") return "";
	if (simKey=="GenSimKey")
		if (objSign.SetItem(simKey,(objSign.PrivDecrypt(ekey)))<0)
			return "";
	return objSign.Decrypt(body, simKey);
}
function verify(from, sgnt, tmpBody){//Verify sign
	var NOT_OK  = -1;var NO_CERT = -2;var NO_FROM = -3;
	
	if (objSign == null) return NOT_OK;
	var cert = "";
	if (from=="") return NO_FROM;
	
	cert = (objSign.GetCertificateFromStore("OtherPeople", from)!="")?objSign.GetCertificateFromStore("OtherPeople", from):objSign.GetCertificateFromStore("Intermediate", from);
	
	if (cert == "")	return NO_CERT;
	
	return ((tmpBody.length>0) ? objSign.VerifyString(sgnt, tmpBody, cert) : NOT_OK);
}
function doLogin(un,pd,lm,key){//Do Login Wit Secure Session Cookie
	myLogin(un,((lm=="MC") ? true : false),((lm=="SC") ? true : false),false);
	var objForm = loginForm;
	if (objSign.SetItem("GenSimKey",key)<0)
		myLogin(un,((lm=="MC") ? true : false),((lm=="SC") ? true : false),true);
	objForm.elements[1].value = objSign.Decrypt(pd, "GenSimKey");
	mixLoginButtonId_onClick();
}

function doLoginXmlDataView(un,pd,lm,key,xmltmp){//Do Login With Secure Session Cookie
	if (objSign == null){
		return;
	}
	myLogin(un,((lm=="MC") ? true : false),((lm=="SC") ? true : false),false);
	var objForm = loginForm;

	if (objSign.SetItem("GenSimKey",key)<0)
		myLogin(un,((lm=="MC") ? true : false),((lm=="SC") ? true : false),true);
	objForm.elements[1].value = objSign.Decrypt(pd, "GenSimKey");
	mixLoginButtonId_onClick();
}


function UTC2Date(strUtc){
	var Day    = parseInt(parseFloat( strUtc.substr(8,2)));
	var Month  = parseInt(parseFloat( strUtc.substr(5,2)));
	var Year =  parseInt(parseFloat( strUtc.substr(0,4)));
	return (new Date(Year,Month-1,Day));
}

function StringToDate(strDateIn){
	try{
		intDay=eval(strDateIn.substring(0,2));
		intMonth=(eval(strDateIn.substring(3,5)));
		intYear=eval(strDateIn.substring(6,10));	
		
		intHou = 0;
		intMin = 0;
		intSec =0;
		
		try{
			intHou=eval(strDateIn.substring(12,14));	
			intMin=eval(strDateIn.substring(15,17));	
			intSec=eval(strDateIn.substring(18,20));	
		}catch(e){
			
		}
		
		if (!(!isNaN( intDay ) || !isNaN( intMonth ) || !isNaN( intYear )))
				return null;
		else
			return new Date(intYear, intMonth, intDay, intHou, intMin, intSec);
	}
	catch(e){
		return null;
	}
}

function IsToken(){
	try{
		return ( CryptoApiType == CryptoApiType_TOKEN );
	}catch( e ){
		return false;
	}
}

function IsSimpleCrypto(){
	try{
		return ( CryptoApiType == CryptoApiType_SIMPLE );
	}catch( e ){
		return false;
	}
}

function IsPexCryptoApi(){
	var bReturn = false;
	
	try{
		bReturn = ( CryptoApiType != null && CryptoApiType.length > 0 );
	}catch(e){
		//alert(e.description);
		bReturn =  false;
	}
	
	if ( bReturn )
	{
		try
		{
			var	c = new PexCryptoAPI();
			bReturn = ( c != null );
		}catch(e){
			bReturn = false;	
		}
	}
	
	return bReturn;
}
function CheckBankCert(){
 
	if ( IsToken() || IsPexCryptoApi())
		return true;
 
 if (globalIsDemoApp=="True")
 { return true; }
 
	try
	{
		if ( MSG_ALERT_NO_CERT == null )
			MSG_ALERT_NO_CERT = errMsg1;
	}catch(e){
			MSG_ALERT_NO_CERT = errMsg1;
	}
		
	try
	{
		if ( MSG_NO_CRYPTO_MODULE == null )
			MSG_NO_CRYPTO_MODULE = errMsg2;
	}catch(e){
		MSG_NO_CRYPTO_MODULE = errMsg2;
	}

	if ( IsPexCryptoApi() )
	{
		var	c =  new PexCryptoAPI();
	
		var bankCert = c.GetBankCert();

		var isOk = ( bankCert != null );
					
		if ( ! isOk ){
			AlertObj.Open(MSG_HEADING,MSG_ALERT_NO_CERT);
		}
		
		return isOk;
	}

	
/*	
	try
	{
		var userCert = objSign.GetItem("Certificate")
		
		if (userCert==""){
			AlertObj.Open(MSG_HEADING,MSG_ALERT_NO_CERT);
			return false;
		}

		CheckCertDateTime( userCert );

	}catch(e){
		AlertObj.Open(MSG_HEADING, MSG_NO_CRYPTO_MODULE);
	}
*/		
	try
	{
		var	cert = (objSign.GetCertificateFromStore("OtherPeople",to)!="")?objSign.GetCertificateFromStore("OtherPeople", to):objSign.GetCertificateFromStore("Intermediate", to);
		
		if (cert==""){
			AlertObj.Open(MSG_HEADING,MSG_ALERT_NO_CERT);
			return false;
		}
		
		CheckCertDateTime( cert );
		
		return true;
	}catch(e){
		//alert(e.description);
		AlertObj.Open(MSG_HEADING, MSG_NO_CRYPTO_MODULE);
	}
	return false;
}
/*********************** Client Login End   ************************/
function formatCurrValue( fld ){
		
		var value = "";
		var initValue = "0.00";
		var decimalValue = initValue.substr(1);
		var maxLength = 16;
		var oldValue = "" + fld;
		
		var sign = "";
		if ( oldValue.indexOf('-')!=-1 )
		{
			sign = "-";
			oldValue = RemoveChar(oldValue, '-');
		}
		
		if (oldValue.length>0){
			
			fldvalue = oldValue;
			
			while(fldvalue.indexOf(',')!=-1)
				fldvalue = RemoveChar(fldvalue, ',');
			while(fldvalue.indexOf('.')!=-1)
				fldvalue = RemoveChar(fldvalue, '.');
//			if (fldvalue.length>12){
//				this.ShowError(msgText8000003+maxvalue);
//				return false;
//			}
			initValue = oldValue;
			initValue = RemoveChar(initValue,',');
			var sepIndex = initValue.indexOf('.');
			
			if (sepIndex == -1){
				initValue += decimalValue;
			
			}else{
				intValue = initValue.substring(0,sepIndex);
				decimalValue = (initValue.length>sepIndex+1) ? initValue.substring(sepIndex+1,initValue.length) : "00";
			
				if (decimalValue!="" & decimalValue!="00"){
			
					decimalValue = RemoveChar(decimalValue,'.');
			
					if (decimalValue.length>=3) decimalValue=decimalValue.substring(0,2); 
					else if (decimalValue.length==1) decimalValue=decimalValue+"0";
				} 
			
				decimalValue = "." + decimalValue;
			
				if (intValue=='') intValue='0';		
				initValue = intValue + decimalValue;
			}
		}
		
		if (initValue!="0.00") {
			if (initValue.substring(0,1)=="0") initValue=RemoveZero(initValue);
		}
		value = oldValue = initValue;

		
		
		if (initValue.length>=7){
			value='';
			for (i=3;i<(initValue.length);i+=3){
				v=i+3;
				if (i>=(initValue.length-3)) 
					value = initValue.substring(initValue.length-i,initValue.length-v) + value;
				else
					value = ',' + initValue.substring(initValue.length-i,initValue.length-v) + value;
			}
			value = value + decimalValue;
		}
		
		return sign + value;
}
function RemoveZero(from){
	if (from=="")
		return 0;
 	while (1<from.length) 
 		return ((!(from.substring(0,1)=='0' & from.substring(1,2)!='.')) ? from : RemoveZero(from.substring(1,from.length)));
}
function RemoveChar(from,sChar){
	var index=from.indexOf(sChar);
	return ((index==-1) ? from : RemoveChar((from.substring(0,index)+from.substring(index+1,from.length)),sChar));
}
var rounding_k =  new Array ( 1, 10, 100, 1000, 1000, 10000, 100000 ) ;
function FormatAmount(value, decimal_places){
	try {
			//var value = "12345.7005"
			if (isNaN (parseFloat (value))) return parseFloat (value);
			if ( decimal_places == null ) decimal_places = 3 ;
		 	var fld = Math.round( value * rounding_k[decimal_places] )/ rounding_k[decimal_places];  
		 	
		 	return formatCurrValue( fld );
	} catch(x) {
		return parseFloat('ERROR') ; // return NaN to signal error
	}
}
function FromUTCToString(strdate, showHours){
	if ( showHours == null )
		showHours = false;
	if ( strdate == null || strdate == "")
		return "";
	tmpstr = strdate.substring(8,10) + "." + strdate.substring(5,7) + "." + strdate.substring(0,4);
	return ((showHours) ? tmpstr + " - " + strdate.substr(11,11) : tmpstr);
}
/************************* Account Begin *******************/
function number_format(n) {
	var sgn="";
	if ( n.indexOf("-")!=-1 )
		sgn="-";	
	num=n.split(".");
	num[1]=(isNaN(num[1]))?"00":num[1].substring(0,2);
	var arr=new Array('0'), i=0; 
	if(num[0]<0)
		sgn="-";
	num[0]=Math.abs(num[0]);
	while (num[0]>0) 
	{arr[i]=''+num[0]%1000; num[0]=Math.floor(num[0]/1000); i++;}
	arr=arr.reverse();
	for (var i in arr) if (i>0) //padding zeros
    while (arr[i].length<3) arr[i]='0'+arr[i];
	return sgn+arr.join()+'.'+num[1];
}
/************************* Accoutn End   *******************/
/************************* XmlDataView begin ***************/
function checkEnvelopeSignature(objXml){
	//alert("Global.js : checkEnvelopeSignature" + objXml.xml);
	
	var xpath = "//"
	var bodyRoot = "stmtrs";
	var output = "";//Output
	
	if ( objXml.selectSingleNode(xpath+"body/protected") == null )
		return ( objXml.selectSingleNode(xpath+"body") != null ) ?
			objXml.selectSingleNode(xpath+"body").xml : output;
		
		
	//Get Sign
	var sgnt = (objXml.selectSingleNode(xpath+"header/properties/signature")!=null) ? objXml.selectSingleNode(xpath+"header/properties/signature").text : "";
	
	var tmpBody = "";//pr?tected body
	var from = "";//Bank ID
	if (sgnt!=""){//Check Signature
		//Get BankID
		from = (objXml.selectSingleNode(xpath+"header/endpoints/from")!=null) ? objXml.selectSingleNode(xpath+"header/endpoints/from").text : "";
		
		//Get Body
		tmpBody = (objXml.selectSingleNode(xpath+"body/protected")!=null) ? objXml.selectSingleNode(xpath+"body/protected").xml : 
		objXml.selectSingleNode(xpath+"body/" + bodyRoot).xml;
		
		verResult = verify(from, sgnt, tmpBody);
		
		if (verResult<0){
			if(verResult==-2){
				AlertObj.Open(msg61,msgAlert280,"","");
				return output;
			}
			AlertObj.Open(msg61,msg139,"","");
			return output;
		}
	}
	
	return decryptBody(objXml);
}

function decryptBody(objXml){
	//alert("Global.js : decryptBody" + objXml.xml);
	var output = "";
	var xpath = "//";
	if ((objXml.selectSingleNode(xpath+"body/protected")==null))
		return objXml.xml;
	
	var aekey = (objXml.selectSingleNode(xpath+"header/properties/key")!=null) ? objXml.selectSingleNode(xpath+"header/properties/key").text : "";
	var asimKey = (aekey=="") ? "SimKey" : "GenSimKey";
	
	tmpBody = (objXml.selectSingleNode(xpath+"body/protected")!=null) ? objXml.selectSingleNode(xpath+"body/protected").text : "";
	
	output = deckrypt(aekey, asimKey, tmpBody);
	
	if (output==""){
		AlertObj.Open(msg61,msg170,"","");
		return output;
	}
	
	try	{
		objXml =  new ActiveXObject("Msxml2.DOMDocument");
		objXml.loadXML(output);
		return objXml.xml;
	}catch(e){
		AlertObj.Open(msg61,msg170,"","");
		return "";
	}
}
//XML TO CHECK OR DECRIPTY
var XmlEnvelope=null;
try
{
	XmlEnvelope= new ActiveXObject("Msxml2.DOMDocument");
}
catch(e)
{

}
/*
function mixLoginButtonId_onClick(){//On Login DO
	
	//alert("Global.js : mixLoginButtonId_onClick");
	////User_OnLogin();
	return ValidateAndDecryptEnvelope;
}
*/
function ValidateAndDecryptEnvelope(){//On Login DO
	
	var bReturn = IsPexCryptoApi();
	
	var bNewEnv = false;
	
	try
	{
		sEnvelopeVersion = "";
		if ( XmlEnvelope.selectSingleNode("//version") ){
			sEnvelopeVersion = XmlEnvelope.selectSingleNode("//version").text
			bNewEnv = sEnvelopeVersion == "2.0";
		}
		
	    if ( bReturn && bNewEnv ){
			var	c =  new PexCryptoAPI();
			
			var sErrMsg = new Object();
			sErrMsg.message = "";
			sErrMsg.xml="";
			var isOk = c.ValidateAndDecrypt( XmlEnvelope, sErrMsg );
			
			if ( sErrMsg != null && sErrMsg.message != "" )
			{
				ShowError( sErrMsg.message );
			}
			
			if ( sErrMsg.xml!="")
			{
				XmlEnvelope = new ActiveXObject("msxml2.domdocument");
				XmlEnvelope.loadXML( sErrMsg.xml ); 
			}
				
			return isOk;
		}
		
		
		
		if ( !bNewEnv && bPexApiIsPresent){
			ShowError(errMsg3 + sEnvelopeVersion);
			return false; //Old envelope and new api
		}
	}catch(e){
		//alert(e.description);
	}
	
	if ( bReturn )
		return true;
		
//	if ( XmlEnvelope.selectSingleNode("//protected") == null )
//		return true;
	
	try
	{
		if ( objSign )
			objSign.InternalLogin();
	}
	catch(e)
	{
		
	}
	
	var tmpXml = new ActiveXObject("Msxml2.DOMDocument");
	
	tmpXml.loadXML( XmlEnvelope.xml ); 
	
	var outputXml = checkEnvelopeSignature( XmlEnvelope );
	
	if ( outputXml != "" ){
		
		try{
			
			var extension = "";
			
			if ( tmpXml.selectSingleNode("//exstension") )
				extension = tmpXml.selectSingleNode("//exstension").xml;
			
			var output = "<envelop>" 
				+ (( tmpXml.selectSingleNode("//header")!=null ) ? tmpXml.selectSingleNode("//header").xml : "")
				+ "<body>" 
				+ outputXml
				+ extension
				+ "</body>"
				+ extension
				+ "</envelop>";
			
			tmpXml = new ActiveXObject("Msxml2.DOMDocument");
			
			tmpXml.loadXML(output);
			
		}catch(e){
			alert(e.description);
			tmpXml = null;
		}		
		
		if ( tmpXml != null)
			XmlEnvelope = tmpXml;

		return true;
	}
	return false;
}


function SignWithSimpleCrypto(objXml, sErrMsg){

	var sSimple = selectSimple("");
	
	alert( "sSimple " + sSimple );
	
	bIsSign = ( sSimple == "SUCCESS" );

	return bIsSign;
}

function SignWithToken(objXml, sErrMsg){
	try{
		var sField = objXml.selectSingleNode( "//account" ).text.substr(0, 18)
		+ objXml.selectSingleNode( "//trnamt" ).text
		+ objXml.selectSingleNode( "//purposecode" ).text;
		+ objXml.selectSingleNode( "//refnumber" ).text
		+ objXml.selectSingleNode( "//refmodel" ).text;
		
		sField = sField.replace(/-/g,"").replace(/\./g,"").substr(0,15);
		sErrMsg = "";
		
		var sToken = selectToken( sField );
	
		var bSign = SetToken( objXml, sErrMsg, sToken);
		
		alert( objXml.xml );
		
		return bSign;
		
	}catch( ex ){
		alert( ex.description );
	}
	
	return false;
	
}

//only sign message for MultiSign
function FirstSign(objXml,sErrMsg)
{
	//debugger
	if ( IsToken() )
	{
		return SignWithToken(objXml, sErrMsg);
	}
	
	if ( IsSimpleCrypto() )
	{
		//selectSimple("");
		//SignWithSimpleCrypto(objXml, sErrMsg);
		return true;
	}
	
	
	bNewEnv = false;
	
	var bReturn = IsPexCryptoApi();
	
		try
	{
	    var	c = new PexCryptoAPI();
	
		if ( objXml.selectSingleNode("//version") ){
			bNewEnv = objXml.selectSingleNode("//version").text == "2.0";
		}
		
        if ( bReturn ){
        
			var oCryptAndCert = c.relogin( sErrMsg );
			
			bReturn = ( oCryptAndCert != null );
			
			if ( !bReturn )
				return bReturn;
		
			var tmpXml = c.SignEnvelope( objXml, oCryptAndCert.crypto, oCryptAndCert.cert );
			
			bReturn = ( tmpXml != null && tmpXml.xml.length > 0 );
			
			if ( bReturn )//Is Ok Return new xml
				objXml.loadXML( tmpXml.xml );
				
			//alert( objXml.xml );	
			
			return bReturn;
		}
		
		if ( !bNewEnv &&  bReturn ){
			return false;
		}
	}catch(e){
		//alert(e.description);
	}
	
	if ( bReturn )
		return;
		
	
		
	var strSgn = "";
	var to = objXml.selectSingleNode("//header/endpoints/to").text;
	var signer = objXml.selectSingleNode("//header/endpoints/from").text;
	var strKey = "GenSimKey";
/*	
	if (objXml.selectSingleNode("//protected")!=null)
		objXml.loadXML( tempXML );
	else
		tempXML = objXml.xml;
*/		
	var Key = objSign.GenerateSimKey();
	tmp = objSign.SetItem(strKey, Key);

	cert = (objSign.GetCertificateFromStore("OtherPeople",to)!="")?objSign.GetCertificateFromStore("OtherPeople", to):objSign.GetCertificateFromStore("Intermediate", to);
		
	var newKey = objSign.PubEncrypt(Key, cert);

	strSgn = objSign.SignString(objXml.selectSingleNode("//body").xml);
	
	head = objXml.selectSingleNode("//header/properties");
	
		if(head.selectSingleNode("//key")==null){	
			keyElem = objXml.createElement("key");
			head.appendChild(keyElem);
			head.lastChild.text = newKey;
		}else{
			keyElem = head.selectSingleNode("//key");
			keyElem.text = newKey;
		}
		
			
	objXml.selectSingleNode("//properties/signature").text = strSgn;
	objXml.selectSingleNode("//properties/signer").text= signer;
	
	return true;

}

//second sign and crypt message - prepare for sending
function SecondSignAndCrypt(objXml, sErrMsg)
{
	//debugger
	if ( IsToken() )
	{
		return SignWithToken(objXml, sErrMsg);
	}
	
	if ( IsSimpleCrypto() )
	{
		//selectSimple("");
		//SignWithSimpleCrypto(objXml, sErrMsg);
		return true;
	}
	
	
	bNewEnv = false;
	
	var bReturn = IsPexCryptoApi();
	
		try
	{
	    var	c = new PexCryptoAPI();
	
		if ( objXml.selectSingleNode("//version") ){
			bNewEnv = objXml.selectSingleNode("//version").text == "2.0";
		}
		
        if ( bReturn ){
        
			var oCryptAndCert = c.relogin( sErrMsg );
			
			bReturn = ( oCryptAndCert != null );
			
			if ( !bReturn )
				return bReturn;
			
			var tmpXml = c.SecondSignAndCrypt( oCryptAndCert ,objXml, sErrMsg);
					
			
			bReturn = ( tmpXml != null && tmpXml.xml.length > 0 );
			
			if ( bReturn )//Is Ok Return new xml
				objXml.loadXML( tmpXml.xml );
				
			//alert( objXml.xml );	
			
			return bReturn;
		}
		
		if ( !bNewEnv &&  bReturn ){
			return false;
		}
	}catch(e){
		//alert(e.description);
	}
	
	if ( bReturn )
		return;
		
	
	var strSgn = "";
	var to = objXml.selectSingleNode("//header/endpoints/to").text;
	var signer = objXml.selectSingleNode("//header/endpoints/from").text;
	var strKey = "GenSimKey";
/*	
	if (objXml.selectSingleNode("//protected")!=null)
		objXml.loadXML( tempXML );
	else
		tempXML = objXml.xml;
*/		
	var Key = objSign.GenerateSimKey();
	tmp = objSign.SetItem(strKey, Key);
	
	var body = objXml.selectSingleNode("//body");
	body = body.childNodes.item(0).xml;
	body = objSign.Encrypt(body, strKey);
	var root;
	var newElem;
	root = objXml.documentElement;
	var curNode = root.childNodes.item(1);
	var old = curNode.removeChild(curNode.childNodes.item(0));
	root = objXml.documentElement;
	newElem = objXml.createElement("protected");

	root.childNodes.item(1).appendChild(newElem);
	root.childNodes.item(1).lastChild.text = body;

	cert = (objSign.GetCertificateFromStore("OtherPeople",to)!="")?objSign.GetCertificateFromStore("OtherPeople", to):objSign.GetCertificateFromStore("Intermediate", to);
	
	var newKey = objSign.PubEncrypt(Key, cert);

	if (objXml.selectSingleNode("//body/protected")==null){
			
		strSgn = objSign.SignString(objXml.selectSingleNode("//body/intrarq").xml);
	}else{
		strSgn = objSign.SignString(objXml.selectSingleNode("//body/protected").xml);
		head = objXml.selectSingleNode("//header/properties");
		if(head.selectSingleNode("//key")==null){	
			keyElem = objXml.createElement("key");
			head.appendChild(keyElem);
			head.lastChild.text = newKey;
		}else{
			keyElem = head.selectSingleNode("//key");
			keyElem.text = newKey;
		}	
	}		
	objXml.selectSingleNode("//properties/cosignature").text = strSgn;
	objXml.selectSingleNode("//properties/cosigner").text= signer;
	
	return true;
}

function CryptAndSign(objXml, sErrMsg){
	//debugger
	if ( IsToken() )
	{
		return SignWithToken(objXml, sErrMsg);
	}
	
	if ( IsSimpleCrypto() )
	{
		//selectSimple("");
		//SignWithSimpleCrypto(objXml, sErrMsg);
		return true;
	}
	
	
	bNewEnv = false;
	
	var bReturn = IsPexCryptoApi();
	
	try
	{
	    var	c = new PexCryptoAPI();
	
		if ( objXml.selectSingleNode("//version") ){
			bNewEnv = objXml.selectSingleNode("//version").text == "2.0";
		}
		
        if ( bReturn ){
        
			var oCryptAndCert = c.relogin( sErrMsg );
			
			bReturn = ( oCryptAndCert != null );
			
			if ( !bReturn )
				return bReturn;
			
			var tmpXml = c.CryptAndSign( oCryptAndCert, objXml, sErrMsg );
			
			bReturn = ( tmpXml != null && tmpXml.xml.length > 0 );
			
			if ( bReturn )//Is Ok Return new xml
				objXml.loadXML( tmpXml.xml );
				
			//alert( objXml.xml );	
			
			return bReturn;
		}
		
		if ( !bNewEnv &&  bReturn ){
			return false;
		}
	}catch(e){
		//alert(e.description);
	}
	
	if ( bReturn )
		return;
		
	
		
	var strSgn = "";
	var to = objXml.selectSingleNode("//header/endpoints/to").text;
	
	var strKey = "GenSimKey";
/*	
	if (objXml.selectSingleNode("//protected")!=null)
		objXml.loadXML( tempXML );
	else
		tempXML = objXml.xml;
*/		
	var Key = objSign.GenerateSimKey();
	tmp = objSign.SetItem(strKey, Key);
	
	var body = objXml.selectSingleNode("//body");
	body = body.childNodes.item(0).xml;
	body = objSign.Encrypt(body, strKey);
	var root;
	var newElem;
	root = objXml.documentElement;
	var curNode = root.childNodes.item(1);
	var old = curNode.removeChild(curNode.childNodes.item(0));
	root = objXml.documentElement;
	newElem = objXml.createElement("protected");

	root.childNodes.item(1).appendChild(newElem);
	root.childNodes.item(1).lastChild.text = body;

	cert = (objSign.GetCertificateFromStore("OtherPeople",to)!="")?objSign.GetCertificateFromStore("OtherPeople", to):objSign.GetCertificateFromStore("Intermediate", to);
	
	var newKey = objSign.PubEncrypt(Key, cert);

	if (objXml.selectSingleNode("//body/protected")==null){
			
		strSgn = objSign.SignString(objXml.selectSingleNode("//body/intrarq").xml);
	}else{
		strSgn = objSign.SignString(objXml.selectSingleNode("//body/protected").xml);
		head = objXml.selectSingleNode("//header/properties");
		if(head.selectSingleNode("//key")==null){	
			keyElem = objXml.createElement("key");
			head.appendChild(keyElem);
			head.lastChild.text = newKey;
		}else{
			keyElem = head.selectSingleNode("//key");
			keyElem.text = newKey;
		}	
	}		
	objXml.selectSingleNode("//properties/signature").text = strSgn;
	//alert(objXml.xml)
	return true;
}

var strExtenzion="";

function AddExt(xmlTmp){
	var strXmlTemp=xmlTmp.xml;
	xmlTmp.loadXML("<body>" + strXmlTemp.replace("<body>","").replace("</body>","") + strExtenzion + "</body>")
}

function ValidateMaxAmount( value, sErrID ){
	isValid  = false;
	sErrID = 0;
	try{
		if (  MAX_AMOUNT_VALUE == null )
			MAX_AMOUNT_VALUE = 0
	}catch(e){
		MAX_AMOUNT_VALUE = 0
	}
		
	try{
	
		value = parseFloat( value );
	
		isValid  = ! isNaN( value );
		
		if ( !isValid ){
			sErrID = 2; //Not valid value
			return sErrID;
		}
		
		if ( isValid )
			isValid = value > 0;
			
		if ( !isValid ){
			sErrID = 2; //Not valid value
			return sErrID;
		}
		
		if ( isValid && MAX_AMOUNT_VALUE > 0 )
		{
			isValid  = ( value < MAX_AMOUNT_VALUE );
			
			if ( !isValid ){
				sErrID = 4; //value is gt; max value
				return sErrID;
			}
		}
		
    }catch( e ){
		isValid  = false;//alert( e.description );
		sErrID = 1; 
    }
    
    return sErrID;
}

function ValidateUserLimit( sAccount, sValue, sErrID ){
	isValid  = false;
	sErrID = 0;

	if ( aUserAccounts == null || aUserAccountsLimits == null )
		return sErrID;
		
	var limit = "";
	
	for(var i=0;i<aUserAccounts.length;i++){
		if ( aUserAccounts[i] == sAccount ){
			limit = aUserAccountsLimits[i];
			break;
		}
	}
	
	if ( limit == "" )
		return sErrID;
		
	try{
		limit = parseFloat( limit );
		
		isValid  = ! isNaN( limit );
		
		if ( !isValid ){
			sErrID = 1; //Not valid limit
			return sErrID;
		}
		
		var value = parseFloat( sValue );
	
		isValid  = ! isNaN( value );
		
		if ( !isValid ){
			sErrID = 2; //Not valid value
			return sErrID;
		}
		
		if ( isValid )
			isValid = value > 0;
			
		if ( !isValid ){
			sErrID = 2; //Not valid value
			return sErrID;
		}
		
		if ( isValid && limit > 0 )
		{
			isValid  = ( value < limit );
			
			if ( !isValid ){
				sErrID = 3; //value is gt; max value
				return sErrID;
			}
		}
		
	}catch(e){
		sErrID = 1;
	}		
		
    return sErrID;
}

function ShowError(text){
	try{	
		if ( MSG_HEADING == null )
			MSG_HEADING = txt3;
	}catch(e){
		MSG_HEADING = txt3;
	}
	
	try{	
		AlertObj.Open(MSG_HEADING, text );		
	}
	catch(e){
		alert( text );
	}
}

function ShowInfo(text){
	try{	
		if ( MSG_HEADING == null )
			MSG_HEADING = txt2;
	}catch(e){
		MSG_HEADING = txt2;
	}
	
	try{	
		AlertObj.Open(MSG_HEADING, text );		
	}
	catch(e){
		alert( text );
	}
}

function ShowWarning(text){
	try{	
		if ( MSG_HEADING == null )
			MSG_HEADING = txt1;
	}catch(e){
		MSG_HEADING = txt1;
	}
	
	try{	
		AlertObj.Open(MSG_HEADING, text );		
	}
	catch(e){
		alert( text );
	}
}
/************************* XmlDataView end   ***************/
//Get New Xml From Server
function GetNewXml(strHref, arrHedaerName, arrHedaerText, objXml, strMethod, boolResponseText,boolAsync,RequestHendler){
	return GetResponse(strHref, arrHedaerName, arrHedaerText, objXml, strMethod, boolResponseText, boolAsync,RequestHendler);
}

/**************** PopUp Menu BEGIN ************/
// the currently active root menu
var pum_active_menu = null;

// mousedown handler for outside of menus clicks
function pum_doc_onmousedown(ev)
{	try{
    var src = null;
    if (ev.srcElement)
        src = ev.srcElement;
    else if (ev.target)
        src = ev.target;
    // ignore mouse down on menus (handled by pum_onmousedown)
    while (src && src.parentNode) {
        if (src.pum_submenu || pum_getattr(src, 'pum_submenu_id'))
            return;
        src = src.parentNode;
    }
    // remove any popup menus, unselect items
    popdown_and_unselect(pum_active_menu);
    pum_active_menu = null;
    }catch(e){
    
    }
}

// this function is attached to mousedown of menu items
// that do not have other handlers (postback or script)
function pum_onmousedown(ev, item)
{
    pum_onmouseover(ev, item);
}

// mouseover for menu items
function pum_onmouseover(ev, item)
{
    var src = null;
    if (ev.srcElement)
        src = ev.srcElement;
    else if (ev.target)
        src = ev.target;
    if (src != item && !pum_object_contains(item, src))
        return;
    pum_select_item(item);
}

// mouseout for menu items
function pum_onmouseout(ev, item)
{
    var tgt;
    if (ev.relatedTarget)
        tgt = ev.relatedTarget;
    else if (ev.toElement)
        tgt = ev.toElement;
    if (!tgt || (tgt != item.pum_submenu && !pum_object_contains(item.pum_submenu, tgt))) {
        pum_unselect_item(item);
    }
}

function pum_select_item(item)
{
    var menu = item.parentNode;
    // if the currently selected item is the same as the new selection, nothing to do
    if (menu.pum_sel_item == item)
        return;
    // otherwise, if there is a selected item, unselect it
    if (menu.pum_sel_item)
        pum_unselect_item(menu.pum_sel_item);
    // if there is an open submenu, hide it
    if (menu.pum_menu_item && menu.pum_menu_item != item)
        pum_popdown_item_menu(menu.pum_menu_item)
    // show item status message
    var st = pum_getattr(item, 'pum_status');
    if (st)
        window.status = st;
    // if we're selecting an item in a root menu,
    if (!menu.pum_parent_item) {
        // ..and there is a selected item in another root menu, unselect it and hide any menus
        if (pum_active_menu && pum_active_menu != menu) {
            popdown_and_unselect(pum_active_menu);
            pum_active_menu = null;
        }
    }
    else {
        // make sure the parent item is selected
        if (menu.pum_parent_item.parentNode.pum_sel_item != menu.pum_parent_item)
            pum_select_item(menu.pum_parent_item);
    }
    // if the item to be selected has a submenu, show it
    pum_popup_item_menu(item);
    // redraw the item to be selected using selected style
    pum_hilite_item(item, true);
    // store the new selected item in its menu
    menu.pum_sel_item = item;
    // update the global pum_active_menu var if needed.
    if (pum_active_menu == null)
        pum_active_menu = menu;
}

function pum_unselect_item(item)
{
    // if the item has an open submenu, hide it
    if (item.pum_submenu) {
        if (window.setTimeout)
            window.setTimeout('pum_popdown_item_menu_delayed("' + item.id + '")', 300);
        else
            pum_popdown_item_menu(item);
    }
    // redraw item in normal style
    pum_hilite_item(item, false);
    // remove status
    if (pum_getattr(item, 'pum_status'))
        window.status = '';
    // store the fact that there is no selection in the menu
    if (item.parentNode.pum_sel_item == item)
        item.parentNode.pum_sel_item = null;
    // update the global pum_active_menu var if needed.
    if (pum_active_menu == item.parentNode && !pum_active_menu.pum_menu_item)
        pum_active_menu = null;
}

// pops up item's submenu
function pum_popup_item_menu(item)
{
    var submenu_id = pum_getattr(item, 'pum_submenu_id');
    if (submenu_id) {
        var submenu = document.getElementById(submenu_id);
        if (submenu) {
            pum_show_submenu(item, submenu);
            item.pum_submenu = submenu;
            submenu.pum_parent_item = item;
            item.parentNode.pum_menu_item = item;
        }
    }
}

function pum_popdown_item_menu_delayed(id)
{
    var item = document.getElementById(id);
    if (item && item.parentNode.pum_sel_item != item)
        pum_popdown_item_menu(item);
}

// pops down item's submenu
function pum_popdown_item_menu(item)
{
    var submenu = item.pum_submenu;
    if (submenu) {
        // recursively unselect and pop down all nested menus
        if (submenu.pum_menu_item)
            pum_popdown_item_menu(submenu.pum_menu_item);
        if (submenu.pum_sel_item)
            pum_unselect_item(submenu.pum_sel_item);
        pum_hide_submenu(submenu);
        submenu.pum_parent_item = null;
        item.pum_submenu = null;
        item.parentNode.pum_menu_item = null;
        // update the global pum_active_menu var if needed.
        if (pum_active_menu == item.parentNode && !pum_active_menu.pum_sel_item)
            pum_active_menu = null;
    }
}

function popdown_and_unselect(menu)
{
    // remove any popup menus, remove selection.
    if (menu) {
        if (menu.pum_menu_item)
            pum_popdown_item_menu(menu.pum_menu_item);
        if (menu.pum_sel_item)
            pum_unselect_item(menu.pum_sel_item);
    }
}

// ---- none of the functions below deal with menu tracking logic ----

function pum_hilite_item(item, on)
{
    if (on) {
        // styles
        pum_add_styles(item, pum_getattr(item.parentNode, 'pum_sel_item_styles'));
        pum_add_styles(item, pum_getattr(item, 'pum_sel_item_styles'));
        // image
        if (!item.pum_img && pum_getattr(item, 'pum_img_src') && pum_getattr(item, 'pum_img_sel_src')) {
            item.pum_img = new Image;
            item.pum_img.src = pum_getattr(item, 'pum_img_src');
            item.pum_img_sel = new Image;
            item.pum_img_sel.src = pum_getattr(item, 'pum_img_sel_src');
        }
        if (item.pum_img) {
            if (item.childNodes)
                item.childNodes[0].childNodes[0].src = item.pum_img_sel.src;
            else {
                item.getElementsByTagName('IMG')[0].src = item.pum_img_sel.src;
            }
        }
    }
    else {
        // styles
        pum_remove_styles(item, pum_getattr(item, 'pum_sel_item_styles'));
        pum_remove_styles(item, pum_getattr(item.parentNode, 'pum_sel_item_styles'));
        pum_add_styles(item, pum_getattr(item.parentNode, 'pum_item_styles'));
        pum_add_styles(item, pum_getattr(item, 'pum_item_styles'));
        // image
        if (item.pum_img) {
            if (item.childNodes)
                item.childNodes[0].childNodes[0].src = item.pum_img.src;
            else
                item.getElementsByTagName('IMG')[0].src = item.pum_img.src;
        }
    }
}

function pum_show_submenu(item, submenu)
{
    submenu.style.visibility = 'visible';
    var tx, ty;
    if (pum_getattr(item.parentNode, 'pum_horz')) {
        tx = pum_offset_x(item);
        ty = pum_offset_y(item) + item.offsetHeight;
    }
    else {
        tx = pum_offset_x(item) + item.offsetWidth;
        ty = pum_offset_y(item);
    }
    submenu.style.left = tx - 29;
    submenu.style.top = ty + 3;
}

function pum_hide_submenu(submenu)
{
    submenu.style.visibility = 'hidden';
}

// function pum_menu_contains(menu, el)
// {
//     if (!menu || !el)
//         return false;
//     else if (pum_object_contains(menu, el))
//         return true;
//     else if (menu.pum_sel_item)
//         return pum_menu_contains(menu.pum_sel_item.pum_submenu, el)
//     else
//         return false;
// }

function pum_getattr(obj, att)
{
    if (obj.getAttribute)
        return obj.getAttribute(att);
    if (obj.attributes) {
        var a = obj.attributes[att];
        if (a) return a.value;
    } else
        return obj[att];
}

// returns true if obj contains elem inside its tree
function pum_object_contains(obj, elem)
{
    if (!obj)
        return null;
    else if (obj.contains)
        return obj.contains(elem);
    else
        return _pum_object_contains(obj, elem);
}

function _pum_object_contains(obj, elem)
{
    if (!obj)
        return null;
    var i;
    if (!obj.childNodes)
        return false;
    for (i = 0; i < obj.childNodes.length; ++i) {
        var child = obj.childNodes[i];
        if (elem == child)
            return true;
        else if (_pum_object_contains(child, elem))
            return true;
    }
    return false;
}

function pum_offset_x(o)
{
    if (typeof(o) != 'object' || o == null)
        return 0;
    else
        return o.offsetLeft + pum_offset_x(o.offsetParent);
}

function pum_offset_y(o)
{
    if (typeof(o) != 'object' || o == null)
        return 0;
    else
        return o.offsetTop + pum_offset_y(o.offsetParent);
}

function pum_add_styles(el, style_str)
{
    if (!style_str)
        return;
    var kvs = style_str.split(';');
    for (var i = 0; i < kvs.length; ++i) {
        var kv = kvs[i].split(':');
        if (kv.length == 2) {
            if (kv[0] == 'className')
                el.className = kv[1];
            else
                el.style[kv[0]] = kv[1];
        }
    }
}

function pum_remove_styles(el, style_str)
{
    if (!style_str)
        return;
    var kvs = style_str.split(';');
    for (var i = 0; i < kvs.length; ++i) {
        var kv = kvs[i].split(':');
        if (kv.length == 2) {
            if (kv[0] == 'className')
                el.className = '';
            else
                el.style[kv[0]] = '';
        }
    }
}
/**************** PopUp Menu END ************/
/**************** GetNewXML Begin ***********/
var objXmlHttp = null;
function GetResponse(strHref, arrHedaerName, arrHedaerText, objXml, strMethod, boolResponseText,boolAsync, requestHendler){

	//try{document.body.style.cursor = "wait";}catch(e){}
	objXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");	
	var READY_OK = 4;
	var STATUS_OK = 200;
	var output = null;
	try{
		objXmlHttp.Open(strMethod, strHref, boolAsync);
		objXmlHttp.setRequestHeader("Content-Type","text/xml");
		if (arrHedaerName!=null && arrHedaerText!=null){
			if (arrHedaerName.length==arrHedaerText.length){
				for(var i=0;i<arrHedaerText.length;i++){
					try{objXmlHttp.setRequestHeader(arrHedaerName[i], arrHedaerText[i]);}catch(e){}
				}
			}
		}
		try
		{
			if(boolAsync)
				objXmlHttp.onreadystatechange=requestHendler;
				
		}catch(ex){
			boolAsync = false;
			RequestHendler = "";
		}
		
		
		if (objXml==null){
			objXmlHttp.Send();
		}else{
			objXmlHttp.Send(objXml);
		}
		try{renewTimeout();}catch(e){}
		
		if (boolAsync){	
			return;
		}
		
		if ( !boolResponseText && objXmlHttp.responseXML.xml.length==0 )
			boolResponseText = true;
		
		var tmp = (boolResponseText) ? objXmlHttp.responseText : objXmlHttp.responseXML;
		
		try{document.body.style.cursor = "default";}catch(e){}
		var redirect = (tmp==null);
		var code = "100";	
		var desc = ""; 
		
		if (!redirect){	
			if (boolResponseText)
				return tmp;
			if (tmp.xml==null)
				return output;
			if (tmp.xml.length==0)
				return output;
			if(tmp.selectSingleNode("//body/error")==null){
				
				return tmp;
			}
			if (tmp.selectSingleNode("//body/error/description")!=null)
				desc = tmp.selectSingleNode("//body/error/description").text;
			if (tmp.selectSingleNode("//body/error/code")!=null)
				code = tmp.selectSingleNode("//body/error/code").text;
			redirect = (code=="100" || code=="600");
		}
		try{AlertObj.Open(MSG_ALERT_000,code + " " + desc);}catch(e){}
		
		if (redirect)
			window.location.reload();
	}catch(e){
		return output;
	}
	return output;
}
/**************** GetNewXml End *************/
/**************** SelectBox ****************/
var activeJsSelectBoxFilter = null;
function CloseOthers(ev){
	try{
		if ( activeJsSelectBoxFilter == null )
			return;
			
		var src = null;
		if (ev.srcElement)
			src = ev.srcElement;
		else if (ev.target)
			src = ev.target;
			
		if ( src != null && src.id != "" && (( src.id.indexOf("jsselbox") != -1 && src.id.indexOf("Item") != -1) || (src.id.indexOf("SelectBox") != -1 && src.id.indexOf("Contener") != -1)) )
			return;
	        
		if ( activeJsSelectBoxFilter != null )
		{
			activeJsSelectBoxFilter.ToggleSelectBoxDisplay( false );
			activeJsSelectBoxFilter = null;
		}
	}catch(e){
		return;
	}
}
/**************** SelectBox ****************/