﻿/* Global variables
---------------------------------------------------------------- */
var tictim;
var bretim;
var sliding = false;
var isoplev = false;
var oplevtim;


/* Singleline functions
---------------------------------------------------------------- */
function $d(d){
    return document.getElementById(d);
}

/* Toogle text
---------------------------------------------------------------- */
var field = function(){
    return {
        focus:function(f,txt){
            if(f.value==txt){
                f.value='';
            }else{
                f.select();
            }
        },
        blur:function(f,txt){
            if(f.value==''){
                f.value=txt;
            }
        }
    };
}();

/* Oplev
---------------------------------------------------------------- */
var oplev = function(){
    return {
        show:function(f){
            var btn = $d('oplevbutton');
            var obj = $d('oplevarea');
            if(obj){
                if(obj.style.display=='block'){
                    oplev.kill();
                }else{
                    obj.style.display = 'block';
                    if(btn){btn.className = 'selected';}
                }
            }
            f.blur();
        },
        over:function(){
            isoplev = true;
            clearTimeout(oplevtim);
        },
        out:function(){
            isoplev = false;
            oplevtim = setTimeout("oplev.kill();", 1000);
        },
        kill:function(force){
            if(!isoplev || force){
                var btn = $d('oplevbutton');
                var obj = $d('oplevarea');
                if(btn){btn.className = '';}
                if(obj){obj.style.display = 'none';}
                clearTimeout(oplevtim);
            }
        }
    };
}();

/* Main menu drop down
---------------------------------------------------------------- */
var mainmvar;
var mainmtim;

var mainm = function(){
    return {
        show:function(f){
            mainm.delay();
            var obj = $d('mainmoverlay');
            var inp = $d('mainminp');
            var end = $d(f.id+'end');
            var cur = $d(f.id+'links');
            mainmvar = f.id;
            if(obj && cur && end){
                obj.style.display = 'block';
                cur.style.display = 'block';
                end.className = 'end';
                f.className = 'open';
            }
            f.blur();
            inp.focus();
            clearTimeout(mainmtim);
        },
        close:function(){
            mainmtim = setTimeout("mainm.delay();", 500);
        },
        delay:function(){
            var inp = $d('mainminp');
            var end = $d(mainmvar+'end');
            var obj = $d('mainmoverlay');
            var cur = $d(mainmvar+'links');
            var lnk = $d(mainmvar);
            if(obj && cur && end){
                obj.style.display = 'none';
                cur.style.display = 'none';
                end.className = '';
                lnk.className = '';
            }
        }
    };
}();

/* Ports
---------------------------------------------------------------- */
var portvar;
var porttim;

var portx = function () {
    return {
        show: function (f) {
            var prt = $d('ports');
            var obj = $d(f.id + 'expand');
            var inp = $d('focusinp');
            portvar = f.id;
            if (obj) { obj.style.display = 'block'; }
            if (prt) { prt.className = 'rel markup'; }
            f.blur();
            var obj = $d('ports');
            var items = obj.getElementsByTagName('li');
            for (var d = 0; d < items.length; d += 1) {
                items[d].className = items[d].className + ' hide';
            }
            var fid = f.id;
            var links = obj.getElementsByTagName('a');
            for (var d = 0; d < links.length; d += 1) {
                if (fid != links[d].id) {
                    if (links[d].style.display == 'none') {
                        portx.reset();
                        portx.hide();
                        return;
                    }
                    else
                        links[d].style.display = 'none';
                }
            }
            inp.focus();
            clearTimeout(porttim);
        },
        hide: function () {
            porttim = setTimeout("portx.delay();", 300);
        },
        delay: function () {
            var obj = $d('portexpand');
            var obj = $d(portvar + 'expand');
            if (obj) { obj.style.display = 'none'; }
            portx.reset();
        },
        reset: function () {
            var obj = $d('ports');
            var prt = $d('ports');
            if (prt) { prt.className = 'rel'; }
            var items = obj.getElementsByTagName('li');
            for (var d = 0; d < items.length; d += 1) {
                var str = items[d].className;
                str = str.replace(/ hide/gi, "");
                items[d].className = str;
            }
            var links = obj.getElementsByTagName('a');
            for (var d = 0; d < links.length; d += 1) {
                links[d].style.display = 'block';
            }
        },
        init: function () {
            var obj = $d('ports');
            var items = obj.getElementsByTagName('li');
            var ech = 100 / items.length;
            ech = Math.floor(ech);
            var diff = (100 - (ech * items.length));
            var cur = 1;
            for (var d = 0; d < items.length; d += 1) {
                if (items.length > 1) {
                    if (cur == 1) { items[d].style.width = (ech + diff) + '%'; } else { items[d].style.width = (ech) + '%'; }
                    if (cur == items.length) { items[d].className = 'last'; }
                } else {
                    items[d].style.width = '50%';
                }
                cur++;
            }
        }
    };
} ();

