﻿menu = function() {
    this.obj = $('submenu');
    this.init();
    menu.current = this;
}

function getFirstGoodDate()
{
    var d = new Date();
    var dow = d.getDay();
    var add = 2;
    if (dow>2)
        add += 2;
    if (dow == 6)
        add--;
    if (d.getHours()>13)
        add++;
    d.addDays(add);
    d.setHours(23, 59, 59, 99);
    return d;
}

function isvalid(date) {
    var cday = getFirstGoodDate();
    return (cday < date);
}
/*
Event.observe(window, 'load', function() {
    $$('a[href^=#]:not([href=#])').each(function(element) {
        element.observe('click', function(event) {
            new Effect.ScrollTo(this.hash.substr(1));
            Event.stop(event);
        } .bindAsEventListener(element))
    })
})
*/
var activetab = 0;

toggletab = function(obj) {
    var cardurl = '/images/tabcard.gif';
    var tripurl = '/images/tabtrip.gif';
    if (activetab == 1) {
        $('tab2').hide();
        $('tab1').show();
        //$('triplist').hide();
        obj.src = tripurl;
        activetab = 0;
        $('ctl00_rgt_helptextcard').hide();
        $('ctl00_rgt_helptext').show();
        $('ctl00_cph1_exBook_froms').focus();
        
    }
    else {
        $('tab2').show();
        $('tab1').hide();
        $('triplist').hide();
        obj.src = cardurl;
        activetab = 1;
        $('ctl00_rgt_helptextcard').show();
        $('ctl00_rgt_helptext').hide();
        $('ctl00_cph1_exBook_fromc').focus();
    }
}
toggletab.to = function(t) {
    $('tab1').hide();
    $('tab2').hide();
    $('tab3').hide();
    $('tab4').hide();
    $('tab5').hide();
    $('tab'+t).show();
}

menu.toggle = function(e) {
    //var obj = $(this).next('.sub');
    this.isOpen = !this.isOpen;
    var o = this.isOpen;
    var obj = this.next('.sub');
    var a = $(this.aobj);
    if (o) {
        if (this.className.indexOf('last') != -1) {
            this.removeClassName('last');
            this.islast = true;
        }
        a.removeClassName('arrow');
        a.addClassName('dnarrow');
    }
    else {
        if (this.islast)
            this.addClassName('last');
        a.removeClassName('dnarrow');
        a.addClassName('arrow');
    }
    while (obj) {
        if (o)
            new Effect.BlindDown(obj, { duration: 0.2 });
        else
            new Effect.BlindUp(obj, { duration: 0.2 });

        obj = obj.next();
        if (!obj || obj.className.indexOf('sub') == -1)
            break;
    }
}

menu.prototype.init = function() {
    var ul = this.obj;
    if (ul) {
        var lastChild = $(ul).select("li:last-child")[0];
        var noc = ul.childNodes.length;
        for (var i = 0; i < noc; i++) {
            var li = ul.childNodes[i];
            if (li.tagName && li.tagName.toLowerCase() == 'li') {
                if (li.className.indexOf('sub') != -1) {
                    //li.style.display = 'none';
                }
                else {
                    var sub = $(li).next();
                    if (sub && sub.className.indexOf('sub') != -1) {
                        if (sub == lastChild) {
                            sub.addClassName("subend");
                        }

                        var aobj = li.down('a');
                        var disp = sub.style.display.toLowerCase();
                        li.isOpen = (disp != 'none');
                        li.aobj = aobj;
                        if (li.isOpen) {
                            aobj.addClassName('dnarrow');
                            li.removeClassName('last');
                        }
                        else
                            aobj.addClassName('arrow');
                    }
                    if (!li.isOpen)
                        li.onclick = menu.toggle;
                }
            }
        }
    }
}

function start() {
    new menu();
    if (window.location.hash == '#sommarkortet') {
        toggletab($('tabimg'));
        $('cardtype').selectedIndex = 3;
        changecard();
    }
}

