//###########################################################
// Version:  2010-01-07: convert to use jQuery
// mrc ltd., Lombard, IL 60148, USA  
//###########################################################
document.write('<script type="text/javascript" src="/mrcjava/mrcclasses/jquery.js"></script>');
document.write('<script type="text/javascript" src="/mrcjava/mrcclasses/jquery-ui.js"></script>');
document.write('<script type="text/javascript" src="/mrcjava/mrcclasses/jquery.blockUI.js"></script>');
document.write('<script type="text/javascript" src="/mrcjava/mrcclasses/mrcfixprototype.js"></script>'); 
 
var AJAX_HOVER_DELAY=150;
/******************************************************************
 * Hover Ajax called from:
 * <a class="hover" target="_hover" linkedtype="I" width="400" height="0" onclick="stopEvent(event)" onmouseover="ajaxlink(this,event)" href="MRCJAVA2.I00018s?basic=1">${row.PRDNO?html}</a>
 ******************************************************************/
function ajaxlink(element,ev) {//mouseover handler
  url=element.href;
  boxw = element.getAttribute('width');
  boxh = element.getAttribute('height');
  new ALinkObj(element, {boxw:boxw,boxh:boxh,url:url,cursorY:ev.clientY});  
}
stopEvent = function(ev) {
  if(window.event){
    ev.returnValue = false;
    ev.cancelBubble = true;
  }else{
    ev.preventDefault();
    ev.stopPropagation();
  }
}
function ALinkObj(elementName, options) {
  this.element = elementName;
  if (!this.element) throw new Error(elementName + ' not found');
  this.element.alinkobj = this;
  this.options = options || {};
  this.boxw = this.options.boxw || 300;  
  this.boxh = this.options.boxh || 200;  
  var url0 = this.options.url || "";
  this.url =  url0.replace(/#/g,'%23');
  this.cursorY = this.options.cursorY || 0;
  this.inAjaxBox = "n"; 
  this.onmouseover();
  var thisCtx = this;
  //Event.observe(this.element, "mouseout", this.hidebox.bind(this)); 
  jQuery(this.element).bind('mouseout', function() {thisCtx.hidebox(); }) ;
}
ALinkObj.prototype.onmouseover = function() {
  this.cursorIn = 'y';
  this.ajaxboxid = getAjaxBox();
  this.element.style.cursor = "pointer"; 
  var thisCtx = this;
  window.setTimeout( function(){ thisCtx.doajax(); } , AJAX_HOVER_DELAY);  
}
ALinkObj.prototype.doajax = function() {   
  if (this.ajaxBoxSattus == "on") {return;}   
  if (this.cursorIn == 'n') return;   
 
   var obj =  this;
   
   jQuery.ajax({ url: this.url, dataType: "html",
     success: function(data, textStatus) {  //Ajax success!
        displayData1(data,obj);
     },
     error: function(XMLHttpRequest, textStatus, errorThrown) { //Ajax failed
        displayErr1(textStatus,obj);
     },
     complete: function(XMLHttpRequest, textStatus) { //Ajax completed  
       
     }
  });    
} 
displayData1= function(data, thisobj) {  
  if (thisobj.cursorIn == 'n') return;
  var responseText = data;
  var innerDiv = '<div class="ajaxboxinner">' + responseText + "</div>";
  jQuery(thisobj.ajaxboxid).html(innerDiv);
  thisobj.setAjaxbox1();
  thisobj.ajaxBoxSattus = "on"; 
}
 
function displayErr1(textStatus, thisobj) {  
  jQuery(thisobj.ajaxboxid).html('Ajax failed: '+ textStatus);  
}

ALinkObj.prototype.hidebox = function() { //context is <a> tag  
   this.cursorIn = 'n';
   var thisCtx = this;
   window.setTimeout( function(){ thisCtx.hidebox2(); } , AJAX_HOVER_DELAY);  
   // Event.observe(this.ajaxboxid, "mouseover", this.ajaxboxIn.bind(this));
   // Event.observe(this.ajaxboxid, "mouseout", this.ajaxboxOut.bind(this));
   jQuery(this.ajaxboxid).bind('mouseover',  function(e){ thisCtx.ajaxboxIn(e); } ) ;
   jQuery(this.ajaxboxid).bind('mouseout',   function(e){ thisCtx.ajaxboxOut(e); } ) ;
}
ALinkObj.prototype.hidebox2 = function() { 
   if (this.inAjaxBox == "n" && this.ajaxBoxSattus == "on") { 
     jQuery(this.ajaxboxid).hide(); 
     document.body.removeChild(this.ajaxboxid);  
     this.ajaxBoxSattus = "off"; 
   }  
}
ALinkObj.prototype.ajaxboxIn = function(evt) {  
   this.inAjaxBox = "y"; 
}
ALinkObj.prototype.ajaxboxOut = function(evt) { 
   var eX = evt.pageX;//Event.pointerX(evt);
   var eY = evt.pageY;//Event.pointerY(evt);
   var boxX = this.ajaxboxid.offsetLeft;
   var boxY = this.ajaxboxid.offsetTop;
   var boxh = this.ajaxboxid.offsetHeight;//jQuery(this.ajaxboxid).height();
   var boxw = this.ajaxboxid.offsetWidth;//jQuery(this.ajaxboxid).width();
   var offsetxy = 3;
   var x1 = boxX + offsetxy;
   var x2 = boxX + boxw;
   var y1 = boxY + offsetxy;
   var y2 = boxY + boxh;
   //jQuery("#dsp").html("eX=" + eX + ",eY=" + eY  + ",x1=" + x1  + ",x2=" + x2 );
   if (eX > x1 && eX < x2 && eY > y1 && eY < y2) { 
      return; 
   }
  //var isIn = Position.within($(this.ajaxboxid),eX + offsetxy ,eY + offsetxy);
  // var isIn2 = Position.within($(this.ajaxboxid),eX - offsetxy ,eY - offsetxy);
  //if (isIn && isIn2) { return; }
   jQuery(this.ajaxboxid).hide(); //jq
   this.ajaxBoxSattus = "off";
   this.inAjaxBox = "n";    
}
/*******************************************************************
 * Set Ajax box on page as popup box.
 ******************************************************************/
ALinkObj.prototype.setAjaxbox1 = function() { //context is this obj
   var offsetx = 12; var offsety = 3;
   var linkElement = this.element;
   var ajaxbox =  this.ajaxboxid ;
 
   document.body.appendChild(ajaxbox);  
  
   if (this.boxh == 0) {
      this.boxh = this.ajaxboxid.offsetHeight; 
   }  
   jQuery(this.ajaxboxid).css({width:this.boxw, height:this.boxh} );
   
   var linkpos = jQuery(linkElement).position(); 
   var tagx = linkpos.left;
   var tagy  = linkpos.top; 
  
   jQuery(this.ajaxboxid).css('position','absolute');
   var bodyh = document.body.clientHeight;
   var bodyw = document.body.clientWidth;
   var winsize = windowSize();
   var winh = winsize.h;   
   var winw = winsize.w;  
   var left = tagx + this.element.offsetWidth + offsetx;
  
   var top  = tagy +  offsety;    
   if (this.cursorY > winh/2 ) {
      top  = tagy + this.element.offsetHeight - this.boxh; 
   }
   if (tagx > bodyw/2) {
     left  = tagx - this.boxw - offsetx; 
     var browserName=navigator.appName; 
     if (browserName!="Microsoft Internet Explorer") {left =left-20;}
   }
    var allowh = bodyh - top -30 ;
    if (top < 0) {top = 0;}
    jQuery(this.ajaxboxid).css({left:left, top:top} );
 
}
 
function setSmartlinkAjax() {
  var atagls =  document.getElementsByTagName('span');   
  var atags = $A(atagls);  
  for (i = 0; i < atags.length ; i++) {
    var alnkid = atags[i].id;
    if (alnkid.indexOf('ajaxlnk') >= 0)  {
       //new ALinkObj(alnkid);
       Element.addClassName(alnkid, 'ajaxlink');
    }
  }
}
function getAjaxBox() {
  var elemSpan = document.createElement("div");
  elemSpan.className = "ajaxboxclass"; 
  return elemSpan;
}
function windowSize() {
  var winWidth = 0, winHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    winWidth = window.innerWidth;
    winHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    winWidth = document.documentElement.clientWidth;
    winHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    winWidth = document.body.clientWidth;
    winHeight = document.body.clientHeight;
  }
  var winsize = {"w":winWidth, "h":winHeight};
  return winsize;
}
function addLoadListener(func) {
 if ( typeof window.addEventListener != 'undefined' ) {
  window.addEventListener('load', func, false);
 } else if ( typeof window.document.addEventListener != 'undefined' ) {
  window.document.addEventListener('load', func, false);
 }  else if ( typeof window.attachEvent != 'undefined' ) {
  window.attachEvent('onload', func);
 }  else {
  if ( typeof window.onload != 'function' ) {
   window.onload = func;
  } else {
   var oldFunction = window.onload;
   window.onload = function() { oldFunction(); func(); }
  }
 }
}
//#########################################################
var timedelay=50; //ms
var mrcobj=new Object();
mrcobj.Loader=function(url,onload,onerror,method,params,contentType){
  this.req=null;
  mrcobj.currentLoader=this;
  this.onload=onload;
  this.onerror=(onerror) ? onerror : this.defaultError;
  this.loaddoc(url,method,params,contentType);
}
mrcobj.Loader.prototype.loaddoc=function(url,method,params,contentType){
  if (!method){
    method="GET";
  }
  if (!contentType && method=="POST"){
    contentType='application/x-www-form-urlencoded';
  }
  if (window.XMLHttpRequest){
    this.req=new XMLHttpRequest();
  } else if (window.ActiveXObject){
    this.req=new ActiveXObject("Microsoft.XMLHTTP");
  }

  if (this.req){
  
    try{
      var loader=this;
      this.req.onreadystatechange=function(){
        mrcobj.Loader.onReadyState.call(loader);
      } 
      this.req.open(method,url,true);

      if (contentType){
        this.req.setRequestHeader('Content-Type', contentType);
      }
      this.req.send(params);
    }catch (err){
      this.onerror.call(this);
    }
  }
}
//####################################
mrcobj.Loader.onReadyState=function(){
  var req=this.req;
  var ready=req.readyState;
 
  try{ 
  var httpStatus=req.status;
 
  if (ready==4){
    if (httpStatus==200 || httpStatus==0){
      this.onload.call(this);
    }else{
      //this.onerror.call(this);
    }
  }
  }
  catch(e){}
}
//####################################
mrcobj.Loader.prototype.defaultError=function(){
  alert("error fetching data!"
    +"\n\nreadyState:"+this.req.readyState
    +"\nstatus: "+this.req.status
    +"\nheaders: "+this.req.getAllResponseHeaders());
}
//#############################################################
function  init(server_app, qtype) {
  //alert("run!");
  setJaxbox();
  if (qtype == 'I') {
    setJaxboxsRET(server_app);
  }
}
//####################################
function  setJaxboxsRET(server_app) {
  var msg="No matches";// message for no matching record
  var fm=document.forms[0];
  var hasAjax = false;
  for(j=0;j<fm.elements.length;j++){
    var formObj=fm.elements[j];
    if(formObj.type.toLowerCase() == "text" && formObj.name.indexOf("val_") == 0) {
	   //if (!$--(formObj).hasClassName('noajax') ) {
	   if (!jQuery(formObj).hasClass('noajax') ) { //jq
         formObj.obj = SetProperties(formObj,"k",server_app,true,true,true,true,msg,false, 10000);
		 hasAjax = true;
	   }
    }
  }
  if (hasAjax) {
	 jQuery('body').keyup( HideTheBox2  ); //jq
     jQuery('body').click( HideTheBox  );
  }
}
//####################################
function  setJaxbox() {
        var elemSpan = document.createElement("span");
        elemSpan.id = "jaxbox";
        elemSpan.className = "jaxboxclass"; 
        document.body.appendChild(elemSpan);
}
//####################################
function SetProperties(xElem,xHidden,xserverCode,
        xignoreCase,xmatchAnywhere,xmatchTextBoxWidth,
        xshowNoMatchMessage,xnoMatchingDataMessage,xuseTimeout, xtheVisibleTime){
          var props={
            elem: xElem,
            hidden: xHidden,
            serverCode: xserverCode,
            regExFlags: ( (xignoreCase) ? "i" : "" ),//case
            regExAny: ( (xmatchAnywhere) ? "" : "^" ),
            matchAnywhere: xmatchAnywhere,
            matchTextBoxWidth: xmatchTextBoxWidth,
            theVisibleTime: xtheVisibleTime,
            showNoMatchMessage: xshowNoMatchMessage,
            noMatchingDataMessage: xnoMatchingDataMessage,
            useTimeout: xuseTimeout
          };
          AddHandler(xElem);
		   
          return props;
}

 //####################################      
