var timervar = null;
var appbaseBodyOnload = new Array();
var menusUnlocked = 'yes';

function printArticle( artUrl ){
    behind = window.open(artUrl ,'printwin','height=650,width=810,status=yes,toolbar=yes,directories=no,menubar=no,location=no,resizable=no,scrollbars=yes');
}

function getContentAreaHeight() {
    if (document.all) {
        var ret  =  document.all["menuheighholder"].height;
    } else if (document.getElementById) {
        var ret =  document.getElementById("menuheighholder").height;
    }

    return  ret;

}

function getAbsolutePos(el){
    for (var lx=0,ly=0;el!=null;
    lx+=el.offsetLeft,ly+=el.offsetTop,el=el.offsetParent);
    return {x:lx,y:ly}
}


/**
* Sets the active stylesheet for the page.
*
*
*/
function setActiveStyleSheet(title) {
    var i, a, main;
    for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
        if(a.getAttribute("rel").indexOf("style") != -1
        && a.getAttribute("title")) {
            a.disabled = true;
            if(a.getAttribute("title") == title) {
                a.disabled = false;
            }
        }
    }
}

function getActiveStyleSheet() {
    var i, a;
    for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
        if(a.getAttribute("rel").indexOf("style") != -1
        && a.getAttribute("title")
        && !a.disabled) {
            return a.getAttribute("title");
        }
    }
    return null;
}

var debugwin;
var debugwinopened = false;
function debug(str) {
    //return;
    // alert(str); return ;
    if (debugwinopened == false || !debugwin) {
        debugwin = window.open('about:blank','debug_window','width=1000,height=700, toolbars=no,menu=no,scrollbars=yes');
        debugwin.document.write("<h3>CorePublish Javascript Debug</h3>");
        debugwinopened = true;
    }
    debugwin.document.write( str );
    debugwin.focus();
    // make the debug win go away after a while..
    setTimeout("self.focus()",2000);
    // alert(str);
}

/**
*   Function displays the metods and properties of an javascript object
*   @param Object inarray - The array to serialize.
*/
function jsdebug(inarray, level) {
    var result = '';
    var sep = '';

    if (level > 5) {
        return;
    }

    if(inarray!=null) {
        for(var key in inarray) {

            if (inarray[key] == null) {
                continue;
            }

            result = "<ul>" +  typeof inarray[key];
            result += ' [' + key + '] => ';

            try {
                tmp = inarray[key].toString();
                result += tmp.substring(0,90) + "";
            } catch (e) {
                result += tmp + "";
            }

            debug(result);

            if (typeof inarray[key] == "object" || typeof inarray[key] == "function") {
                jsdebug(inarray[key],level+1);
            }

            debug("</ul>");
            /*
            if(typeof inarray[key] == 'object') {
            result += '[object]';
            } else {
            result += inarray[key].toString();
            }     */



            /*if (result.length > 1000) {
            alert(result + " (continues >>) ");
            result = "";
            } */

        }
    } else {
        result = "[null]";
    }
    // alert(result);
}

function displayLayer(layerId) {
    layerObj = document.getElementById(layerId);
    if(layerObj != null) {
        layerObj.style.display = 'block';
    }
}

function hoverLayer(layerId) {
    layerObj = document.getElementById(layerId);
    if(layerObj != null) {
        layerObj.style.display = 'inline';
        layerObj.style.position = 'absolute';
    }
}

function hideLayer(layerId) {
    layerObj = document.getElementById(layerId);
    if(layerObj != null) {
        layerObj.style.display = 'none';
    }
}

var hideAllHovermenuItems = function(id) {
    hovermenus = $('hovermenu-' + id).getElementsByClassName('hovermenuitem');
    for(i=0;i<hovermenus.length;i++) {
       hovermenus[i].style.display = 'none';
    }
}

function limitText(limitField, limitCount, limitNum) {
	limitCount = $(limitCount);
	limitField = $(limitField);
	
	if (limitField.value.length >= limitNum-5) {
		limitCount.addClassName('charcounter-exceeded');
	} else {
		limitCount.removeClassName('charcounter-exceeded');
	}
	limitCount.value = parseInt(limitNum) - parseInt(limitField.value.length);
}


