////////////////////////////////
//           DOM            //
//////////////////////////////
// register an event handler to an element

var gFlag = 0;
var gAccountId = 0;

function obs_setEvent( xmlNode, strName, strFunction ) { // Twin in Tree.js
    strName = strName.substr( 0, 2 ) == "on" ? strName.substr( 2, strName.length ) : strName;

    // w3c compatible style, not supported by internet explorer yet
    if( document.addEventListener )
        xmlNode.addEventListener( strName, new Function( "event", "event.preventDefault( ); " + strFunction ), true );
    // Internet Explorer
    else if( document.attachEvent )
        xmlNode.attachEvent( "on" + strName, new Function( "event", strFunction ) );
    // old style (tag.onclick)
    else	
        xmlNode[ "on" + strName ] = new Function( "event", strFunction );
}

function DOMAddImgs(o,lImg,lEvent,lAction) {
  var oImg = document.createElement('img');
  var oAttr = document.createAttribute('src');
  oAttr.nodeValue = lImg;
  oImg.setAttributeNode(oAttr);
  o.appendChild(oImg);
  setEvent(oImg, lEvent, lAction);    
}

function DOMAddLink(lRemove,lPostfix,o,lLink,lTitle,lClass) {
  if (lRemove && o.getElementsByTagName('a').length > 0 )
    o.removeChild(o.getElementsByTagName('a')[0]);
  var tagA = document.createElement('a');
  var attrHREF = document.createAttribute('href');
  if (lClass) {
    var aClass = document.createAttribute('class');
    aClass.nodeValue = lClass;
    tagA.setAttributeNode(aClass);
  }  
  var nodeLinkText = document.createTextNode(lTitle);
  o.appendChild(tagA);
  attrHREF.nodeValue = lLink;
  tagA.appendChild(nodeLinkText);
  tagA.setAttributeNode(attrHREF);
  o.appendChild(tagA);
  if (lPostfix) {
    var oNode = document.createElement('br');    
    o.appendChild(oNode); // SiteMap
  }  
}

function DOMAddId(o,lId) {
  var oAttr = document.createAttribute('id')
  oAttr.nodeValue = lId;
  o.setAttributeNode(oAttr);	

}

function DOMAddCell(o,lId,lLink,lValue,lColor,lBgColor,lBorder) {
  mycurrent_cell = document.createElement("td");
  if (lBgColor)
    mycurrent_cell.bgColor=lBgColor;
  if (lColor)
    mycurrent_cell.style.color=lColor;    
  if (lBorder)     
    mycurrent_cell.style.border = lBorder;
  if (lId)
    DOMAddId(mycurrent_cell,lId);
  if (lLink)  
    DOMAddLink(1,0,mycurrent_cell,lLink,lValue,'');  
  else {  
    currenttext = document.createTextNode(lValue);	
    mycurrent_cell.appendChild(currenttext);
  }  
  o.appendChild(mycurrent_cell);	
}		


function DOMReceiptCells(o,i,a) {
  switch (i) {
    case 0 : 	
      var lTxt = a['Label'];
      break;
    case 1 : 	
      var lTxt = '';
      if ((a['Rights'] == 2 || a['Rights'] == 1) && (a['RawLabel'] == 'trans_loan' || a['RawLabel'] == 'trans_renew')) {
        // DOMAddLink(1,0,o,'javascript:makeCalendar('+a['Id']+',"'+a['Due']+'")',a['Due'],'');
        DOMAddLink(1,0,o,'javascript:startFocusedCalendar("bgUpdateExpire",'+a['Id']+',"NewDue",1,"'+a['Due']+'")',a['Due'],'');
        DOMAddId(o,'h'+a['Id']);
        if (document.fChangeDue != null && document.fChangeDue.NewDue != null)
          document.fChangeDue.NewDue.value = a['Due'];
      }
      else
        var lTxt = a['Due'];
      break;
    case 2 : 	
      var lTxt = a['Barcode'];
      break;            
    case 3 : 	
      var lTxt = a['Collection'];
      break;            
  }    
  if (lTxt) {
    currenttext = document.createTextNode(lTxt);	
    o.appendChild(currenttext);
  }  
}	