function AddHandler(objText){

        objText.onkeyup = GiveOptions;
        objText.onblur = function(){
          //alert("this.obj.useTimeout=" + this.obj.useTimeout + "  );
          //if(this.obj.useTimeout)StartTimeout();
          //setTimeout("HideTheBox()",10);
        }
         
      }
 
      var arrOptions = new Array();
      var strLastValue = "";
      var bMadeRequest;
      var theTextBox;
      var objLastActive;
      var currentValueSelected = -1;
      var bNoResults = false;
      var isTiming = false;

//####################################
function GiveOptions(e){      
        var intKey = -1;
        if(window.event){
          intKey = event.keyCode;
		 
          theTextBox = event.srcElement;
        }
        else{
          intKey = e.which;
          theTextBox = e.target;
        }
        if(theTextBox.obj.useTimeout){
          //if(isTiming)EraseTimeout();
          //StartTimeout();
        }
        if(theTextBox.value.length == 0  ){
          arrOptions = new Array();
          HideTheBox();
          strLastValue = "";
          return false;
        }
        if(objLastActive == theTextBox){
          if(intKey == 13){
            GrabHighlighted();
            theTextBox.blur();
            //document.forms[0].submit();
            return false;
          }   else if(intKey == 38){
            MoveHighlight(-1);
            GrabHighlighted2()
            return false;
          }   else if(intKey == 40){
            MoveHighlight(1);
            GrabHighlighted2()
            return false;
          }  else {
           // var charCode = (e.charCode)?e.charCode : ((e.which) ? e.which : e.keyCode);
            if (intKey == 32) {
              //alert("space!"); 
              return false}
          }
        }
        if(objLastActive != theTextBox  ||
       theTextBox.value.indexOf(strLastValue) != 0 ||
           ( (arrOptions.length==0 || arrOptions.length==15 ) && !bNoResults) ||
           (theTextBox.value.length > strLastValue.length)){
             objLastActive = theTextBox;
             bMadeRequest = true;
             callajax0(theTextBox.value);
           // document.getElementById("mmsg").innerHTML="get data....theTextBox.value="+theTextBox.value;
        }  else if(!bMadeRequest){
          BuildList(theTextBox.value);
          //document.getElementById("mmsg").innerHTML="not get data................";
        }
        strLastValue = theTextBox.value;
}
 
