///<summary>setStyle</summary>
///<param name="objId" type="String">element id</param>
///<param name="style" type="String">the style to be changed</param>
///<param name="value" type="String">the value assigned to the style</param>
function setStyle(objId, style, value)
{
   document.getElementById(objId).style[style]= value;
}


///<summary>setStyle by element</summary>
///<param name="element" type="Element">element</param>
///<param name="style" type="String">the style to be changed</param>
///<param name="value" type="String">the value assigned to the style</param>
function setStyleByElement(element, style, value)
{
   element.style[style]= value;
}


///<summary>usage getStyle</summary>
///<param name="el" type="String">element</param>
///<param name="style" type="String">the style to be get</param>
function getStyle(el, style)
{
   if(!document.getElementById) return;
   
     var value = el.style[toCamelCase(style)];
   
    if(!value)
        if(document.defaultView)
            value = document.defaultView.
                 getComputedStyle(el, "").getPropertyValue(style);
       
        else if(el.currentStyle)
            value = el.currentStyle[toCamelCase(style)];
     
     return value;
}
 
///<summary>
///toCamelCase(input)
///Converts string input to a camel cased version of itself.
///For example:
///     toCamelCase("z-index"); // returns zIndex
///     toCamelCase("border-bottom-style"); // returns borderBottomStyle.
///</summary>
///<param name="s" type="String">the style value</param>
function toCamelCase(s)
{
	for(var exp = toCamelCase.exp; 
		exp.test(s); s = s.replace(exp, RegExp.$1.toUpperCase()) );
	return s;
}

toCamelCase.exp = /-([a-z])/;


///<summary>AdjustBoxHeight</summary>
///<param name="boxID" type="String">The ID from the MainBox / Container</param>
function AdjustBoxHeight(boxID, adjustTagClassName)
{    
    var PADDING_BOTTOM = 8;
    var offset = 0;    
    
    var box = document.getElementById(boxID);
    
    ///looking for adjustTag!
    var boxAdjustTagsElements = GetNodesByClassName(box, adjustTagClassName);
    
    var heightestHight = (GetHeightestHight(boxAdjustTagsElements) - PADDING_BOTTOM) + "px";    
    
    for (var i = 0; i < boxAdjustTagsElements.length; i++)
    {    
        currentNodeHeight = setStyleByElement(boxAdjustTagsElements[i], "height", heightestHight);
    }  
}


///<summary>AdjustEventBoxHeight</summary>
function AdjustEventBoxHeight(leftBoxID, rightBoxID)
{    
    var PADDING_BOTTOM = 8;
    var offset = 0;
    var leftBox = document.getElementById(leftBoxID);
    var rightBox = document.getElementById(rightBoxID);    
    ///looking for adjustTag!
    var leftBoxAdjustTags = GetNodesByClassName(leftBox, "adjustTag");
    var rightBoxAdjustTags = GetNodesByClassName(rightBox, "adjustTag");
 
    if(leftBox.offsetHeight > rightBox.offsetHeight)
    {    
        offset = leftBox.offsetHeight - rightBox.offsetHeight;
        var node = rightBoxAdjustTags[rightBoxAdjustTags.length - 1];        
        node.style.height = (offset + node.offsetHeight - PADDING_BOTTOM) + "px";
    }
    else
    {  
        offset = rightBox.offsetHeight - leftBox.offsetHeight;        
        var node = leftBoxAdjustTags[leftBoxAdjustTags.length - 1];
        node.style.height = (offset + node.offsetHeight)  + "px";
    }
}