function makeReceiptGrid(lLabel,aTrans) {  	
  // get the reference for the body
  var mybody = document.getElementById('pPanel');
  
  // remove 1. & only table
  if (mybody.getElementsByTagName('table').length > 0 )
    mybody.removeChild(mybody.getElementsByTagName('table')[0]);
  
  // creates <table> and <tbody> elements
  mytable = document.createElement("table");
  mytable.setAttribute('id','pTable');
  mytable.style.margin="0px";
  mytable.style.padding="0px";
  mytable.style.border="0px";
  mytablebody = document.createElement("tbody");

  // creating all cells
  var gi = 1; // tgtPos counter..
  for (var x=0; x < aTrans.length; x++) {
    if (aTrans[x]) {	
      // creates a <tr> element
      mycurrent_row = document.createElement("tr");	
      for(var i = 0; i < 4; i++) {
        // creates a <td> element
        mycurrent_cell = document.createElement("td");
        // receiptGrid...
        DOMReceiptCells(mycurrent_cell,i,aTrans[x]);
        // appends the Text Node we created into the cell <td>
        // appends the cell <td> into the row <tr>
        if (gi % 2 == 0)
          mycurrent_cell.bgColor="#bbc2a9";
        if (aTrans[x]['Style'] == 'SmalBoxedNotice')
          mycurrent_cell.bgColor="#d60026";  
        mycurrent_cell.style.border = "1px solid #95A8C4";
        mycurrent_row.appendChild(mycurrent_cell);
      }
      // appends the row <tr> into <tbody>
      mytablebody.appendChild(mycurrent_row);
    }
    gi++;
  }  
   // appends <tbody> into <table>
   mytable.appendChild(mytablebody);
   // appends <table> into <body>
   mybody.appendChild(mytable);
}

///////////////////////////////
//         Lending           //
//////////////////////////////

function runAXlending() {
   ASyncLending('cbASyncLendItems','DeskLend',document.fLending.tgtId.value,document.fLending.PtrId.value,'',0,encodeURIComponent(document.fLending.Barcode.value),0,0);
   setTimeout("ASyncLending('cbASyncTransactionPanel','TransactionPanel',document.fLending.tgtId.value,document.fLending.PtrId.value,'',0,null,0,0)",500);
   setTimeout("ASyncLending('cbASyncSummaryPanel','SummaryPanel',document.fLending.tgtId.value,document.fLending.PtrId.value,'',0,null,0,0)",750);
}  


