// General "no-only-space" filter variable
var spaceFilter = /^\s+$/;

function checkEmail(parEmail){
	var str = parEmail;
	var filter = /^[^\s@]+@[^\s@]+\.[a-z]{2,6}$/i;

	// Check if the e-mail is valid
	if(filter.test(str)){
		// Valid
		return true;
	} else {
		// Invalid
		return false;
	}
}

// Timer variable
var timer;
var dontclose;
var parsedCurrentId;
var currentToogledId;
var totalDropdowns;

function ToogleFilter(string,parId,parDropDown){
	// Parsed variables
	var elementId = string.id;
	var currentId = parId;
	var currentToogledId = parId;
	
	// Close other drop downs
	closeOtherDrops();
	
	// Update total drop downs
	totalDropdowns = parDropDown;
	
	// Show or hide filter drop down
	if(document.getElementById('filter'+currentId).className=='filter-None'){
		document.getElementById('filter'+currentId).className='filter-Block';
	} else {
		document.getElementById('filter'+currentId).className='filter-None';
	}
	
	// Hide blur
	document.getElementById(elementId).blur();
}

function closeOtherDrops(){

	// Find number of open drop downs
	var currentNumItems = document.getElementsByTagName('DIV');
	var currentNum = currentNumItems.length;
	var countCurrentNum;
	
	for(t=0;t<currentNum;t+=1){
		if(currentNumItems[t].className=='filter-None' || currentNumItems[t].className=='filter-Block'){
			// Hide block
			currentNumItems[t].className = 'filter-None';
		}
		
	}
}

function FilterOver(parId){
	// Parsed variable
	var currentId = parId;

	// Show the filter
	document.getElementById('filter'+currentId).className='filter-Block';
	
	// Clear timer
	clearTimeout(timer)
	
	// set var
	dontclose = true;
}

function FilterOut(parId){
	// Parsed variable
	var currentId = parId;

	// Tich the timer
	timer = setTimeout("HideFilterOut()",500);
	
	// set var
	dontclose = false;
	
	// Set current id
	parsedCurrentId = currentId;
}

function HideFilterOut(){
	// Show the filter
	if (!dontclose){
		document.getElementById('filter'+parsedCurrentId).className='filter-None';
	}
}

function SetFilterList(string,filtertype,parId,parVar){
	var elementText = string.innerHTML;
	var elementId = string.id;
	var filttype = filtertype;
	var currentId = parId;
	var parsedVar = parVar;
	
	// Type 1: Set selecteds labels text
	if(filttype==1){
		document.getElementById('filterlabel'+currentId).innerHTML = elementText;
	}
	
	// Type 2a: Open url
	if(filttype==2){
		if(parsedVar!=''){
			location.href = parsedVar;
		}
	}
	
	// Type 2b: Open in new window
	if(filttype==5){
		if(parsedVar!=''){
			window.open(parsedVar);
		}
	}
	
	// Type 3: Set category
	if(filttype==3){
		if(parsedVar!=''){
			// Update hidden field
			document.getElementById('category').value = parsedVar;
			
			// Set label text
			document.getElementById('filterlabel'+currentId).innerHTML = elementText;
		}
	}
	
	// Type 4: Show contact person based on choises
	if(filttype==4){

		// Toogle class
		document.getElementById('contacts-multi').className='contacts-multi expanded';
		//document.getElementById('contacts-multi')
	
		// Show person
		document.getElementById('person').style.display='block';
		
		// Set label text
		document.getElementById('filterlabel'+currentId).innerHTML = elementText;
		
	}
	
	// Hide the selectbox after select
	document.getElementById('filter'+currentId).className='filter-None';
} // SetFilterList

function SetDateList(string,filtertype,parId,parDat1,parDat2){
	//Parsed value to lists inputs
	document.getElementById('dateFrom').value = parDat1;
	document.getElementById('dateTo').value = parDat2;
	document.forms['NewsList'].submit();
}

function toogleText(parVar){
	// Element id variable
	var thisElement = parVar.id;
	
	if(document.getElementById(thisElement).value!=''){
		
		// Reset input
		document.getElementById(thisElement).value = '';
	
	}
}

