var panelp = null;
var panelv = null;
var xsbox = null



function vimeo(){

    //reuses the youtube button code from digiB

    var code = window.prompt('Enter the vimeo Url', '');

    var height = window.prompt('Enter the height of the video you want to embed', '');

    if (!height) height = 344;

    var width = window.prompt('Enter the width of the video you want to embed', '');

    if (!width) width = 455;

    if (code == null) {

        //we need to work with something
        return false;
    }

    //cut the string into bits
    var pieces = code.split("/");

    if(pieces[pieces.length-1] == ""){
        //they added a trailing slash so go back one
        uri = pieces[pieces.length-2];
    }else{
        //this is fine
        uri = pieces[pieces.length-1];
    }

			

    code ='<div id="vimeo-embed"><object id="currentVideo" width="' + width + '" height="' + height + '"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=' + uri + '&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id='+ uri +'&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="'+ width +'" height="'+ height +'"></embed></object></div>';

    //code = '<div class="youtube"><object height="' + height + '" width="' + width + '"><param name="movie" value="' + uri + '"></param><param name="wmode" value="transparent"></param><embed src="' + uri + '" type="application/x-shockwave-flash" height="' + height + '" width="' + width + '" wmode="transparent"></embed></object></div>';



    xsbox.InsertXML(code);



}

function phonebook(){

    panelp = new YAHOO.widget.Panel("phonebook",
    {
        x:120,
        y:120,
        close:true,
        draggable:false,
        zindex:500,
        visible:false,
        iframe:true
    } );

    panelp.setHeader("Please select a department");
    panelp.render();
}

function video(){

    panelv = new YAHOO.widget.Panel("video",
    {
        x:120,
        y:120,
        close:true,
        draggable:false,
        zindex:500,
        visible:false,
        iframe:true,
        width:200
    } );

    panelv.setHeader("Please select a video");
    panelv.render();
}

function addcode(){

    var dep = document.getElementById('department_menu').value;

    var code = "<div id=\"flexphonebook\"><script type=\"text/javascript\">var department =" + dep + ";</script><div style=\"padding: 20px; background-color: rgb(245, 247, 247); text-align: center;\"><h2>Phone Directory</h2><p>If you can\'t see the phonebook here, you probably don\'t have flash player installed, or you have javascript disabled.</p><p><a target=\"_blank\" href=\"http://www.adobe.com/go/getflashplayer\"><img alt=\"Get Adobe Flash Player\" src=\"http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif \"/></a></p></div></div><br />";

    xsbox.InsertXML(code);

    panel.hide();
}

function addvideocode(){

    var vid = document.getElementById('video_menu').value;

    var code = "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0\" width=\"\" height=\"260\" id=\"video_player\" align=\"middle\"><param name=\"allowScriptAccess\" value=\"sameDomain\" /><param name=\"allowFullScreen\" value=\"true\" /><param name=\"movie\" value=\"/video/video_player.swf\" /><param name=\"quality\" value=\"high\" /><param name=\"bgcolor\" value=\"#ffffff\" /><embed src=\"/video/video_player.swf\" quality=\"high\" bgcolor=\"#ffffff\" width=\"400\" height=\"260\" name=\"video_player\" align=\"middle\" allowScriptAccess=\"sameDomain\" allowFullScreen=\"true\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" flashvars=\"video=/uploaded_media/" + vid + "\" /></object>";

    xsbox.InsertXML(code);

    panelv.hide();
}

function xsButtonClicked(id, button, state) {

    

    //set what the xstandard box is
    xsbox = document.getElementById(id);

    if(button == 'video'){

        var x = YAHOO.util.Dom.getRegion(xsbox).left + (xsbox.width/2) -130;
        var y = YAHOO.util.Dom.getRegion(xsbox).top + (xsbox.height/2) - 50;
        panelv.show();
        panelv.moveTo(x,y);
    }

    if (button == 'phonebook') {

        var x = YAHOO.util.Dom.getRegion(xsbox).left + (xsbox.width/2) -130;
        var y = YAHOO.util.Dom.getRegion(xsbox).top + (xsbox.height/2) - 50;
        panelp.show();
        panelp.moveTo(x,y);
    }

    if (button == 'vimeo') {

        vimeo();
     
    
    }
}

