/* 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*$/, "");
}

/* Extend contains object */
jQuery.extend(
	jQuery.expr[':'].Contains = function(a,i,m){
		return (a.textContent || a.innerText || "").toLowerCase().indexOf(m[3].toLowerCase())>=0;
	}
);

/* Extends JQuery with SetSelection and SetCursorPosition */

new function($) {
  $.fn.setSelection = function(selectionStart, selectionEnd) {
    if ($(this).get(0).setSelectionRange) {
      $(this).get(0).setSelectionRange(selectionStart, selectionEnd);
    } else if ($(this).get(0).createTextRange) {
      var range = $(this).get(0).createTextRange();
      range.collapse(true);
      range.moveEnd('character', selectionStart);
      range.moveStart('character', selectionEnd);
      range.select();
    }
  }
}(jQuery);
new function($) {
  $.fn.setCursorPosition = function(pos) {
      $(this).setSelection(pos, pos);
  }
}(jQuery);

/* 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);
}

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) {
	$('#'+objField.name)
		.addClass('notValidated');
	$('#'+objField.name+'img')
		.attr('src', '/images/ikon_fieldnotvalidated.gif')
		.show();
}

/* Set field to validated */
function fieldValidated(objField) {
	$('#'+objField.name)
		.removeClass('notValidated');
	$('#'+objField.name+'img')
		.attr('src', '/images/s.gif')
		.hide();
}



/* Do Search Literal function (webform, formname, urlprefix, extra parameters)*/
function doSearch(f, u, p)
{
	doSearchLiteral(f, u, p, '');
}
/* Do Search Literal function (webform, formname, urlprefix, extra parameters)*/
function doSearchLiteral(f, u, p, e) 
{
	var lbg = $el('lbg');
	var lbyg = $el('lbyg');
	var soktext_e=$el('soktext_e');
	var yk = '';
	var yg = '';
	var g = '';
	var d = '';
	var soktext = '';
	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 (soktext_e.value!='')
  		soktext = escape(soktext_e.value);
	}
  
  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,3)=='cbg' || c.id.substr(0,5)=='cblbg') 
  		{
	  		if (c.checked) 
	  			g+=c.value+','
  		} 
  		else if (c.id.substr(0,4)=='cbyk' || 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 (e!='') u+=e+'&';
  	if (soktext!='') u+='soktext='+soktext+'&';
	  u+='d=1&';
  	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);
}

function initPresentationer() {
}

function filterList(strContentId, strTagName, strSearchText) {
$("#" + strContentId + " ." + strTagName)
		.hide()
		.end()
		.find("." + strTagName + ":Contains('" + strSearchText +"')")
		.show();
}

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)
	
}

/* Switch an object between two classes */
function switchClass(sObject, sOldClass, sNewClass) 
{
	var originalClass=sObject.className;
	$(sObject).removeClass(sOldClass).addClass(sNewClass);
	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 filterPresentationer() {
  filterList('presentationerContainerDiv', 'presentationlankruta', $el('sokord').value)
}

function hide(el) {
	switchClass($el(el), '', 'hidden');
}
/* 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, '')
}
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';
	}
}

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';
	}
}

function encodeUrlFromInputfield(inputfieldid, urlfieldid)
{
	$("#"+inputfieldid).bind("keyup, change, blur", function()
	{
		var strOutput = $(this).val();
		strOutput = strOutput.toLowerCase()
			.replace(/[åäæâáà]/ig, 'a')
			.replace(/[éè]/ig, 'e')
			.replace(/[üúù]/ig, 'u')
			.replace(/[öøô]/ig, 'o')
			.replace(/\s+/g, '-')
			.replace(/[^a-z\-]/g, '')
			.replace(/--/g, '-');
		var makeTen = function(i)
		{
			if (i< 10) return '0'+i 
			else return i;
		}
		var d = new Date();
		var suffix = d.getFullYear() +'-'+ makeTen(d.getMonth()+1) +'-'+ makeTen(d.getDate()) +'-'+ makeTen(d.getHours()) + makeTen(d.getMinutes()) + makeTen(d.getSeconds());
		$("#"+urlfieldid).val(strOutput + '-' + suffix);
	});
}

function doUrlEncode(s)
{
//        .replace(/%20/g, '+')
  return escape(s)
    .replace(/\+/g,'%2B')
    .replace(/\*/g, '%2A')
    .replace(/\?/g, '%3F')
    .replace(/&/g, '%26')
    .replace(/@/g, '%40')
    .replace(/\%5C/g, '|')
    .replace(/\//g, '|')
    .replace(/\%E5/gi, 'å')
    .replace(/\%E4/gi, 'ä')
    .replace(/\%F6/gi, 'ö')
    .replace(/\%C5/gi, 'Å')
    .replace(/\%C4/gi, 'Ä')
    .replace(/\%D6/gi, 'Ö')
    .replace(/\%D8/gi, 'Ø')
    .replace(/\%F8/gi, 'ø')
    .replace(/\%C6/gi, 'Æ')
    .replace(/\%E6/gi, 'æ').toLowerCase();
}