function GoToUrl(parUrl,parTar){
	parsedUrl = parUrl;
	parsedTarget = parTar;

	if(parsedTarget=='blank'){
		/* Open in new window */
		window.open(parsedUrl);
	} else if(parsedTarget=='same') {
		/* Go to a specified url */
		location.href = parsedUrl;
	}else{
		/* Go to a specified url */
		location.href = parsedUrl;
	}
} // GoToUrl

function toogleTab(parThis, classNamePrefix, url){
	var currentId = parThis.id;
	// Loop through all tabs and reset
	for (var i=0;i<=10;i++){
		if(document.getElementById('tab'+i)){
			document.getElementById('tab'+i).className = '';
		}
	}

	// Set selected tab
	if ( classNamePrefix=='' ) classNamePrefix='other';
	document.getElementById(currentId).className = classNamePrefix+'Sel';
	
	// Blur selected tab
	document.getElementById(currentId).blur();

	var tabContentContainer=$('Content');
	if ( tabContentContainer ) {
		AjaxUpdate(url, $('loader'), tabContentContainer);
	}
} // toogleTab

function openPopup(Url) {
	try {
		AjaxUpdate(Url, $('loader'), openPopupCallBack);
		return true;
	} catch ( exception ) {
		return false;
	}
} // openPopup

function openPopupCallBack(ResponseContent, ResponseStatus) {
	if ( ResponseStatus!=200 && typeof(ResponseStatus)!='undefined' ) {
		alert("Error loading from server!");
	} else {
		if ( typeof(window.onscroll)!='function' ) AttachEvent(window, 'scroll', MovePopup);
		if ( typeof(window.onresize)!='function' ) AttachEvent(window, 'resize', MovePopupResize);

		MovePopup(true);

		$('popup_inner').innerHTML=ResponseContent;

		EvalContentScripts(ResponseContent);
		tooglePopup('popup');

		MovePopup(true); // In some cases 
	}
} // openPopupCallBack

function popupBackgroundClick(Element) {
	if ( typeof(event)!='undefined' ) {
		if (event.srcElement==Element) {
			tooglePopup();
		}
	}
} // popupBackgroundClick

function MovePopup(ForceMove) {
	if ( typeof(ForceMove)=='undefined' ) ForceMove=false;
	if ( ForceMove || $('popup_inner').style.display!='none' ) {
		var PageSize=GetPageSize();

		var height=0;
		// Collect height of all child elements
		var Element=$('popup_inner').firstChild;
		while ( Element ) {
			// If we have a element Then add height.
			if ( Element.nodeType==1 ) height+=Element.clientHeight;
			Element=Element.nextSibling;
		}
		
		var top=80;
		if ( PageSize.windowHeight>(top+height) ) top+=PageSize.scrollTop;
		else if ( PageSize.pageHeight>(height+PageSize.scrollTop) ) top=PageSize.scrollTop;
		else top=PageSize.pageHeight-height;

		if ( top<0 ) top=0;

		$('popup_inner').style.top=top+"px";
		$('popup_inner').style.height=height+"px";

		if ( ForceMove ) $('popup_frame').style.height=PageSize.pageHeight+"px"; // Set height of popup_frame.
	}
} // MovePopup

function MovePopupResize() {
	if ( $('popup_inner').style.display!='none' ) MovePopup(true);
} // MovePopupResize

function tooglePopup(parId){
	if ( typeof(parId)=='undefined' ) parId='popup';
	
	/* Find command */
	var curId = parId;
	var popup_frame = document.getElementById(curId+'_frame');
	var popup_inner = document.getElementById(curId+'_inner');
	var flash = document.getElementById('flashzone');
	var main = document.getElementById('main');
	
	if(popup_frame.style.display=='none'){
		// Hide flash field if it exists
		if(flash) flash.style.visibility='hidden';
		// Show popup frame
		popup_frame.style.display='block';
		// Show popups inner
		popup_inner.style.display='block';
		// Change main class name
		main.className='main noprint';
	} else {
		// Hide flash field if it exists
		if(flash) flash.style.visibility = 'visible';
		// Hide popup frame
		popup_frame.style.display='none';
		// Hide popups inner
		popup_inner.style.display='none';
		// Change main class name
		main.className='main';
	}
} // tooglePopup