/* Banner Switch
---------------------------------------------------------------- */
var switchr = function(){
    return {
        over:function(f){
            var obj = $d(f.id+'mot');
            switchr.reset();
            if(obj){obj.style.display = 'block';}
            f.className = 'selected';
        },
        reset:function(){
            var obj = $d('swit');
            var lks = $d('switlinks');
            var items = obj.getElementsByTagName('div');
            for(var d=0;d<items.length;d+=1){
                var str = items[d].className;
                if(str.indexOf("imgtxt")!=-1){
                    items[d].style.display = 'none';
                }
            }
            var itemz = lks.getElementsByTagName('a');
            for(var d=0;d<itemz.length;d+=1){
                itemz[d].className = '';
            }
        }
    };
}();

/* Ajax
---------------------------------------------------------------- */
var ajax = function(){
    return {
        nocache:function(){
            var minutes = 1000 * 60;
            var hours = minutes * 60;
            var days = hours * 24;
            var years = days * 365;
            var d = new Date();
            var t = d.getTime();
            return t;
        },
        load:function(url,container,load){
            var obj = document.getElementById(container);
            var loader = '<div class="loading"></div>';
            if(obj && url){
                if(load){obj.innerHTML = loader;}
                ajax.page(url,container);
            }
        },
        page:function(url,container){
            var _url; var _no; var page_request = false;
            if(url.indexOf("?")==-1){_no = '?~' + ajax.nocache();}else{_no = '&~' + ajax.nocache();}
            _url = url + _no;
            
            if(window.XMLHttpRequest){
                page_request = new XMLHttpRequest();
            }else if(window.ActiveXObject){
                try{
                    page_request = new ActiveXObject('Msxml2.XMLHTTP');
                }catch(e){
                    try{
                        page_request = new ActiveXObject('Microsoft.XMLHTTP');
                    }catch(e){}
                }
            }else{
                return false;
            }

            page_request.onreadystatechange = function(){
                ajax.parse(page_request,container);
            }
            page_request.open('GET', _url, true);
            page_request.send(null);
        },
        parse:function(page_request,container){
            if(page_request.readyState==4 && (page_request.status==200 || window.location.href.indexOf('http')==-1)){
                document.getElementById(container).innerHTML = page_request.responseText;
                ajax.completed();
            }
        },
        completed:function(){
            // After complete functions here..
        }
    };
}();

/* Dark layer
---------------------------------------------------------------- */
var darken = function(){
    return {
        create:function(){
            var dark = document.getElementById('layerdark');
            if(!dark){
                var dot = document.createElement("div");
                dot.id = 'layerdark';
                dot.style.opacity = 0.5;
                dot.style.filter = 'alpha(opacity=50)';
                dot.style.width = '100%';
                dot.style.height = '100%';
                dot.style.position = 'absolute';
                dot.style.zIndex = '1000';
                dot.style.backgroundColor = '#000000';
                dot.style.left = '0px';
                dot.style.top = '0px';
                dot.onclick = function(){darken.kill();}
                document.body.appendChild(dot);
            }
        },
        show:function(){
            darken.create();
            var dark = document.getElementById('layerdark');
            var height = document.documentElement.scrollHeight;
            if(dark){
                dark.style.height = height + 'px';
                dark.style.display = 'block';
            }
        },
        fixed:function(){
            var dark = document.getElementById('layerdark');
            var height = document.documentElement.scrollHeight;
            if(dark){
                dark.style.height = height + 'px';
            }
        },
        kill:function(){
            var dark = document.getElementById('layerdark');
            if(dark){dark.style.display = 'none';}
        }
    };
}();

