﻿//Treenode functions
var editor=null
var user=null
function itemClicked(item){
controlDisplayMessage(null)
 loadPage(item)
if (item.childs==null) return;
    if (item.childs.length > 0){
            for (var it in item.childs){
                if (! item.childs[it].isCreated) item.childs[it].Create(item.div)
        }
            var panel = document.getElementById(item.id);
            if (panel.style.display != 'block') {
                if(item.sign !=null) item.sign.src="image/minus.jpg";
                if(item.icon !=null) item.icon.src=item.icons[1];
                panel.style.display = 'block';
            } else {
                if(item.sign !=null) item.sign.src="image/plus.jpg";
                if(item.icon !=null) item.icon.src=item.icons[0];
                panel.style.display = 'none';
            }
    }
   
}
function folderClicked(item){
showFiles(item);
if (item.childs==null) return;
    if (item.childs.length > 0){
            for (var it in item.childs){
                if (! item.childs[it].isCreated) item.childs[it].Create(item.div)
        }
            var panel = document.getElementById(item.id);
            if (panel.style.display != 'block') {
                if(item.sign !=null) item.sign.src=item.icons[2];
                if(item.icon !=null) item.icon.src=item.icons[1];
                panel.style.display = 'block';
            } else {
                if(item.sign !=null) item.sign.src=item.icons[3];
                if(item.icon !=null) item.icon.src=item.icons[0];
                panel.style.display = 'none';
            }
    }
   
}
function toggleProperties(){
    var elem = document.getElementById("edit");
    if (elem.style.display != 'block') {
        elem.style.display = 'block';
    }else{
        elem.style.display = 'none';
    }
}
function load(func, url, nodeImagelist, rootImageList){
    var list = getNodes(url)
    var _alt="Root";
    var item=new Item(configRootNode, null, true, createIcon(rootImageList[0],_alt) ,"Root", rootImageList, func, 1, 1, 0,0, 0)
    for (var i = 0; i < list.length; i++) {
        var childItem=new Item(list[i].id,"link",true,createIcon(nodeImagelist[0], list[i].text),list[i].text, nodeImagelist, func, list[i].access, list[i].visible, list[i].firstpage, list[i].order, list[i].template)
       childItem.childs=getChildNodes(list[i], func,nodeImagelist)
       item.childs.push(childItem);
    }
    item.Create(htmlGetId("content"));
}

function createIcon(_icon,_alt){
   return htmlCreateImage(_icon,_alt)
}
function getChildNodes(node, func, nodeImagelist){
    var res=new Array();
    if(node == null || node.childs== null || node.childs.length < 1) return null
        for (var i = 0; i < node.childs.length; i++) {
            var childItem=new Item(node.childs[i].id,"link",true,createIcon(nodeImagelist[0], node.childs[i].text),node.childs[i].text, nodeImagelist, func,node.childs[i].access,node.childs[i].visible, node.childs[i].firstpage, node.childs[i].order, node.childs[i].template)
            childItem.childs=getChildNodes(node.childs[i], func, nodeImagelist)
            res.push(childItem)
        }
    return res;
}
function addNode(){
    if (selectedNode==null){
        alert("Select a node to add the page to.")
        return
    }
var imgNodes=["image/folder_closed.gif","image/folder_open.gif","image/minus.gif","image/plus.gif","image/empty.gif"]
    var node=new Item("100","link",true,createIcon(imgNodes[0], "New Page"),"New Page", imgNodes, itemClicked, 1, 1,0, 100,0)
    if(selectedNode.childs==null) selectedNode.childs=new Array();
    var id=(selectedNode.id==configRootNode) ? "0" : selectedNode.id
    var res=xmlSend(urlHttp+"editNodes.asp", "action=add&text=New Page&parent="+id) 
    if (res !=null){
        node.id=res;
        node.Create(selectedNode.div)
        selectedNode.childs.push(node);
        controlDisplayMessage("Page was successfully added.")
    }
}
function deleteNode(){
    if (selectedNode==null){
        alert("Select a node to delete.")
        return
    }
     if (selectedNode.id==configRootNode){
        alert("You can not delete the root node.")
        return
    }
    if(selectedNode.childs!=null) deleteChildNodes(selectedNode.childs);
    var res=deleteNodes (selectedNode.id)
    var elem=selectedNode.div.parentElement
    elem.removeChild(htmlGetId(selectedNode.id));
    elem.removeChild(htmlGetId("tb"+selectedNode.id))
    if (!res) {
        alert("There was an error when deleting node "+selectedNode.text +".")
        }else{
            selectedNode=null
            var elem=htmlGetId("edit");
            elem.style.display = 'none';
        }
}
function deleteNodes (id){
    var res=xmlSend(urlHttp+"editNodes.asp", "action=delete&id="+id) 
    if (res == true || res == "true"){
        return true
    }
    return false;
}
function deleteChildNodes(childs){
 if (childs==null) return ;
    for (var i = 0; i < childs.length; i++){
        if(childs[i].childs != null) deleteChildNodes(childs[i].childs);
        var res=deleteNodes (childs[i].id)
        if (!res){
            if (!res) alert("There was an error when deleting node "+childs[i].text +".")
            return false
        }
    }
    return true
}