//####################################
function callajax0(xStrText){
   var today=new Date();  
   var t0=today.getTime(); tt0=t0;
   setTimeout('callajax1('+t0+')', timedelay);
   //alert("op");
}
var tt0=0;
//####################################
function callajax1(stamp){
  if(stamp == tt0) {
    var params = setParms(theTextBox);
    var loader1 = new mrcobj.Loader(theTextBox.obj.serverCode, BuildChoices,null,"POST",params);
	
  }
}
 
//####################################
 function setParms(jbox) {
	var mrclookupfield = jQuery(jbox).attr('mrclookupfield'); //TW 2010-06-07 change for maintainer/report ajax
	var parms = '';
	if(mrclookupfield !=null && mrclookupfield != ''){
		parms = "AJAX=M&INPFIELD=" + jbox.name + "&AJAXFIELDM=" + mrclookupfield;
	}else{
		parms="AJAX=Y&AJAXFIELD=" + jbox.name;
	}
	
  //var fm=document.forms[0];
  var fm = jQuery(jbox).parents('form').get(0); ////TW 2010-06-15 change for maintainer/report ajax
  
  for(j=0;j<fm.elements.length;j++){
    var formObj=fm.elements[j];
    if(formObj.name.indexOf("rls_") == 0) {
      var val = "";
      var indx = formObj.selectedIndex;      
      if (indx == undefined) {
      	val = formObj.value;
      } else {
        val = formObj.options[indx].value;
      }
      //alert(val + ", " + indx);
      parms += "&" + formObj.name + "=" + val;
    } else if(formObj.type.toLowerCase() == "text" || 
           formObj.type.toLowerCase() == "hidden" || 
           formObj.name.indexOf("btn_") == 0) {
      // alert(formObj.name + ", " + formObj.value + ", " + escape(formObj.value));
      parms += "&" + formObj.name + "=" + escape(formObj.value);
    }
  }
  //alert("parms=" + parms );
  return parms;
 }