/* Validation
---------------------------------------------------------------- */
var validate = function(){
    var execute = true;
    return {
        err:function(step,f){
            var obj = document.getElementById(f);
            if(obj){
                if(step=='1'){obj.style.backgroundColor = '#ffabab';setTimeout("validate.err('2','"+f+"');", 50);}
                if(step=='2'){obj.style.backgroundColor = '#ffc5c5';setTimeout("validate.err('3','"+f+"');", 50);}
                if(step=='3'){obj.style.backgroundColor = '#ffdfdf';setTimeout("validate.err('4','"+f+"');", 50);}
                if(step=='4'){obj.style.backgroundColor = '#fef1f1';setTimeout("validate.err('5','"+f+"');", 50);}
                if(step=='5'){obj.style.backgroundColor = '#fff';}
            }
        },
        email:function(str){
            var filter = /^[^\s@]+@[^\s@]+\.[a-z]{2,6}$/i;
            if(filter.test(str)){return true;}else{return false;}
        },
        empty:function(str){
            var filter = /^\s+$/;
            var expression;
            if(filter.test(str) || str==''){expression = false;}else{expression = true;}
            return expression;
        },
        onlynumbers:function(evt){
            var charCode = (evt.which) ? evt.which : event.keyCode;
            if(charCode > 31 && (charCode < 48 || charCode > 57)){return false;}else{return true;}
        },
        search:function(f){
            if(!validate.empty(f.q.value)){
                execute = false;
            }
            return execute;
        },
        dummy:function(f){
            if(!validate.email(f.field1.value)){
                execute = false;
                validate.err('1',f.field1.id);
            }
            if(!validate.empty(f.field2.value)){
                execute = false;
                validate.err('1',f.field2.id);
            }
            return execute;
        }
    };
}();

/* Cookies
---------------------------------------------------------------- */
var cookies = function(){
    return {
        create:function(name,value,days){
            if(days){
                var date = new Date();
                date.setTime(date.getTime()+(days*24*60*60*1000));
                var expires = "; expires="+date.toGMTString();
            }
            else var expires = "";
            document.cookie = name+"="+value+expires+"; path=/";
        },
        read:function(name){
            var nameEQ = name + "=";
            var ca = document.cookie.split(';');
            for(var i=0;i < ca.length;i++){
                var c = ca[i];
                while (c.charAt(0)==' ') c = c.substring(1,c.length);
                if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
            }
            return null;
        },
        erase:function(name){
            cookies.create(name,"",-1);
        }
    };
}();

/* Library
---------------------------------------------------------------- */
var library = function(){
    return {
        elementposition:function(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;
        },
        scrollposition:function(){
            var myTop = 0, myLeft = 0;
            if(document.all){
                myLeft = (document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;
                myTop = (document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
            }else{
                myLeft = window.pageXOffset;
                myTop = window.pageYOffset
            }
            return myLeft+'/'+myTop;
        },
        cursorposition:function(e){
            e = e || window.event;
            var cursor = {x:0, y:0};
            if(e.pageX || e.pageY){
                cursor.x = e.pageX;
                cursor.y = e.pageY;
            }else{
                var de = document.documentElement;
                var b = document.body;
                cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
                cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
            }
            return cursor.x+'/'+cursor.y;
        },
        documentdimensions:function(){
            var myWidth = 0, myHeight = 0;
            if(typeof(window.innerWidth)=='number'){
                myWidth = window.innerWidth;
                myHeight = window.innerHeight;
            }else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)){
                myWidth = document.documentElement.clientWidth;
                myHeight = document.documentElement.clientHeight;
            }else if(document.body && (document.body.clientWidth || document.body.clientHeight)){
                myWidth = document.body.clientWidth;
                myHeight = document.body.clientHeight;
            }
            return myWidth+'/'+myHeight;
        },
        whichelement:function(e){
            var targ,found=false;
            if(!e){var e=window.event;}
            if(e.target){targ=e.target;}else if(e.srcElement){targ=e.srcElement;}
            if(targ.nodeType==3){targ=targ.parentNode;}
            if(targ.className=='contextmenu'){found=true;}else{found=false;}
            return found;
        },
        keycode:function(evt){
            evt = (evt) ? evt : ((event) ? event : null);
            var evver = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null );
            var keynumber = evt.keyCode;
            if(keynumber){return keynumber;}
        }
    };
} ();

