YAHOO.namespace('IEDesign');


YAHOO.IEDesign.Resources = function(){


    

    function init(){
        var $E = YAHOO.util.Event,
        $D = YAHOO.util.Dom,
        $ = YAHOO.util.Dom.get;



        var comments = $D.getElementsByClassName('comment_show');

        //console.log(comments);

        for ( var i in comments ){
            $E.on(comments[i],'click',function(e){

                $E.stopEvent(e);

                var selcom = $E.getTarget(e).id;
                var newsel = $D.getElementsByClassName('c-'+selcom);

                //console.log(newsel);

                

                if(newsel == null){

                    
                    return false;
                }

                var selclass = newsel[0].className;

                //console.log(selclass);
                selclass = selclass.substring(15);

                //console.log(selclass);


                if(selclass == 'show'){

                    $D.removeClass(newsel,'show');

                }else{
                    $D.addClass(newsel,'show');
                }

            });
        }


        var links = $D.getElementsByClassName('comment_pop');

        for ( var i in links ){
            $E.on(links[i],'click',function(e){

                $E.stopEvent(e);

                tid = $E.getTarget(e).id;

                //console.log(tid);
                tid = tid.substring(3);


                var pop = window.open('/comments/index/id/'+tid,'comment_window','width=400,height=400,left=300,top=300,scrollbars=no');
                if(pop){
                    //it was ok
                } else{
                    alert('Please allow pop-ups to comment!');
                }


            });

        }
    }

    return {
        init: init
    }

}();


YAHOO.IEDesign.Search = function(){

    function init() {

        var $E = YAHOO.util.Event,
        $D = YAHOO.util.Dom,
        $ = YAHOO.util.Dom.get;

        $E.on('search', 'focus', function(e){

            var v = $('search').value;

            if ('Search' == v){
                $('search').value = '';
            }

        });

        $E.on('search', 'blur', function(e){

            var v = $('search').value;

            if ('' == v){
                $('search').value = 'Search';
            }

        });

        $E.on('searchm', 'focus', function(e){

            var v = $('searchm').value;

            if ('Searchm' == v){
                $('search').value = '';
            }

        });

        $E.on('searchm', 'blur', function(e){

            var v = $('searchm').value;

            if ('' == v){
                $('searchm').value = 'Search';
            }

        });
        
        var menu = $D.getElementsByClassName('yui-nav')[0];
               
        $E.on('pages-tab', 'click', function(e){	
            $D.setStyle(menu, 'border-color', '#004D9B');
        });
        
        $E.on('shop-tab', 'click', function(e){	
            $D.setStyle(menu, 'border-color', '#8B45B0');
        });
        
        $E.on('events-tab', 'click', function(e){	
            $D.setStyle(menu, 'border-color', '#F37021');
        });
        
        $E.on('resources-tab', 'click', function(e){	
            $D.setStyle(menu, 'border-color', '#9ACA3C');
        });
        
    }

    return {
        init: init
    }

}();

YAHOO.IEDesign.ResourceKeywords = function(){

    function init() {

        var $E = YAHOO.util.Event,
        $D = YAHOO.util.Dom,
        $ = YAHOO.util.Dom.get;

        var els = $D.getElementsByClassName('keyword_links');

        for (i=0;i<els.length;i++) {

            $E.addListener(els[i], 'click', processKeywordClick, els[i].innerHTML);

        }

    }


    function processKeywordClick(e,keyword) {

        $E.stopEvent(e);

        $D.get('rsearch').value += ' ' + keyword;

    }

    return {
        init: init,
        processKeywordClick: processKeywordClick
    }

}();