///<summary>numberFormat</summary>
function numberFormat(nvalue,n,k,t)
{
    // fix really weird javascript bug
    if (nvalue=='00.00') {
        nvalue = 0;
    }
    
	nvalue_str = String(Math.round(eval(nvalue) * Math.pow(10, n)));
	
	// when nvalue_str == 0
	if (nvalue_str.charAt(0) == 0)
	{
		nvalue_str += nvalue_str;
	}

	nvalue_start = k+nvalue_str.substr(nvalue_str.length-n, n);

	nvalue_start_t = nvalue_str.substr(0, nvalue_str.length-n);

	while (nvalue_start_t.length>3)
	{
		nvalue_start = t+nvalue_start_t.substr(nvalue_start_t.length-3, 3)+nvalue_start;
		nvalue_start_t = nvalue_start_t.substr(0, nvalue_start_t.length-3);
	}
	
	fvalue = nvalue_start_t + nvalue_start;
	
	if (fvalue.charAt(0) == k)
	{
		fvalue="0" + fvalue;
	}

	return fvalue;
}


///<summary>Trim</summary>
function Trim(s)
{
    while (s.substring(0,1) == ' ')
    {
    s = s.substring(1,s.length);
    }

    while (s.substring(s.length-1,s.length) == ' ')
    {
    s = s.substring(0,s.length-1);
    }

    return s;
}


///<summary>GetHeightestNode</summary>
///<param name="elements" type="Array">current Nodes</param>
///<returns type="Integer"></returns>
function GetHeightestHight(elements)
{
    var height = 0;
    var currentNodeHeight = 0;
        
    for (var i = 0; i < elements.length; i++)
    {   
        currentNodeHeight = elements[i].offsetHeight;
    
        if(height < currentNodeHeight)
        {
            height = currentNodeHeight;
        }
    } 
    
    return height;
}


///<summary>GetNodesByClassName</summary>
///<param name="node" type="Element">Current Node</param>
///<param name="className" type="String">className</param>
///<returns type="Array"></returns>
function GetNodesByClassName(node, className)
{
    var findNodes = new Array();
    
    DoSearchNodes(findNodes, node, className);
    
    return findNodes;
}


///<summary>DoSearchNodes</summary>
function DoSearchNodes(findNodes, node, className) 
{
    if (node) 
    {
        if (HasNodeThisClass(node.attributes, className)) {
            findNodes.push(node);
        }

        if (node.hasChildNodes()) {
            var childNodes = node.childNodes;

            for (var i = 0; i < childNodes.length; i++) {
                DoSearchNodes(findNodes, childNodes[i], className)
            }
        }
    }
        
    return findNodes;
}


///<summary>HasNodeThisClass</summary>
function HasNodeThisClass(attributes, className)
{
    if(attributes)
    {
        var att = attributes.getNamedItem("class");
        if(att)
        {
            var value = att.value;
            if(value.indexOf(className) != -1)
            {
                return true;
             }
             else
             {
                return false;
             }
        }
    }
    else
    {
        return false;    
    }        
}


///<summary>popupCentered</summary>
function popupCentered(url, name, w, h)
{
    var windowprops = /* scrollbars=no,resizable=no, */"scrollbars=yes,width=" + w + ",height=" + h;
    if (window.screen) {
        var xPos = (screen.width - w) / 2;
        var yPos = (screen.height - h) / 2;
        windowprops = /* scrollbars=no,resizable=no, */"scrollbars=yes,left=" + xPos + ",top="
          + yPos + ",width=" + w + ",height=" + h;
    }

    popupWin = window.open(url,name,windowprops);
    if (popupWin) {
      popupWin.focus();
    }
}


///<summary>CheckCopy</summary>
function CheckCopy(ev) {
  if (ev.ctrlKey && ev.keyCode == 67) {
    alert("Bitte achten Sie auf die korrekte Schreibweise Ihrer E-Mailadresse!");
    return false;
  }
  return true;
}


///<summary>DebugMessage</summary>
function DebugMessage(message) 
{
    if(false) // disabled
    {
        var div = $get('divDebugJS');
        if (div) 
        {
            div.innerHTML += message + '<br/>\n';
            div.style.display = 'block';
        }
    }
}