function cbASyncLendItems(lJSON) { // also used by runAXreturn(
  var a = eval("("+lJSON+")");
  var delmit = ' > ';
  for (var x in a) {
    z = x.toString();
  }     
  
   var lPic = '/pics/ActionOK.gif'; 
   var lTimeOut = 500;
   gMtaId = a['MtaId']; // JSenvironment used by KeyEvents
   if (a['Mode'] == 'return') {
     gObjId = a['ObjId']; // JSenvironment used by KeyEvents
     document.fReturning.ObjId.value = a['ObjId'];
   }  
   if (a['Mode'] == 'return' && a['PtrId'] > 0) {	
     gPtrId = a['PtrId']; // JSenvironment 	
     
     // right panel
     
     ASyncLending('cbASyncSummaryPanel','SummaryPanel',document.fReturning.tgtId.value,a['PtrId'],'',0,null,0,0);
     setTimeout("ASyncLending('cbASyncTransactionPanel','TransactionPanel',document.fReturning.tgtId.value,"+a['PtrId']+",'',0,null,0,0)",500);
     // document.getElementById('pPtrLink').style.visibility = 'visible';
     // alert('hebebxxxxx');
     document.getElementById('pSummary').style.visibility = 'visible';
     var lPtrLink = getLinksbyId('pUsrAccount');
     if (lPtrLink) {
       document.links[lPtrLink].href = '../main/UsrAccount.php?UsrId='+a['PtrId'];
       document.links[lPtrLink].style.textDecoration='underline';
       
     }  
   }
   if (a['LogicError'] == 0 && a['SQLErr'] == 000000) {	
     if (a['Mode'] == 'return' && a['LogicInfo'] != 0) { 
       lPic = '/pics/Exclaim.gif';	
       lTimeOut = 3000;
     }  
     document.getElementById('DeskAction').style.backgroundColor = '#FFFFFF'; 
     document.getElementById('DeskAction').style.color = '#000000';  
     
     if (a['Mode'] == 'return')  {
       document.getElementById('DeskAction').innerHTML = a['PtrName'];
       document.fReturning.Barcode.value = '';
     }  
     else
       setTimeout("document.fLending.Barcode.value = ''",200);  
       document.getElementById('tReceiptAction').style.visibility = 'visible';
     document.getElementById('DeskSiteMap').style.backgroundColor = '#000000';
     document.getElementById('DeskSiteMap').style.color = '#FFFFFF';   
     
     // DOM
     document.getElementById('DeskSiteMap').innerHTML = a['Mess']+delmit+a['Expire'];
     if (a['Rights'] == 1 || a['Rights'] == 2) { // DOM set title+link      
       document.getElementById('DeskSiteMap2').innerHTML = '';
       thisCell = document.getElementById('DeskSiteMap2');
       DOMAddLink(1,0,thisCell,'../main/Hits.php?MtaId='+a['MtaId'],a['Title'],'');
     } 
     else {
       document.getElementById('DeskSiteMap').innerHTML = a['Mess']+delmit+a['Expire']; 
       document.getElementById('DeskSiteMap2').innerHTML = a['Title'];
     } 
   }  
   else {	
     if (a['LogicError'] == 8) { // Item not on loan..
        var z = '<table class="gridTable"><caption>'+a['Title']+'</caption>';
        gAccountId = a['ResAccountId'];

            if (a['rColDif'])
              z = z+'<tr><td class="grid">'+a['Mess']+'</td><td class="gridR">'+a['rColName']+'</td></tr>';
            else
              z = z+'<tr><td class="grid">'+a['Mess']+'</td><td class="grid">'+a['rColName']+'</td></tr>';
            if (a['rReservist'])
              z = z+'<tr id="grid'+a['ResAccountId']+'"><td class="grid">'+a['rReservist']+'</td><td class="grid">'+a['rDelMes']+'</td></tr>';
            if (a['rLogic'] || a['rAction'])
              z = z+'<tr><td class="grid">'+a['rLogic']+'</td><td class="grid">'+a['rAction']+'</td></tr>';
            z = z+'</table>';
            $('#DeskSiteMap').html(z);
       // document.getElementById('DeskSiteMap').style.backgroundColor = '#00FF00';
     }
     else {
       document.getElementById('DeskSiteMap').style.backgroundColor = '#FF0000';
       document.getElementById('DeskSiteMap').style.color = '#FFFFFF';
       document.getElementById('DeskSiteMap').innerHTML = a['Mess'];
       document.getElementById('DeskSiteMap2').innerHTML = '';
     }
     if (a['Mode'] == 'return') {
       document.fReturning.Barcode.select();
       document.fReturning.Barcode.focus();
     }  
     lPic = '/pics/Error1.gif'; 
     lTimeOut = 3000;
     RunSound('/pics/AlertPlus.wav');
   }
   // images 
   MM_swapImage('pState','',lPic,1);
   setTimeout("MM_swapImage('pState','','/pics/Transparent.gif',1)",lTimeOut);
   if (a['Mode'] == 'lend' && a['OverruleRes'] != '')  // can only be active where Siteproperties.OverruleReserVation = true(1)...
     RunOverRuleResConfirm(a['OverruleRes']);
   if (a['Alert'] != 0) { // Libr. has requested alert reservation 
     document.getElementById('InDrop').innerHTML = a['Title']+'<br />'+a['Notice'];
     bouncelimit=8;
     direction="up";
     initbox();
   }  
   else if (a['LogicError'] != '8' && a['Reservist'] > 0 && a['Mode'] == 'return') {  // on reservation
     document.getElementById('InDrop').innerHTML = a['Notice']+'<br />';
     bouncelimit=8;
     direction="up";
     initbox();	
     if (a['Slipp'])
       ASyncNotice('cbSlippNotice','Slipp',document.fReturning.tgtId.value,gObjId,a['Reservist'],0); 
   }  
   if (a['Mode'] == 'return')
    setTimeout('document.fReturning.Barcode.focus()',lTimeOut+100);
}

function cbDelResReturn(lJSON) { // callback
     var a = eval("("+lJSON+")");
     alert(a.toSource());
     // document.getElementById("tReturnTransact").style.visibility = "hidden";
   } 


function RunOverRuleResConfirm(lTxt) {
  if (confirm(lTxt)) {
     setTimeout("ASyncLending('cbASyncLendItems','DeskLend',document.fLending.tgtId.value,document.fLending.PtrId.value,'',0,encodeURIComponent(document.fLending.Barcode.value),1,0)",500); 
     setTimeout("ASyncLending('cbASyncTransactionPanel','TransactionPanel',document.fLending.tgtId.value,document.fLending.PtrId.value,'',0,null,0,0)",750);
     setTimeout("ASyncLending('cbASyncSummaryPanel','SummaryPanel',document.fLending.tgtId.value,document.fLending.PtrId.value,'',0,null,0,0)",1000);
   }
}  

function RunSound(surl) {
  document.getElementById("cSound").innerHTML= "<embed src='"+surl+"' hidden=true autostart=true loop=false>";
}
	

///////////////////////////////
//           RETURN          //
//////////////////////////////
function runAXreturn() {
   // alert(document.fReturning.tgtId.value+' :: '+document.fReturning.ObjId.value+' :: '+document.fReturning.Barcode.value);
   ASyncReturn('cbASyncLendItems','DeskReturn',document.fReturning.tgtId.value,document.fReturning.ObjId.value,encodeURIComponent(document.fReturning.Barcode.value),0,0);
}

