/* Extend array object */
Array.prototype.contains = function (input) {
	for (var i=0; i<this.length; i++) 
		if (this[i] == input) 
			return true;
	return false;
}

/* Extend string object */
String.prototype.trim = function() {
  return this.replace(/^\s\s*/, "").replace(/\s\s*$/, "");
}

/* Open a window for demoing a part of the webpage */
function openDemoWindow(url) 
{
	demowindow = window.open(url, 'demowindow', 'width=570, height=700, scrollbars=Yes');
	demowindow.moveTo(screen.width/2-570/2, screen.height/2-700/2); 
	demowindow.focus();
}

/* GetElementById shortcut */
function $e(i) 
{
	if ('object' == typeof i)
  	return i;
	else if (i)
		return document.getElementById(i);
	else 
		return '';
}

/* GetElementById shortcut */
function $el(i) 
{
	return $e(i);
}

/* EaseIn function */
function easeIn(current, target, increment) 
{
	var goon=true;
	var last=current;
	while (goon==true) 
	{
		current = target-((target-current)/increment);
		increment+=0.1;
		if (parseInt(current)!=parseInt(last))
			goon=false;
	}
	return parseInt(current);
}

/* Add a class to object */
function addClass(sObject, sNewClass) {
	return switchClass(sObject, '', sNewClass)
}

/* Add a class to object */
function removeClass(sObject, sNewClass) {
	return switchClass(sObject, sNewClass, '')
}

/* Switch an object between two classes */
function switchClass(sObject, sOldClass, sNewClass) 
{
	var originalClass=sObject.className;
	$(sObject).removeClass(sOldClass).addClass(sNewClass);
	return sObject.className!=originalClass;
	/*
	sObject = $el(sObject)
	var originalClass=sObject.className;
	//if(!sObject.className)
	//	sObject.className='';
	var re = new RegExp('\b*'+sOldClass, 'g');
	sObject.className = (sObject.className.replace(re, '') + ' ' + sNewClass).replace(/^\s+|\s+$/g, '');
	return sObject.className!=originalClass;
	*/
}

function alternateClass(sObject, sOldClass, sNewClass) {
	if (!switchClass(sObject, sOldClass, sNewClass))
		switchClass(sObject, sNewClass, sOldClass);
}

function toggleVisibility(el) {
	alternateClass($el(el), 'hidden', '');
}

function show(el) {
	switchClass($el(el), 'hidden', '');
}

function hide(el) {
	switchClass($el(el), '', 'hidden');
}

/* MouseOver switch class functions */
function classOver(sObject) {
	switchClass(sObject, 'out', 'over')
}
function classOut(sObject) {
	switchClass(sObject, 'over', 'out')
}

/* Popup Fade In function */
function popupFadeIn(el) 
{
	theDiv = $el(el)
	theDiv.style.visibility='visible';
	theDiv.style.display='block';
	var theOpacity = getOpacity(theDiv)
	if (isNaN(theOpacity)) 
		setOpacity(theDiv, 0);
	if (theDiv.timerID!=undefined) 
		clearTimeout(theDiv.timerID);
	setOpacity(theDiv, theOpacity+4)
	if (getOpacity(theDiv)<100)
		theDiv.timerID = setTimeout('popupFadeIn(\''+el+'\')', 20);
}


/* Popup Fade Out function */
function popupFadeOut(el) {
	theDiv = $el(el)
	if (isNaN(getOpacity(theDiv))) 
		setOpacity(theDiv, 0);
	else 
		setOpacity(theDiv, getOpacity(theDiv)-10)
	if (!isNaN(theDiv.timerID)) 
		clearTimeout(theDiv.timerID);
	if (getOpacity(theDiv)>0) {
		theDiv.timerID = setTimeout('popupFadeOut(\''+el+'\')', 20);
	} else {
		theDiv.style.visibility='hidden';
		theDiv.style.display='none';
	}
}

/* Set opacity function */
function setOpacity(obj, value) 
{
	obj.theOpacity = value;
	obj.style.opacity = value/100;
	obj.style.filter = 'alpha(opacity=' + value + ')';
}

/* Get opacity function */
function getOpacity(obj) 
{
	if (isNAN(parseInt(obj.theOpacity)))
		return 100;
	else 
		return parseInt(obj.theOpacity);
}

function stripLastChar(s) 
{
	if (s!='')
		s=s.substr(0,s.length-1)
	return s;
}


/* Field validation */
function validateField(objField, reRegExp) {
	if (fieldMatch(objField.value, reRegExp)==false || (objField.type.indexOf('select') > -1 && 
			(objField.selectedIndex<0 || objField[objField.selectedIndex].value==-1))) {
  	fieldNotValidated(objField);
  } else {
  	fieldValidated(objField);
  }
}

