function preloadImages() 
{
  var d=document; if(d.images){ if(!d.p) d.p=new Array();
    var i,j=d.p.length,a=preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.p[j]=new Image; d.p[j++].src=a[i];}}
}

function openWindow(url)
{
    window.open(url,"","width=500, height=400, left=150, top=100,border=0, scrollbars=yes, resizable=yes");
}

function openPopUpWindow(url, w, h)
{
    window.open(url,"","width="+w+", height="+h+", left=150, top=100,border=0, scrollbars=yes, resizable=yes");
}

function openWindow1(url)
{
    window.open(url,"","width=400, height=200, left=150, top=100,border=0, scrollbars=yes, resizable=yes");
}

function openWindow2(url)
{
    window.open(url,"","width=600, height=600, left=150, top=100,border=0, scrollbars=yes, resizable=yes");
}


function sendAbstract(url, winwidth, winheight)
{
    leftpos = 0;
    toppos  = 0;    
    if (screen) {    
        leftpos = (screen.width - winwidth) / 2;
        toppos  = (screen.height - winheight) / 2;
    }        
    window.open(url,'sendAbstract','height='+winheight+',width='+winwidth+',resizable=yes,left='+leftpos+',top='+toppos+',scrollbars=no')
}

function Menu(url) 
{
	window.open(url, "menu", "height=350,width= 470,"+"directories=no,location=no,menubar=no," +"resizable=no,status=no,toolbar=no,history=no,scrollbars=yes");
}

function closeAndUpdateParent(url)
{
	opener.document.location=url;
	window.close();
}

function scrollTo(id)
{
	  document.getElementById(id).scrollIntoView(true);
}
/*returns the nextSibling ignoring text nodes*/
function getNextSibling(startNode)
{
	nextNode= startNode.nextSibling;
	while (nextNode!=null && nextNode.nodeType != '1')
	{
 		nextNode = nextNode.nextSibling;
	}
	return nextNode;
}
/*returns the previousSibling ignoring text nodes*/
function getPreviousSibling(startNode)
{
	prevNode= startNode.previousSibling;
	while (prevNode!=null && prevNode.nodeType != '1')
	{
 		prevNode = prevNode.previousSibling;
	}
	return prevNode;
}

/*cuts the text in the given html element at the first "." after "truncCharCount"-current length and inserts a "more" link to see the whole text.*/
function toggleMore(truncCharCount, elementId, moreLinkName, lessLinkName)
{
	var elem=document.getElementById(elementId);
	if (!document.getElementById('moreLink'))
	{
		if(document.getElementById('lessLink'))
			elem.removeChild(document.getElementById('lessLink'));
		var len1 = 0;
		var secPart = document.createElement('span');
		var limitReached=new Boolean(false);
		move = new Array();
		for (var i=0; i<elem.childNodes.length; i++)
		{	
			var part = elem.childNodes[i];
			var len = textVal(part);
			if (len1 + len > truncCharCount) 
			{
				//if this is a text node, cut the text at the last ". " before truncCharCount is reached
				if(part.nodeType==3 && limitReached==false && part.nodeValue.lastIndexOf('. ', truncCharCount-len1)!=-1)
				{
					var text=part.nodeValue;
					var lastIndex=text.lastIndexOf('. ', truncCharCount-len1);
					var textPart1=text.substring(0, lastIndex+2);
					var textPart2=text.substring(lastIndex+2);
					part.nodeValue=textPart1;
					textNode1=document.createTextNode(textPart1);
					textNode2=document.createTextNode(textPart2);
					move[move.length]=textNode2; 
				}
				else
					move[move.length] = part;
					
				limitReached=new Boolean(true);
			}
			len1 += len;
		}
		for (var i=0; i<move.length; i++)
			secPart.appendChild(move[i]);
		
		if (len1 > truncCharCount)
		{
			secPart.style.color = 'red';
			secPart.style.display = 'none';
			secPart.id="detailDesc";
			var moreLink = document.createElement('a');
			if(typeof lessLinkName!='undefined')
				moreLink.href="javascript:toggleMore("+truncCharCount+", '"+elementId+"', '"+moreLinkName+"', '"+lessLinkName+"')";
			else
				moreLink.href="javascript:toggleMore(0, '"+elementId+"')";
			moreLink.appendChild(document.createTextNode(moreLinkName));
			moreLink.id="moreLink";
			elem.appendChild(moreLink);
			elem.parentNode.insertBefore(secPart, elem.nextSibling);
		}
	}
	else
	{
		var secPart = document.getElementById('detailDesc');
		elem.removeChild(document.getElementById('moreLink'));
		for (var i=0; i<secPart.childNodes.length; i++)
		{	
			var part = secPart.childNodes[i];
			elem.appendChild(part.cloneNode(true));
		}
		elem.parentNode.removeChild(document.getElementById('detailDesc'));
		if(typeof lessLinkName!='undefined')
		{
			var lessLink = document.createElement('a');
			lessLink.href="javascript:toggleMore("+truncCharCount+", '"+elementId+"','"+moreLinkName+"','"+lessLinkName+"')";
			lessLink.appendChild(document.createTextNode(lessLinkName));
			lessLink.id="lessLink";
			elem.appendChild(document.createTextNode(' '));
			elem.appendChild(lessLink);
		}
	}
}

function textVal (elem)
{
	if (elem.nodeType == 1 && elem.hasChildNodes())
	{
		var count = 0;
		for (var i=0; i<elem.childNodes.length; i++)
		{
			var x = elem.childNodes[i];
			count += textVal(x);
		}
		return count;
	}
	else if (elem.nodeType == 3)
		return elem.data.length;
	else
		return 0;
}

function applyStyle(elementId, styleClassName)
{
	document.getElementById(elementId).setAttribute('class', styleClassName);
}

function switchStyle(id1, style1, id2, style2)
{
	if (navigator.appName != 'Microsoft Internet Explorer')
	{
		applyStyle(id1, style1);
		applyStyle(id2, style2);
		return false; // don't follow hyperlink
	}
	return true; // follow hyperlink
}