function toogleItem(parElement){
	// Define variable
	var element = document.getElementById(parElement.id+'_children');
	var mother = document.getElementById(parElement.id);
	
	if(element){
	
		// If hidden then show children, else hide children
		if(element.style.display=='none'){
			// Show children
			element.style.display = 'block';
			mother.className = 'selected';
		}else{
			// Hide children
			element.style.display = 'none';
			mother.className = '';
		}
	} else {
		// Warn, when developing only
		alert('Item does not have any children');
	}
	
	/* Blur link */
	mother.blur();
} // toogleItem

var pixels;					// Width of the news items (MUST BE A WHOLE NUMBER)
var loops;					// Times to repeat the loop
var cols;					// The number of news cols shown in the news slide box
var timer;					// Timer variable
var smotimer;				// Miliseconds timer
var numnewsItems = 0; 		// Returns all P items with 'news_item' as class
var newsItemsEnd = 0; 		// Add number of news item with 185
var currentCount = 0;		// Declare counter variable
var running;				// Currently running

function runNewsSlider(parPixels,parCols){
	if(parPixels!='' && parCols!=''){
		// Tricker switch news
		setTimeout("switchNews()",5000)
		
		// Define variables
		pixels = parseInt(parPixels);
		cols = parseInt(parCols);
		
		// Calculate number of repeats
		loops = ((pixels-5)/5);
	
		// Count the number of news items
		countNews();
	} else {
		// Error
		alert('Error. Either number of pixels or cols have not been defined!');
	}
}

function countNews(){
	if(!document.getElementsByTagName){
		alert("Browser is not compatible!");
	}else{
		// Define variables
		var newsItems = document.getElementsByTagName('P'); 	// Find all P element 
		var newsItemsCount = newsItems.length; 					// Count all P element
		var i;													// Loop variable
		
		for(i=0;i<newsItemsCount;i+=1){
			if(newsItems[i].className=='news_item'){
				numnewsItems += 1;
			}
		}
	}
	
	newsItemsEnd = ((-numnewsItems*pixels)+(cols*pixels))+'px';
	
	// Define new news container width
	var NewContainerWidth = parseInt(numnewsItems)*200;

	// Set news container width
	document.getElementById('news_item_slider').style.width = NewContainerWidth+'px';
}

function switchNews(){
	// View next news
	nextNews();
}

function nextNews(){
	// Set variable
	running = true;

	// Items container
	var items = document.getElementById('news_item_slider');

	if(items){
		if(items.style.left!=newsItemsEnd){
			// Count our repeats
			currentCount+=1;
		
			// Start slider
			if(currentCount<=loops){
				// Repeat rutine
				smotimer = setTimeout("nextNews()",20);
			}else{
				// Reset counter
				currentCount = 0;
				timer = setTimeout("nextNews()",5000);
				running = false;
			}

			// Items container
			var items = document.getElementById('news_item_slider');
			var itemsLeft;
		
			// Find current left
			itemsLeft = parseInt(items.style.left);
			
			// Move current left
			items.style.left = itemsLeft-5+'px';

		}else{
			// Reset
			items.style.left = '0px';
			
			// Run rutine again
			timer = setTimeout("nextNews()",5000);
		}
	}
}

function backNews(){
	// Items container
	var items = document.getElementById('news_item_slider');
	var itemsLeft = parseInt(items.style.left);

	if(items){
		if(items.style.left!='0px'){
			items.style.left = itemsLeft+pixels+'px';
		}
	}
}

function goForward(){
	// Clear the timers
	clearTimeout(timer);
	clearTimeout(smotimer);

	// Go to next
	nextNews();
}

function goBack(){
	// Go to next
	if(running==false){
		// Go back
		backNews();
		
		// Clear the timers
		clearTimeout(timer);
		clearTimeout(smotimer);
	}
}

function newsOver(){
	// Clear the timer
	clearTimeout(timer);
}

