﻿// JScript File

/*========================================================*/
/* Used for any AJAX calls                                */
/*========================================================*/												
var request = false;
var requestPrivate = false
try {
	request = new XMLHttpRequest();
} catch (trymicrosoft) {
	try {
	request = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (othermicrosoft) {
	try {
		request = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (failed) {
		request = false;
	}  
	}
}
/*========================================================*/
/*========================================================*/


//============================================================//
// code to suggest names for related articles
//============================================================//
    var relatedArticleSuggest
    var lookupText = ""

    var relatedArticleRequest = false;

    

    function suggestRelatedArticle(el){
        
          relatedArticleSuggest = el
          var txt = el.value
          if( txt.length > 0 )
          {
            lookupRelatedArticle(txt)
          }
          else
          {
            document.getElementById("relatedArticleSuggest").innerHTML = '';
          }
    }	

    function lookupRelatedArticle(strLookup){	
        relatedArticleRequest = false;
        
	    if (window.XMLHttpRequest) { // Mozilla, Safari,...
		    relatedArticleRequest = new XMLHttpRequest();
		    if (relatedArticleRequest.overrideMimeType) {
			     relatedArticleRequest.overrideMimeType('text/xml');
			    // See note below about this line
		    }
	    } else if (window.ActiveXObject) { // IE
		    try {
			    relatedArticleRequest = new ActiveXObject("Msxml2.XMLHTTP");
		    } catch (e) {
			    try {
				    relatedArticleRequest = new ActiveXObject("Microsoft.XMLHTTP");
			    } catch (e) {}
		    }
	    }

	    if (!relatedArticleRequest) {
		    //alert('Giving up :( Cannot create an XMLHTTP instance');
		    return false;
	    }
	    

	    
	    relatedArticleRequest.onreadystatechange = populateRelatedArticleField;
	    
	    var d = new Date(); //used for randomizing url to avoid caching
		
	    url = "/ajax/getSuggestedRelatedArticles.aspx?str=" + escape(strLookup) + "&rnd=" + d.getMilliseconds()
	    
	    relatedArticleRequest.open('GET', url, true);
	    relatedArticleRequest.send(null);
		
	    lookupText = strLookup
	
    }
    
    function populateRelatedArticleField(){
   
        if (relatedArticleRequest.readyState == 4) {
		
	        if (relatedArticleRequest.status == 200) {
		        strResults = relatedArticleRequest.responseText
	            
		        if (strResults != "") {
		            
			        document.getElementById("relatedArticleSuggest").innerHTML = ""
		            document.getElementById("relatedArticleSuggest").innerHTML += strResults
			        document.getElementById("relatedArticleSuggest").style.border = "1px solid"
			        document.getElementById("relatedArticleSuggest").style.backgroundColor = "#E0E7F1"
    				
			        document.getElementById("relatedArticleSuggest").style.visibility = 'visible'
		        } else {
			        document.getElementById("relatedArticleSuggest").innerHTML = ""
			        document.all.relatedArticleSuggest.style.visibility = 'hidden'
		        }
    			
//		        arrResults = strResults.split("\n")
//    			
//		        if (arrResults.length > 1){
//		        
//			        strClientText = arrResults[0]
//			        strTags = /<[^>]*>/gi
//			        strClientText = strClientText.replace(strTags,"")
//    				
//			        //elText.value = strClientText
//			        document.getElementById("relatedArticleSuggest").innerHTML = ""
//			        for(i=0;i<arrResults.length;i++){
//				        //strClientDiv = "<div id=\"clientDiv" + i + "\"  onClick=\"selectThis('clientDiv" + i + "')\" onMouseOver=\"highlightThis('clientDiv" + i + "')\"  onMouseOut=\"highlightThis('clientDiv" + i + "')\">" + arrResults[i] + "</div>"
//				        strClientDiv = arrResults[i]
//				        document.getElementById("relatedArticleSuggest").innerHTML += strClientDiv
//				        //alert(strClientDiv)
//    					 
//    					
//			        }	
//			        //objSelection = elText.createTextRange()
//    				
//			        //objSelection.moveStart("character",lookupText.length)
//			        //objSelection.select()
//			        document.getElementById("relatedArticleSuggest").style.border = "1px solid"
//			        document.getElementById("relatedArticleSuggest").style.backgroundColor = "#E0E7F1"
//    				
//			        document.getElementById("relatedArticleSuggest").style.visibility = 'visible'
//		        }
//		        else {
//			        //alert("none")
//			        document.getElementById("relatedArticleSuggest").innerHTML = ""
//			        document.all.relatedArticleSuggest.style.visibility = 'hidden'
//		        }
	        }
        }
    }
    function selectThisRelatedArticle(whichDiv, articleId){
        //alert(document.getElementById("clientNameAuto").innerHTML)
        
        relatedArticleSuggest.value = whichDiv.innerHTML
        //document.getElementById("clientNameAuto").innerHTML = ""
        document.getElementById("relatedArticleSuggest").style.visibility = 'hidden'
        document.getElementById("relatedArticleId").value = articleId
        document.getElementById("btnAddRelatedArticle").style.visibility = 'visible'
        
    }
    
    function hideSuggestArticleDiv(){
        document.getElementById("btnAddRelatedArticle").style.visibility = 'hidden'
        //document.getElementById('relatedArticleSuggest').style.visibility = 'hidden';
    }
/*========================================================*/
/*========================================================*/


//============================================================//
// code to suggest behaviour on search
//============================================================//
    var behaviorSuggest
    var lookupText = ""

    var keywordRequest = false;
    
    //for up and down arrow keys in suggested behaviour
    var currentSuggestionDivIndex = -1
    var arrowDown = false
    var arrowUp = false
    var suggestedBehaviorUpperBound = 0

    

    function suggestBehavior(e, el){
          //check for up and down arrows
              arrowUp = false
              arrowDown = false
              
              var evt = (e) ? e : window.event;
              var intKey = (evt.which) ? evt.which : evt.keyCode;
              
              if (intKey == 38)
                arrowUp = true
              if (intKey == 40)
                arrowDown = true
                
          if (intKey != 13) {   //enter key
              if (!(arrowUp || arrowDown)){
                  //reset up down arrow position
                    currentSuggestionDivIndex = -1
                  
                  behaviorSuggest = el
                  var txt = el.value
                  if( txt.length > 0 )
                  {
                    lookupBehavior(txt)
                  }
                  else
                  {
                    document.getElementById("behaviorSuggest").innerHTML = '';
                  }
              } else {
                selectBehaviorByArrow()
              }  
          }  else { //hit return key. hide suggested dropdown
            document.getElementById("behaviorSuggest").style.visibility = 'hidden'
          }  
          
    }	

    function lookupBehavior(strLookup){	
        keywordRequest = false;
        
	    if (window.XMLHttpRequest) { // Mozilla, Safari,...
		    keywordRequest = new XMLHttpRequest();
		    if (keywordRequest.overrideMimeType) {
			     keywordRequest.overrideMimeType('text/xml');
			    // See note below about this line
		    }
	    } else if (window.ActiveXObject) { // IE
		    try {
			    keywordRequest = new ActiveXObject("Msxml2.XMLHTTP");
		    } catch (e) {
			    try {
				    keywordRequest = new ActiveXObject("Microsoft.XMLHTTP");
			    } catch (e) {}
		    }
	    }

	    if (!keywordRequest) {
		    //alert('Giving up :( Cannot create an XMLHTTP instance');
		    return false;
	    }
	    

	    
	    keywordRequest.onreadystatechange = populateBehaviorSuggest;
	    
	    var d = new Date(); //used for randomizing url to avoid caching
		
	    url = "/ajax/getSuggestedBehaviors.aspx?str=" + escape(strLookup) + "&rnd=" + d.getMilliseconds()
	    
	    keywordRequest.open('GET', url, true);
	    keywordRequest.send(null);
		
	    lookupText = strLookup
	
    }
    
    function populateBehaviorSuggest(){
   
        if (keywordRequest.readyState == 4) {
		
	        if (keywordRequest.status == 200) {
	            
		        strResults = keywordRequest.responseText
		        
    			
		        if (strResults != "") {
		            
			        document.getElementById("behaviorSuggest").innerHTML = ""
		            document.getElementById("behaviorSuggest").innerHTML += strResults
			        document.getElementById("behaviorSuggest").style.border = "1px solid"
			        document.getElementById("behaviorSuggest").style.backgroundColor = "#E0E7F1"
    				
			        document.getElementById("behaviorSuggest").style.visibility = 'visible'
		        } else {
			        document.getElementById("behaviorSuggest").innerHTML = ""
			        document.getElementById("behaviorSuggest").style.visibility = 'hidden'
		        }
		        
		        //check to see if arrow has been moved
		        getSuggestedBehaviorUpperBound()
	        }
        }
    }
    
    function getSuggestedBehaviorUpperBound(){
        //figure out uppe bound of suggested behaviors. most can be 20
          
          for (i=0; i<20; i++){
            if (document.getElementById("suggestionDiv" + i) ){
                suggestedBehaviorUpperBound = i
                //clear background
                document.getElementById("suggestionDiv" + i).style.background="#E0E7F1";
            }
          }
       
     }     
    
    function selectBehaviorByArrow(){
    
        /*===============================================================*/
        /* code for up and down arrows on suggested behaviours           */
        /*===============================================================*/
         getSuggestedBehaviorUpperBound()
          if (arrowUp){ //up arrow
            if (currentSuggestionDivIndex > 0){
                currentSuggestionDivIndex -= 1
            }  
      
          } 
          if (arrowDown){ // down arrow
            if (currentSuggestionDivIndex < suggestedBehaviorUpperBound){
                currentSuggestionDivIndex += 1
            }   
          } 
          
          if (arrowUp || arrowDown){
              if (document.getElementById("suggestionDiv" + currentSuggestionDivIndex)){
                document.getElementById("suggestionDiv" + currentSuggestionDivIndex).style.background="#cccccc";
                chooseBehaviorByArrow(document.getElementById("suggestionDiv" + currentSuggestionDivIndex))
              }
              //document.getElementById("debug").innerHTML = currentSuggestionDivIndex + " " + suggestedBehaviorUpperBound
      
          } 
          
        /*===============================================================*/
        /* end code for up and down arrows on suggested behaviours       */
        /*===============================================================*/
    }
    
    
    function chooseBehaviorByArrow(whichDiv){
        behaviorSuggest.value = whichDiv.innerHTML
    }
    function selectThisBehavior(whichDiv){
        behaviorSuggest.value = whichDiv.innerHTML
        document.getElementById("behaviorSuggest").style.visibility = 'hidden'
        
    }
    

/*========================================================*/
/*========================================================*/