function togglehelp() {
    var h = $('help');
    if (h.style.display != 'none') {
        $('help').hide();
        $('nohelp').appear();
    }
    else {
        

        $('nohelp').hide();
        $('help').appear();
    }
}

updates = function(obj) {
    this.resultObj = obj;
    this.uid = obj.data.updateid;
}
updates.prototype.getTimeline = function() {
    var t = this;
    if (!this.resObj) {
        Tagkompaniet.Timeline.Service.GetTimeline(this.uid, function(res) { t.gotTimeline(res); });
    }
}
updates.prototype.gotTimeline = function(xml) {
    if (!this.resObj) {
        var ul = document.createElement('ul');
        this.resultObj.appendChild(ul);
        this.resObj = ul;

        for (var i = 0; i < xml.length; i++) {
            var li = this.parse(this.resObj, xml[i])
        }
    }
}
updates.prototype.parse = function(parent, data) {
    var li = document.createElement('li');
    li.innerHTML = data;
    parent.appendChild(li);
    return li;
}
var Tagkompaniet = function() { };
Tagkompaniet.Timeline = function() { };


function checkbook() {
    var sel = false;
    $$('input.bdep').each(function(obj) {
        //console.log(obj);
        if (obj.checked || sel) {
            sel = true;
        }
    })
    if (!sel)
        alert('Du måste välja en avgång innan du bokar.');
    return sel;
}

tripinfo = function()
{
}

tripinfo.toggle = function(o) {
    var ttrip;
    if (o && o.parentNode)
        ttrip = o.parentNode.parentNode;
    else
        ttrip = this.parentNode.parentNode;
    //var ttrip = this.parentNode.parentNode;
    var tparent = ttrip.parentNode;
    $(tparent).descendants('div.trip').each(function(obj) { obj.removeClassName('seltrip'); });
    ttrip.addClassName('seltrip');
}

tripinfo.show = function(obj) {
    if (!obj)
        var obj = this;
    //$(obj).toggleClassName('si');

    var inf = $(obj).down('.info');
    var o = inf.style.display != 'none';
    var cbs = $(obj).getElementsByTagName('input');
    //var cb = $(obj).down('input');
    //console.log(cb);
    for (var i = 0; i < cbs.length; i++) {
        var cb = cbs[i];
        if (cb) {
            if (cb.checked) {
                //alert(cb.checked);
                if (o)
                    return;
                o = false;
            }
        }
    }
    
    if (!o) {
        new Effect.BlindDown(inf, { duration: 0.2 });
        $(obj).addClassName('si');
    }
    else {
        new Effect.BlindUp(inf, { duration: 0.2 });
        $(obj).removeClassName('si');
    }
}

help = function() {
}

help.show = function()
{
    Effect.BlindDown('help');
    //$('help').down('div').
}

function globalfetch() {
    qsearch.initpre('search', 'pres', '/sokresultat__35');
}

qsearch = function() {
}

qsearch.initpre = function(objid, preid, surl) {
    var obj = $(objid);
    obj.onkeyup = function(e) {
        if (preid)
            qsearch.prefind(this.value, $(preid));
    }
    obj.onclick = function(e) {
        e = window.event || e;
        if (this.value.length > 2) {
            window.location = surl + '?' + escape(this.value);
            e.cancelBubble = true;
            if (e.stopPropagation) e.stopPropagation();
            return false;
        }
    }
    obj.onkeypress = function(e) {
        e = window.event || e;
        if (e.keyCode == 13) {
            window.location = surl + '?' + escape(this.value);
            e.cancelBubble = true;
            if (e.stopPropagation) e.stopPropagation();
            return false;
        }
    }
}