/* Ticker
---------------------------------------------------------------- */
var ticker = function(){
    return {
        initialize:function(f,auto,wid){
            var obj = $d(f);
            var elm = $d(f+'-controls');
            if(obj){
                var tickers = ticker.count(f);
                if(tickers>1){
                    if(elm){
                        elm.innerHTML = '';
                        for(var d=0;d<tickers;d+=1){
                            var dc = d + 1;
                            if(d==0){
                                elm.innerHTML += '<li id="'+f+'-itm'+(dc)+'" class="current" onclick="ticker.click(\''+(dc)+'\',true,\''+f+'\',\''+wid+'\');"><span>Dot</span></li>';
                            }else{
                                elm.innerHTML += '<li id="'+f+'-itm'+(dc)+'" onclick="ticker.click(\''+(dc)+'\',true,\''+f+'\',\''+wid+'\');"><span>Dot</span></li>';
                            }
                        }
                    }
                }
                if(auto){
                    if(f=='ticker'){
                        tictim = setInterval("ticker.auto('"+f+"','"+wid+"');", 15000);
                    }else if(f=='breaking'){
                        bretim = setInterval("ticker.auto('"+f+"','"+wid+"');", 16000);
                    }
                }
            }
        },
        click:function(num,m,f,wid){
            if(!sliding){
                ticker.reset(f);
                var elm = $d(f+'-itm'+num);
                if(elm){elm.className = 'current';elm.blur();}
                ticker.toogle(num,f,wid);
                if(m){if(f=='ticker'){clearInterval(tictim);}else if(f=='breaking'){clearInterval(bretim);}}
                ticker.numbers(f,num);
            }
        },
        back:function(f,wid){
            if(!sliding){
                var obj = $d(f+'-controls');
                var items = obj.getElementsByTagName('li');
                var all = 0;var iscur = 0;
                for(var d=0;d<items.length;d+=1){
                    all++;
                    if(items[d].className=='current'){iscur = all;}
                }
                var next;
                if(iscur==1){next=all;}else{next=iscur-1;}
                ticker.click(next,false,f,wid);
            }
        },
        forward:function(f,wid){
            if(!sliding){
                var obj = $d(f+'-controls');
                var items = obj.getElementsByTagName('li');
                var all = 0;var iscur = 0;
                for(var d=0;d<items.length;d+=1){
                    all++;
                    if(items[d].className=='current'){iscur = all;}
                }
                var next;
                if(iscur==all){next=1;}else{next=iscur+1;}
                ticker.click(next,false,f,wid);
            }
        },
        auto:function(f,wid){
            if(!sliding){
                var obj = $d(f+'-controls');
                var items = obj.getElementsByTagName('li');
                var all = 0;
                var iscur = 0;
                for(var d=0;d<items.length;d+=1){
                    all++;
                    if(items[d].className=='current'){iscur = all;}
                }
                var next;
                if(iscur==all){next=1;}else{next=iscur+1;}
                ticker.click(next,false,f,wid);
            }
        },
        toogle:function(num,f,wid){
            var obj = $d(f);
            var _from = parseInt(obj.style.left);
            if(isNaN(_from)){_from=0; obj.style.left='0px';}else{_from=_from;}
            var _to = _from - (_from + ((num - 1) * wid));
            mover.move(f,_from,_to);
        },
        numbers:function(f,num,all){
            var curx = $d(f+'-current');
            var allx = $d(f+'-all');
            if(curx && allx){
                var all = ticker.count(f);
                curx.innerHTML = num;
                allx.innerHTML = all;
            }
        },
        reset:function(f){
            var obj = $d(f+'-controls');
            var items = obj.getElementsByTagName('li');
            for(var d=0;d<items.length;d+=1){
                items[d].className='';
            }
        },
        count:function(f){
            var obj = $d(f);
            var count = 0;
            var items = obj.getElementsByTagName('div');
            for(var d=0;d<items.length;d+=1){
                if(items[d].className=='itm'){
                    count++;
                }
            }
            return count;
        }
    };
}();

