﻿// JScript File

var passArray;
function GetPassArray() {
    if (passArray == null) {
        passArray = new Array();
        if (GetCookie('id1') != null)
            passArray[passArray.length] = GetCookie('id1');
        if (GetCookie('id2') != null)
            passArray[passArray.length] = GetCookie('id2');
        if (GetCookie('id3') != null)
            passArray[passArray.length] = GetCookie('id3');
        if (GetCookie('id4') != null)
            passArray[passArray.length] = GetCookie('id4');
    }

    return passArray;
}

function GetQueryString(variable) {
    var url = window.location.toString();

    var indexPos = 0;
    if (url.indexOf("?" + variable + "=") > 0) indexPos = url.indexOf("?" + variable + "=");
    if (url.indexOf("&" + variable + "=") > 0) indexPos = url.indexOf("&" + variable + "=");

    if (indexPos > 0) {
        var value = url.substr(indexPos + variable.length + 2);

        if (value.indexOf("&") > 0)
            return value.substr(0, value.indexOf("&"));
        else
            return value;
    }

    return null;
}

function KeyUp(e) 
{
    e = e || window.event;

    var keyId = e.keyCode;

    if (keyId == 27) {
        if (sortingChanged || IsDataChanged()) {
            if (confirm("Ønsker du at gemme data?")) {
                SaveBookingTypes();
                setTimeout("window.close()", 1000);
            }
            else {
                if (confirm("Afslut skærmbilledet?")) {
                    window.close();
                }
            }
        }
        else {
            window.close();
        }
    }

    if (e.altKey && e.ctrlKey || e.altKey || e.ctrlKey) {
        switch (keyId) {
            case 38:
                MoveUpBookingType(); break;
            case 40:
                MoveDownBookingType(); break;
            case 46:
                DeleteBookingType(); break;
            case 78:
                CreateNewType(); break;
            case 83:
                SaveBookingTypes(); break;
            case 85:
                CreateNewChild(); break;                
        }
    }  
}

function SetDay(obj, day)
{
    var ctrlName = day + "Start";
    $get(ctrlName).disabled = !obj.checked;

    ctrlName = day + "End";
    $get(ctrlName).disabled = !obj.checked;
}

function ParseTime(obj, boolAlertError)
{
    var strValue = obj.value.replace(":", "").replace(".", "").replace(".", "").replace("-", "").replace("/", "").replace(" ", "");
        
    switch(strValue.length)
    {
        case 0:
          strValue = "";
          break   
        case 1:
          strValue = "0" + strValue + ":00";
          break    
        case 2:
          strValue = strValue + ":00";
          break
        case 3:
          strValue = "0" + strValue.substr(0, 1) + ":" + strValue.substr(1, 2);
          break
        case 4:
          strValue = strValue.substr(0, 2) + ":" + strValue.substr(2, 2);
          break
        default:
          if(boolAlertError) alert(obj.value + " er ikke et gyldigt tidspunkt");          
          strValue = "";
    }
          
    try
    {
        if(strValue != "")
        {
            if(strValue.substr(0, 2) != "00")
            {
                if(parseInt("0" + strValue.substr(0, 2), 10) < 1 || parseInt("0" + strValue.substr(0, 2), 10) > 24) raiseError;            
            }
     
            if(strValue.substr(3, 2) != "00")
            {
                if(parseInt("0" + strValue.substr(3, 2), 10) < 1 || parseInt("0" + strValue.substr(3, 2), 10) > 60) raiseError;            
            }
            
            if(parseInt("0" + strValue.substr(0, 2), 10) == 24 && parseInt("0" + strValue.substr(3, 2), 10) > 0) raiseError;            
        }  
    }
    catch(err)
    {
          if(boolAlertError) alert(obj.value + " er ikke et gyldigt tidspunkt");          
          strValue = "";
    }
    
    obj.value = strValue;
    DataChanged();
}

function GetSelectedType() {
   
    if ($get("BookingTypes").childNodes != null) {
        for (t = 0; t < $get("BookingTypes").childNodes.length; t++) {
            if ($get("BookingTypes").childNodes[t].style != null) {
                if ($get("BookingTypes").childNodes[t].style.fontWeight == "bold"
                    || $get("BookingTypes").childNodes[t].style.fontWeight == "700") //700 = opera 9 bold??
                    return $get("BookingTypes").childNodes[t];
            }
        }
    }
    
    return null;
}