/* Match string to regular expression */
function fieldMatch(strValue, reRegExp) {
  if (strValue.match(eval(reRegExp)))
    return true;
  else {
    return false;
  }
}

/* Set field to not validated */
function fieldNotValidated(objField) {
	addClass(objField, 'notValidated');
	var objImage=document.images[objField.name+'img'];
	if (objImage)
		objImage.src='/images/ikon_fieldnotvalidated.gif';
}

/* Set field to validated */
function fieldValidated(objField) {
	removeClass(objField, 'notValidated')
	var objImage=document.images[objField.name+'img'];
	if (objImage)
		objImage.src='/images/s.gif';
}



/* Do Search Literal function (webform, formname, urlprefix)*/
function doSearchLiteral(f, u, p) 
{
	var lbg = $el('lbg');
	var lbyg = $el('lbyg');
	var soktext_e=$el('soktext_e');
	var yk = '';
	var yg = '';
	var g = '';
	var d = '';
	var docheck=true;
	if (soktext_e)
	{
		if (soktext_e.value == soktext_e.title )
			soktext_e.value = ""
		else 
			soktext_e.value = soktext_e.value.replace(/[\\\.\^\&\*\[\]\?\-"!@$%()=';,/{}|:<>";]+/g,' ')
	}
  
  if (lbg&&lbyg) 
  {
  	// Do simple search
  	// Add Yrkesgrupp
  	if (lbyg[lbyg.selectedIndex].value!='-1')
	  	u+= '/'+lbyg[lbyg.selectedIndex].value;
  	// Add Geografi
  	if (lbg[lbg.selectedIndex].value!='-1')
	  	u+= '/'+lbg[lbg.selectedIndex].value;
  	// Add urlprefix in front of url
	  u=p+u+'.htm'
  	// Add Search text
  	if (soktext_e.value!='') u+='?soktext='+escape(soktext_e.value);
  } 
  else 
  {
  	// Do Advanced search
  	for (i=0 ; i<f.length ; i++) 
  	{
  		c = f[i];
			if (c.id.substr(0,3)=='nod') 
			{
				if (c.checked) 
				{
	  			docheck = false;
	  			t = c.id.substr(3,c.id.indexOf('_samtliga')-3)
	  			if (!isNaN(t))
	  				yg+=t+',';
  			} 
  			else 
  			{
  				docheck = true;
  			}
  		} 
  		else 
  			if (c.id.substr(0,5)=='cblbg') 
	  		{
		  		if (c.checked) 
		  			g+=c.value+','
	  		} 
	  		else 
	  			if (c.id.substr(0,6)=='cblbyk') 
		  		{
		  			if (c.checked&&docheck) 
		  				yk+=c.value+','
			  	}
  	}
  	g = stripLastChar(g);
  	yk = stripLastChar(yk);
  	yg = stripLastChar(yg);
  	
  	// Add urlprefix in front of url
	  u=p+u+'.htm?'
	  if (g!='')  u+='g='+g+'&';
	  if (yk!='') u+='yk='+yk+'&';
	  if (yg!='') u+='yg='+yg+'&';
  	if (soktext_e.value!='') u+='soktext='+escape(soktext_e.value)+'&';
	  u+='d=1&';
  	u = stripLastChar(u);
  }
  document.location.href=u;
}






/* Do Search function --------------OBSOLETE-------------  */
function doSearch(f, u) 
{
	var lbg = $el('lbg');
	var lbyg = $el('lbyg');
	var soktext_e;
	var yk = '';
	var yg = '';
	var g = '';
	var d = '';
	var docheck=true;
	if (soktext_e)
		soktext_e.value = soktext_e.value.replace(/[\\\.\^\&\*\+\[\]\?\-"!@#$%()=';,/{}|:<>";]+/g,'')
  
  if ($el('soktext_e')) soktext_e = $el('soktext_e')
  
  if (lbg&&lbyg) 
  {
  	if (lbg[lbg.selectedIndex].value!='-1')
	  	g = lbg[lbg.selectedIndex].value;
  	if (lbyg[lbyg.selectedIndex].value!='-1')
	  	yg = lbyg[lbyg.selectedIndex].value;
  } 
  else 
  {
  	for (i=0 ; i<f.length ; i++) 
  	{
  		c = f[i];
			if (c.id.substr(0,3)=='nod') 
			{
				if (c.checked) 
				{
	  			docheck = false;
	  			t = c.id.substr(3,c.id.indexOf('_samtliga')-3)
	  			if (!isNaN(t))
	  				yg+=t+',';
  			} 
  			else 
  			{
  				docheck = true;
  			}
  		} 
  		else 
  			if (c.id.substr(0,5)=='cblbg') 
	  		{
		  		if (c.checked) 
		  			g+=c.value+','
	  		} 
	  		else 
	  			if (c.id.substr(0,6)=='cblbyk') 
		  		{
		  			if (c.checked&&docheck) 
		  				yk+=c.value+','
			  	}
  	}
  	g = stripLastChar(g);
  	yk = stripLastChar(yk);
  	yg = stripLastChar(yg);
  	d='d=1&';
  }
  u+='.htm?'
  if (g!='')  u+='g='+g+'&';
  if (yk!='') u+='yk='+yk+'&';
  if (yg!='') u+='yg='+yg+'&';
  if (soktext_e && soktext_e.value!='') u+='soktext='+escape(soktext_e.value)+'&';
  u+=d;
  u = stripLastChar(u);
  document.location.href=u;
}

