﻿var lastQueryId = 0;
var showDebugInformation = false;
var servicePath = "CompleteAuthorOrTitle.asmx";
var sessionElementId = 'hidSessionID';

var zoekenboekInvoker;
var zoekenboekItemId;
var zoekenboekElementId = 'zoekenboeklayer';


var summaryElementId = 'summarylayer';
var zoekenboekElementId = 'zoekenboeklayer';


  function debug(text, clear){
		if(!showDebugInformation)
		  return;
    var layer = document.getElementById(summaryElementId);
    if(layer.style.left<0||layer.style.top<0){
			layer.style.left=200;layer.style.top=200;
		}
    layer.style.visibility='visible';      
    if(clear)
			layer.innerHTML= text;        
		else
			layer.innerHTML = text + "<br/>" + layer.innerHTML;
  }


	// Event is fired when the ZoekEnBoek button is clicked.
	// Input is an ID of a title.
	// It is placed in the first empty stimulus textbox
/*	function fnLogAddZoekEnBoek(itemId){
	alert('zb1');
		fnLogAddZoekEnBoek(itemId,event?event:window.event);
	alert('zb2');
	}*/
  function fnLogAddZoekEnBoek(event){
		var evt = event;
    var sessionId = document.getElementById(sessionElementId).value;
    var zoekenboekElement = document.getElementById(zoekenboekElementId);
    //alert('1');
    var eventElement = getEventOwner(evt);
    if( !_ElementIsChildOf(eventElement,zoekenboekElement) ){
			return;
    }
    var itemId = zoekenboekItemId;
		//alert("Start calling log method: " + itemId);
		Sys.Net.WebServiceProxy.invoke(
					servicePath
					, "LogAddZoekEnBoek"
					, false
					, {sessionId:sessionId,itemId:itemId}//{ prefixText : this._currentPrefix, count: this._completionSetCount }
					, Function.createDelegate(this, _addLogSucces)
					, Function.createDelegate(this, _addLogFailed)
					, sessionId
					, 1000 );
  }


  function fnLogAddMeerOverMedia(itemId,event){
		var evt = event;
    var sessionId = document.getElementById(sessionElementId).value;
    var summaryElement = document.getElementById(summaryElementId);

    var eventElement = getEventOwner(evt);
		Sys.Net.WebServiceProxy.invoke(
					servicePath
					, "LogAddMeerOverMedia"
					, false
					, {sessionId:sessionId,itemId:itemId}//{ prefixText : this._currentPrefix, count: this._completionSetCount }
					, Function.createDelegate(this, _addLogSucces)
					, Function.createDelegate(this, _addLogFailed)
					, sessionId
					, 1000 );
  }

	// Event is fired when the + button is clicked in the recommend result. 
	// Input is a author or title string.
	// It is placed in the first empty stimulus textbox
  function fnAddEntryToStimulus(Entry, itemId){
    var sessionID = document.getElementById(sessionElementId).value;

    Sys.Net.WebServiceProxy.invoke(
          servicePath
          , "LogAddAuthorOrTitle"
          , false
          , {sessionId:sessionID,itemId:itemId}//{ prefixText : this._currentPrefix, count: this._completionSetCount }
          , Function.createDelegate(this, _addLogSucces)
          , Function.createDelegate(this, _addLogFailed)
          , sessionID
          , 1000 );
  
    for(var i = 1; i<=5; i++)
      if(SetTextBoxValueIfEmpty("txtStimulus" + i, Entry, itemId))
        return;    
    alert('Alle invoer velden zijn reeds gevuld.');
  }
  
  // show the floating div
  function _addLogSucces(result, sessionID, Method){
    // nothing
  }

  function _addLogFailed(err, response, eventArgs){
    // nothing
  }
  
  
  // check if the textbox is empty and set the value to the newvalue
  // returns true is the textbox is empty
  // returns false otherwise
  function SetTextBoxValueIfEmpty(textBoxId, newValue, itemId){
    var textBox= document.getElementById(textBoxId);    
    if(textBox.value!="")
      return false; 
    textBox.value = newValue;
    document.getElementById(textBoxId+'id').value = itemId;
    _downloadMatch(itemId);
    document.getElementById("btnClearAll").style.display = "block";
    return true;
  }