/* JQUERY Functions */

$(document).ready(function() {
	
	/* BEGIN Script buttons */
	
	$(".scriptbutton")
		.bind("mouseover", function() { if (!$(this).data("disabled")) $(this).addClass("hover"); })
		.bind("mouseout", function() { if (!$(this).data("disabled")) $(this).removeClass("hover"); })
		.bind("mousedown", function() { if (!$(this).data("disabled")) $(this).addClass("pressed"); })
		.bind("mouseup mouseout", function() { if (!$(this).data("disabled")) $(this).removeClass("pressed"); })
		.bind("disable", function() { $(this).css("opacity", 0.5).addClass("disabled").removeClass("pressed hover").data("disabled", true); })
		.bind("enable", function() { $(this).css("opacity", 1).removeClass("disabled").data("disabled", false); });
	
	/* END Script buttons */

	/* BEGIN Nyhetsticker förstasida */
	
	$(".branschnyheter-ticker").each(function() {
	  if($(this).children(".nyhet").length===1)
	  {
	    $(this).find(".nyhet").show();
	  }
	  else
	  {
	    $(this).find(".nyhet")
	      .bind("calculatenextslide", function()
	      {
	        if ($(this).next(".nyhet").length===1)
	          $(this).parents(".branschnyheter-ticker").data("skiptoslide", $(this).prevAll(".nyhet").length+1);
	        else 
	          $(this).parents(".branschnyheter-ticker").data("skiptoslide", 0);
	      })
	      .bind("doanimation", function()
	      {
	        $(this)
	          .trigger("animatein");
	      })
	      .bind("animatein", function()
	      {
	        var thisPosition = $(this).prevAll(".nyhet").length;
	        $(this)
	          .trigger("calculatenextslide")
	          .addClass("isanimatingin")
	          .show()
	          .css({ "left":"183px" })
	          .animate( { "left":"0px" }, 1000, function ()
	          {
	            $(this)
	              .removeClass("isanimatingin")
	              .addClass("iswaiting")
	              .trigger("animatewait")
	          })
	        $(this)
	          .parents(".branschnyheter-ticker")
	            .find(".nyhetlinks a")
	              .css({ opacity: 0.5 })
	              .slice(thisPosition, thisPosition+1)
	                .css({ opacity: 1 });
	      })
	      .bind("animatewait", function()
	      {
	        $(this)
	          .animate( { "left":"0px" }, 6000, function()
	          {
	            $(this)
	              .removeClass("iswaiting")
	              .trigger("animateout");
	          });
	      })
	      .bind("animateout", function()
	      { 
	        nextSlide = $(this).parents(".branschnyheter-ticker").data("skiptoslide");
	        if (nextSlide == $(this).prevAll(".nyhet").length)
	          $(this)
	            .trigger("animatewait")
	            .trigger("calculatenextslide");
	        else
	        {
	          $(this).parents(".branschnyheter-ticker").find(".nyhet").slice(nextSlide,nextSlide+1).trigger("doanimation");
	          $(this)
	            .animate( { left:-183 }, 1000);
	        }
	      })
	      .bind("animateskipslide", function()
	      {
	        $(this).siblings(".nyhet.iswaiting")
	          .stop()
	          .removeClass("iswaiting")
	          .trigger("animateout");
	      }).slice(0,1).trigger("doanimation");
	  }
	});
	$(".branschnyheter-ticker .nyhetlinks a").click(function()
	{
	  var shouldshow = $(this).prevAll("a").length;
	  $(this)
	    .parents(".branschnyheter-ticker")
	    .data("skiptoslide", shouldshow)
	      .find(".nyhet").slice(shouldshow, shouldshow+1)
	        .trigger("animateskipslide");
	});
	
	/* END Nyhetsticker förstasida */
});
