﻿//  SÖKFUNKTION TILL WEBBSIDAN I JAVASCRIPT MED AJAX -TEKNIK
//  (C)2006-2007 påbörjad av VECTREX/WWW.HTMLSIDAN.SE Dec 2006
//
//  VERSION 0.6

var nrOfPages=28;
var mode=1
var page=new Array(nrOfPages);



page[0]='http://www.advise.se/index.htm';
page[1]='http://www.advise.se/sv/TJANSTER.htm';
page[2]='http://www.advise.se/sv/KURSER.htm';
page[3]='http://www.advise.se/sv/KONTAKTER.htm';
page[4]='http://www.advise.se/sv/KONSULTER.htm';
page[5]='http://www.advise.se/sv/KlasGustafsson.htm';
page[6]='http://www.advise.se/sv/AnnalenaKruse.htm';
page[7]='http://www.advise.se/sv/MarcHagberg.htm';
page[8]='http://www.advise.se/sv/ChrisBecker.htm';
page[9]='http://www.advise.se/sv/Assesssment_utveckling.htm';
page[10]='http://www.advise.se/sv/Ledarutveckling.htm';
page[11]='http://www.advise.se/sv/hermanGardsten.htm';
page[12]='http://www.advise.se/sv/OrgUtveckling.htm';
page[13]='http://www.advise.se/sv/assessment.htm';
page[14]='http://www.advise.se/sv/avveckling.htm';
page[15]='http://www.advise.se/sv/Rekrytering_personbedomning.htm';
page[16]='http://www.advise.se/sv/nysomchef.htm';
page[17]='http://www.advise.se/sv/Teambuilding.htm';
page[18]='http://www.advise.se/sv/skola_forskola.htm';
page[19]='http://www.advise.se/sv/ledarskap.htm';
page[20]='http://www.advise.se/sv/karriarplan.htm';
page[21]='http://www.advise.se/sv/foretagskultur.htm';
page[22]='http://www.advise.se/sv/forsaljning.htm';

// Här nedan behöver du inte ändra någonting.
//
//
var pageNr=0;
var searchWord="";
var result="";
var ingetHittat=0;
var nav=navigator.userAgent.toLowerCase();
var title="";

function decodeHtml(encodedString) {
    //exchanges some html-decoded signs
    /*encodedString = encodedString.replace("ä",/&auml;/ );
    encodedString = encodedString.replace("Ä",/&Auml;/ );
    encodedString = encodedString.replace("å", /&aring;/);
    encodedString = encodedString.replace("Å", /&Aring;/);
    encodedString = encodedString.replace("ö",/&ouml;/ );
    encodedString = encodedString.replace("Ö", /&Ouml;/);
    encodedString = encodedString.replace("´", /&acute;/);*/
	encodedString = encodedString.replace(/&auml;/,"ä" );
    encodedString = encodedString.replace(/&Auml;/,"Ä" );
    encodedString = encodedString.replace(/&aring;/,"å" );
    encodedString = encodedString.replace(/&Aring;/,"Å" );
    encodedString = encodedString.replace(/&ouml;/,"ö" );
    encodedString = encodedString.replace(/&Ouml;/,"Ö" );
    encodedString = encodedString.replace(/&acute;/,"´" );

    return encodedString;
  }

function search(word)
{
	
	result="";
	pageNr=0;
	ingetHittat=0;
	result=result+"<b>Söker efter \""+word+"\" ...</b><br/>";
	setText("search_result",result);
	searchPages(word);
}

function searchPages(word)
{
	//searchWord=decodeHtml(word);
	searchWord=word;
	var httpRequest = getHttpRequest();
	
	httpRequest.onreadystatechange = function() 
	{ 
		handleRequest(httpRequest); 
	};
	
	httpRequest.open('GET', page[pageNr], true);
	httpRequest.send(null);
}