YAHOO.IEDesign.Accordion = function(){


    var spin = null;
    var click = 0;

    var buttons = null;

    var turn = 1;
    var arrowheight = null;

    var $E, $D;

    var tabin = null;
    var tabout = null;
    var arrowout = null;
    var arrowin = null;
    var arrow = null;


    function  timer(){


        $E = YAHOO.util.Event;
        $D = YAHOO.util.Dom;
        $ = $D.get;

        var arrowheight = 20;

        spin = setInterval(function(){

            domove();

            
        }, 10000);
    }

    function domove(){
        //set the 2nd image
            if(turn == 4){
                turn = 0;
            }
            temp = 'url(../img/placeholders/slab' + (turn+1) + '.png)';

            //check if we need to fade it out or bring it back in
            if(turn%2){
                img = 'img_2';
                imo = 0;
            }else{
                img = 'img_1';
                imo = 1;
            }
            //set the other panel first
            YAHOO.util.Dom.setStyle(img, 'background-image', temp);

            var imagemove = new YAHOO.util.Anim('img_1', {
                opacity: {
                    to: imo
                }
            }, 5, YAHOO.util.Easing.easeBothStrong);



            //get the buttons
            if(turn == 0){
                buttona = $D.getElementsByClassName('buttons')[0].getElementsByTagName('li')[3].getElementsByTagName('a')[0];
                buttonb = $D.getElementsByClassName('buttons')[0].getElementsByTagName('li')[0].getElementsByTagName('a')[0];
            }else{
                buttona = $D.getElementsByClassName('buttons')[0].getElementsByTagName('li')[turn-1].getElementsByTagName('a')[0];
                buttonb = $D.getElementsByClassName('buttons')[0].getElementsByTagName('li')[turn].getElementsByTagName('a')[0];
            }


            //get the arrow :D
            arrow = $D.getElementsByClassName('arrow')[0];

            //get the link panels
            links = $D.getElementsByClassName('accordion_links');

            if(turn == 0){
                linka = links[3];
                linkb = links[0];
            }else{
                linka = links[turn-1];
                linkb = links[turn];
            }

            //setup the animation

            arrowout = new YAHOO.util.Anim(arrow, {
                opacity: {
                    to: 0
                }
            }, 1, YAHOO.util.Easing.easeBothStrong);


            arrowin = new YAHOO.util.Anim(arrow, {
                opacity: {
                    to: 1
                }
            }, 1, YAHOO.util.Easing.easeBothStrong);


            tabin = new YAHOO.util.Anim(buttona, {
                paddingRight: {
                    to: 0
                }
            }, 1, YAHOO.util.Easing.backOut);

            tabout = new YAHOO.util.Anim(buttonb, {
                paddingRight: {
                    to: 12
                }
            }, 1, YAHOO.util.Easing.backOut);


            linkin = new YAHOO.util.Anim(linkb, {
                opacity: {
                    to: 1
                }
            }, 3, YAHOO.util.Easing.backOut);

            linkout = new YAHOO.util.Anim(linka, {
                opacity: {
                    to: 0
                }
            }, 3, YAHOO.util.Easing.backOut);


            //lets actually move the stuff now
            arrowout.onComplete.subscribe(imagemove.animate());
            arrowout.onComplete.subscribe(setTimeout("YAHOO.IEDesign.Accordion.arrowinf();",3000));
            imagemove.onStart.subscribe(setTimeout("YAHOO.IEDesign.Accordion.tabinf();",1000));
            imagemove.onStart.subscribe(setTimeout("YAHOO.IEDesign.Accordion.taboutf();",2000));

            tabin.onComplete.subscribe(function(){
                $D.setStyle(linka,'display','none');
            });

            //tabout.onStart.subscribe(function(){$D.setStyle(linkb,'display','');});

            //imagemove.onStart.subscribe(setTimeout("YAHOO.IEDesign.Accordion.linkoutf();",3000));

            //imagemove.onComplete.subscribe(setTimeout("YAHOO.IEDesign.Accordion.linkinf();",3000));


            tabin.onComplete.subscribe(linkout.animate());
            tabout.onComplete.subscribe(function(){
                $D.setStyle(linkb,'display','');linkin.animate();
            });

            // console.log('fade');

            arrowout.animate()

            turn = (turn+1);



    }

    function doremove(clicked){

        //console.log(turn);
        //console.log(clicked);


        var click = clicked;


        temp = 'url(../img/placeholders/slab' + (click+1) + '.png)';

        //check if we need to fade it out or bring it back in
        if(click%2){
            img = 'img_2';
            imo = 0;
        }else{
            img = 'img_1';
            imo = 1;
        }
        //set the other panel first
        YAHOO.util.Dom.setStyle(img, 'background-image', temp);

        var imagemove = new YAHOO.util.Anim('img_1', {
            opacity: {
                to: imo
            }
        }, 5, YAHOO.util.Easing.easeBothStrong);



        //get the buttons
        if(turn == 0){
            buttona = $D.getElementsByClassName('buttons')[0].getElementsByTagName('li')[3].getElementsByTagName('a')[0];
            buttonb = $D.getElementsByClassName('buttons')[0].getElementsByTagName('li')[0].getElementsByTagName('a')[0];
        }else{
            buttona = $D.getElementsByClassName('buttons')[0].getElementsByTagName('li')[turn-1].getElementsByTagName('a')[0];
            buttonb = $D.getElementsByClassName('buttons')[0].getElementsByTagName('li')[click].getElementsByTagName('a')[0];
        }


        //get the arrow :D
        arrow = $D.getElementsByClassName('arrow')[0];

        //get the link panels
        links = $D.getElementsByClassName('accordion_links');

        if(turn == 0){
            linka = links[3];
            linkb = links[click];
        }else{
            linka = links[turn-1];
            linkb = links[click];
        }

        //setup the animation

        arrowout = new YAHOO.util.Anim(arrow, {
            opacity: {
                to: 0
            }
        }, 1, YAHOO.util.Easing.easeBothStrong);


        arrowin = new YAHOO.util.Anim(arrow, {
            opacity: {
                to: 1
            }
        }, 1, YAHOO.util.Easing.easeBothStrong);


        tabin = new YAHOO.util.Anim(buttona, {
            paddingRight: {
                to: 0
            }
        }, 1, YAHOO.util.Easing.backOut);

        tabout = new YAHOO.util.Anim(buttonb, {
            paddingRight: {
                to: 12
            }
        }, 1, YAHOO.util.Easing.backOut);


        linkin = new YAHOO.util.Anim(linkb, {
            opacity: {
                to: 1
            }
        }, 3, YAHOO.util.Easing.backOut);

        linkout = new YAHOO.util.Anim(linka, {
            opacity: {
                to: 0
            }
        }, 3, YAHOO.util.Easing.backOut);


        //lets actually move the stuff now
        arrowout.onComplete.subscribe(imagemove.animate());
        arrowout.onComplete.subscribe(setTimeout("YAHOO.IEDesign.Accordion.arrowinrf("+ click +");",3000));
        imagemove.onStart.subscribe(setTimeout("YAHOO.IEDesign.Accordion.tabinf();",1000));
        imagemove.onStart.subscribe(setTimeout("YAHOO.IEDesign.Accordion.taboutf();",2000));

        tabin.onComplete.subscribe(function(){
            $D.setStyle(linka,'display','none');
            //console.log('getting here');
        });

        //tabout.onStart.subscribe(function(){$D.setStyle(linkb,'display','');});

        //imagemove.onStart.subscribe(setTimeout("YAHOO.IEDesign.Accordion.linkoutf();",3000));

        //imagemove.onComplete.subscribe(setTimeout("YAHOO.IEDesign.Accordion.linkinf();",3000));


        tabin.onComplete.subscribe(linkout.animate());
        tabout.onComplete.subscribe(function(){
            $D.setStyle(linkb,'display','');linkin.animate();
        });

        // console.log('fade');

        arrowout.animate()


        turn = (click + 1);

        click = (0);

        timer();


    }

    function init() {

        $E = YAHOO.util.Event;
        $D = YAHOO.util.Dom;
        $ = $D.get;

        listners();

        timer();

    }

    function listners(){
        //get the buttons div, and all the li tags
        var butts = $D.getElementsByClassName('buttons')[0].getElementsByTagName('li');


        //console.log(butts);

        //foreach button set a listner

        $E.on(butts, "click", function(e){

            //console.log('sd');

            $E.stopEvent(e); //stop event

            tabclick(e); //fire off a tab click


        }
    );
    }

    function tabclick(e){

        var target = $E.getTarget(e);

        purgereset(target);

    }


    function purgereset(target){

        clearInterval(spin);

        YAHOO.util.Event.purgeElement(arrowout, true);

        //need to work out whats been clicked

        switch(target.className){
            case"red":
                var click = 0;
                break;
            case"green":
                var click = 1;
                break;
            case"yellow":
                var click = 2;
                break;
            case"teal":
                var click = 3;
                break;
        }

        doremove(click);

    }

    function arrowinrf(click){

        arrowheight = $D.getStyle(arrow,'top');
        arrowheight = parseInt(arrowheight);

        //console.log(click);


        switch(parseInt(click))
        {
            case 0:
                var arrowheight = 20;
                break;
            case 1:
                var arrowheight = 70;
                break;
            case 2:
                var arrowheight = 120;
                break;
            case 3:
                var arrowheight = 170;
                break;
            default:
                var arrowheight = 20;
        }



        $D.setStyle(arrow,'top',arrowheight+'px');

        arrowin.animate();



    }


    function linkinf(){
        //console.log('commingout');
        $D.setStyle(linkb,'display','');
    }

    function linkoutf(){
        //console.log('going in');
        $D.setStyle(linka,'display','none');
    }



    function tabinf(){
 
        tabin.animate();
    }

    function taboutf(){

        tabout.animate();
    }

    function arrowinf(){


        arrowheight = $D.getStyle(arrow,'top');
        arrowheight = parseInt(arrowheight);

        if(turn == 1){
            var arrowheight= 20;
        }else{
            var arrowheight = arrowheight + 50;
        }



        $D.setStyle(arrow,'top',arrowheight+'px');

        arrowin.animate();
        
    }


    return {
        init: init,
        tabinf: tabinf,
        taboutf: taboutf,
        arrowinf: arrowinf,
                arrowinrf: arrowinrf,
        linkinf: linkinf,
        linkoutf: linkoutf
    }

}();