function ReturnAccountDetails()  { // child/modal call from PtrAccountDetails...
  if (document.fReturning != null)	
    document.fReturning.submit(); 	
  else
    document.fLending.submit();
}  

function DeleteReturnTransaction(lSession) {	
  ASyncAjax('cbASyncDummy','DeleteReturnTransaction','',lSession,null,null);
  document.getElementById("tReturnTransact").style.visibility = "hidden";
}	


function SwitchTransactionPanel(lPtrId) {
  gPtrId = lPtrId;	
  ASyncLending('cbASyncTransactionPanel','TransactionPanel',document.fReturning.tgtId.value,lPtrId,'',0,null,0,0);
  setTimeout("ASyncLending('cbASyncSummaryPanel','SummaryPanel',document.fReturning.tgtId.value,"+lPtrId+",'',0,null,0,0)",200);
  
}	

function makeReturnTransactions(lTransact) {
  oTable = document.getElementById('tReturnTransact');
  if (oTable)
    oTable.style.visibility = "visible";
  var mybody = document.getElementById('dReturnTransact');
  // remove 1. & only table
  if (mybody != null) {
    if (mybody.getElementsByTagName('table').length > 0 ) 
      mybody.removeChild(mybody.getElementsByTagName('table')[0]);
    // creates <table> and <tbody> elements
    mytable = document.createElement("table");
    mytable.setAttribute('id','pUserNote');
    mytable.style.margin="0px";
    mytable.style.padding="0px";
    mytable.style.border="0px";
    // mytable.style.width="100%";
    mytablebody = document.createElement("tbody");
    var i = 0;  	
    for (var x in lTransact) {
      z = x.toString();
      // creates a <tr> element
      mycurrent_row = document.createElement("tr");
      if (i % 2 == 0)
        lColor = '#bbc2a9';
      else
        lColor = '#FFFFFF';
      DOMAddCell(mycurrent_row,'',"javascript:SwitchTransactionPanel("+lTransact[z]['PtrId']+")",lTransact[z]['PtrName'],'',lColor,'1px solid #95A8C4');
      mytablebody.appendChild(mycurrent_row);
      i++;
    }
    // appends <tbody> into <table>
    mytable.appendChild(mytablebody);
    // appends <table> into <body>
    mybody.appendChild(mytable);      
  }  
}


///////////////////////////////
//            DESK          //
//////////////////////////////

function cbASyncTransactionPanel(lJSON) {
  var a = eval("("+lJSON+")");
  var lTransact = ''; // extract unique transactions
  // var lRawLabel = '';
  for (var x in a[0]) { 
    z = x.toString();
    if (z == 'Transact')
      lTransact = a[0]['Transact'];
  }      
  makeReceiptGrid('Receipt',a);
  if (lTransact != '') { // && a[2]['RawLabel'] == 'trans_return') {
    // alert(lTransact);
    makeReturnTransactions(lTransact); // display unique transactions
  }  
}  

function cbASyncEmail(lJSON) { // no action....
  var a = eval("("+lJSON+")");
  // alert(a[0]['tRowId']);
}

function runAXsetObjStatus(lObjId,lNewStatus) {
  ASyncAjax('cbASyncDummy','ChangeObjStatus','',lObjId,lNewStatus,null);
}	

function cbSlippNotice(lJSON) {	
  var a = eval("("+lJSON+")");
  for (var x in a) {
    z = x.toString();
    eval('var '+z+' = "'+a[z]+'"');
  }
  if (pdffile) 
    setTimeout("window.open('"+pdffile+"','Notifications','Menubar=yes,Scrollbars=yes,width=600,Height=575,resizable,screenX=0,screenY=0')",1000);	     
} 

function axRunChangeDue(lUserSessionId,lNewDate) { // TlendItems.php
  // gCalAction = lUserSessionId;
  ASyncAjax('cbASyncChangeDue','ChangeDueTime','',lUserSessionId,lNewDate,null);
} 

function cbASyncChangeDue(lJSON) {
  var a = eval("("+lJSON+")");
  for (var x in a) {
    z = x.toString();
    eval('var '+z+' = "'+a[z]+'"');
  }
  o = document.getElementById('h'+rId);
  // DOMAddLink(1,0,o,'javascript:makeCalendar('+rId+',"'+rNewDate+'")',rNewDate,'');
  DOMAddLink(1,0,o,'javascript:startFocusedCalendar("bgUpdateExpire",'+rId+',"NewDue",1,"'+rNewDate+'")',rNewDate,'');
  
}
  