//####################################00000000000000000
 function BuildChoices(){
   if (theTextBox.value.length == 0) return;
   var jaxfield=theTextBox.name;
   var jaxvalue=theTextBox.value;
   var errcode=0;
   //alert(theTextBox.value+'=='+jaxvalue);
   var strText = this.req.responseText;
   if (strText.length==0) return;
   eval(strText);

   if (errcode==1) return;
   var boxvalue=theTextBox.value;
   
   try{
      if(fieldtype==0){
         boxvalue=boxvalue.replace(/,/gi,'');
         strLastValue=strLastValue.replace(/,/gi,'');
      }
   }catch(e){}
   
	var mrclookupfield = jQuery(theTextBox).attr('mrclookupfield'); //TW 2010-06-07 change for maintainer/report ajax
	if(mrclookupfield !=null && mrclookupfield != ''){
		jaxfield = theTextBox.name;
	}
   if (theTextBox.name != jaxfield || boxvalue != jaxvalue) return; 
   BuildList(strLastValue);
   bMadeRequest = false;
}
//####################################
      function BuildList(theText){
        SetElementPosition(theTextBox);
        var theMatches = MakeMatches(theText);
        theMatches = theMatches.join().replace(/\,/gi,"");
        if(theMatches.length > 0){
          document.getElementById("jaxbox").innerHTML = theMatches;
          document.getElementById("OptionsList_0").className="highEl";
          currentValueSelected = 0;
          bNoResults = false;
        }
        else{
          currentValueSelected = -1;
          bNoResults = true;
          if(theTextBox.obj.showNoMatchMessage)
            document.getElementById("jaxbox").innerHTML = "<span class='noMatchData'>" +
              theTextBox.obj.noMatchingDataMessage +"</span>";
          else HideTheBox();
        }
      }

 //####################################
      function SetElementPosition(theTextBoxInt){
        var selectedPosX = 0;
        var selectedPosY = 0;
        var theElement = theTextBoxInt;
        if (!theElement) return;
        var theElemHeight = theElement.offsetHeight;
        var theElemWidth = theElement.offsetWidth;
        while(theElement != null){
          selectedPosX += theElement.offsetLeft;
          selectedPosY += theElement.offsetTop;
          theElement = theElement.offsetParent;
        }
        xPosElement = document.getElementById("jaxbox");
        xPosElement.style.left = selectedPosX;
        if(theTextBoxInt.obj.matchTextBoxWidth)
          xPosElement.style.width = theElemWidth+20;
        xPosElement.style.top = selectedPosY + theElemHeight
        xPosElement.style.display = "block";
        if(theTextBoxInt.obj.useTimeout){
          xPosElement.onmouseout = StartTimeout;
          xPosElement.onmouseover = EraseTimeout;
        }
        else{
          xPosElement.onmouseout = null;
          xPosElement.onmouseover = null;
        }
      }

 //####################################
      var countForId = 0;
      function MakeMatches(xCompareStr){ 
      	xCompareStr = xCompareStr.replace("$", "\\$");
      	countForId = 0;
        var matchArray = new Array();
        var regExp = new RegExp(theTextBox.obj.regExAny + xCompareStr,theTextBox.obj.regExFlags);
        for(i=0;i<arrOptions.length;i++){
          var theMatch = arrOptions[i].match(regExp);
          //var theMatch = arrOptions[i][0].match(regExp);
          if(theMatch){
            matchArray[matchArray.length]= CreateUnderline(arrOptions[i], xCompareStr,i);
          } else {
              //CA/CO may not match, dsp without highlight
               matchArray[matchArray.length]= CreateUnderline2(arrOptions[i], xCompareStr,i);
          }
        }
        return matchArray;
      }


 //####################################
      var hiStart = "<span class='spanMatchText'>";
      var hiEnd = "</span>";
      var selStart = "<span style='width:100%;display:block;' class='normalEl' onmouseover='SetHighColor(this)'";
      var selEnd ="</span>";