function switchLayers(layerId) {
    layerObj = document.getElementById(layerId);
    layerToHide = document.getElementById(layerId + "static");
    
    if(layerObj != null && layerToHide != null) {
        layerObj.style.display = 'block';
        layerToHide.style.display = 'none';
        layerObj.focus();
    }
}


function checkInputValue(layerId) {
    layerObj = document.getElementById(layerId);
        
    if(layerObj != null) {
    	if (layerObj.value == "") {
    		document.getElementById(layerId + "static").style.display = 'block';
    		document.getElementById(layerId).style.display = 'none';
    	}
    
    }
}

// When selecting the "all" checkbox in a group, this function will unselect all subelements, leaving only the "all" choice checked
function checkboxSelectAll(groupID, type) {
	if ($("filter-main"+type+"-"+groupID).checked == 1) {
		$("subcategories-"+groupID).childElements().each(function(element) {
			inputelementID = element.firstDescendant().identify();
		
			if (inputelementID.substring(0, 11) != "filter-main") {
				$(inputelementID).checked = 0;
			}
		
		});
	}
}

// Make sure the "all" choice is unchecked if a subelement is checked
function checkboxUnselectAll(groupID, type) {
	$("filter-main"+type+"-"+groupID).checked = 0;
}

function toggleSubcategories(categoryID) {
	$('subcategories-' + categoryID).toggle();
	
	var image = 'filter-expand.png';
	if ($('subcategories-' + categoryID).visible()) {
		image = 'filter-collapse.png';
	}

	$('maincategorylink-' + categoryID).setStyle({
		backgroundImage: 'url(../themes/designbasen/images/'+image+')'
	});
	
	return false;
	
}

function toggleProducts(categoryID) {

	//console.log(categoryID);
	$('toggleWrapper-' + categoryID).toggle();
	
	var image = 'products-expand.png';
	if ($('toggleWrapper-' + categoryID).visible()) {
		image = 'products-collapse.png';
	}

	$('productToggler-' + categoryID).setStyle({
		backgroundImage: 'url(../themes/designbasen/images/'+image+')'
	});
	
	return false;
}
function clearValue(element,value){
		
	if(element.value==value){
		element.value="";
				
	}
	
}
//Accordian menu on norskdesign.no
function animatedMenuObserver(elementID) {
   // Active menu item (class sub-active or main-active) must be open when loading the menu, all other ul lists are closed
   $(elementID).select('li ul').each(function(element) {
       element.hide();
   });
     mainActiveElement = $(elementID).select('li.main-active ul').first();
   if (typeof(mainActiveElement) == 'object') {
       Effect.BlindDown(mainActiveElement, {duration: 0.3});
       mainActiveElement.previous().toggleClassName('expanded');
   }
   subActiveElement = $(elementID).select('li.sub-active ul').first();
   if (typeof(subActiveElement) == 'object') {
       Effect.BlindDown(subActiveElement, {duration: 0.3});
       subActiveElement.previous().toggleClassName('expanded');
   }
     $(elementID).select('li a').each(function(element) {

       // Check for child ul element
           childelements = element.next('ul');
           if (typeof(childelements) == 'object') {
               if (!element.hasClassName('expanded')) {
                   element.toggleClassName('collapsed');
               }
           }
       // Add effects when collapsing/expanding menu items on click
       element.observe('click', function(event) {
           // Find child ul element, show content
           childelements = element.next('ul');
                     if (typeof(childelements) == 'object') {
               event.stop();
               if (childelements.visible()) {
                   // Closes the menu
                   if (menusUnlocked == 'yes') {
                       lockMenus();
                       Effect.BlindUp(childelements, {duration: 0.3});
                       element.addClassName('collapsed');
                       element.removeClassName('expanded');
                       setTimeout('unlockMenus()', 600);
                   }
               } else {
                   // Opens the menu
                   if (menusUnlocked == 'yes') {
                       lockMenus();
                       Effect.BlindDown(childelements, {duration: 0.3});
                       element.removeClassName('collapsed');
                       element.addClassName('expanded');
                       setTimeout('unlockMenus()', 600);
                   }
               }
           }
       });
   });
} 
function lockMenus() {
	menusUnlocked = 'no';
}

function unlockMenus() {
	menusUnlocked = 'yes';
}

