﻿// used by various grids to indicate row-hover
var prevCss = "";
function changeBackColor(row, highlight, twinGridRowId)
{
	if (highlight)
	{
		prevCss = row.className;
		row.className += " hover";
	}
	else
		row.className = prevCss;

	if(twinGridRowId!=null)
	    document.getElementById(twinGridRowId).className = row.className;
}

cgb = changeBackColor; // alias for less html-output on grids :)

// grid click
function gc(row,twinMasterGridRowId) {
    if(twinMasterGridRowId!=null)
        row = document.getElementById(twinMasterGridRowId);

    location.href = "Default.aspx?id=15&vnr=" + row.cells[0].firstChild.id.substring(4);
}

// grid click
function gc2(row,vareNummer) {
    location.href = "Default.aspx?id=15&vnr=" + vareNummer;
}

var lastFactBoxId = null;
function ShowFactBox(imgId, id) {

    var hideElements = false;

    if(lastFactBoxId!=null) {
        var lastElement = $(lastFactBoxId);
        if(lastElement.style.display!="none") {
                
            var selObjs = document.getElementsByTagName("SELECT");
            /*for(var foo=0; foo<selObjs.length; foo++)
                selObjs[foo].style.visibility = "visible";*/
            showTopElements();
            
            Effect.toggle(lastElement,'appear');
        }
        else
            hideElements = true;
    }
    else
        hideElements = true;

    // var offset = Position.cumulativeOffset($(imgId).offsetParent);
    // var offset = Position.cumulativeOffset($(imgId));
    var offset = Position.cumulativeOffset($(imgId));
    var scrollOffset = Position.realOffset($(imgId));
    var boxElement = $(id);
    if(boxElement==null) {
        window.status = "Factbox not found: " + id;
        return;
    }
    
    boxElement.style.top = offset[1] + "px";
    boxElement.style.left = (offset[0] - scrollOffset[0]) + "px";

    // hide selectrs
    var selObjs = document.getElementsByTagName("SELECT");
    for(var foo=0; foo<selObjs.length; foo++) {
        // Position.within(boxElement, offset[0], offset[1]
        // selObjs[foo].style.visibility = "hidden";
    }
    
    if (hideElements || (lastFactBoxId != null && lastFactBoxId != id))
        hideTopElements($(id));

    Effect.toggle(boxElement,'appear');
    lastFactBoxId = id;
}

function HideFactBox(id) {
    // hide selectrs
    /*var selObjs = document.getElementsByTagName("SELECT");
    for(var foo=0; foo<selObjs.length; foo++)
        selObjs[foo].style.visibility = "visible";*/
    showTopElements();

    Effect.toggle(id,'appear');
}

// Added by Mikkel, for hiding dropdownlists
var TopElementsHidden = new Array();

function hideTopElements(element)
{
    var topElements = document.getElementsByTagName('Select');
    var elementCount = 0;
       
    for (var i = 0; i < topElements.length; i++)
    {
        if (doElementsCollide(element, topElements[i]))
        {
            //alert('collision');
            TopElementsHidden[elementCount] = topElements[i];
            elementCount++;
            topElements[i].style.visibility = 'hidden';
        }
        //else
            //alert('no collision');
    }
}

function showTopElements()
{
    for (var i = 0; i < TopElementsHidden.length; i++)
        TopElementsHidden[i].style.visibility = 'visible';
        
    TopElementsHidden = new Array();
}

function doElementsCollide(obj1, obj2)
{
    var offset = Position.cumulativeOffset(obj2);
    var dimensions = Element.getDimensions(obj2);
/*    var posX = getLeftPos(obj2);
    var posY = getTopPos(obj2);
    var height = getHeight(obj2);
    var width = getWidth(obj2);*/
    
    if (isPointInObject(offset[0], offset[1], obj1))
        return true;
        
    if (isPointInObject(offset[0]+dimensions.width, offset[1], obj1))
        return true;
        
    if (isPointInObject(offset[0]+dimensions.width, offset[1]+dimensions.height, obj1))
        return true;
        
    if (isPointInObject(offset[0], offset[1]+dimensions.height, obj1))
        return true;
        
    return false;
}