presentation = function(id) {
	//var this = eval('this');
	var theDiv = this.theDiv = $el(id)
	var presentationsid = this.presentationsid = theDiv.id.substr('presentation'.length);
//	var merinfo = this.merinfo = $el('merinfo'+presentationsid);
	
	/*
	theDiv.onmouseover = function(e) {
		switchClass(this, '', 'over');
		show('merinfo'+presentationsid);
	}
	theDiv.onmouseout = function(e) {
		switchClass(this, 'over', '');
		hide('merinfo'+presentationsid);
	}
	merinfo.onclick = function(e) {
		toggleVisibility('kontaktinfo'+presentationsid);
		alternateClass(this.getElementsByTagName('b')[0], 'expanded', '');
	}
	*/
}

function initPresentationer() {
  var presentationer = $el('presentationer').getElementsByTagName('li');
  $el('presentationer').presentationer = new Array();
  for (var i=0 ; i<presentationer.length ; i++) {
  	$el('presentationer').presentationer.push(new presentation(presentationer[i].id))
  }
}

function filterList(strContentId, strTagName, strSearchText) {
	var oContent = $el(strContentId);
	var contentArray = oContent.getElementsByTagName(strTagName); 
	for (i = 0; i<contentArray.length ; i++) {
		switchClass(contentArray[i], 'hidden', '');
		if (strSearchText && contentArray[i].innerHTML.toUpperCase().indexOf(strSearchText.toUpperCase())<0)
			switchClass(contentArray[i], '', 'hidden');
	}
}



function findPos(obj) {
	if (obj) {
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			do {
					curleft += obj.offsetLeft;
					curtop += obj.offsetTop;
				} while (obj = obj.offsetParent);
		}
		return [curleft,curtop];
	}
}


selectedYrkesgrupp = '';
selectedGeografi = '';

function removeYrkesgruppGeografi(sType) {
	if (sType=='geografi')
		filterYrkesgruppGeografi($el(sType+selectedGeografi), selectedGeografi);
	else
		filterYrkesgruppGeografi($el(sType+selectedYrkesgrupp), selectedYrkesgrupp);
}

function filterYrkesgruppGeografi(objLink, sIndex) {
	result = function(l, t, s) {
		alternateClass(l, 'selected', '');
		if (s+'' != '') removeClass($el(t+s), 'selected');
		if (s+''==sIndex+'') s = '';
		else s = sIndex;
		
		// Hide menu
		hide(t+'Meny')
		
		// Set the link class
		if (s+'' != '') { 
			addClass($el(t+'Lank'), 'selected');
			removeClass($el(t+'Stang'), 'invisible');
		} else {
			removeClass($el(t+'Lank'), 'selected');
			addClass($el(t+'Stang'), 'invisible');
		}
		
		return s;
	}
	if (objLink.id.indexOf('geografi')>-1)
		selectedGeografi = result(objLink, 'geografi', selectedGeografi)
	else
		selectedYrkesgrupp = result(objLink, 'yrkesgrupp', selectedYrkesgrupp)
	
	makeAjaxRequestPageClosure('presentationer', 'cjpresentationer-ajax.htm', 'yg='+selectedYrkesgrupp+'&g='+selectedGeografi, 'presentationerContainerDiv', 'presentationerLoading', 0, initPresentationer)
	
}

function filterPresentationer() {
  filterList('presentationer', 'li', $el('sokord').value)
}

function positionYrkesgruppGeografi() {
	var arr = ['geografi', 'yrkesgrupp'];
	for (var i=0 ; i<arr.length ; i++) {
		pos = findPos($el(arr[i]+'Lank'))
		$el(arr[i]+'Meny').style.left = pos[0]+'px';
		$el(arr[i]+'Meny').style.top  = pos[1]+21+'px';
	}
}