YAHOO.IEDesign.Columns = function()
{
    var $E, $D, $C;

    var cookies, panels, closed = new Array();

    function setCookies(value)
    {
        $C.set("columns", value, {
            path: "/my-CPAS",     // my-CPAS
            domain: "cpas4009.local"   // cpas4009.local
        });
    }

    function initCookies()
    {
        cookies = $C.get("columns");

        if (null != cookies)
        {
            cookies = cookies.split(',');
        }
        else
        {
            cookies = new Array();
        }
    }

    function setPanels()
    {
        panels = $D.getElementsByClassName('my-panel');
    }

    function setButtons()
    {
        for (var i = 0; i < panels.length; i++)
        {

            for (var j = 0; j < cookies.length; j++)
            {
                var target = cookies[j];
                if (panels[i].id == target)
                {
                    closed.push(panels[i].id);
                }
            } // END FOR EACH cookie

            var button = null;

            var panel = panels[i];

            if ($D.hasClass(panel, 'collapsed'))
            {
                button = $D.getChildren(panels[i])[0];
                $D.addClass(button, 'open-button');
            }
            else
            {
                button = $D.getChildren(panels[i])[0];
                $D.addClass(button, 'collapse-button');
            }

            $E.addListener(button, 'click', function()
            {
                var parent = this.parentNode;

                var hasClass = $D.hasClass(parent, 'collapsed');

                if (hasClass)
                {
                    $D.removeClass(parent, 'collapsed');
                    $D.addClass(parent, 'expanded');

                    for (var k = 0; k < closed.length; k++)
                    {
                        if (parent.id == closed[k])
                        {
                            closed.splice(k, 1);
                        }
                    }
          
                }
                else
                {
                    $D.removeClass(parent, 'expanded');
                    $D.addClass(parent, 'collapsed');

                    closed.push(parent.id);
                }

                setCookies(closed);

            });
        } // END FOREACH panel
    }

    function init()
    {
        $E = YAHOO.util.Event;
        $D = YAHOO.util.Dom;
        $C = YAHOO.util.Cookie;
        $ = $D.get;

        initCookies();
    
        setPanels();
        setButtons();
    }

    return {
        init: init
    }

}();