function OpenPrintReceipt(lHeight,lWidth,lLink,lPtrId) {
  lLink = lLink+lPtrId;	
  if (document.fReceipt.ShowAll.checked) 
    lLink = lLink+'&ShowAll=1';
  // alert(lLink);  
  supramodaler(0,'Receipt',lLink,lHeight,lWidth);  	
}  

function displayUsernotes(lUserNote,lInternalNote) {		
  // get the reference for the body
  oTable = document.getElementById('tUserNote');
  if (oTable)
    oTable.style.visibility = "visible";
  var mybody = document.getElementById('dUserNotes');
  
  // remove 1. & only table
  if (mybody.getElementsByTagName('table').length > 0 ) {
    mybody.removeChild(mybody.getElementsByTagName('table')[0]);
  }  
  
  // creates <table> and <tbody> elements
  if ((lUserNote.length > 0 && lUserNote != 'null') || (lInternalNote.length > 0 && lInternalNote != 'null')) { 
    mytable = document.createElement("table");
    mytable.setAttribute('id','pUserNote');
    mytable.style.margin="0px";
    mytable.style.padding="0px";
    mytable.style.border="0px";
    mytable.style.width="100%";
    mytablebody = document.createElement("tbody");
    // creates a <tr> element
    if (lUserNote.length > 0 && lUserNote != 'null') {
      mycurrent_row = document.createElement("tr");		
      DOMAddCell(mycurrent_row,'','',lUserNote,'','#d60026','1px solid #bbc2a9');
      mytablebody.appendChild(mycurrent_row);
    }
    if (lInternalNote.length > 0 && lInternalNote != 'null') {
      mycurrent_row = document.createElement("tr");		
      DOMAddCell(mycurrent_row,'','',lInternalNote,'','#bbc2a9','5px solid #FF0000');
      mytablebody.appendChild(mycurrent_row);
    }
    // appends <tbody> into <table>
    mytable.appendChild(mytablebody);
    // appends <table> into <body>
    mybody.appendChild(mytable);
    // sets the border attribute of mytable to 1;
    mytable.setAttribute("border","0"); 
    // mytable.setAttribute("visibility","visible");  
  }  
}

function displayOwe(lTxt,lOwe) {		
  // get the reference for the body
  // alert(lOwe);
  oTable = document.getElementById('tOwe');
  if (oTable)
    oTable.style.visibility = "visible";
  var mybody = document.getElementById('dOwe');
  
  // remove 1. & only table
  if (mybody.getElementsByTagName('table').length > 0 ) {
    mybody.removeChild(mybody.getElementsByTagName('table')[0]);
  }  
  
  // creates <table> and <tbody> elements
  if (lOwe.length > 0 && lOwe != 'null') { 
    mytable = document.createElement("table");
    mytable.setAttribute('id','pOwe');
    mytable.style.margin="0";
    mytable.style.padding="0";
    mytable.style.border="0";
    mytable.style.width="100%";
    mytablebody = document.createElement("tbody");
    // creates a <tr> element
    mycurrent_row = document.createElement("tr");		
    DOMAddCell(mycurrent_row,'','',lTxt+' : '+lOwe,'#FFFFFF','#134D86','1px solid #bbc2a9');
    mytablebody.appendChild(mycurrent_row);
    // appends <tbody> into <table>
    mytable.appendChild(mytablebody);
    // appends <table> into <body>
    mybody.appendChild(mytable);
    // sets the border attribute of mytable to 1;
    mytable.setAttribute("border","0"); 
    // mytable.setAttribute("visibility","visible");  
  }  
}

function cbASyncSummaryPanel(lJSON) {	
  var a = eval("("+lJSON+")");
  for (var x in a) {
    z = x.toString();
    eval('var '+z+' = "'+a[z]+'"');
  }
  displayUsernotes(UserNote,Note);
  if (AccountSum != "0.00")
    displayOwe(OweTxt,AccountSum);
  document.getElementById('cLoan').innerHTML = OnLoan;
  document.getElementById('cRenewed').innerHTML = '('+Renewed+')';
  document.getElementById('cDue').innerHTML = Due;
  document.getElementById('cReclaims').innerHTML = '('+Reclaims+')';
  document.getElementById('cAccountSum').innerHTML = AccountSum;
  document.getElementById('cOnReservation').innerHTML = OnReservation;
  document.getElementById('cReadyReservations').innerHTML = '('+ReadyReservations+')';

}	

function bgUpdateExpire(lId,lNewTime) { // called from calendar	
  setTimeout('axRunChangeDue('+lId+',"'+lNewTime+'")',500);
     // alert(lNewTime);
}