YAHOO.IEDesign.EasyCalendar = function () {

    var buttonClass = 'calendar_btn',
    buttonPath = '/img/calendar.png';
    var $E, $D;

    var showCalendar = function(){
        //show first - cant set XY on element with display:none
        this.show();

        $D.setStyle(this.oDomContainer, 'opacity', 0);

        //position over cal button
        $D.setXY(this.oDomContainer, this.xy);

        //fade in
        var myAnim = new YAHOO.util.Anim(this.oDomContainer, {
            opacity: {
                to: 1
            }
        }, 0.4, YAHOO.util.Easing.easeOut);
        myAnim.animate();
    }

    var hideCalendar = function(cal){

        //fade out
        var myAnim = new YAHOO.util.Anim(cal.oDomContainer, {
            opacity: {
                to: 0
            }
        }, 0.4, YAHOO.util.Easing.easeOut);

        myAnim.onComplete.subscribe(function(){
            cal.hide();
        });

        myAnim.animate();
    }

    return  {

        init: function () {

            $E = YAHOO.util.Event;
            $D = YAHOO.util.Dom;

            $E.onDOMReady(function(){

                $D.getElementsByClassName('date', 'dd', 'bd', function(el){

                    //show button
                    var btn = document.createElement('img');
                    btn.src = buttonPath;

                    $D.addClass(btn, 'cal-btn');

                    el.appendChild(btn);

                    //add hidden container for calendar pane
                    var body = document.getElementsByTagName('body')[0];
                    var container = document.createElement('div');
                    body.appendChild(container);
                    $D.setStyle(container, 'position', 'absolute');
                    $D.setStyle(container, 'display', 'none');

                    var inputs = el.getElementsByTagName('select');

                    var selYear = inputs[2];
                    var selMonth = inputs[1];
                    var selDay = inputs[0];

                    //instantiate Calendar
                    var id = $D.generateId(container);
                    var cal = new YAHOO.widget.Calendar("cal", id, {
                        title:"Choose a date:",
                        close:true,
                        START_WEEKDAY:1,
                        HIDE_BLANK_WEEKS:true,
                        mindate: "1/1/" + selYear.options[0].value,
                        maxdate: "12/31/" + selYear.options[selYear.options.length-1].value
                    } );

                    var region = $D.getRegion(btn);
                    cal.xy = [region.left, region.top];

                    //on button click, show calendar and position to button
                    $E.on(btn, 'click', showCalendar, cal, true);

                    //date selected on calendar, update select dropdowns
                    function handleSelect(type,args,obj) {

                        var dates = args[0];
                        var date = dates[0];
                        var year = date[0],
                        month = date[1],
                        day = date[2];

                        //first value isnt blank
                        if (1 == selDay.options[0].value) {
                            month--;
                            day--;
                        }

                        selMonth.selectedIndex = month;
                        selDay.selectedIndex = day;

                        for (var y=0;y<selYear.options.length;y++) {
                            if (selYear.options[y].text == year) {
                                selYear.selectedIndex = y;
                                break;
                            }
                        }

                        hideCalendar(obj);
                    }

                    //date changed on select dropdowns, update calendar
                    function updateCal() {

                        if (selMonth.selectedIndex && selYear.selectedIndex) {

                            var month = parseInt(selMonth.options[selMonth.selectedIndex].value);
                            var day = parseInt(selDay.options[selDay.selectedIndex].value);
                            var year = parseInt(selYear.options[selYear.selectedIndex].value);

                            cal.setMonth(month - 1);
                            cal.setYear(year);

                            if (! isNaN(month) && ! isNaN(day) && ! isNaN(year)) {
                                var date = month + "/" + day + "/" + year;

                                cal.select(date);

                            }

                        }

                        cal.render();
                    }

                    cal.selectEvent.subscribe(handleSelect, cal, true);

                    updateCal();

                    $E.on([selYear, selMonth, selDay], "change", updateCal);

                });

            });

        }
    };

}();