function handleGroupTypeChange(){

    //alert('test - ie');

    //get the element and label
    var placesElement = $D.get('Places-element');
    var placesLabel = $D.get('Places-label');

    if(!placesElement){ //check we have the element to work with
        return false;
    }

    //do we need to show or hide it ?

    // STEP 1 - Grab the group type drop down and see what the value is.
    var groupType = $D.get('GroupType');
    ///alert('test - ie');
    var gType = groupType.value;
    //alert(gType);
    var placesBox = $D.get('Places');

    //STEP 2 - If group type is I then hide and set its value to 1 else show and value blank

    if(gType == "I" || gType == ""){

        $D.setStyle('Places-element','display', 'none');
        $D.setStyle('Places-label','display', 'none');
        //placesElement.setAttribute('style','display:none;');
        //placesLabel.setAttribute('style','display:none;');
        placesBox.value = 1;

    }else{

        placesBox.value = "";
        $D.setStyle('Places-element','display', 'block');
        $D.setStyle('Places-label','display', 'block');
        //placesElement.setAttribute('style','display:block;');
        //placesLabel.setAttribute('style','display:block;');

    }

}
/*
var loader = new YAHOO.util.YUILoader({
    require: ["utilities", "cookie", "tabview"],

    onSuccess: loaderSuccess
});

loader.insert();
*/

/**
 * Comment
 */
function loaderSuccess() {

    $E = YAHOO.util.Event;
    $D = YAHOO.util.Dom;
    $C = YAHOO.util.Cookie;
    $ = $D.get;

    if ($D.getElementsByClassName('keyword_links').length > 0) {
        YAHOO.IEDesign.ResourceKeywords.init();
    }

    if($D.getElementsByClassName('accordion').length > 0){
        YAHOO.IEDesign.Accordion.init();
    }

    if($D.getElementsByClassName('columns').length > 0){
        YAHOO.IEDesign.Columns.init();
    }

    if($D.get('demo')){
        var tabView = new YAHOO.widget.TabView('demo');
    }

    //booking stuffs
    var bookgroup = $D.get('GroupType');

    $E.on(bookgroup,'change',handleGroupTypeChange);

    YAHOO.IEDesign.Search.init();
    //YAHOO.IEDesign.Accordion.init();
    YAHOO.IEDesign.Resources.init();

}

loaderSuccess();