qsearch.init = function(objid, resid, preid) {
    var obj = $(objid);
    obj.onclick = function() {
        qsearch.find(this.value, resid);
    }
    obj.onkeyup = function() {
        if (preid) 
            qsearch.prefind(this.value, $(preid));
    }
    obj.onkeypress = function(e) {
        if (!e) var e = window.event;
        if (e.keyCode == 13) {
            qsearch.find(this.value, resid);
            e.cancelBubble = true;
            if (e.stopPropagation) e.stopPropagation();
            return false;
        }
    }
    obj.value = unescape(window.location.search.substring(1));
    if (obj.value.length > 0) {
        qsearch.find(obj.value, resid);
    }
}

qsearch.prefind = function(q, resid) {
    var obj = $(resid);
    var p = obj.prefetch;
    if (!p) {
        var p = new prefetch();
        p.resObj = obj;
        obj.prefetch = p;
        var ws = Core.WebServices.Common;
        ws.set_defaultFailedCallback(function(res) {p.fail(res);} );
    }
    p.query = q;
    p.preFetch();
}

prefetch = function() {

}

prefetch.prototype.fail = function(msg) {
    //console.log(msg);
    alert('Något var fel med sökningen.\nTips, börja inte sökningen med AND, OR, NOT eller *');
    this.fetching = false;
}

prefetch.prototype.hideinfo = function() {
    $(this.resObj).fade();
}

prefetch.prototype.showInfo = function(txt) {
    $(this.resObj).appear();
    this.resObj.innerHTML = txt;
    if (this.tot)
        clearTimeout(this.tot);
    var v = this;
    this.tot = setTimeout(function() { v.hideinfo(); }, 5000);
}

prefetch.prototype.preFetch = function() {
    var t = this;
    if (t.query.length > 2) {
        clearTimeout(t.timeout);
        var tq = t.query;
        if (tq != t.lastQuery) {
            t.timeout = setTimeout(function() {
                if (!t.fetching) {
                    t.lastQuery = tq;
                    Core.WebServices.Common.PreSearch(tq, function(res) { t.gotPre(res); });
                    t.fetching = true;
                }
            }, 500);
        }
    }
    else {
        //this.resObj.innerHTML = 'Minst 3 tecken sökord';
        this.showInfo('Minst 3 tecken sökord');
    }
}

prefetch.prototype.gotPre = function(res) {
    this.fetching = false;
    if (res > 500) {
        //this.resObj.innerHTML = '>500st träffar';
        this.showInfo('>500st träffar');
    }
    else if (res > 0)
        this.showInfo(res + 'st träffar');
    //this.resObj.innerHTML = res + 'st träffar';
    else {
        if (this.query.indexOf('*') == -1)
            this.showInfo('Ingen träff, prova ' + this.query + '*');
        //this.resObj.innerHTML = 'Ingen träff, prova ' + this.query + '*';
        else {
            this.showInfo('Ingen träff, prova ett annat sökord');
            //this.resObj.innerHTML = 'Ingen träff, prova ett annat sökord';
        }
    }
}


qsearch.find = function(q, resid) {
    if (q.length > 1) {
        var obj = $(resid);
        if (!obj.search) {
            var s = new qsearch();
            obj.search = s;
            obj.vp = setInterval(function() { s.scrollTimer(); }, 100);
        }
        var so = obj.search;
        if (so.lastq != q) {
            so.done = false;
            so.maxy = 0;
            obj.innerHTML = '';
            so.resObj = obj;
            so.query = q;
            so.page = 0;
            so.limit = 25;
            so.fetch();
            so.lastq = q;
        }
    }
}

