/**
 * Change the font size of all <span> elements within the current page.
 * @param inc   The size will be modified by the specified value.
 */
function changeFontSize(inc)
{
  var elems = document.getElementsByTagName('span');
  var elem;
  for(n=0; n<elems.length; n++) {
      elem = elems[n];
      
      if(elem.style){
          if(elem.style.fontSize) {
              var size = parseInt(elem.style.fontSize.replace("px", ""));
          }
          else {
              var size = 12;
          }
          elem.style.fontSize = size+inc + 'px';
      }
   }
}

/**
 * Get the element position from the top.
 * @param element  The element to find the top position for.
 */
function getPosTop(element)
{
    var el = element;
    var posTop = 0;
    while(el)
    {
        posTop += el.offsetTop;
        el = el.offsetParent;
    }
    return posTop;
}

/**
* Get the window width.
*/
function getWindowWidth(){
    if (window.innerWidth) {
        return window.innerWidth;
    }
    else if (document.body && document.body.offsetWidth) {
        return document.body.offsetWidth;
    }
    else {
        return 0;
    }
}

/**
 * Get the element position from the left.
 * @param element  The element to find the left position for. 
 */
function getPosLeft(element){
    if (element == null)
	return 0;
    var el = element;
    var posL = 0;
    var stri =element.id+"\n";
    
    while(el){
        stri=stri+"ID: "+el.id+"Type: "+el.tagName+", Left: "+el.offsetLeft+"\n";
        posL += el.offsetLeft;
        el = el.offsetParent;
    }
   
    return posL;
}

// The id from the frame to expand when searching
var frameToExpandId = "frameFader";

/**
 * This method expands a div and places that div below a specified div.
 * @param divIdStart    The start element where to expand the div underneath.
 * @param divIdToExpand The element to expand.
 */
function expandDiv(divIdStart,divIdToExpand){
    var start = document.getElementById(divIdStart);
    var divToExpand = document.getElementById(divIdToExpand);
    
    var cT = 122;
    var cL = 310;
    if (dojo.render.html.ie60) {// ie6
    	cT = 130;
    	cL = 230;
    } else if (dojo.render.html.ie70) {
		cT = 130;
    	cL = 295;
	} else if (dojo.render.html.opera) {
		cT = 125;
    	cL = 270;
	}

        
    var topPos = getPosTop(start) - cT;
    var leftPos = getPosLeft(start) - cL;

    divToExpand.style.top = (topPos + 24) + "px";
    divToExpand.style.left = (leftPos - 339) +"px";
    
//    divToExpand.style.top = (topPos + 24 - 125) + "px";
//    divToExpand.style.left = (leftPos - 339 - 310) +"px";
    
    if((leftPos - 496) < 1){
        divToExpand.style.left = "0px";
    }
    
    var frameToExpand = document.getElementById(frameToExpandId);

    frameToExpand.style.top = topPos + 24 + "px";
    frameToExpand.style.left = leftPos - 340 + "px";
    
    if((leftPos - 496) < 1){
        frameToExpand.style.left = "0px";
    }

    //if(implodeDiv.style.display!='none')
    //{
      //  dojo.lfx.implode("indexSearchPopup",start, 500).play();
        // dojo.lfx.implode("indexSearchFramePopup", start, 500).play();
        //shiFadeElementIn('documentwindow');
     //}

    if(divToExpand.style.display=='none')
    {
        dojo.lfx.explode(start,frameToExpandId, 500).play();
        dojo.lfx.explode(start,divToExpand.id, 500).play();
        //shiFadeElementOut('documentwindow');
    }
    else 
    {

        dojo.lfx.implode(divToExpand.id, start, 500).play();
        dojo.lfx.implode(frameToExpandId, start, 500).play();
        //shiFadeElementIn('documentwindow');
    }
}


/**
 * Displays the list of extended search options.
 */
function showExtendedSearchOptions(){
    hideAllExtendedSearchDivs();
    
    document.getElementById('searchArea:searchform:extendedsearchoptions').style.display = 'block';
}

/**
 * Hides all divs for extended search.
 */
function hideAllExtendedSearchDivs(){
    document.getElementById('searchArea:searchform:vorschriftensuche').style.display = 'none';
    document.getElementById('searchArea:searchform:bgregelwerkssuche').style.display = 'none';
    document.getElementById('searchArea:searchform:stoffdatensuche').style.display = 'none';
    document.getElementById('searchArea:searchform:fachinformationssuche').style.display = 'none';
    document.getElementById('searchArea:searchform:extendedsearchbuttons').style.display = 'none';
}

/**
 * Shows the extended search div with the given id.
 * Hides all other extended search divs.
 * @param divId The id from the div.
 */