function CreateUnderline(xStr,xTextMatch,xVal){
  selMid = "onclick='SetText(" + xVal + ")'" + "id='OptionsList_" + countForId + "' theArrayNumber='"+ xVal +"'>";
  var regExp = new RegExp(theTextBox.obj.regExAny + xTextMatch,theTextBox.obj.regExFlags);
  var aStart = xStr.search(regExp);
  var matchedText = xStr.substring(aStart, aStart + xTextMatch.length);
  countForId++;
  return selStart + selMid + xStr.replace(regExp,hiStart + matchedText + hiEnd) + selEnd;
}
function CreateUnderline2(xStr,xTextMatch,xVal){
  selMid = "onclick='SetText(" + xVal + ")'" + "id='OptionsList_" + countForId + "' theArrayNumber='"+ xVal +"'>";
  var matchedText = xStr;
  countForId++;
  var xstr2 = selStart + selMid + xStr + selEnd;
  return xstr2;
}

//####################################
      function MoveHighlight(xDir){
        if(currentValueSelected >= 0){
          newValue = parseInt(currentValueSelected) + parseInt(xDir);
          if(newValue > -1 && newValue < countForId){
            currentValueSelected = newValue;
            SetHighColor (null);
          }
        }
      }
//####################################
      function SetHighColor(theTextBox){
        if(theTextBox){
          currentValueSelected = theTextBox.id.slice(theTextBox.id.indexOf("_")+1,
          theTextBox.id.length);
        }
        for(i = 0; i < countForId; i++){
          document.getElementById('OptionsList_' + i).className ='normalEl';
        }
        document.getElementById('OptionsList_' + currentValueSelected).className = 'highEl';
      }