qsearch.prototype.fetch = function() {
    var t = this;
    this.loading = true;
    Core.WebServices.Common.SearchPaged(t.query, t.page, t.limit, function(res) { t.gotResult(res); });
}
qsearch.prototype.gotResult = function(res) {
    this.loading = false;
    if (!res) {
        this.done = true;
        clearInterval(this.vp);
        alert('Inga mer resultat');
    }
    else {
        if (res.length == 0)
            this.resObj.innerHTML = 'Inga resultat på "'+this.query+'" sökning prova att lägga till *, eller att formulera om sökningnen';
        for (var i = 0; i < res.length; i++) {
            this.parse(res[i]);
        }
    }
}
qsearch.prototype.parse = function(res) {
    var obj = document.createElement('li');
    var div = document.createElement('div');
    var intro = document.createElement('div');
    div.className = 'date';
    div.innerHTML = '<b>' + res.Date.format('yyyy-MM-dd') + '</b> (relevans: '+Math.round(res.Score*100)+'%)';
    intro.innerHTML = res.Intro;
    var a = document.createElement('a');
    a.href = '/__' + res.PageId;
    a.innerHTML = res.Title;
    obj.appendChild(div);
    obj.appendChild(a);
    obj.appendChild(intro);
    this.resObj.appendChild(obj);
}

qsearch.prototype.scrollTimer = function() {
    var d = document.viewport.getDimensions();
    var s = document.viewport.getScrollOffsets();

    var e = $('bottommarker').viewportOffset();

    var shouldappend = false;
    if (e[1] <= d.height)
        shouldappend = true;

    if (s[1] > this.maxy) {
        this.maxy = s[1];
        if (shouldappend && !this.loading) {
            if (!this.done) {
                this.page++;
                this.fetch();
            }
        }
    }


    // var dy = ;


}
/*
String.prototype.insert = function(str, i) {
    return this.substr(0, i) + str + this.substr(i);
}
*/
infotext = [
    '<b>BOKNING</b><br />H&auml;r kan du best&auml;lla resor med T&aring;gkompaniet samt med t&aring;g och buss i hela Sverige.<br/><ul><li>Väljer du en resa med Tågkompaniet kan du boka fram till tågets avgång.</li><li>Väljer du en resa med andra tågbolag kan du göra det fram till tre arbetsdagar före avresan.</li><li>Väljer du en resa med Länstrafiken, eller Tågkompaniet och Länstrafiken, kan du göra det 24 timmar före avgång.</li></ul>',
    '<b>RABATTER</b><br />När du &aring;ker med T&aring;gkompaniet får du del av v&aring;ra enkla villkor, med rabatter för barnfamiljer, studerande och ungdomar ej fyllda 26 &aring;r.<br /><ul><li>Tv&aring; barn ej fyllda 16 &aring;r reser gratis i vuxens s&auml;llskap.</li><li>Tv&aring; barn ej fyllda 7 &aring;r reser gratis i s&auml;llskap med ungdom eller studerande.</li><li>Ungdomar ej fyllda 26 &aring;r har 30 procents rabatt.</li>    <li>Studerande med CSN- eller SFS-kort har ca 30 procents rabatt.</li></ul>',
    '<b>NÄR BÖR DU BOKA?</b><br/><ul><li>Väljer du en resa med Tågkompaniet kan du boka fram till tågets avgång.</li><li>Väljer du en resa med andra tågbolag kan du göra det fram till tre arbetsdagar före avresan.</li><li>Väljer du en resa med Länstrafiken, eller Tågkompaniet och Länstrafiken, kan du göra det 24 timmar före avgång.</li></ul>',
    '<b>LEVERANSS&Auml;TT F&Ouml;R RESOR MED ANDRA TRAFIKBOLAG &Auml;N T&Aring;GKOMPANIET<br />L&auml;nstrafikens biljetter <br />(&auml;ven resa med T&aring;gkompaniet och L&auml;nstrafiken):</b><ul><li>e-postbiljett. Boka senast 24 timmar f&ouml;re avg&aring;ng. Visa en utskrift av biljetten och din legitimation under resan.</li><li>Hembiljett. Boka tre arbetsdagar i f&ouml;rv&auml;g, vi postar biljetterna till dig (kostnad 10 kr).</li></ul><b>SJ:s biljetter:</b><br />Hembiljett. Boka tre arbetsdagar i f&ouml;rv&auml;g, vi postar biljetterna till dig (kostnad 10 kr).<br />',
    '<b>NOTERA</b><br/>Beställer du din resa via internet och betalar med kort kan du inte boka om eller boka av resan. ',
    '<p><b>BEGRÄNSAT UTBUD</b><br />Den resa du valt trafikeras helt, eller delvis, av ett annat tågbolag. Det kräver tre dagars leveranstid av biljetterna. Eftersom du inte hinner få hem biljetterna i tid kommer inte denna avgång inte gå att boka.</p>'
//'<p><b>BEGRÄNSAT UTBUD</b><br />Den resa du valt trafikeras helt, eller delvis, av ett annat tågbolag. Det kräver tre dagars leveranstid av biljetterna. Eftersom du inte hinner få hem biljetterna i tid kommer inte avgångar med andra tågbolag visas på de datum som markeras med rött.</p>'
];