function handleRequest(handle)
{
	var text="";

	if (handle.readyState != 4) 
	{
		return;
	}

	if (handle.status && (handle.status == 404) || (handle.status == 2))
	{
		alert('Webbsida eller fil saknas '+page[pageNr]);
		return;
	}
	
	if (handle.status && handle.status != 200) 
	{
		alert('Felkod ' + handle.status );
		return;
	}

	text= handle.responseText;
	
	
	text=text.replace(/(\n)/g,"\*\*\*");
	text=text.replace(/(\n)/g,"");
	//alert(text);
	matches=text.match(/(<title.*?<\/title>)/gi);
	
	title=matches[0];
	title=title.replace(/(<.*?>)/gi,"");

	text=text.replace(/(<style*?<\/style)/gi,"");
	text=text.replace(/(<script.*?<\/script>)/gi,"");
	text=text.replace(/(<title.*?<\/title>)/gi,"");
	text=text.replace(/(<noframes.*?<\/noframes>)/gi,"");
	text=text.replace(/(\&.*?;)/gi,"");
	text=text.replace(/(<.*?>)/gi,"");
	text=text.replace(/(\*\*\*)/g,"\n");


	text=text.toLowerCase();
	//alert(text.match(searchWord));

	if (text.match(searchWord.toLowerCase())!=null)
	{
		if (mode==3) 
		{
			title=title+" "+page[pageNr];
		}
		if (mode==2) 
		{
			title=page[pageNr];
		}
		
		result=result+"» <a href='#' onClick='showModalDialog(\""+page[pageNr]+"\",\""+searchWord+"\")'>"+title+"</a><br/>";
		setText("search_result",result);
		ingetHittat=1;
	}

	if (++pageNr<nrOfPages)
	{
		searchPages(searchWord);
	}
	else
	{
		if (ingetHittat==0)
		{
			result=result+"hittade ingenting";
			setText("search_result",result);
		}
	}
}


function getHttpRequest()
{
	var handle = false;

if( !window.XMLHttpRequest && window.ActiveXObject && document.all ){
	
	var PROGID = null;
	window.XMLHttpRequest = function() {
		if( !PROGID ){
			// microsoft´s ajax versions
			var m_ajax_vers = ["Msxml2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
			for( var i=0; i < m_ajax_vers.length; i++ ){
				try{
					var ajax_object = new ActiveXObject(m_ajax_vers[i]);
					PROGID = m_ajax_vers[i];
					ajax_object = null;
					break;
				} catch ( oe ) {
					// continue for the next ajax version
				}
			}
		}
		if( PROGID ){
			return new ActiveXObject(PROGID);
		}
	}
}
	if (window.XMLHttpRequest) 
	{
		//alert("rad2");
		handle = new XMLHttpRequest();
		//if(handle.overrideMimeType) // Mozilla/Safari/IE7+
		//{
			//handle.overrideMimeType('text/xml; charset=iso-8859-1'); 
			//handle.overrideMimeType('text/xml');
		//}
	} 
	else 
	if (window.ActiveXObject) 
	{
		try 
		{
			handle = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try 
			{
				handle = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e)
			{
				try 
					{ 
					handle = new XMLHttpRequest(); 
					}
					catch (e){
					}
				}
		}
	}

	if (!handle) 
	{
		return false;
	}

	return handle;
}

function setText(namn,txt)
{
	if (document.all)
	{
		document.all[namn].innerHTML=txt;
	}
	else if (document.layers)
	{
		document[namn].document.open();
		document[namn].document.write(txt);
		document[namn].document.close();
	}
	else if (document.getElementById)
	{
		document.getElementById(namn).innerHTML=txt;   
	}
}




/*
 * This function takes a referer/referrer string and parses it
 * to determine if it contains any search terms. If it does, the
 * search terms are passed to the highlightSearchTerms function
 * so they can be highlighted on the current page.
 */
function highlightGoogleSearchTerms(referrer)
{
  // This function has only been very lightly tested against
  // typical Google search URLs. If you wanted the Google search
  // terms to be automatically highlighted on a page, you could
  // call the function in the onload event of your <body> tag, 
  // like this:
  //   <body onload='highlightGoogleSearchTerms(document.referrer);'>
  
  //var referrer = document.referrer;
  if (!referrer) {
    return false;
  }
  
  var queryPrefix = "q=";
  var startPos = referrer.toLowerCase().indexOf(queryPrefix);
  if ((startPos < 0) || (startPos + queryPrefix.length == referrer.length)) {
    return false;
  }
  
  var endPos = referrer.indexOf("&", startPos);
  if (endPos < 0) {
    endPos = referrer.length;
  }
  
  var queryString = referrer.substring(startPos + queryPrefix.length, endPos);
  // fix the space characters
  queryString = queryString.replace(/%20/gi, " ");
  queryString = queryString.replace(/\+/gi, " ");
  // remove the quotes (if you're really creative, you could search for the
  // terms within the quotes as phrases, and everything else as single terms)
  queryString = queryString.replace(/%22/gi, "");
  queryString = queryString.replace(/\"/gi, "");
  
  return highlightSearchTerms(queryString, false);
}


/*
 * This function is just an easy way to test the highlightGoogleSearchTerms
 * function.
 */
function testHighlightGoogleSearchTerms()
{
  var referrerString = "http://www.google.com/search?q=javascript%20highlight&start=0";
  referrerString = prompt("Test the following referrer string:", referrerString);
  return highlightGoogleSearchTerms(referrerString);
}
//här ska hittase resultat markeras
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag) 
{
  // the highlightStartTag and highlightEndTag parameters are optional
  if ((!highlightStartTag) || (!highlightEndTag)) {
    highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
    highlightEndTag = "</font>";
  }
  
  // find all occurences of the search term in the given text,
  // and add some "highlight" tags to them (we're not using a
  // regular expression search, because we want to filter out
  // matches that occur within HTML tags and script blocks, so
  // we have to do a little extra validation)
  var newText = "";
  var i = -1;
  var lcSearchTerm = searchTerm.toLowerCase();
  var lcBodyText = bodyText.toLowerCase();
    
  while (bodyText.length > 0) {
    i = lcBodyText.indexOf(lcSearchTerm, i+1);
    if (i < 0) {
      newText += bodyText;
      bodyText = "";
    } else {
      // skip anything inside an HTML tag
      if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
        // skip anything inside a <script> block
        if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i)) {
          newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
          bodyText = bodyText.substr(i + searchTerm.length);
          lcBodyText = bodyText.toLowerCase();
          i = -1;
        }
      }
    }
  }
  
  return newText;
}