function GetSelectedTypeIndex()
{
    if ($get("BookingTypes").childNodes != null) {
        for (t = 0; t < $get("BookingTypes").childNodes.length; t++) {
            if ($get("BookingTypes").childNodes[t].style != null) {
                if ($get("BookingTypes").childNodes[t].style.fontWeight == "bold"
                    || $get("BookingTypes").childNodes[t].style.fontWeight == "700") //700 = opera 9 bold??
                                    
                    return t;
            }
        }
    }
    
    return null;
}

function MoveReplaceChildrenUp(parent, childrenBaseType) {
    var childNo = 1;
    for (ci = 1; ci < $get("BookingTypes").childNodes.length; ci++) {
        if (dtTypes.rows[parseInt($get("BookingTypes").childNodes[ci].id.replace("TypeItem", ""), 10)].BaseType == childrenBaseType) {
            $get("BookingTypes").insertBefore($get("BookingTypes").childNodes[ci], $get("BookingTypes").childNodes[GetSelectedTypeIndex() + childNo]);
            childNo++;            
        }
    }
}

function MoveReplaceChildrenDown(parent, childrenBaseType) {
    for (ci = $get("BookingTypes").childNodes.length - 1; ci >= 0; ci--) {
        if (dtTypes.rows[parseInt($get("BookingTypes").childNodes[ci].id.replace("TypeItem", ""), 10)].BaseType == childrenBaseType) {
            if (GetSelectedTypeIndex() + 1 < $get("BookingTypes").childNodes.length) {
                $get("BookingTypes").insertBefore($get("BookingTypes").childNodes[ci], $get("BookingTypes").childNodes[GetSelectedTypeIndex() + 1]);
            }
            else
                $get("BookingTypes").appendChild($get("BookingTypes").childNodes[ci]);
        }
    }
}

var sortingChanged = false;
function MoveUpBookingType()
{
    var t = GetSelectedTypeIndex();
    if(t != null && t != 0)
    {
        for(r = t - 1; r >= 0; r--)
        {
            if($get("BookingTypes").childNodes[t].className == $get("BookingTypes").childNodes[r].className) {
                if ($get("BookingTypes").childNodes.length > t + 1) {
                    if ($get("BookingTypes").childNodes[t].className == "BookingTypeItem"
                        && $get("BookingTypes").childNodes[t + 1].className == "BookingTypeChild") {

                        $get("BookingTypes").insertBefore($get("BookingTypes").childNodes[t], $get("BookingTypes").childNodes[r]);
                        sortingChanged = true;
                        
                        MoveReplaceChildrenUp($get("BookingTypes").childNodes[t],
                            dtTypes.rows[parseInt($get("BookingTypes").childNodes[t + 1].id.replace("TypeItem", ""), 10)].BaseType);

                        break;
                    }
                }
                            
                $get("BookingTypes").insertBefore($get("BookingTypes").childNodes[t], $get("BookingTypes").childNodes[r]);
                sortingChanged = true;
                break;
            }
            else
            {
                if($get("BookingTypes").childNodes[t].className == "BookingTypeChild") break;
            }
        }
    }
}