//####################################
function SetText(xVal){
     theTextBox.value = arrOptions[xVal]; //set text value
	
     document.getElementById("jaxbox").style.display = "none";
     currentValueSelected = -1; //remove the selected index
	 if (document.forms[0].btn_search) {
       document.forms[0].btn_search.focus();
	 }
	 if(jQuery(theTextBox).attr('fn') != null && jQuery(theTextBox).attr('fn') != ''){ //TW change for ajax features 2010-06-17
		checkInput(jQuery(theTextBox).attr('fn'));
	 } //TW added for maintainer report prompt ajax suggest 2010-06-28
	
}
//####################################
function GrabHighlighted(){
   if(currentValueSelected >= 0){
     xVal = document.getElementById("OptionsList_" + currentValueSelected).getAttribute("theArrayNumber");
     SetText(xVal);
     HideTheBox();
   }
}
//####################################
function GrabHighlighted2(){
   if(currentValueSelected >= 0){
     xVal = document.getElementById("OptionsList_" + currentValueSelected).getAttribute("theArrayNumber");
     theTextBox.value = arrOptions[xVal]; //set text value
     //SetText(xVal);
     //HideTheBox();
   }
}
//####################################
function HideTheBox(){
    document.getElementById("jaxbox").style.display = "none";
    currentValueSelected = -1;
    EraseTimeout();
}
//####################################
// On blur due to TAB key, hide box
function HideTheBox2(evt){
    var intKey = -1;
    if(window.event){
	  intKey = event.keyCode; 
	} else {
	  intKey = evt.which; 
	}
	//alert(intKey + "-----" + evt.keyCode); 
	if(intKey == 9){ HideTheBox(); } //tab key
}
//####################################
function EraseTimeout(){
    clearTimeout(isTiming);
    isTiming = false;
}
//####################################
      function StartTimeout(){
     // alert("theTextBox.obj.theVisibleTime=" );
        //isTiming = setTimeout("HideTheBox()",theTextBox.obj.theVisibleTime);
      }