/*
 * This is sort of a wrapper function to the doHighlight function.
 * It takes the searchText that you pass, optionally splits it into
 * separate words, and transforms the text on the current web page.
 * Only the "searchText" parameter is required; all other parameters
 * are optional and can be omitted.
 */
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
  // if the treatAsPhrase parameter is true, then we should search for 
  // the entire phrase that was entered; otherwise, we will split the
  // search string so that each word is searched for and highlighted
  // individually
  if (treatAsPhrase) {
    searchArray = [searchText];
  } else {
    searchArray = searchText.split(" ");
  }
  
  if (!document.body || typeof(document.body.innerHTML) == "undefined") {
    if (warnOnFailure) {
      alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
    }
    return false;
  }
  
  var bodyText = document.body.innerHTML;
  for (var i = 0; i < searchArray.length; i++) {
    bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
  }
  
  document.body.innerHTML = bodyText;
  return true;
}


/*
 * This displays a dialog box that allows a user to enter their own
 * search terms to highlight on the page, and then passes the search
 * text or phrase to the highlightSearchTerms function. All parameters
 * are optional.
 */
function searchPrompt(defaultText, treatAsPhrase, textColor, bgColor)
{
  // This function prompts the user for any words that should
  // be highlighted on this web page
  if (!defaultText) {
    defaultText = "";
  }
  
  // we can optionally use our own highlight tag values
  if ((!textColor) || (!bgColor)) {
    highlightStartTag = "";
    highlightEndTag = "";
  } else {
    highlightStartTag = "<font style='color:" + textColor + "; background-color:" + bgColor + ";'>";
    highlightEndTag = "</font>";
  }
  
  if (treatAsPhrase) {
    promptText = "Please enter the phrase you'd like to search for:";
  } else {
    promptText = "Please enter the words you'd like to search for, separated by spaces:";
  }
  
  searchText = prompt(promptText, defaultText);

  if (!searchText)  {
    alert("No search terms were entered. Exiting function.");
    return false;
  }
  
  return highlightSearchTerms(searchText, treatAsPhrase, true, highlightStartTag, highlightEndTag);
}

//konsulternas text 
var xmlhttp;

function loadXMLDoc(url)
{
xmlhttp=null;
// code for Mozilla, etc.
if (window.XMLHttpRequest)
  {
	  //alert("Mozilla satsen");
  xmlhttp=new XMLHttpRequest();
  }
// code for IE
else if (window.ActiveXObject)
  {
	  //alert("MS satsen");
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
  }
else
  {
  alert("Your browser does not support XMLHTTP.");
  }
}

function state_Change()
{
// if xmlhttp shows "loaded"
if (xmlhttp.readyState==4)
  {
  // if "OK"
  if (xmlhttp.status==200)
    {
    document.getElementById('search_result').innerHTML=xmlhttp.responseText;
    }
  else
    {
    alert("Problem retrieving data:" + xmlhttp.statusText);
    }
  }
}

//Denna function i samband med sökta ord 
function testModal(){
	
if(dialogArguments!="")
{
highlightSearchTerms(dialogArguments);
//document.getElementById("search_result").style.background-image="url(../images/50bild.png)";
}
}


function opaciDiv(img){
//document.getElementById("search_result").style.background-image="url(../images/50bild.png)";
document.getElementById(""+img+"").style.filter="alpha(opacity=20)";
var imgOld=document.getElementById("oldImg").value;
if(document.getElementById("oldImg").value!=""&&imgOld!=img){
document.getElementById(""+imgOld+"").style.filter="alpha(opacity=80)";
}
document.getElementById("oldImg").value=img;
}