function insertInfo(nr) {
    document.write('<img src="/images/info.gif" alt="Information" class="hinfo" onmouseover="showinfo(this,' + nr + ')" onmouseout="hideinfo(this)" />');
}
function showinfo(obj, nr, red) {
    if (red == undefined)
        red = false;

    var i = document.createElement('div');
    var pos = $(obj).positionedOffset();
    i.style.top = pos[1]+18 + 'px';
    i.style.left = pos[0]-35 + 'px';
    //console.log(pos);

    i.className = 'infobox';
    if(red)
        i.className += ' redInfo';
    i.innerHTML = '<div>' + infotext[nr] + '</div>';
    $('wrapper').appendChild(i);
    
    //obj.parentNode.insertBefore(i,obj);
    //document.body.appendChild(i);
    //console.log(i.innerHTML);
    obj.info = i;
}

function hideinfo(obj, nr) {
        obj.info.parentNode.removeChild(obj.info);
    //obj.parentNode.removeChild(obj.info);
}

function openavtal() {
    var w = window.open('/avtal', 'Avtal', 'WIDTH=300,HEIGHT=500,scrollbars=1', true);
    w.focus();
}

function toggleao(obj) {
    var o = obj.parentNode;
    var p = $(o).select('span.pageinfo');
    p[0].style.display = (p[0].style.display!='block')?'block':'none';
}

//Event.observe(window, 'load',start );


function enlargeCard(id) {
    $('card_' + id).show();
}

function closeCard(id) {
    $('card_' + id).hide();
}

function opensettings(src) {
    openPopup('vsetting', src);
}

function closesettings() {
    closePopup('vsetting');
}

function openPopup(id, src, cssclass) {
    var div = $(id + "_div");
    if (!div) {
        div = document.createElement('div');
        if (cssclass)
            div.className = cssclass;
        else
            div.className = 'bookPopup';
        div.innerHTML = "<iframe id='" + id + "' frameborder='0' scrolling='auto' src='" + src + "'></iframe>";

        div.id = id + "_div";
        document.body.appendChild(div);

        $(id).height = div.offsetHeight - 12 + "px";
        $(id).width = div.offsetWidth - 12 + "px";
    }
    else {
        div.innerHTML = "<iframe id='" + id + "' frameborder='0' scrolling='auto' src='" + src + "'></iframe>";
    }
    div.show();
}

function closePopup(id) {
    //console.log(id);
    var obj = $(id + '_div');
    //console.log(obj);
    if (obj) {
        obj.style.display = 'none';
        document.body.removeChild(obj);
    }
}

function openCustomer(id) {
    openPopup('cust_iframe', "/agent/CustomerPopup.aspx?cid=" + id);
}

function closeCustomer() {
    closePopup('cust_iframe');
}

function togglesummer(obj) {
    obj.src = '/images/sommaron.jpg';
    toggletab.to(5);

}

function opentab(nr) {
    $('tabc').style.backgroundPosition = '0px -' + (((nr - 1) * 46) + 2) + 'px';
    if (nr == 3) nr = 5;
    $('tab1').hide();
    $('tab2').hide();
    //$('tab3').hide();
    //$('tab4').hide();
    $('tab5').hide();
    $('tab' + nr).show();
    
}

document.observe("dom:loaded", start);