function isPointInObject(x, y, obj)
{
    /*var posX = getLeftPos(obj);
    var posY = getTopPos(obj);
    var height = getHeight(obj);
    var width = getWidth(obj);*/
    var offset = Position.cumulativeOffset(obj);
    var dimensions = Element.getDimensions(obj);
    var posX = offset[0];
    var posY = offset[1];
    var height = dimensions.height;
    var width = dimensions.width;
    
    //alert('x (' + obj.id + ') start = (' + posX + ', ' + posY + ')\nwidth = ' + width + '\nheight = ' + height + '\n\n' +
    //      'x2 start = (' + x + ', ' + y + ')');
    
    if (x < posX || x > (posX+width) )
        return false;
        
    if (y < posY || y > (posY+height) )
        return false;
        
    return true;
}

function getHeight(obj){
    var height = obj.offsetHeight;
    return height;
    
}

function getWidth(obj){
    var width = obj.offsetWidth;
    return width;
    
}

function getLeftPos(obj){
    var left = obj.offsetLeft;
    while(obj.parentNode && obj.parentNode.tagName!='BODY'){
        obj = obj.parentNode;
        left = left/1 + obj.offsetLeft/1;        
    }
    
    return left;
    
}
function getTopPos(obj){
    var top = obj.offsetTop;
    while(obj.parentNode && obj.parentNode.tagName!='BODY'){
        obj = obj.parentNode;
        top = top/1 + obj.offsetTop/1;        
    }
    
    return top;    
    
}

// -----------------------------------------------------------------------
// --->  This function removes any letters leaving only numbers       <---
// --->  Used in searching both simpel and extended                   <---
// -----------------------------------------------------------------------
function TrimStyrke(field)
{  
    if (field)
    {
        field.value = field.value.replace(/[^\,\.\d]/g, '');
    }
}

// -----------------------------------------------------------------------
// --->  This function removes any letters leaving only numbers , .   <---
// --->  Used in searching both simpel and extended                   <---
// -----------------------------------------------------------------------
function TrimPakning(field)
{  
    if (field)
    {
        field.value = field.value.replace(/[^\,\.\d]/g, '');
    }
}

function BeregnerListeUpdate(element) {
    // check for valid number
    var val = parseInt(element.value);
    if(isNaN(val)) {
        val = 0;
        if(element.value!="")
            element.value = 0;
    } else {
        if(element.value!=val)
            element.value = val;
    }
    
    // update prices
    var espValElement = element.parentNode.nextSibling.nextSibling.firstChild;
    var tspValElement = element.parentNode.nextSibling.nextSibling.nextSibling.firstChild;
    
    var espVal = espValElement.value.replace(/\,/g, ".");
    var espTotal = Math.round(parseFloat(espVal) * val * 100)/100;
    
    espValElement.nextSibling.innerHTML = 
        BeregnerListeFixComma(espTotal.toString().replace(/\./g, ","));

    var tspVal = tspValElement.value.replace(/\,/g, ".");
    var tspTotal = Math.round(parseFloat(tspVal) * val * 100)/100;
    tspValElement.nextSibling.innerHTML = 
        BeregnerListeFixComma(tspTotal.toString().replace(/\./g, ","));
}

function BeregnerListeFixComma(str) {
    if(str.indexOf(",")==-1)
        str += ",00";
    else
        if(str.indexOf(",")==str.length-2)
            str += "0";
    
    return str;                    
}

Event.observe(window, 'load', function() {
    var Rules = {
        'input.textbutton:mouseover' : function(element, event) {
            if(element.className.indexOf("hover")==-1)
                element.className += " hover";
        },
        
        'input.textbutton:mouseout' : function(element, event) {
                element.className = element.className.replace(/ hover/ig, "");
        }
    }
    EventSelectors.start(Rules);  
});