//end treenode functions
//Edit Page function (text editor)
function save(){
  var res=editor.GetHTML();
     while ( res.indexOf(">") > 0 || res.indexOf("<") > 0 || res.indexOf("'") > 0 ){
        res = res.replace("<" , "&lt;");
        res = res.replace(">", "&gt;");
        res = res.replace("'", "&#39;");
    } 
  var sendres=xmlSend(urlHttp+"setHtml.asp", "text="+escape(res)+"&id="+page.id) 
    if (sendres == true || sendres == "true"){
        controlDisplayMessage("Page("+page.text+") was successfully saved.")
        return true
    }else{
        controlDisplayMessage("Page("+page.text+") could not be saved.")
    }
    
}
function cleanStr(){

}
function loadPage(item){
//var elem=htmlGetId("editor");
var prefix=new Date().getTime()+";"+updates;
updates++
if(configRootNode==item.id){
    htmlGetId("editor").style.display = 'none';
    return
 }
 var dp=document.getElementById("dptemplate");
 if (dp.childNodes.length < 1){
    for (var i = 0; i < templates.length; i++) {
        AddDpItem( templates[i].title,templates[i].id)
    }
}
dp.selectedIndex=item.template
 if (item.template ==0){
 htmlGetId("editor").style.display = 'block';

 if (editor==null)  editor = FCKeditorAPI.GetInstance('myFCKeditor') ;

page=item
var txt="Enter your Content here.";
   var xml = xmlLoad(urlHttp+"getHtml.asp?firstpage=0&id="+item.id+"&UPD="+prefix);
    var counter=0;
    if (xml!=null) {
    var mypage = xmlXPath(xmlXPath(xml, "/root")[0], "page")
    
    if (mypage.length > 0){
        txt=(mypage[0].text==null) ? "":mypage[0].text
    }
    }
    txt=unescape(txt);
         while ( txt.indexOf("&lt;") > 0 || txt.indexOf("&gt;") > 0 || txt.indexOf("&#39;") > 0){
        txt = txt.replace("&lt;" , "<");
        txt = txt.replace("&gt;", ">");
        txt = txt.replace("&#39;", "'");
    }
    editor.SetData(unescape(txt))
    }else{
    htmlGetId("editor").style.display = 'none';
    
    
    }
    elem=htmlGetId("pagename")
    elem.value=item.text
    elem=htmlGetId("cbpublic")
    elem.checked= (parseInt(item.access)==1) ? true:false
    elem=htmlGetId("cbvisible")
    elem.checked=(parseInt(item.visible)==1) ? true:false
    htmlGetId("cbfirstpage").checked=(parseInt(item.firstpage)==1) ? true:false
    htmlGetId("index").value=item.order;
}
function AddDpItem(text,value)
    {
    var elem=document.getElementById("dptemplate")
        var opt = document.createElement("option");
       
        elem.options.add(opt);
        opt.text = text;
        opt.value = value;
    }
    function updateNode(id){
    var obj=new Object()
    var dp=document.getElementById("dptemplate");
    var res=htmlGetId("pagename").value
    obj.cbvis=(htmlGetId("cbvisible").checked) ? 1:0
    obj.cbpublic=(htmlGetId("cbpublic").checked) ? 1:0
    obj.cbfirst=(htmlGetId("cbfirstpage").checked) ? 1:0
    obj.template=dp.selectedIndex;
    if (! isNumber(htmlGetId("index").value)) {
        alert("Page Order is not a Number")
        return null
    }
         while ( res.indexOf(">") > 0 || res.indexOf("<") > 0 || res.indexOf("'") > 0 || res.indexOf("\r") > 0 ){
        res = res.replace("<" , "&lt;");
        res = res.replace(">", "&gt;");
        res = res.replace("'", "");
        res = res.replace("\r", "");
    } 
    obj.text=res;
    obj.order=htmlGetId("index").value;
    var res=xmlSend(urlHttp+"editNodes.asp", "action=update&id="+id+"&text="+escape(obj.text)+"&visible="+obj.cbvis+"&template="+obj.template+"&public="+obj.cbpublic+"&firstpage="+obj.cbfirst+"&index="+obj.order) 

    if (res == true || res == "true"){
        controlDisplayMessage("Page ("+obj.text+") was successfully updated.")
        return obj;
    }
    return null;
}
//End Page editor