///////////////////////////////
//         OPAC LOAN         //
//////////////////////////////

function cbASyncOpacLoan(lJSON) {	
  var a = eval("("+lJSON+")");
  for (var x in a) {
    z = x.toString();
    eval('var '+z+' = "'+a[z]+'"');
  }
  gObjId = ObjId
  var FocusElm = document.getElementById('S'+ObjId);
  if (typeof(Status) != 'undefined')
    FocusElm.innerHTML = Status;  
  if (typeof(a['Notice']) != 'undefined' && a['Notice'] != "") {
     if (Alert != 0)
       document.getElementById('InDrop').innerHTML = '<h2>'+Notice+'</h2>';
     else	
       document.getElementById('InDrop').innerHTML = a['Title']+'<br />'+a['Notice'];	
     bouncelimit=8;
     direction="up";
     initbox();
     if (!Alert)
       setTimeout("dismissbox()",3000);
  } 
  else if (a['LogicError'] != 0) {
  	document.getElementById('InDrop').innerHTML = a['Mess'];	
    bouncelimit=8;
    direction="up";
    initbox();
    setTimeout("dismissbox()",3000);  	
  }	 
    
      
  // return set patron+dates to blank...
  FocusElm = document.getElementById('P'+ObjId);  
  if (FocusElm != null) {
    removeAllChildren(FocusElm);	
  } 
  FocusElm = document.getElementById('DD'+ObjId);  
  if (FocusElm != null) 
    removeAllChildren(FocusElm);
  FocusElm = document.getElementById('LD'+ObjId);  
  if (FocusElm != null) 
    removeAllChildren(FocusElm);
  var FocusElm = document.getElementById('L'+ObjId);    
  if (FocusElm != null) {
    removeAllChildren(FocusElm);
  }  
  ASyncAjax('cbASyncLendingLinks','GetLendingLinks','',ObjId,null,null); 
}

function cbASyncOpacRelocate(lJSON) {	
  var a = eval("("+lJSON+")");
  for (var x in a) {
    z = x.toString();
    eval('var '+z+' = "'+a[z]+'"');
  }
  gObjId = ObjId
  var FocusElm = document.getElementById('C'+ObjId);
  // if (typeof(Collection) != 'undefined')
  if (Mess == '00000')
    FocusElm.innerHTML = Location;
  if (Mess != '00000') {
     document.getElementById('InDrop').innerHTML = '<h2>'+Mess+'</h2>';	
     bouncelimit=8;
     direction="up";
     initbox();
     setTimeout("dismissbox()",3000);
  }
  gFlag = 0;      
  ASyncAjax('cbASyncLendingLinks','GetLendingLinks','',ObjId,null,null); 
}

function cbASyncLendingLinks(lJSON) { // repaint lendinglinks..	
  var a = eval("("+lJSON+")");

  var mybody = document.getElementById('L'+gObjId);
  // remove 1. & only table
  if (mybody.getElementsByTagName('table').length > 0 ) {
    mybody.removeChild(mybody.getElementsByTagName('table')[0]);
    alert('XX'+mybody.getElementsByTagName('table'));
  }  
  mytable = document.createElement("table");
  // mytable.setAttribute('id','pUserNote');
  mytable.style.margin="0px";
  mytable.style.padding="0px";
  mytable.style.border="0px";
  mytablebody = document.createElement("tbody");
  mycurrent_row = document.createElement("tr");		
  mycurrent_cell = document.createElement("td");
  mycurrent_cell.style.textAlign="center";
  
  for (var x in a) {
    z = x.toString();
    if (a[z]['linkmode'] == 1)
      DOMAddImgs(mycurrent_cell,a[z]['pic'],a[z]['event'],a[z]['action']);
    else  // o,lLink,lTitle
      DOMAddLink(0,1,mycurrent_cell,'javascript:'+a[z]['action'],a[z]['rawtitle'],'SiteMap');
  }
  mycurrent_row.appendChild(mycurrent_cell);  
  mytablebody.appendChild(mycurrent_row);	
  mytable.appendChild(mytablebody);
  mybody.appendChild(mytable);
}

function OpacLend(lPtrCode,lObjd) {
  // alert(lPtrCode+' : '+lObjd+' Flag : '+gFlag);
  if (gFlag == 1)
    ASyncLending('cbASyncOpacRelocate','OpacRelocate',gTgtId,0,lPtrCode,lObjd,'',0,0);     
  else if (gFlag == 2)      
    ASyncLending('cbASyncOpacLoan','OpacCodeLend',gTgtId,0,lPtrCode,lObjd,'',0,0);
}