/* Move divs <|> slider.toogle('divname',['customfunction()','anotherfunction()']);
---------------------------------------------------------------- */
var mover = function(){
    var slideAtClose=true,duration=0.6,obj,newLeft,curLeft;
    return {
        init:function(elm,from){
            obj = $d(elm);
            if(obj){obj.style.left = from + 'px';}
        },
        move:function(elm,from,to,functions){
            if(!sliding){
                mover.init(elm,from);
                newLeft = to;
                curLeft = from;
                mover.slide(elm,functions);
            }
        },
        slide:function(elm,functions){
            sliding = true;
            var frames = 30 * duration;
            var tinc = (duration * 1000) / frames;
            tinc = Math.round(tinc);
            var sinc = (curLeft - newLeft) / frames;
            var frameSizes = new Array();
            for(var i=0;i<frames;i++){
                if(i < frames / 2){
                    frameSizes[i] = (sinc * (i / frames)) * 4;
                } else {
                    frameSizes[i] = (sinc * (1 - (i / frames))) * 4;
                }
            }
            for(var i=0;i<frames;i++){
                curLeft = curLeft - frameSizes[i];
                window.setTimeout("document.getElementById('"+elm+"').style.left = '"+Math.round(curLeft)+"px';", tinc * i);
                if((i + 1) == frames){window.setTimeout("mover.complete("+functions+");", tinc * (i + 5));}
            }
        },
        hide:function(){
            obj.style.height = 'auto';
            obj.style.display = 'none';
        },
        complete:function(functions){
            sliding = false;
            if(functions){
                for(var i=0;i<functions.length;i++){
                    try{eval(functions[i]);}catch(e){alert(e.description);}
                }
            }
        }
    };
}();

/* Misc
---------------------------------------------------------------- */
function openusergroup() {
    window.open("Admin/GroupEditor.aspx", "openusergroup", "width=600,height=650,status=no,menu=no,resizable=yes,scrollbars=yes");
}

function openrettigheder(id) {
    window.open("Admin/PermissionAdmin.aspx?id=" + id, "openrettigheder", "width=600,height=650,status=no,menu=no,resizable=yes,scrollbars=yes");
}

//disable image resize functions ->
function OnClientLoad(editor, args) {
    setTimeout(function () {
        disableResize(editor)
    }, 0);
}

function OnClientPasteHtml(editor, args) {
    setTimeout(function () {
        disableResize(editor)
    }, 0);
}

function disableResize(editor) {
    var oDoc = editor.get_document();
    var images = oDoc.getElementsByTagName("IMG");
    if ($telerik.isIE) {
        for (var i = 0; i < images.length; i++) {
            images[i].attachEvent("onresizestart", function (e) { e.returnValue = false; }, false);
        }
    } else {
        oDoc.execCommand("enableObjectResizing", false, false);
    }
}
//<- disable image resize functions end

function InsertMailToTag(userName, domainName) {
    var EmailId;
    var atSign = "&#64;"
    var fullStop = "&#46";

    EmailId = userName;
    EmailId = "" + EmailId + atSign;
    EmailId = EmailId + domainName;

    document.write("<a href='mail" + "to:" + EmailId + "'>" + EmailId + "</A>");
}