//Read Nodes functions
function getNodes(url){
    var xml = xmlLoad(url);
    if (xml == null) return null;
    var counter=0;
    var nodes = xmlXPath(xmlXPath(xml, "/root")[0], "node")
    var list=createNodes(nodes)
    return convertNodes(list)
    
}
function convertNodes (list){
var tempList=new Array();
var counter=0;
var parent=0;
if (configLang >=0) parent=configLang;
if (list != null && list.length > 0) {
     for (var i = 0; i < list.length; i++) {
        if (list[i].parent==parent) {
            tempList.push(list[i])
            tempList[counter].childs=findChilds(list, list[i])
            counter++
        }
     }
   }
  return tempList
}

function findChilds (searchlist, parent){
var res=new Array();
var counter=0;
if (searchlist != null && searchlist.length > 0) {
     for (var i = 0; i < searchlist.length; i++) {
        if (searchlist[i].parent==parent.id){
         res.push(searchlist[i]);
         res[counter].childs=findChilds(searchlist,searchlist[i] )
         counter++;
        }
     }
   }
   if (res.length > 0) return res;
   return null;
}
function createNodes(nodes){
var nodeArray=null;
var counter=0;
 if (nodes != null && nodes.length > 0) {
        nodeArray=new Array();
        for (var i = 0; i < nodes.length; i++) {
            var k=new Node(nodes[i].getAttribute("id"), nodes[i].getAttribute("text"), nodes[i].getAttribute("path"), nodes[i].getAttribute("parent"), nodes[i].getAttribute("public"),nodes[i].getAttribute("visible"), nodes[i].getAttribute("firstpage"), nodes[i].getAttribute("index"), nodes[i].getAttribute("template"))
            nodeArray.push(k);
        }
 }
       return nodeArray; 
}
//End node functions