function resizeTabs(parTabs){
	var totalwidth = 662; // The total width of the tabbar
	var tabs = parseInt(parTabs)+1;
	var devidetabs = totalwidth / tabs;
	var tabsrounded = Math.round(devidetabs);
	var tabsroundedtotal = tabsrounded * tabs;
	var countdifference = (tabsrounded * tabs) - totalwidth;
	var firsttab;
	
	if(countdifference>0){
		firsttab = tabsrounded-countdifference;
	}else if(countdifference<0){
		firsttab = tabsrounded+(countdifference*-1);
	}else{
		firsttab = tabsrounded;
	}

	// Loop through the tabs
	for ( var i=0; i<tabs; i+=1 ){
		if ( i==0 ){
			document.getElementById('tab'+i).style.width = firsttab + 'px';
		} else {
			document.getElementById('tab'+i).style.width = tabsrounded + 'px';
		}
	}
}

function toogleContact(parElement) {
	parElement.blur();	// Remove focus from the element.
	// Close all children if any is open
	var numcontactItems = 0; 									// Returns all DIV items with 'firmcon' as class
	var numfirmItems = 0;
	var contactItems = document.getElementsByTagName('DIV'); 	// Find all P element
	var firmItems = document.getElementsByTagName('A');
	var contactItemsCount = contactItems.length; 				// Count all P element
	var firmItemsCount = firmItems.length;
	var element = document.getElementById(parElement.id+'_1');
	var mother = document.getElementById(parElement.id);
	
	for( var i=0;i<contactItemsCount;i+=1) if (contactItems[i].className=='firmcon') contactItems[i].style.display = 'none';
	for( var i=0;i<firmItemsCount;i+=1) if (firmItems[i].className=='firm') firmItems[i].style.backgroundImage = 'url(/gfx/sgl_arrow_blue.gif)';

	if(element){
		// Toogle element
		if(element.style.display=='none'){
			element.style.display = 'block';
			mother.style.backgroundImage = 'url(/gfx/sgl_arrow_blue_sel.gif)';
			
		}else{
			element.style.display = 'none';
			//mother.style.backgroundImage = 'url(/gfx/sgl_arrow_blue.gif)';
		}
	}
} // toogleContact

function OnSubmitContactForm(f) {
	var ajaxUrl=f.action;
	if ( ajaxUrl.indexOf("?")>-1 ) ajaxUrl+="&";
	else  ajaxUrl+="?";
	ajaxUrl+="Popup=False";
	var PostContent={"Recipient":f.recipient.value,"Name":f.name.value,"Email":f.email.value,"Subject":f.subject.value,"Message":f.message.value}

	return !AjaxUpdate(ajaxUrl, $('loader'), OnSubmitContactFormCallBack, PostContent);
} // OnSubmitContactForm

function OnSubmitContactFormCallBack(ResponseContent, ResponseStatus) {
	if ( ResponseStatus!=200 && typeof(ResponseStatus)!='undefined' ) {
		$('popup_inner').innerHTML=ResponseContent;
		alert("A problem occured when sending message.\nPlease try again later");
	} else {
		EvalContentScripts(ResponseContent);
		tooglePopup();
	}
} // OnSubmitContactFormCallBack

function ContactFormValidation(f){
	var Execution = true;
	var borderStyle='1px solid #999';
	var borderStyleError='1px solid red';
	
	// Reset validation fields
	f.name.style.border=borderStyle;
	f.email.style.border=borderStyle
	f.subject.style.border=borderStyle;
	f.message.style.border=borderStyle;

	if(f.message.value=='' || spaceFilter.test(f.message.value)){
		f.message.focus();
		f.message.style.border=borderStyleError;
		Execution = false;
	}
	
	if(f.subject.value=='' || spaceFilter.test(f.subject.value)){
		f.subject.focus();
		f.subject.style.border=borderStyleError;
		Execution = false;
	}

	if(f.email.value==''){
		f.email.focus();
		f.email.style.border=borderStyleError;
		Execution = false;
	}
	
	if(!checkEmail(f.email.value)){
		f.email.focus();
		f.email.style.border=borderStyleError;
		Execution = false;
	}
	
	// Validate textarea
	if(f.name.value=='' || spaceFilter.test(f.name.value)){
		f.name.focus();
		f.name.style.border=borderStyleError;
		Execution = false;
	}
	
	if ( !Execution ){
		var textErrorMessage=document.ErrorMessage;
		if ( typeof(textErrorMessage)=='undefined' ) textErrorMessage="Please fill out the fields marked with a red border.";

		// Show error description
		$('error').style.display = 'block';
		$('error_text').innerHTML = textErrorMessage;
	}
	return Execution;
} // ContactFormValidation