YAHOO.IEDesign.Search = function () {

    function init(){

        if (null == $('search-div')) {
            return false;
        }


        //load up the set of resources

        lwin = $D.get('search-info');

        if(lwin != null){

            lwin.innerHTML = "<div style='padding:95px; text-align:center;'><img src='/img/tools/ajax-loader.gif' alt='Loading please wait'/></div>";

            //window.location.href = "/tools/content/new-page/id/" + config.pnode;



            Ext.Ajax.request({
                url: '/tools/resources/list',
                success:searchInfo
            //failure: otherFn,
            });
        }


        fwin = $D.get('folder-info');
        if(fwin != null){
            fwin.innerHTML = "<div style='padding:95px; text-align:center;'><img src='/img/tools/ajax-loader.gif' alt='Loading please wait'/></div>";



            Ext.Ajax.request({
                url: '/tools/resources/folder/id/' + folder,
                success:folderInfo
            //failure: otherFn,
            });
        }

        iwin = $D.get('search-index');

        //console.log(iwin);
        if(iwin != null){
            iwin.innerHTML = "<div style='padding:95px; text-align:center;'><img src='/img/tools/ajax-loader.gif' alt='Loading please wait'/></div>";



            Ext.Ajax.request({
                url: '/tools/resources/all',
                success:searchIndex
            //failure: otherFn,
            });
        }



    }

    return {
        init: init
    }

}();


resourceAdd =function(resource){

    //console.log(resource);

    lwin = $D.get('folder-info', 'div');
    lwin.innerHTML = "<div style='padding:95px; text-align:center;'><img src='/img/tools/ajax-loader.gif' alt='Loading please wait'/></div>";

    //window.location.href = "/tools/content/new-page/id/" + config.pnode;



    Ext.Ajax.request({
        url: '/tools/resources/list-add/id/' + resource + '/folder/' + folder,
        success:folderInfoPing,
        failure:folderInfoPing
    //params: {
    //      id: resource,
    //      folder: folder
    // }
    });





}

resourceRemove =function(resource){

    lwin = $D.get('folder-info');
    lwin.innerHTML = "<div style='padding:95px; text-align:center;'><img src='/img/tools/ajax-loader.gif' alt='Loading please wait'/></div>";

    //window.location.href = "/tools/content/new-page/id/" + config.pnode;



    Ext.Ajax.request({
        url: '/tools/resources/list-remove/id/' + resource + '/folder/' + folder,
        success:folderInfoPing,
        failure:folderInfoPing
    //params: {
    //      id: resource,
    //      folder: folder
    // }
    });



}

relatedReorder = function(){


    table = $D.getLastChild('relpages');

    all =  $D.getChildren(table);

    for(i=0;i<=all.length-1;i++){

        if(i % 2){
            //console.log("got here 2 ");
            $D.removeClass(all[i],'row1');
            $D.removeClass(all[i],'row2');
            $D.addClass(all[i],'row2');

        }else{

            //console.log("got here 1");

            $D.removeClass(all[i],'row1');
            $D.removeClass(all[i],'row2');
            $D.addClass(all[i],'row1');

        }

    //console.log('counted');

    }


}