function DOMTable(lDeleteTable,oParent,lId,lClass,lBorder,lPadding,lMargin) {
  // deletes existent table in DIV : remove 1. & only table	
  if (lDeleteTable && oParent != null && oParent.getElementsByTagName('table').length > 0 )
    oParent.removeChild(oParent.getElementsByTagName('table')[0]); 
  oThis = document.createElement("table");
  if (lId)
    oThis.setAttribute('id',lId);
  if (lClass)
    oThis.setAttribute('class',lClass); 
  if (lBorder)
    oThis.style.border=lBorder;
  if (lPadding)
    oThis.style.padding=lPadding; 
  if (lMargin)
    oThis.style.margin=lMargin; 
  return oThis;   
}

function DOMInsertInput(lObjId,lMess) {
var oAnchor = document.getElementById('L'+lObjId);
  gObjId = lObjId; // keyevents....
  oTable = DOMTable(1,oAnchor,'','','0px','0px','0px');
  oTableBody = document.createElement("tbody");
  oRow = document.createElement("tr");		
  oCell = document.createElement("td");
  oTxt = document.createTextNode(lMess);
  oCell.appendChild(oTxt);
  oRow.appendChild(oCell);
  oCell = document.createElement("td");
  oCell.style.textAlign="center";
  // Form
  var oForm = DOMAddForm("fBarcode","#"); // ,'onsubmit','OpacLend(this.Barcode.value,'+lObjId+');return false');
  setEvent(oForm, 'onsubmit','return false'); 
  var oInput = DOMAddFormInput('text','Barcode','',lMess,'');   
  oForm.appendChild(oInput); 
  oCell.appendChild(oForm); 
  oRow.appendChild(oCell);  
  oTableBody.appendChild(oRow);	
  oTable.appendChild(oTableBody);
  oAnchor.appendChild(oTable);	
  setTimeout("document.fBarcode.Barcode.focus()",300);
}	

function InitOfficeLoan(lType,tgtId,lObjId,lPtrId,lLibRights,lMess) { // (".$tgtId.",".$lObjId.",LibraryPersonelRights().",'".ReturnUserMessage('transfer_loan').,)")))	
  if (lType == 'relocate')
    gFlag = 1;	// used by KeyEvents [Enter]
  else  
  	gFlag = 2;	// used by KeyEvents [Enter]
  if (lLibRights == 1) {
    gTgtId = tgtId;			
    DOMInsertInput(lObjId,lMess);
  }
  else if (lMess != '' && confirm(lMess)) {
    if (lPtrId) {
      if (lType == 'relocate')	{
        ASyncLending('cbASyncOpacRelocate','OpacRelocate',tgtId,lPtrId,'',lObjId,'',0,0);	
      }  
      else if (lType == 'lending')
        ASyncLending('cbASyncOpacLoan','OpacLend',tgtId,lPtrId,'',lObjId,'',0,0);	      
    }  	
  }	
}

function InitOfficeReturn(tgtId,lObjId,lLibRights) { 	
  if (lObjId) {
    ASyncLending('cbASyncOpacLoan','OpacReturn',tgtId,0,'',lObjId,'',0,0);	      
  }  
}

///////////////////////////////
//          PORTAL           //
//////////////////////////////


function pReturnItem(tgtId,RowId,ObjId) { // also used by usraccount
  // alert(tgtId+" :: "+RowId+" :: "+ObjId);
  ASyncReturn('cbReturnItem','PortalReturn',tgtId,ObjId,'',0,RowId);
  // CallBackFunc,lMode,tgtId,lObjId,lBarcode,lOverruleRes,lRowId
}		
   
function cbReturnItem(lJSON) { // callback
  var a = eval("("+lJSON+")");
  for (var x in a) {
       z = x.toString();
       if (z == 'RowId') {
         eval("var row = document.getElementById('"+a[z]+"')");
         if (row) {	
           row.style.display = 'none';
         }  
       }  
     }
     setTotCounter(a['tCount']); // portal count :: Portal.js     
     if (typeof(a['Notice']) != 'undefined' && a['Notice'] != "") {
       document.getElementById('InDrop').innerHTML = a['Title']+'<br />'+a['Notice'];
       bouncelimit=8
       direction="up"
       initbox();
     } 
     eval("var CountDiv = document.getElementById('C"+a['PtrId']+"')"); // UsrAccount count...
     if (CountDiv) {
       var lS = '';
       CountDiv.innerHTML = lS.concat(CountDiv.innerHTML.slice(0,CountDiv.innerHTML.lastIndexOf(':')+2),a['tCount']); // always : as delimiter..
     }    
   }	
   