function showExtendedSearch(divId){

    hideAllExtendedSearchDivs();
    
    document.getElementById('searchArea:searchform:extendedsearchoptions').style.display = 'none';
    document.getElementById(divId).style.display = 'inline';
    document.getElementById('searchArea:searchform:extendedsearchbuttons').style.display = 'inline';
}

var g_iIsFadedCounter = new Array();

/**
 * Fades out an element.
 * @param   sFadeElementId  The id from the element to fade out.
 */
function shiFadeElementOut(sFadeElementId){
    if(document.getElementById(sFadeElementId) != null){
        if(g_iIsFadedCounter[sFadeElementId] == undefined || g_iIsFadedCounter[sFadeElementId] == 0){
            void(dojo.style.setOpacity(dojo.byId(sFadeElementId), 0.3));
            g_iIsFadedCounter[sFadeElementId] = 1;
        }
        else{
            g_iIsFadedCounter[sFadeElementId] = g_iIsFadedCounter[sFadeElementId] +1;
        }
    }
    else{
        if(g_iIsFadedCounter[sFadeElementId] == undefined || g_iIsFadedCounter[sFadeElementId] == 0){
            void(dojo.style.setOpacity(dojo.byId('hitlistWindow'), 0.3));
            g_iIsFadedCounter[sFadeElementId] = 1;
        }
        else{
            g_iIsFadedCounter[sFadeElementId] = g_iIsFadedCounter[sFadeElementId] +1;
        }
    }
}

/**
 * Fades in an element.
 * @param   sFadeElementId  The id from the element to fade out.
 */
function shiFadeElementIn(sFadeElementId){
    if(document.getElementById(sFadeElementId) != null){
        g_iIsFadedCounter[sFadeElementId] = g_iIsFadedCounter[sFadeElementId]-1;
        if(g_iIsFadedCounter[sFadeElementId] == 0){
            void(dojo.style.setOpacity(dojo.byId(sFadeElementId), 1.0));
        }
    }
    else{
        g_iIsFadedCounter[sFadeElementId] = g_iIsFadedCounter[sFadeElementId]-1;
        if(g_iIsFadedCounter[sFadeElementId] == 0){
             void(dojo.style.setOpacity(dojo.byId('hitlistWindow'), 1.0));
        }
    }
}
/*
 * ab: was used to resize the overlays, but they are resized by pure css now.

function setSemitransparentOverlay(overlayDivID, elementIDorName)
{
	var overlayDiv = document.getElementById(overlayDivID);
    if (overlayDiv == null)
        return;
	
	//alert("found: " + overlayDivID);
	
    var mainDiv = document.getElementById(elementIDorName);
    if (mainDiv == null) 
	{
		mainDiv = document.getElementsByTagName(elementIDorName)[0];
		if (mainDiv == null) 
			return;
	}
	
	//alert("found: " + elementIDorName);

    var height = mainDiv.offsetHeight;
    var width = mainDiv.offsetWidth;

    if(height < 9)
    {
        window.setTimeout('setSemitransparentOverlay(' + overlayDivID + ', ' + elementIDorName + ');',200);
        return;
    }

	var leftPosition = getPosLeft(mainDiv);
	var topPosition = getPosTop(mainDiv);
	
	//alert("height: " + height + " width: " + width + " left: " + leftPosition + " top: " + topPosition);
	
	overlayDiv.style.position = "absolute";
	overlayDiv.style.left = leftPosition + "px";
	overlayDiv.style.top = topPosition + "px";
    overlayDiv.style.height=height+"px";
    overlayDiv.style.width=width+"px";
}
*/
/*
 * ab: This method was used to place a question overlay inside of the profile service.
 * I think, it is not used anymore
function setMessageDivPosition(messageDivID, iframeID, relativeElementIDorName)
{
    var messageDiv = document.getElementById(messageDivID);
    if (messageDiv == null)
        return;

    var mainDiv = document.getElementById(relativeElementIDorName);
    if (mainDiv == null) 
	{
		var elementList = document.getElementsByTagName(relativeElementIDorName);
		if (elementList.length == 0) 
			return;
		
		mainDiv = elementList[0];
		if (mainDiv == null) 
			return;
	}	

    var messageIFrame = document.getElementById(iframeID);
    if (messageIFrame == null)
    {
        window.setTimeout('setMessageDivPosition(' + messageDivID + ', ' + iframeID + ', ' + relativeElementIDorName +');',99);
        return;
    }

    var width = mainDiv.offsetWidth;
    var messageWidth = messageDiv.offsetWidth;

    if(width < 9 || messageWidth < 9)
    {
        window.setTimeout('setMessageDivPosition(' + messageDivID + ', ' + iframeID + ', ' + relativeElementIDorName +');',99);
        return;
    }
	
	var height = mainDiv.offsetHeight;
    var messageHeight = messageDiv.offsetHeight;

    var xposition = (width / 2) - (messageWidth / 2);
	
    messageDiv.style.left=xposition+"px";

    messageIFrame.style.height=messageDiv.style.height;
    messageIFrame.style.width=messageDiv.style.width;
    messageIFrame.style.top=messageDiv.style.top;
    messageIFrame.style.left=messageDiv.style.left;
    messageIFrame.style.display='block';
}
*/