function MoveDownBookingType()
{
    var t = GetSelectedTypeIndex();

    if(t >= 0 && t < $get("BookingTypes").childNodes.length - 1)
    {
        if($get("BookingTypes").childNodes[t].className == "BookingTypeChild")
        {
            if($get("BookingTypes").childNodes[t].className == $get("BookingTypes").childNodes[t+1].className)
            {
                sortingChanged = true;
                if(t != null && t < $get("BookingTypes").childNodes.length - 2)
                    $get("BookingTypes").insertBefore($get("BookingTypes").childNodes[t], $get("BookingTypes").childNodes[t+2]);    
                
                if(t != null && t == $get("BookingTypes").childNodes.length - 2)
                    $get("BookingTypes").insertBefore($get("BookingTypes").childNodes[t]);
            }
        }
        else
        {           
            sortingChanged = true;            
            var insertBeforeNextParent = false;
            var isInserted = false;
            
            
            for(r = t + 1; r < $get("BookingTypes").childNodes.length; r++)
            {
                if($get("BookingTypes").childNodes[r].className == "BookingTypeItem")
                {
                    if(insertBeforeNextParent) {
                        if ($get("BookingTypes").childNodes[t + 1].className == "BookingTypeChild") {
                            $get("BookingTypes").insertBefore($get("BookingTypes").childNodes[t], $get("BookingTypes").childNodes[r]);
                            isInserted = true;
                            
                            MoveReplaceChildrenDown($get("BookingTypes").childNodes[t],
                                dtTypes.rows[parseInt($get("BookingTypes").childNodes[t + 1].id.replace("TypeItem", ""), 10)].BaseType);

                            break;
                        }
                    
                        $get("BookingTypes").insertBefore($get("BookingTypes").childNodes[t], $get("BookingTypes").childNodes[r]);
                        isInserted = true;
                        break;
                    }
                    else
                        insertBeforeNextParent = true;
                }
            }

            if (isInserted == false) {
                if ($get("BookingTypes").childNodes[t + 1].className == "BookingTypeChild") {
                    $get("BookingTypes").appendChild($get("BookingTypes").childNodes[t]);
                    
                    MoveReplaceChildrenDown($get("BookingTypes").childNodes[t],
                        dtTypes.rows[parseInt($get("BookingTypes").childNodes[t + 1].id.replace("TypeItem", ""), 10)].BaseType);

                    return;
                }
             
                $get("BookingTypes").appendChild($get("BookingTypes").childNodes[t]);
            }
        }
    }
}

function GetCookie(name) 
{
  var search = name + "="
  var returnvalue = "";

  if (document.cookie.length > 0) 
  {
    offset = document.cookie.indexOf(search)
    // if cookie exists
    if (offset != -1) { 
    offset += search.length
      // set index of beginning of value
      end = document.cookie.indexOf(";", offset);
      // set index of end of cookie value
      if (end == -1) end = document.cookie.length;
      returnvalue=unescape(document.cookie.substring(offset, end))
      }
   }
  return returnvalue;
}


function ShowBookingTypePeriod(ctrl)
{    
    if(ctrl.checked)
    {
        $get("BookingTypePeriod").style.visibility = "visible";        
    }
    else
    {
        $get("BookingTypePeriod").style.visibility = "hidden";            
    }
}

function SetFormValue(ctrl, format, value)
{
    switch(format)
    {
        case "@":
            if(value == null) value = "";
            document.getElementById(ctrl).value = value;
            break;
        case ":":
            if(value == null) value = "";
            document.getElementById(ctrl).value = value;
            break;            
        case "0":
            if(value == null || value == "") value = 0;
            document.getElementById(ctrl).value = value;
            break;        
        case "#":
            if(value == null) value = "transparent";
            document.getElementById(ctrl).style.backgroundColor = value;
            break;
        case "/":
            if(value == null) value = false;
            document.getElementById(ctrl).checked = value;
            break;
    }
}

function GetFormValue(ctrl, format)
{
    switch(format)
    {
        case "@":
            return document.getElementById(ctrl).value;
            break;
        case ":":
            return document.getElementById(ctrl).value;
            break;            
        case "0":
            if(document.getElementById(ctrl).value == null || document.getElementById(ctrl).value == "") return 0; 
            return document.getElementById(ctrl).value;
            break;
        case "#":
            if(document.getElementById(ctrl).style.backgroundColor == "transparent") return "";
            else return document.getElementById(ctrl).style.backgroundColor;
            break;
        case "/":
            return document.getElementById(ctrl).checked;
            break;
        default:
            //Not supported
    }
}

function DataChanged(formCtrl) {

    var ctrl = GetSelectedType()
    
    if(ctrl != null)
    {
        ctrl.style.color = "#ff0000";
        
        if(formCtrl == document.getElementById("tbName")) ctrl.innerHTML = GetFormValue("tbName", "@");
    }
}

function IsDataChanged()
{
    for(t = 0; t < $get("BookingTypes").childNodes.length; t++)
    {
        if ($get("BookingTypes").childNodes[t].style.color == "#ff0000"
            || $get("BookingTypes").childNodes[t].style.color == "rgb(255, 0, 0)") return true;
    }
    
    return false;
}

function GetAbsLeft(obj)
{
	var curleft = 0;
	
	if (obj.offsetParent) 
	{
		curleft = obj.offsetLeft;
		
		while(obj = obj.offsetParent) 
		{
			curleft += obj.offsetLeft;
		}
	}
	
	return curleft;
}