function pRenew(tgtId,lPtrId,ExpireCellId,lObjId) { // also used by portal
     ASyncLending('cbRenew','PtrRenew',tgtId,lPtrId,'',lObjId,'',0,ExpireCellId);
   }
function pRenew2(tgtId,lPtrId,ExpireCellId,lObjId) { // used by usraccount
     ASyncLending('cbRenew2','PtrRenew',tgtId,lPtrId,'',lObjId,'',0,ExpireCellId);
   }   

function cbRenew(lJSON) { // callback
     var a = eval("("+lJSON+")");
     for (var x in a) {
       z = x.toString();
       if (z == 'RowId') {
         eval("var expirecell = document.getElementById('Expire"+a['RowId']+"')");
         if (expirecell) {
           expirecell.innerHTML = a['Expires'];
           MM_swapImage('pic'+a['RowId'],'','/pics/ThumbsUp.gif',1);
         } 
       }  
     }
   }
function cbRenew2(lJSON) { // callback
     var a = eval("("+lJSON+")");
     for (var x in a) {
       z = x.toString();
       if (z == 'RowId') {
       	// alert(a['RowId']+' :: '+a['Expires']);
         eval("var expirecell = document.getElementById('h"+a['RowId']+"')");
         if (expirecell) {
           expirecell.innerHTML = a['Expires'];
           MM_swapImage('pic'+a['RowId'],'','/pics/ThumbsUp.gif',1);
         } 
       }  
     }
   }     		

///////////////////////////////
//   CART ORDER OBJECTS      //
//////////////////////////////
function CartOrderItems(tgtId,lTxt,PtrId) {
  var a = new Array();
  var ii = 0;	
  for (var i=0; i<document.fHitList.elements.length; i++){
    if (document.fHitList.elements[i].type == 'checkbox' && document.fHitList.elements[i].checked == true && document.fHitList.elements[i].id != 'MarkToggle') {
      // alert(document.fHitList.elements[i].id.substr(1));
      // removeElement('d'+document.fHitList.elements[i].id.substr(1),'f'+document.fHitList.elements[i].id.substr(1))
      a[ii] = document.fHitList.elements[i].id.substr(1);
       ii++;
    }  
  }
  if (a && confirm(lTxt)) {
     // prompt('debug',a);
     ASyncAjax('cbCartOrderItems','CartOrderItems','',tgtId,PtrId,a);
  }  
}	

function cbCartOrderItems(lJSON) { // callback
  var a = eval("("+lJSON+")");
  var o = '';
  for (var x in a) {
  	removeElement('d'+a[x]['id'],'f'+a[x]['id']);
  	o = document.getElementById('d'+a[x]['id']);
  	if (a[x]['code'] != 0)
  	  createBoxElm('div',o,a[x]['id'],'NotOK',a[x]['mes']);
  	else  
  	  createBoxElm('div',o,a[x]['id'],'OK',a[x]['mes']);
  }
}
///////////////////////////////
//   CART ORDER Titles      //
//////////////////////////////
function CartOrderTitles(tgtId,lTxt,PtrId) {
  var a = new Array();
  var ii = 0;	
  for (var i=0; i<document.fHitList.elements.length; i++){
    if (document.fHitList.elements[i].type == 'checkbox' && document.fHitList.elements[i].checked == true && document.fHitList.elements[i].id != 'MarkToggle') {
      a[ii] = document.fHitList.elements[i].id.substr(1);
       ii++;
    }  
  }
  if (a && confirm(lTxt)) {
     // prompt('debug',a);
     ASyncAjax('cbCartOrderItems','CartOrderTitles','',tgtId,PtrId,a);
  }  
}	

///////////////////////////////
//   NEW DUE TIME ALL   2.13 STU //
//////////////////////////////

function RunNewDue(PtrId,Session) {
  startFocusedCalendar("bgUpdateNewDue",document.fChangeDue.NewDue,"NewDue",1,document.fChangeDue.NewDue.value)
}

function bgUpdateNewDue(lId,lNewTime) {
  ASyncLending('cbChangeDueAll','ChangeDueAll',document.fLending.tgtId.value,document.fLending.PtrId.value,'',0,document.fChangeDue.NewDue.value,0,0);
}	

function cbChangeDueAll(lJSON) {
  var a = eval("("+lJSON+")");
  for (var x in a) {
    z = x.toString();
    o = document.getElementById('h'+a[z]['rId']);
    DOMAddLink(1,0,o,'javascript:startFocusedCalendar("bgUpdateExpire",'+a[z]['rId']+',"NewDue",1,"'+a[z]['rNewDate']+'")',a[z]['rNewDate'],'');
  }  
}