function ContactFormReset(f){
	// Reset validation fields
	var borderStyle='1px solid #999';
	f.name.style.border=borderStyle;
	f.email.style.border=borderStyle;
	f.subject.style.border=borderStyle;
	f.message.style.border=borderStyle;
	
	$('error').style.display = 'none';
	
	// Reset contents
	f.name.value = '';
	f.email.value = '';
	f.subject.value = '';
	f.message.value = '';
	
	// Focus name field
	f.name.focus();
} // ContactFormReset

// applicationSend // applicationReset

function applicationSend(f){

	// Promt language
	var Execution = true;
	
	// Reset validation fields
	f.name.style.border = '1px solid #999';
	f.email.style.border = '1px solid #999';

	if(f.email.value==''){

		f.email.focus();
		f.email.style.border = '1px solid red';
		Execution = false;
	}
	
	if(!checkEmail(f.email.value)){
		
		f.email.focus();
		f.email.style.border = '1px solid red';
		Execution = false;
	}
	
	if(f.name.value=='' || spaceFilter.test(f.name.value)){

		f.name.focus();
		f.name.style.border = '1px solid red';
		Execution = false;
	}
	
	if(Execution){
	
		// Confirm page
		//f.GsObjectId.value='71830FE1-BD3B-4A75-9A60-9C46A0B117B2';

		// Submit form
		//f.submit();
		
	}else{
	
		// Show error description
		document.getElementById('error').style.display = 'block';
		document.getElementById('error').innerHTML = '<font color=red>Please fill out the fields marked with a red border.</font><br><br>';
	
	}
	
}

function applicationReset(f){

	// Reset validation fields
	f.name.style.border = '1px solid #999';
	f.email.style.border = '1px solid #999';
	
	// Reset contents
	f.name.value = '';
	f.email.value = '';
	
	// Focus name field
	f.name.focus();

}

function UpdateIEImage(){
	// IE 6 detected - update image
	document.getElementById('bannermisc').style.backgroundImage = 'none';
	document.getElementById('bannermisc').style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+element+'",sizingMethod="image");';

	// Show again
	document.getElementById('bannermisc').style.visibility = 'visible';
}

var ImageLoadApplyFilter=null;
function ImageLoad(Element) {
	if ( typeof(ImageLoadApplyFilter)!='boolean' ) {
		browserVersion=0
		if ( navigator.appVersion.indexOf("MSIE")!=-1 ) {
			var temp=navigator.appVersion.split("MSIE");
			browserVersion=parseFloat(temp[1]);
		}
		ImageLoadApplyFilter=(document.all && typeof(Element.filters)=="object" && Element.currentStyle && browserVersion<7 && browserVersion!=0);
	}
	
	if ( ImageLoadApplyFilter ) {
		var newElement=document.createElement("SPAN");
		newElement.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+Element.src+"')";
		newElement.style.width=Element.width+"px";
		newElement.style.height=Element.height+"px";
		newElement.style.display="inline-block";
		newElement.style.position="relative";
		// Get margins from the image and remove.
		newElement.style.marginTop=Element.currentStyle.marginTop; Element.style.marginTop=0+"px";
		newElement.style.marginRight=Element.currentStyle.marginRight; Element.style.marginRight=0+"px";
		newElement.style.marginBottom=Element.currentStyle.marginBottom; Element.style.marginBottom=0+"px";
		newElement.style.marginLeft=Element.currentStyle.marginLeft; Element.style.marginLeft=0+"px";
		Element.applyElement(newElement);
		Element.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
	}
} // ImageLoad