resourceUpDown = function(resourceID,direction,folder){

    var resourceid = folder;


    var match = null;

    var folder = $D.get('folder-info');

    var children = folder.getElementsByTagName('tr');

    //work out where the resoruce appears in the set
    for (var i=1;i<=children.length-1;i++)
    {


        if(children[i].id == resourceID){

            match = i; // we have found a match
        }
    }

    //now we know where we are we can move up or down

    if(direction == "up"){

        if(match != 1){        
            var tomove = children[match];
            var target = children[match-1];
            var  newnode = tomove.cloneNode(true);

            $D.insertBefore(newnode,target);
              
            target.parentNode.removeChild(tomove);



        }
    }
    
    if(direction == "down"){
        if(match != children.length-1){
            var tomove = children[match];
            var target = children[match+1];
            var  newnode = tomove.cloneNode(true);

            $D.insertAfter(newnode,target);

            target.parentNode.removeChild(tomove);


        }

    }

    //we make it look consistant
        for(i=0;i<=children.length-1;i++){

        if(i % 2){
            //console.log("got here 2 ");
            $D.removeClass(children[i],'row1');
            $D.removeClass(children[i],'row2');
            $D.addClass(children[i],'row1');

        }else{

            //console.log("got here 1");

            $D.removeClass(children[i],'row1');
            $D.removeClass(children[i],'row2');
            $D.addClass(children[i],'row2');

        }


    }

    //Finally we get the new order and fire it off to the controller

    var reorderchildren = folder.getElementsByTagName('tr');

    var order = null;

    for (var i=1;i<=reorderchildren.length-1;i++)
    {

        if(order ==null){
       order =  reorderchildren[i].id;
        }else{
        order += "," + reorderchildren[i].id;
        }
    } 

        Ext.Ajax.request({
        url: '/tools/resources/resources-reorder/id/' + resourceid + '/order/' + order,
        //success:searchIndex,
        failure: function(){
            alert('sorry that action could not be performed');
        }
    });



}


/// related


relatedUpDown = function(navigationID,direction,parent){

    var parentid = parent;


    var match = null;

    var folder = $D.get('relpages');


    var children = folder.getElementsByTagName('tr');

    //console.log(children);

    //work out where the resoruce appears in the set
    for (var i=1;i<=children.length-1;i++)
    {


        if(children[i].id == "related-"+navigationID){

            match = i; // we have found a match
           
        }
    }

    //now we know where we are we can move up or down

    if(direction == 1){

        if(match != 1){
            var tomove = children[match];
            
            var target = children[match-1];
            var  newnode = tomove.cloneNode(true);

            $D.insertBefore(newnode,target);

            target.parentNode.removeChild(tomove);

        }
    }

    if(direction == 2){
        if(match != children.length-1){
            var tomove = children[match];
            var target = children[match+1];
            var  newnode = tomove.cloneNode(true);

            $D.insertAfter(newnode,target);

            target.parentNode.removeChild(tomove);


        }

    }

    //we make it look consistant
        for(i=0;i<=children.length-1;i++){

        if(i % 2){
            //console.log("got here 2 ");
            $D.removeClass(children[i],'row1');
            $D.removeClass(children[i],'row2');
            $D.addClass(children[i],'row1');

        }else{

            //console.log("got here 1");

            $D.removeClass(children[i],'row1');
            $D.removeClass(children[i],'row2');
            $D.addClass(children[i],'row2');

        }


    }

    //Finally we get the new order and fire it off to the controller

    var reorderchildren = folder.getElementsByTagName('tr');

  var order = null;

    for (var i=1;i<=reorderchildren.length-1;i++)
    {

        if(order ==null){
       order =  reorderchildren[i].id.substring(8);
        }else{
        order += "," + reorderchildren[i].id.substring(8);
        }
    }




      Ext.Ajax.request({
      url: '/tools/content/related-reorder/id/' + parentid + '/order/' + order,
        //success:searchIndex,
        failure: function(){
            alert('sorry that action could not be performed');
        }
    });



}






///



relatedRemove = function(related){

    temp = 'related-' + related;

    relatedel =  $D.get(temp);

    tempid = $D.get('pageid');

    tempid = tempid.innerHTML;

    //console.log(table);

    //console.log(relatedel);

    var attributes = {
        opacity: {
            to: 0
        }
    };
    var anr = new YAHOO.util.Anim(relatedel, attributes, 1, YAHOO.util.Easing.easeOut);
    anr.animate();
    anr.onComplete.subscribe(function() {

        table = $D.getLastChild('relpages');

        table.removeChild(relatedel);

        relatedReorder();
    });



    //then lets delete it

    Ext.Ajax.request({
        url: '/tools/content/related-delete/id/' + tempid + '/page/' +related,
        //success:searchIndex,
        failure: function(){
            alert('sorry that action could not be performed');
        }
    });


}