var timerID;  
  
  function RefreshIcons(){
     timerID  = setTimeout("RefreshIconsTimerCall()", 100);
	}
  function RefreshIconsTimerCall(){
		clearTimeout(timerID);
    // set the information in the right box
    for(var i = 1; i<=5; i++){
//      var autoComplete = $find("autoComplete" + i);
      var id = document.getElementById("txtStimulus" + i + 'id').value;
      if(id.length>0)
				_downloadMatch(id);
    }
  }
  
  // invoke webmethod to download match object
  function _downloadMatch(bookID){
    Sys.Net.WebServiceProxy.invoke(
          servicePath
          , "GetMatch"
          , false
          , {id:bookID, searchMethodName:fnGetAutocompletionMethod()}//{ prefixText : this._currentPrefix, count: this._completionSetCount }
          , Function.createDelegate(this, _onMatchFound)
          , null
          , bookID );    
  }
  
  // A match containing the button information is found
  function _onMatchFound(result, bookID, Method){
    debug("Match found for " + bookID + " : " + result);
		if((!result)||result.length==0){
		  debug("Empty result for " + bookID);
			return;
		}
    // set the information in the right box
    for(var i = 1; i<=5; i++){
      var autoComplete = $find("autoComplete" + i);
      //var idField = document.getElementById("txtStimulus" + i + "id");
      debug("Automplete ID: " + autoComplete.get_selectedID() + " == " + bookID );
      if(autoComplete.get_selectedID() == bookID){
        autoComplete.setInfoTextAndVisibility(true,result.HtmlIcons);        
        var infoField = document.getElementById("txtStimulus" + i + "id");
        return;
      }
    }
  
  }
  
  function fnFocusOnFirstEmptyTextBox()
  {
    for(var i = 1; i <=5; i++)
      if(SetTextBoxFocusIfEmpty(document.getElementById("txtStimulus"+i)))
        return;
  }
  
  function fnHideBookInfo(evt){
		var source = getEventOwner(evt);
    var layer = document.getElementById(summaryElementId);
    if(!layer)
      return;
		if( window.attachEvent ){ evt = event; } // For IE only
		var zoekenboekLayer = document.getElementById(zoekenboekElementId);
		var toElement = null;
		if (evt.relatedTarget)toElement = evt.relatedTarget;
		else if (evt.toElement)toElement = evt.toElement;		
		
		var sourceHasZoekEnBoekParent = _ElementIsChildOf(source,zoekenboekLayer);
		var toElementHasZoekEnBoekParent = _ElementIsChildOf(toElement,zoekenboekLayer);
		// always hide when invoked from ZoekEnBoek, don't hide when toElement = ZoekEnBoek
		if( sourceHasZoekEnBoekParent || !toElementHasZoekEnBoekParent 
		/*	|| evt.clientX < zoekenboekLayer.offsetLeft
		  || evt.clientX > zoekenboekLayer.offsetLeft + zoekenboekLayer.offsetWidth
		  || evt.clientY < zoekenboekLayer.offsetTop
			|| evt.clientY > zoekenboekLayer.offsetTop + zoekenboekLayer.offsetHeight*/ ){
	    lastQueryId = 0;
	    layer.style.left = -1000;
	    layer.style.top  = -1000;
	    layer.style.visibility='hidden';
		}
  }
	
	function _ElementIsChildOf(childElement, parentElement){
		if(!parentElement)
			return false;
		if(!childElement)
			return false;
		var hasTheParent; var currentParent = childElement;
		do{ hasTheParent = (currentParent == parentElement);
		}while((!hasTheParent) && (currentParent = currentParent.offsetParent));
		return hasTheParent;
	}

  // show a floating div (summarylayer) with the book description (if any)
  function fnHideZoekEnBoek(){
    var layer = document.getElementById(zoekenboekElementId);
    if(!layer)
      return;
		layer.onClick = null;
    layer.style.left = -1000;
    layer.style.top  = -1000;
    layer.style.visibility='hidden';
		// Remove Position tracker
		document.body.onmousemove = null;
  }

	
  // show a floating div (summarylayer) with the book description (if any)
  function fnMouseOverBook(bookTitle, id, evt){
    var layer = document.getElementById(summaryElementId);
    if(!layer)
      return;
		if(id!=lastQueryId || layer.style.visibility=='hidden'){
			layer.innerHTML = '';
			setLocationByEvent(evt, layer);
			fnGetBookDescription(bookTitle,id);
		}
		
		if(!_ElementIsChildOf(getEventOwner(evt),document.getElementById('tblGraphicOutput')))
		addZoekEnBoek( id, evt );
		lastQueryId = id;
  }
	
	function getEventOwner(evt){
		var invokerElement = null;
    if (evt.target) invokerElement = evt.target;
    else if (evt.srcElement) invokerElement = evt.srcElement;	
		return invokerElement;
	}
	
	// place the element just below the event location  
  function addZoekEnBoek( id, evt ){
    var layer = document.getElementById(zoekenboekElementId);
    if(!layer)
      return;
		if(id==lastQueryId && layer.style.visibility=='visible')
			return;
		zoekenboekInvoker = getEventOwner(evt);
		zoekenboekItemId  = id;
			
    layer.style.left = document.body.scrollLeft + evt.clientX + 5;
    layer.style.top  = document.body.scrollTop  + evt.clientY - 25;
    Sys.Net.WebServiceProxy.invoke(
          servicePath
          , "GetZoekEnBoekIcon"
          , false
          , {bookId:id}//{ prefixText : this._currentPrefix, count: this._completionSetCount }
          , Function.createDelegate(this, _onZoekEnBoekFound)
          , Function.createDelegate(this, _onRequestFailed)
          , id
          , 60000 );
  }
	function _onZoekEnBoekFound(result, id, Method){
    if(id!=lastQueryId)
      return;
    if(result && result.length>0){
      var layer = document.getElementById(zoekenboekElementId);
      if(!layer)
        return;
      if(layer.style.top<=0 || layer.style.left<=0)
        return;
      layer.innerHTML = result;
      
      layer.onclick = fnLogAddZoekEnBoek;
      setLocationToPreventOutOfScreen(layer);
      layer.style.visibility='visible';
			//Set BookListener
			
			document.body.onmousemove = fnTrackZoekEnBoek;
			
    }
  }
	
	function fnTrackZoekEnBoek(evt){
		var layer = document.getElementById(zoekenboekElementId);
		//layer.innerHTML = "test";
		if( window.attachEvent ){ evt = event; } // For IE only
		var dX = layer.offsetLeft - (evt.clientX + document.body.scrollLeft);
		var dY = layer.offsetTop  - (evt.clientY + document.body.scrollTop);
		var maxDistanceLeft = 10;
		var maxDistance = 2;
		
		
		if( (dY+layer.offsetHeight < -maxDistance || dY > maxDistance) 
			||( dX+layer.offsetWidth < -maxDistance  || dX > maxDistanceLeft) ){
			if( (!zoekenboekInvoker) 
				|| evt.clientX < zoekenboekInvoker.offsetLeft
			  || evt.clientX > zoekenboekInvoker.offsetLeft + zoekenboekInvoker.offsetWidth
			  || evt.clientY < zoekenboekInvoker.offsetTop
				|| evt.clientY > zoekenboekInvoker.offsetTop + zoekenboekInvoker.offsetHeight )
				fnHideZoekEnBoek();
			
		}
		// e.clientX
	}
	