var g_lnkMsgVsbCtr = 0; // linkMessageVisibilityCounter
function openWindowNameWithFocus(url, name)
{
	if (setLinkMessageVisibility(true))
	{
		g_lnkMsgVsbCtr++;
		window.setTimeout("setLinkMessageVisibility(false);", 10000);
	}
	
	var otherWindow = window.open(url, name, '');
	otherWindow.focus();	
	return true;
}

function setLinkMessageVisibility(visible)
{
	var linkMsgDiv = document.getElementById('linkMessage:linkMessage');
	if(linkMsgDiv == null)
		linkMsgDiv = document.getElementById('linkMessage');
	if (linkMsgDiv != null)
	{
		if (visible) 
			linkMsgDiv.style.display = "inline";
		else
		{
			g_lnkMsgVsbCtr--;
			if (g_lnkMsgVsbCtr <= 0)
			{
				g_lnkMsgVsbCtr = 0;
				linkMsgDiv.style.display = "none";
			}
		}
		return true;
	}
	
	return false;
}

function printCurrentDocument() {
	if(frames['documentwindow'].location.href.toLowerCase().indexOf("q=") > 0)
    {
        var sUrl = setparam(frames['documentwindow'].location.href, "q","");
        sUrl = setparam(sUrl, "printyourself","1");
        doSHIDownload(sUrl);
        return;
    }
    frames['documentwindow'].focus();
    frames['documentwindow'].print();
    return;
}

/**
 * 
 * @author *, mf
 * @param selectElement
 * @param isUserPersonalized, because only personalized user are allowed to addtoprofile and addtofavorites
 * @param showOrderModuleForProfileService is true, if user has no right to add doc to profile service
 * @param documentOrderAble is true if a vorschriftendienst document is in view but not licensed by user
 * @return
 */
function selectWMDocumentAction(selectElement, isUserPersonalized, showOrderModuleForProfileService, documentOrderAble)
{
	// ATTENTION: return always false if handling was completely done
	// by Javascript and no backing bean has to be involved!
    
	var valueLC = selectElement.value.toLowerCase(); 
	if (valueLC == "print")
	{
		if (frames['documentwindow'].location.href.toLowerCase().indexOf("q=") > 0) {
			var sUrl = setparam(frames['documentwindow'].location.href, "q", "");
			sUrl = setparam(sUrl, "printyourself", "1");
			doSHIDownload(sUrl);
			return false;
		}
		frames['documentwindow'].focus();
		frames['documentwindow'].print();
		selectElement.value = 0;
		return false;
	}
	
	else if(valueLC == "showlink")
    {
		//if (g_isUserPersonalized) {
			var _linkField = document.getElementById('generatedLinkForm:generatedLink');
			if (_linkField != null) {
				_linkField.style.display = 'inline';
			}
			
			setsizes();
			selectElement.value = 0;
			return;
			//selectElement.value = 0;
			//return false;
		//}
		
		//document.forms['documentSelected'].submit();
    } 	
	else if(!isUserPersonalized && (valueLC == "addtofavorites" || valueLC == "addtoprofileservice"))
	{
		Richfaces.showModalPanel('errorpopUpNotPersonalizedUser',{width:250, top:200});
		selectElement.value = 0;
		return false;
	} 	
	else if (showOrderModuleForProfileService && !documentOrderAble && valueLC == "addtoprofileservice") {
		// document is not in vorschriftendienst, such as DGUV, but user tries to add the document.
		Richfaces.showModalPanel('popUpDocumentNotInRegulation',{width:250, top:200});
		selectElement.value = 0;
		return false;
	} 
	else if (showOrderModuleForProfileService && valueLC == "addtoprofileservice")
	{
		Richfaces.showModalPanel('popUpOrderModuleForProfileService',{width:250, top:200});
		selectElement.value = 0;
		return false;

	}
	document.forms['docAction'].submit();
	selectElement.value = 0;
    return true;
}

/**
 * @author mf
 */
function selectNewslistAction(eleId) {
	ele = document.getElementById(eleId);
	ele.value = 0;	
}

/**
 * @author mf
 */
function openNewslistTreeExportDownload() {
	window.open('./newslisttreeexport','newslisttreeexport');
}