folderInfoPing = function(){


    Ext.Ajax.request({
        url: '/tools/resources/folder/id/' + folder,
        success:folderInfo
    //failure: otherFn,
    });

}


///stuff for the search to work
searchInfo = function(response){

    //console.log(response.responseText);

    lwin = $D.get('search-info');

    lwin.innerHTML = response.responseText;


}


searchIndex = function(response){

    //console.log(response.responseText);

    lwin = $D.get('search-index');

    lwin.innerHTML = response.responseText;

    delel = $D.getElementsByClassName('delete', 'a', 'bd');

    $E.on(delel, 'click', handleRemoveClick);


}


folderInfo = function(response){


    //console.log(response.responseText);

    lwin = $D.get('folder-info');

    lwin.innerHTML = response.responseText;

}


folderIndex = function(response){


    //console.log(response.responseText);

    liwin = $D.get('folder-index');

    liwin.innerHTML = response.responseText;


}

searchFor = function(){

    var search =  $D.get('search');

    search = search.value;

    //console.log(search.value);

    lwin = $D.get('search-info', 'div');
    lwin.innerHTML = "<div style='padding:95px; text-align:center;'><img src='/img/tools/ajax-loader.gif' alt='Loading please wait'/></div>";

    //window.location.href = "/tools/content/new-page/id/" + config.pnode;



    Ext.Ajax.request({
        url: '/tools/resources/list/search',
        success:searchInfo,
        //failure: otherFn,
        params: {
            search: search
        }
    });


}

searchForIndex = function(){

    var search = $D.get('search');

    search = search.value;

    //console.log(search.value);

    lwin = $D.get('search-index', 'div');
    lwin.innerHTML = "<div style='padding:95px; text-align:center;'><img src='/img/tools/ajax-loader.gif' alt='Loading please wait'/></div>";

    //window.location.href = "/tools/content/new-page/id/" + config.pnode;



    Ext.Ajax.request({
        url: '/tools/resources/all/search',
        success:searchIndex,
        //failure: otherFn,
        params: {
            search: search
        }
    });


}



lookInFolder = function(folder){



    folderID = folder

    //console.log(search.value);

    lwin = $D.get('search-index', 'div');
    lwin.innerHTML = "<div style='padding:95px; text-align:center;'><img src='/img/tools/ajax-loader.gif' alt='Loading please wait'/></div>";

    //window.location.href = "/tools/content/new-page/id/" + config.pnode;



    Ext.Ajax.request({
        url: '/tools/resources/all/folder',
        success:searchIndex,
        //failure: otherFn,
        params: {
            folder: folderID
        }
    });


}




resourceDelete = function(resource){

    temp = 'resource-' + resource;

    resourceel =  $D.get(temp);

    var attributes = {
        opacity: {
            to: 0
        }
    };
    var anr = new YAHOO.util.Anim(resourceel, attributes, 1, YAHOO.util.Easing.easeOut);
    anr.animate();
    anr.onComplete.subscribe(function() {
        resourceel.innerHTML = "";
    });



    //then lets delete it

    Ext.Ajax.request({
        url: '/tools/resources/delete/id',
        //success:searchIndex,
        failure: function(){
            alert('sorry that action could not be performed'); searchIndex();
        },
        params: {
            id: resource
        }
    });


}


fixLayout = function(){
    var region = $D.getRegion('bd');

    var h = region.bottom - region.top - 250;

    $D.setStyle('nav', 'height', h + 'px');
}

handleDeleteClick = function(e) {

    $E.stopEvent(e);

    if (window.confirm('Are you sure you want to delete this item?')){
        window.location = this.href;
    }

}

handleRaddClick = function(e){

    $E.stopEvent(e);

    // console.log(e.getParentNode());

    if (window.confirm('Are you sure you want to remove this item?')){
        window.location = this.href;
    }


}