function GetAbsTop(obj)
{
	var curtop = 0;
	
	if (obj.offsetParent) 
	{
		curtop = obj.offsetTop;
		
		while(obj = obj.offsetParent) 
		{
		    curtop += obj.offsetTop;
		}
	}
	
	return curtop;
}

function findPos(obj) 
{
	var curleft = curtop = 0;
	
	if (obj.offsetParent) 
	{
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		
		while(obj = obj.offsetParent) 
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	
	return [curleft,curtop];
}

function ClearTableRows(table, fromRow)
{
    if(fromRow == null) fromRow = -1;

    for (tr = table.rows.length - 1; tr > parseInt(fromRow, 10); tr--) 
    {
        table.deleteRow(tr);
    }
}

function DialogCenter(objName) {
    $get(objName).style.left = ((GetInnerWidth() - parseInt($get(objName).style.width, 10)) / 2) + "px";
    if (parseInt($get(objName).style.left) < 0) $get(objName).style.left = "0px";

    if ($get(objName).style.height == null || $get(objName).style.height == "") {
        $get(objName).style.top = "150px";
    }
    else {
        $get(objName).style.top = ((GetInnerHeight() - parseInt($get(objName).style.height, 10)) / 2) + "px";
        if (parseInt($get(objName).style.top) < 0) $get(objName).style.top = "0px";
    }
}

function OpenWindow(url, name, width, height, center) 
{     
    var addCenterInfo = "";

    if (width == "max") width = screen.availWidth;
    if (height == "max") height = screen.availWidth;
        
    if(center)
    {
        var left = parseInt((screen.availWidth - width) / 2);
        var top = parseInt((screen.availHeight - height) / 2);
        if(left < 0) left = 0;
        if(top < 0) top = 0;

        //Opera uses relative to parent!
        if (navigator.appName == "Opera" && parseInt(navigator.appVersion) < 10) {
            left = left - window.screenLeft;
            top = top - window.screenTop;
        }

        addCenterInfo = ",left=" + left + ",top=" + top;
    }

    return window.open(url, name, "toolbar=0,scrollbars=1,resizable=1,menubar=0,location=0,directories=0,status=0," +
        "width=" + width + ",height=" + height + addCenterInfo);
}

function SelectTab(tabId) {

    var hideFirst = true;

    for (hide = 0; hide < 2; hide++) {
        for (tab = 1; tab < 4; tab++) {

            if ($get("Tab" + tab) != null) {
                if (tab == tabId)
                    $get("Tab" + tab).className = "SelectedTab";
                else
                    $get("Tab" + tab).className = "Tab";
            }

            for (column = 1; column < 4; column++) {
                if ($get("Tab" + tab + "Col" + column) != null) {
                    if (tab == tabId) {
                        if (!hideFirst) // && $get("Tab" + tab + "Col" + column).style.display != "block")
                            $get("Tab" + tab + "Col" + column).style.display = "block";
                    }
                    else {
                        if ($get("Tab" + tab + "Col" + column).style.display != "none")
                            $get("Tab" + tab + "Col" + column).style.display = "none";
                    }
                }
            }
        }

        hideFirst = false;
    }
}

function nl2br(text) {
    var re_nlchar;
    text = escape(text);
    if (text.indexOf('%0D%0A') > -1) {
        re_nlchar = /%0D%0A/g;
    } else if (text.indexOf('%0A') > -1) {
        re_nlchar = /%0A/g;
    } else if (text.indexOf('%0D') > -1) {
        re_nlchar = /%0D/g;
    }
    return unescape(text.replace(re_nlchar, '<br />'));
}

function ReplaceAllStrings(text, repl, replWith) {
    var localText = text;
    while (localText.indexOf(repl) >= 0) {
        localText = localText.replace(repl, replWith);
    }
    return localText;
}

function GetParamFromText(paramName, searchText) {
    if (searchText.indexOf(paramName + ":") > 0) {
        var startingPoint = searchText.indexOf(paramName + ":") + paramName.length + 1;
        var endPoint = searchText.indexOf(";", startingPoint);
        var textLength = endPoint - startingPoint;
        if (textLength <= 0) return null;

        return searchText.substr(startingPoint, textLength);
    }
    else return null;
}