function controlDisplayMessage(message){
     var elem=htmlGetId("infolog")
    if (message==null){
        return
    }
    elem.innerHTML=message+"<br />"+elem.innerHTML
  
}
//Login functions
function userlogin(username, password){
        var fun =function(){
        var imgRoot=["image/root_closed.gif","image/root_open.gif","image/minus.gif","image/plus.gif","image/empty.gif"]
        var imgNodes=["image/folder_closed.gif","image/folder_open.gif","image/minus.gif","image/plus.gif","image/empty.gif"]
        load(itemClicked, urlHttp+"getNodes.asp?all=1",imgNodes,imgRoot);
         var div = document.getElementById("texteditor");
        div.style.display = '' ;
        var edt = new FCKeditor("myFCKeditor", 1000, 700, "Default", "Tomas" );
        edt.BasePath = "fckeditor/";
        edt.SkinPath = edt.BasePath + "skins/office2003/"
        div.innerHTML = edt.CreateHtml();
    }
    user=new User(username, password, fun)
    var res=user.LogIn();
    if(res){
        var elem=document.getElementById("login");
        elem.innerHTML="";
        elem.style.display="none"
        elem.style.width=2;
        elem.style.height=2;
        elem.style.left=0;
        elem.style.top=0;
        
        elem=document.getElementById("toolmenu");
        elem.style.display="block"
        elem=document.getElementById("usertext");
        elem.innerHTML=user.username+" logged in."
        user.ExecuteLogin();  
    }else{
        alert ("Not a valid password");
    }
    
}

function getNode(id, mynodelist){

    var res=null;
    var temp=null;
    for (var i = 0; i < mynodelist.length; i++){
        if(mynodelist[i].id==id){
            return mynodelist[i];
        } else{
            if(mynodelist[i].childs !=null && mynodelist[i].childs.length >0 ) {
                temp=getNode(id,mynodelist[i].childs);
                if (temp !=null) res=temp;
            }
        }
    }
    return res;
}
function GetQueryString(str){
var res=null;
var k=new String()

var len=str.indexOf("?")
 if ( len > 0){
 
 res=str.substr(len+1, str.length)
 if(res.indexOf("#") >0){
     res=res.substr(0, res.indexOf("#"))
 }
 if (res.length < 0) return null;
 res=unescape(res)
 }else{
    len=str.indexOf("#")
    if ( len > 0){
    res=str.substr(len+1, str.length)
    if (res.length < 0) return null;
    if(configLang==63){
    res=unescape("Nyheter")
    }else{
    res=unescape("News")
    }
 }
 }
 

 return res
}
function getFirstpage(mynodelist){

    var res=null;
    var temp=null;
    for (var i = 0; i < mynodelist.length; i++){
        if(mynodelist[i].firstpage==1){
            return mynodelist[i];
        } else{
            if(mynodelist[i].childs !=null && mynodelist[i].childs.length >0 ) {
                temp=getFirstpage(mynodelist[i].childs);
                if (temp !=null) res=temp;
            }
        }
    }
    return res;
}
function getFirstpageWithName(mynodelist, name){

    var res=null;
    var temp=null;
    for (var i = 0; i < mynodelist.length; i++){
        if(mynodelist[i].text==name){
            return mynodelist[i];
        } else{
            if(mynodelist[i].childs !=null && mynodelist[i].childs.length >0 ) {
                temp=getFirstpageWithName(mynodelist[i].childs, name);
                if (temp !=null) res=temp;
            }
        }
    }
    return res;
}
function getParentNode(id, mynodelist){
    var res=null;
    var temp=null;
    for (var i = 0; i < mynodelist.length; i++){
        if(mynodelist[i].id==id){
            return mynodelist[i];
        } else{
            if(mynodelist[i].childs !=null && mynodelist[i].childs.length >0 ) {
                temp=getNode(id,mynodelist[i].childs);
                if (temp !=null) res=mynodelist[i];
            }
        }
    }
    return res;
}

function setScrollTop() {
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    document.body.scrollTop=0;
    //scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    document.body.scrollTop=0;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    document.documentElement.scrollTop=0
  }
}


function unloadGuestbook (){
    guestbook.ClearAll();
    guestbook=null;
    guestbook=new NoteBook(content, unloadGuestbook);
    guestbook.Show();
}
//END loginfunctions