function splitArticlelistHeightCorrection() {
	var articlelists = $$('div.split-articlelist');
	if (Object.isArray(articlelists)) {
		if (articlelists.size() == 1) {
			// Use height correction if twocolumn-mode is in use
			var articlelistElement = articlelists.first();
			if (articlelistElement.hasClassName('twocolumn')) {
				liElements = articlelistElement.select('ul li');
				if (Object.isArray(liElements) && liElements.size() > 0) {
					manipulateHeightByLiElements(liElements);
				}
			}
			
		} else if (articlelists.size() >= 2) {
			
			if (articlelists.size() > 2) {
				listsToUse = new Array();
				articlelists.each(function(articlelist) {
					if (articlelist.descendantOf($('placeholder-trcol2')) || articlelist.descendantOf($('placeholder-trcol3'))) {
						listsToUse.push(articlelist);
					}
				});
			} else {
				listsToUse = articlelists;
			}
			
			
			if (listsToUse.size() == 2) {
				// 2 lists, assumed to be one column each
				liElements1 = listsToUse[0].select('ul li');
				liElements2 = listsToUse[1].select('ul li');
				
				smallestCount = Math.min(liElements1.size(), liElements2.size());
				
				newElements = new Array();
				for (i=0; i<smallestCount; i++) {
					newElements.push(liElements1[i]);
					newElements.push(liElements2[i]);
				}
				
				manipulateHeightByLiElements(newElements);
			}
		}
	}
	
}


function manipulateHeightByLiElements(liElements) {
	loopCount = liElements.size();

	for (i=0; i<loopCount; i=i+2) {
		if (typeof(liElements[i+1]) != 'object') {
			continue;
		}
		
		// First, set height to auto for li elements
		// This is because this functionality is in use when changing fontsizes, and 
		// we have to make sure li height is set again from auto so that we get correct
		// height. Because ordinary height is not big enough when fontsize increases.
		liElements[i+1].setStyle({height: 'auto'});
		liElements[i].setStyle({height: 'auto'});
		
		heightLeft = liElements[i].getHeight();
		heightRight = liElements[i+1].getHeight();
		
		difference = Math.abs(heightLeft - heightRight);
		
		if (difference > 0) {
			if (heightLeft > heightRight) {
				paddingBottomLeft = parseInt(liElements[i].getStyle('paddingBottom').replace('px', ''));
				
				liElements[i+1].setStyle({height: (heightLeft-paddingBottomLeft)+'px'});
				liElements[i].setStyle({height: (heightLeft-paddingBottomLeft)+'px'});
				
			} else if (heightRight > heightLeft) {
				paddingBottomRight = parseInt(liElements[i+1].getStyle('paddingBottom').replace('px', ''));
				
				liElements[i+1].setStyle({height: (heightRight-paddingBottomRight)+'px'});
				liElements[i].setStyle({height: (heightRight-paddingBottomRight)+'px'});
				
			}
		}
		
	}
}


function isInteger(s){    
    return parseInt(s,10)==s;
}

function sumRow(rowID, sumID, totalCols, elementPrefix) {
    var i; 
    var sum = 0;
    
    for(i=0; i<totalCols; i++) {
        if(isInteger($(elementPrefix+rowID+'_'+i).getValue())) {
            sum += parseInt($(elementPrefix+rowID+'_'+i).getValue());        
        }        
    }    
    $(elementPrefix+rowID+'_'+sumID).setValue(sum);        
}

function sumCol(colID, totalRows, elementPrefix) {
    var i; 
    var sum = 0;    
    for(i=0; i<totalRows; i++) {        
        if(isInteger($(elementPrefix+i+'_'+colID).getValue())) {
            sum += parseInt($(elementPrefix+i+'_'+colID).getValue());        
        }       
    }   
    $(elementPrefix+totalRows+'_'+colID).setValue(sum); 
    
    sumTotal(3, totalRows, elementPrefix);
}

function sumTotal(colID, totalRows, elementPrefix) {
    var i; 
    var sum = 0;   
     
    for(i=0; i<totalRows; i++) {        
       // alert(elementPrefix+i+'_'+colID);        
        if(isInteger($(elementPrefix+i+'_'+colID).getValue())) {
            sum += parseInt($(elementPrefix+i+'_'+colID).getValue());        
        }       
    }   
    $(elementPrefix+totalRows+'_'+colID).setValue(sum);            
        
}