//#######################################################
function setSortImage(names) { // for set grey sort images 
  for (var i=0; i<names.length; i++) {
    var im = names[i];  
    if (document.images[im]) {
      if (im.indexOf("s0") == 0) {
        document.images[im].src =  s0.src ;
      } else {
        document.images[im].src =  s1.src ;
      }
    }
  }
}
//#######################################################
function setDropV(fld, val) { // for set value dropdown field
    var selects = document.getElementsByTagName("select");
    for (var i = 0; i < selects.length; i++) {
       var name0 = "val_" + fld;
       if (selects[i].name == name0) { 
          selects[name0].value=val;  
       }  
    }
}
//Functions below for new ajax Lookup/validation and Ajax Drop Downs
//#######################################################
function callAjaxLookup(app, cur_fld, lookup_fld, type, callback){
	var fieldValue = jQuery("#" + cur_fld).val();
	var otherParms = '&val_' + lookup_fld + '=' + encodeURIComponent(jQuery.trim(fieldValue)) + '&rls_' + lookup_fld + '=EQ';
	makeHelperAjaxCall(app, cur_fld,lookup_fld, otherParms, type,fieldValue, callback);
}
//########################################################################
function set_ajax_dropdown(app,cur_fld, cascadeField, lookupField, type){
	var otherParms = '';
	var fieldValue = '';
	if(cascadeField != null && cascadeField != ''){
		fieldValue = jQuery("#" + cascadeField).val();
		otherParms = '&' + lookupField + '=' + encodeURIComponent(fieldValue);
	}
	callDropdown(app, cur_fld, cascadeField, otherParms,lookupField, type);
}
//########################################################################################
function makeHelperAjaxCall(cur_fld, callback, form, index){
	var app = jQuery('#' + cur_fld).attr('mrclookup');
	var ret_fld = jQuery('#' + cur_fld).attr('mrclookupfield');
	var fieldValue = jQuery("#" + cur_fld).val();
	var otherParms = '&val_' + ret_fld + '=' + encodeURIComponent(jQuery.trim(fieldValue)) + '&rls_' + ret_fld + '=EQ';
	jQuery.ajax({ url:app, data:'AJAX=Y&AJAXFIELD=val_' + ret_fld + otherParms, dataType: "html",
		success: function(data, textStatus) {  //Ajax success!
			buildHelperResultFormSubmit(data, cur_fld, fieldValue,callback, form, index);
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) { //Ajax failed
			alert(textStatus);
		},
		complete: function(XMLHttpRequest, textStatus) { //Ajax completed  
     }
  });   
}
//##############################################################################
function buildHelperResultFormSubmit(data, cur_fld, fieldValue, callback, form, index){
	eval(data);
	mrcValidate = false;
	for(var i = 0; i < arrOptions.length;i++){
		if(fieldValue == arrOptions[i] ){
			mrcValidate = true;
			break;
		}
	}
	if(fieldValue == ''){mrcValidate = true;}
	jQuery("#err" + cur_fld).hide();
	jQuery("#" + cur_fld).attr('fldvalid','true');
	if(mrcValidate != true){
		jQuery("#err" + cur_fld).show();
		jQuery("#" + cur_fld).attr('fldvalid','false');
	}	
	callback(form, index);
} 
//##############################################################################
function callDropdown(app, cur_fld, cascadeField, otherParms, lookupField, type){
	
	jQuery.ajax({ url:app, data:'reqtype=5&slnk=1&x=' + Math.random() + otherParms, dataType: "html",
		success: function(data, textStatus) {  //Ajax success!
			buildAjaxSelectList(data, app, cur_fld,cascadeField, lookupField,type);
			setOnChangeEvents(cur_fld,cascadeField, lookupField,type);
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) { //Ajax failed
			alert(textStatus);
		},
		complete: function(XMLHttpRequest, textStatus) { //Ajax completed  
		}
	});   
}
//##############################################################################
function buildAjaxSelectList(data, app, cur_fld,cascadeField, lookupField,type){
	
	var loadValue = jQuery("#" + cur_fld).val();
	var multipleSelect = jQuery("#" + cur_fld).attr("mrcmultiple");
	var cur_fldDisabled= jQuery('<div>').append(jQuery("#" + cur_fld).clone()).remove().html();
	var disabled = cur_fldDisabled.indexOf('disabled');// check for disabled input in maintainer
	
	data = data.replace(/RXXX/ig,cur_fld);
	var blank = data.indexOf('select');
	if(multipleSelect != null && multipleSelect != ''){ //check if in the list and create multiple select box
		data = data.substring(0,7) + ' multiple=\"multiple\" ' + data.substring(7);
	}
	if(blank != -1){ // check if dropdown is changed to blank
		if(disabled != -1){
			data = data.substring(0,7) + ' disabled ' + data.substring(7);
		}
		jQuery("#" + cur_fld).replaceWith(data);
	}else{
		var select = "<select id=\"" + cur_fld + "\"><option value=\"\"></option></select>";
		jQuery("#" + cur_fld).replaceWith(select);
	}
	jQuery("#" + cur_fld).attr('mrccascadefield',cascadeField);
	jQuery("#" + cur_fld).attr('mrclookupfield',lookupField);
	jQuery("#" + cur_fld).attr('mrclookup',app);
			
	if(type == 'load'){
		jQuery("#" + cur_fld).val(loadValue);
	}
	if(disabled == -1 && type != 'load'){
		jQuery("#" + cur_fld).removeAttr('disabled');
	}else if( type == 'change'){
		jQuery("#" + cur_fld).removeAttr('disabled');
	}
	var html = jQuery("head").html();
	var index = html.indexOf('asmselect');
	if(index >=0 && multipleSelect != null){
		jQuery("#select_menu select[multiple] option[value='']").remove();
		jQuery("#select_menu select[multiple]").asmSelect({
			addItemTarget: 'bottom', animate: true, highlight: true, sortable: false
		});
	}
	if(type=='load' && jQuery('#select_menu').length != 0){
		setupSubmitOnInput();
	}else if(jQuery('#select_menu').length != 0){
		jQuery("#" +cur_fld).change(function(){
			blockUIandRun(formId2, appUrl2, datapaneId2);   
		});
	}
	jQuery('#select_menu').width( '');
	
}
//#############################################################################
function setOnChangeEvents(cur_fld,cascadeField, lookupField,type){
	var isCascadeField = jQuery("select[mrccascadefield=" + cur_fld +"]").length;
	if(isCascadeField > 0){
		jQuery("#" + cur_fld).change(function(){
				setCascadingDropdowns(cur_fld);
		});
	}
	if(cascadeField != '' && type != 'load'){
		if( jQuery("#" + cascadeField).val() == ''){
			jQuery("#" + cur_fld).attr('disabled','disabled');
			setCascadingDropdowns(cur_fld);
		}
	}
	if(jQuery("#" + cur_fld).val() == ''){
		jQuery("select[mrccascadefield=" + cur_fld +"]").each(function(){
			jQuery(this).attr('disabled','disabled');
			jQuery(this).val('');
		});
	}
	if(cascadeField && jQuery('#' + cascadeField).val() == ''){
		jQuery("#" + cur_fld).attr('disabled','disabled');
	}
}
//###########################################################################
function setCascadingDropdowns(cur_fld){
	jQuery("select[mrccascadefield=" + cur_fld +"]").each(function(){
		var lookupTable = jQuery(this).attr('mrclookup');
		jQuery(this).attr('disabled','disabled');
		set_ajax_dropdown(lookupTable, jQuery(this).attr('id'), cur_fld, jQuery(this).attr('mrclookupfield'), 'change');	
	});
}
//#################################################################
function  set_ajax_suggest(server_app, ret_fld, mnt_fld) {
  setJaxbox();
  setJaxboxsMNT(server_app, ret_fld, mnt_fld);
}
//#############################################################
function  setJaxboxsMNT(server_app, ret_fld, mnt_fld, functions) {
  var msg="No matches";// message for no matching record
  var formObj = jQuery("#" + mnt_fld).get(0);

  //alert( functions + functions.click);
  if (formObj) {
      if (functions) {
        formObj.functions = functions;
	  }
      formObj.obj = SetProperties(formObj,"k",server_app,true,true,true,true,msg,false, 10000);
	  formObj.ret_fld = ret_fld;  	 	  
	  jQuery('body').keyup( HideTheBox2  ); //jq
	  jQuery('body').click( HideTheBox  );
  }
}