handleRemoveClick = function(e) {

    $E.stopEvent(e);

    if (window.confirm('Are you sure you want to remove this item?')){
        window.location = this.href;
    }


}

handlePublishedClick = function(e) {

    $E.stopEvent(e);

    if (window.confirm('Are you sure you want to publish?')){
        window.location = this.href;
    }


}

handleFlashClick = function(e) {

    $E.stopEvent(e);
    var el = $D.getElementsByClassName('flash-messages', 'ul', 'bd')[0];
    var attributes = {
        opacity: {
            to: 0
        }
    };
    var anf = new YAHOO.util.Anim(el, attributes, 1, YAHOO.util.Easing.easeOut);
    anf.animate();
    anf.onComplete.subscribe(function() {
        el.innerHTML = "";
    });
}

handleTypeChange = function(e){


    //we are going to hide what was selected before & then show the new selection

    if(e){
        $E.stopEvent(e);
    }

    //get the type
    var rtype = $D.get('r_type');

    if(!rtype){
        return false;
    }

    var types = $D.getElementsByClassName('resource-type');

    for (var i = 0, max = types.length; i < max; i++) {

        //console.log(types[i].parentNode);

        $D.setStyle(types[i].parentNode, 'display', 'none');
        $D.setStyle($D.getPreviousSibling(types[i].parentNode), 'display', 'none');
    }

    var imo = ['file', 'file-label'];

    for (var i = 0, max = imo.length; i < max; i++) {
        //suppress missing elements
        if ($(imo[i])) {
            $D.setStyle(imo[i], 'display', 'none');
        }
    }

    //work out what to show
    switch(rtype.value){
        case '0':
            var els = ['file', 'file-label'];
            break;
        case '1':
            var els = ['link-element','link-label'];
            break;
        case '2':
            var els = ['vimeo-element','vimeo-label'];
            break;
        case '3':
            var els = ['kermit_file-element','kermit_file-label'];
            break;
    }

    for (var i = 0, max = els.length; i < max; i++) {
        //suppress missing elements

        //console.log(els);
        if ($(els[i])) {
            $D.setStyle(els[i], 'display', 'block');
        }
    }


}


loader = new YAHOO.util.YUILoader({
    require: ["animation", "calendar","container","dragdrop","cookie"],

    onSuccess: function(o) {



        $E = YAHOO.util.Event;
        $D = YAHOO.util.Dom;
        $ = $D.get;

        fixLayout();

        //callign the phonebook constructor from here
        phonebook();
        //callign the video constructor from here
        video();

        var els = $D.getElementsByClassName('delete', 'a', 'bd');

        $E.on(els, 'click', handleDeleteClick);

        var els = $D.getElementsByClassName('publish', 'a', 'bd');

        $E.on(els, 'click', handlePublishedClick);

        //get the type box

        var els = $D.get('r_type');

        handleTypeChange();

        $E.on(els,'change',handleTypeChange);

        // var radd = $D.getElementsByClassName('radd', 'a', 'bd');

        //console.log(radd);

        //$E.on(radd, 'click', handleRaddClick);

        var elsrem = $D.getElementsByClassName('remove', 'a', 'bd');

        $E.on(elsrem, 'click', handleRemoveClick);

        //remove the annoying flash messenger
        var elsflash = $D.getElementsByClassName('flash-messages', 'ul', 'bd');

        $E.on(elsflash, 'click', handleFlashClick);

        $D.getElementsByClassName('newwin', 'a', 'bd', function(el){
            el.target = '_blank';
        });

        // Config to override book_content_editable attrib
        var c = {

            book_content_editable : true,
            level : 4,
            chapter_lock: false


        }

        //console.log(YAHOO.IEDesign.EasyCalendar);
        //console.log(YAHOO.IEDesign.Tree);
        //console.log(YAHOO.IEDesign.Search);


        YAHOO.IEDesign.EasyCalendar.init();

        //check cookies

        var cookie = YAHOO.util.Cookie;

        YAHOO.IEDesign.Tree.init(c, cookie);

        YAHOO.IEDesign.Search.init();

    }
});


loader.insert();