var yOffset = 10;
	
	// place the element just below the event location  
  function setLocationByEvent( evt, element ){
    var x = evt.clientX - 175;
    if( x < 10 )
      x = 10;
    element.style.left = document.body.scrollLeft + x;
    element.style.top  = document.body.scrollTop  + evt.clientY + yOffset;  
  }
  
  // if the layer is positioned at the bottom of the screen, the user can not scroll down to read it
  function setLocationToPreventOutOfScreen(element){
    var pageWidth = document.body.clientWidth;
    var pageX = document.body.scrollLeft;
    var pageMaxX = pageX + pageWidth;
    var pageHeight = document.body.clientHeight;
    var pageY = document.body.scrollTop;
    var pageMaxY = pageY + pageHeight;
  
    var x = element.offsetLeft;
    var width = element.offsetWidth;
    var dX = x - document.body.scrollLeft;
    if(x + width > pageMaxX){      
      /*document.body.scrollLeft = x + width - (width>pageWidth?width:pageWidth);
      debug( "NEW Body SCROLL left: " + document.body.scrollLeft );*/
      element.style.left = pageMaxX - width - 5;
      //if(width+5<dX)
			//	element.style.left = pageX + 5;
			/*else
			  document.body.scrollLeft = x - 5;*/
    }
    var y = element.offsetTop;
    var height = element.offsetHeight;
    var dY = y - document.body.scrollTop;
    if(y + height > pageMaxY){
      /*document.body.scrollTop = y + height - (height>pageHeight?height:pageHeight);
      debug( "NEW Body SCROLL height: " + document.body.scrollTop + " (" +(y + height - (height>pageHeight?height:pageHeight)) + ")"  );*/
      if(height+yOffset<dY){
				element.style.top = y - 2 * yOffset - height;
			}
			/*else
			  document.body.scrollTop = y - 5;*/
		}
  }
  
  // invoke the webservice to retrieve the book information
  function fnGetBookDescription(bookTitle, bookID){
    if(!bookID || bookID < 0)
      return;
    Sys.Net.WebServiceProxy.invoke(
          servicePath
          , "GetTitleSummary"
          , false
          , {title:bookTitle, id:bookID}//{ prefixText : this._currentPrefix, count: this._completionSetCount }
          , Function.createDelegate(this, _onBookFound)
          , Function.createDelegate(this, _onRequestFailed)
          , bookID
          , 60000 );
  }
  
  // webservice has completed succesfully
  function _onBookFound(result, id, Method){
    if(id!=lastQueryId)
      return;
    if(result && result.length>0){
      var layer = document.getElementById(summaryElementId);
      if(!layer)
        return;
      if(layer.style.top<=0 || layer.style.left<=0)
        return;
      layer.innerHTML = result;
      setLocationToPreventOutOfScreen(layer);
      layer.style.visibility='visible';
//	      setLocationToPreventOutOfScreen(layer);
    }
  }


  // show a floating div (summarylayer) with the books written by the author
  function fnMouseOverAuthor(authorName, id, evt){
		fnHideZoekEnBoek();
    var layer = document.getElementById(summaryElementId);
    if(!layer)
      return;
		if(id!=lastQueryId || layer.style.visibility=='hidden'){
	    setLocationByEvent(evt, layer);
	    layer.innerHTML = '';
	    fnGetAuthorDescription(authorName,id);
		}
  }
  
  
  // invoke the webservice to retrieve the Author information
  function fnGetAuthorDescription(authorName, authorID){
    if(!authorID || authorID < 0)
      return;

    lastQueryId = authorID;
    Sys.Net.WebServiceProxy.invoke(
          servicePath
          , "GetAuthorSummary"
          , false
          , {name:authorName, id:authorID}//{ prefixText : this._currentPrefix, count: this._completionSetCount }
          , Function.createDelegate(this, _onAuthorFound)
          , Function.createDelegate(this, _onRequestFailed)
          , authorID
          , 60000 );
  }
  
  // show the floating div
  function _onAuthorFound(result, authorID, Method){
    _onBookFound(result,authorID,Method);
  }

  function _onRequestFailed(err, response, eventArgs){// nothing
  }



  
  // check if the textbox is empty and set the value to the newvalue
  // returns true is the textbox is empty
  // returns false otherwise
  function SetTextBoxFocusIfEmpty(textBox){
    if(textBox.value!="")
      return false;
    
    textBox.focus;  
    return true;
  }
  
  // clear all stimulus textboxes
  function fnClearAll(){
    var autocomplete;
    for(var i = 1; i<=5; i++){
      document.getElementById("txtStimulus"+i).value = "";
      document.getElementById("txtStimulus"+ i +"id").value = "";
      autoComplete = $find("autoComplete" + i);
      autoComplete._timerSetEnabled(false);
      autoComplete._clearCurrentId();
    }

    var _btnClearAll;
    _btnClearAll = document.getElementById("btnClearAll");    
    if(_btnClearAll)
      _btnClearAll.style.display = "none";
    showHelp();
    var _clusterDisplay;
    _clusterDisplay = document.getElementById("lblCluster");
    if(_clusterDisplay)
      _clusterDisplay.innerHTML = "";
    fnFocusOnFirstEmptyTextBox();
  }
  
  function fnIBHelpClicked(evt){
		var targ  = getEventOwner(evt);
    var keyCode = evt.keyCode ? evt.keyCode : (evt.rawEvent ? evt.rawEvent.keyCode : null);        
    
    // enter, or some other key press, transfer focus to advise button and cancel event 
    if(targ&&_isStimulus(targ.id)||keyCode){
      //var _adviseButton = document.getElementById("btnAdviseer");
      //_adviseButton.focus;
      //_adviseButton.click();
      debug("fnIBHelpClicked, advise! " + keyCode, false);
      _fnStartAdvise(targ.id);
    } else {      
      showHelp();
      debug("fnIBHelpClicked " + keyCode + " -> " + targ.id, false);
    }
    evt.returnValue = false;
    evt.cancel = true;  
    return false;
  }
  
  
  function showHelp(){
    var _lblResult;
    var _lblHelp;
    _lblResult = document.getElementById("lblResult");
    _lblHelp = document.getElementById("lblHelp");    
    if(_lblHelp && _lblResult)
      _lblResult.innerHTML = _lblHelp.innerHTML;
    fnFocusOnFirstEmptyTextBox();
  }  
  function stimulusTextChanged(){  
    showOrHideClearButton(null);
    stopOtherAutocompletions();
  }
  // fired when the text in the stimulus textboxes is changed
  // can start the call back to the server if the enter button is pressed
  // since we can not distinguish between events in the floating div (autocomplete) and the text box itself
  //   , we check if the timer of the associated autocomplete object is enabled
  function showOrHideClearButton(evt){
    if(evt!=null && evt.keyCode==13){ // enter, transfer focus to advise button and cancel event
        var targ = getEventOwner(evt);

        if( _isStimulus(targ.id) ){
          _fnStartAdvise(targ.id);
          evt.returnValue = false;
          evt.cancel = true;
          return false;
        }
    }
    var totalValue = "";
    totalValue += document.getElementById("txtStimulus1").value;
    totalValue += document.getElementById("txtStimulus2").value;
    totalValue += document.getElementById("txtStimulus3").value;
    totalValue += document.getElementById("txtStimulus4").value;
    totalValue += document.getElementById("txtStimulus5").value;    

    var _btnClearAll;
    _btnClearAll = document.getElementById("btnClearAll");    
        
    if(totalValue=="")
      _btnClearAll.style.display = "none";
    else
    _btnClearAll.style.display = "block";
    
    if(evt!=null) {
      if(evt.target!=null) {
        evt.target.focus;
      }
    }
  }  
  
  function _fnStartAdvise(stimulusId){
    var idElement = document.getElementById(stimulusId + "id");
    if( idElement && idElement.value.length > 0 ){
      var autoComplete = $find("autoComplete" + stimulusId.substr(stimulusId.length-1,1));
      if(autoComplete._timerGetEnabled()){
        autoComplete._timerSetEnabled(false);
      }
      if(autoComplete.get_selectIndex()<0){
				debug("Start advise for: " + document.getElementById(stimulusId).value);
				__doPostBack('btnAdviseer','');
				return true;
			} else {
				debug("Advise canceled, in drop down box: " + document.getElementById(stimulusId).value);			
				return false;
			}
    }else{
			debug("Advise failed: No id for: " + document.getElementById(stimulusId).value);			
			return false;
    }     
  }
  
    
  // fired when the text in the stimulus textboxes is changed
  function stopOtherAutocompletions(){
    var autocompleter;
    autocompleter = document.getElementById("autoComplete1_completionListElem");
    if( autocompleter != null ) autocompleter.style.display="none";
    autocompleter = document.getElementById("autoComplete2_completionListElem");
    if( autocompleter != null ) autocompleter.style.display="none";
    autocompleter = document.getElementById("autocomplete3_completionListElem");
    if( autocompleter != null ) autocompleter.style.display="none";
    autocompleter = document.getElementById("autocomplete4_completionListElem");
    if( autocompleter != null ) autocompleter.style.display="none";
    autocompleter = document.getElementById("autocomplete5_completionListElem");
    if( autocompleter != null ) autocompleter.style.display="none";
  }
  
  function fnRadioButtonClicked(evt){
    
    if(evt==null){
      return true;
    }
    var targ  = getEventOwner(evt);
    if(fnSetAutocompleteMethod(evt)){
      // [2007-11-20 HK] As found on:
      //    http://www.asp.net/ajax/documentation/live/clientreference/Sys.WebForms/PageRequestManagerClass/default.aspx
      // unfortunately unable to test right now...
      // abort any running asynchronous postback!
      // Sys.WebForms.PageRequestManager.getInstance().abortPostBack();
      fnClearAll();
      showHelp();
    }
    return true;
  }
  
  // change the autocomplete method to match the radio button selection
  function fnSetAutocompleteMethod(evt){
    var targ;
    if(evt){
			targ  = getEventOwner(evt);
		}
		
		if(!(targ || targ.id) || targ.id == "" ){ // switch checkbox values. The autocomplete method is now known
      if(document.getElementById("rblTitleAuthor_0").checked){
        document.getElementById("rblTitleAuthor_1").checked = true;
      }else{
        document.getElementById("rblTitleAuthor_0").checked = true;
      }
    }
    
    var method = fnGetAutocompletionMethod();
    var autoComplete;
    for( var i = 1; i <= 5; i++ ){
      autoComplete = $find("autoComplete" + i);
      if( autoComplete.get_serviceMethod() == method ){
        return false;
      }
      autoComplete.set_serviceMethod(method);
    }
    return true;
  }
  
  // Get the current autocompletion method
  // if no checkbox is checked, set the default (auteurs)
  function fnGetAutocompletionMethod(){
		if(document.getElementById("rblTitleAuthor_0").checked){
			return "GetAuthorCompletionList";
		}else if(document.getElementById("rblTitleAuthor_1").checked) {
			return "GetTitleCompletionList";    
		}else{
		  document.getElementById("rblTitleAuthor_0").checked = true;
		  return "GetAuthorCompletionList";
		}
  }
  
  function _isStimulus( elementId ){
    for(var i = 1; i<=5; i++){
      if(elementId == "txtStimulus"+i)
        return true;
    }
    return false;

  }

  // only the adviseer button, the title/author radio button and the grafisch checkbox can submit the form
  function fnAdviseButton_Clicked(evt, fromSite){      
    var targ;
    if(evt==null){
      return true;
    }
    var targ  = getEventOwner(evt);
    var keyCode = evt.keyCode ? evt.keyCode : (evt.rawEvent ? evt.rawEvent.keyCode : null);    
    debug("fnAdviseButton_Clicked? " + targ.id + " keycode: " + keyCode + " button: " + evt.button + " type: " + evt.type,false);
    if(fromSite){
			debug("From site " + window.event);
    }
    __doPostBack('btnAdviseer','');
  }

  
  // only the adviseer button, the title/author radio button and the grafisch checkbox can submit the form
  function fnValidSenderType(evt){      
    var targ;
    if(evt==null){
      return true;
    }
    var targ  = getEventOwner(evt);
    var keyCode = evt.keyCode ? evt.keyCode : (evt.rawEvent ? evt.rawEvent.keyCode : null);
    
    debug("Valid sender type? " + targ.id + " keycode: " + keyCode,false);

    if((!targ.id) || targ.id == "" )
      return false;
    
    // enter on one of the stimuli
    if(_isStimulus(targ.id)&&keyCode==13){
      var idElement = document.getElementById(targ.id + "id");
      if(idElement&&idElement.value.length>0){
				debug(targ.id + " Start advise",false);
				if(!_fnStartAdvise(targ.id)){
					evt.returnValue = false;
				  evt.cancelBubble = true;
				  evt.stopPropagation();
				}
      }else{
				debug(targ.id + " No advise",false); 
			}
			return false;
    }
    
    if(targ.id == "ibHelp")
      return false;   
    if(targ.id=='btnClearAll')
      return false;
    var rblTitleAuthor = "rblTitleAuthor";
    if( targ.id.length >= rblTitleAuthor.length 
      && targ.id.substring(0,rblTitleAuthor.length) == rblTitleAuthor ){
      debug("Title/author button, accept " + targ.id,false);
      return true;
    }
    var radiobutton = "rb";
    if( targ.id.length > radiobutton.length 
      && targ.id.substring(0,radiobutton.length) == radiobutton ){
      debug("Meer/minder spannend button, accept " + targ.id,false);
      return fnRadioButtonClicked(evt);
    }
    
    if( targ.id == "btnAdviseer" 
             || targ.id == "chkCluster"
             || targ.id == "Verrassend" ){
      if( targ.id == "btnAdviseer" ){
        /*document.getElementById("btnAdviseer_stopped").style.display="none";
        document.getElementById("btnAdviseer_loading").style.display="block";        */
        //Sys.WebForms.PageRequestManager.getInstance().abortPostBack();
        debug("Advise button, Button: " + evt.button,false);
        debug("Cancelbubble, : " + evt.cancelBubble,false);
        //return false;
      }
      debug("Accept submit " + targ.id,false);
      return true;
    }
    return false;
  }
  
  // simple function to cancel the click event (for use on <a href things ) and open the window
  function fnOpenWindow( url, title )
  {
    window.open( url, title );
    return false;  
  }
  
  function highlight(elementid, evt){
		var element = document.getElementById(elementid);
		element.style.cursor = 'hand';
		element.style.cursor = 'pointer';
  }
  
  function unhighlight(elementid, evt){
		var element = document.getElementById(elementid);
		element.style.cursor = 'default';
  }
