﻿var Site = {
	onDomReady: function() {
	    ExternalLinks.start();
	    FadeTextBox.start();
	    FadeTextArea.start();
	    Contacts.start();
	    ResourceSelector.start(); 
	    News.start();
	    
	    __CMS_CurrentUrl = document.location;
    },
    
    onLoad: function() {
        HomePageFlash.start();
        HomePageFeatures.start();
    }
};

var ExternalLinks = {
    start: function() {
        if (!document.getElementsByTagName) return;
        var anchors = document.getElementsByTagName('a');
        for (var i=0; i<anchors.length; i++) {
            var anchor = anchors[i];
            try {
            if (anchor.getAttribute('href') && anchor.getAttribute('rel') == 'external')
                anchor.target = '_blank';
            }catch(err) {}
        }
    }
};

var FadeTextBox = {
    start: function() {
        var els = $$('INPUT');
        els = els.filter(function(el) {
            return el.type == 'text';
        });
        
        els.each(function(el) {
            el.fadeToColour = FadeTextBox.getFadeToColour();
            
            el.addEvent('focus', function() {
                var fadeTo = this.fadeToColour;
                var fade = new Fx.Styles(el, {duration: 120, transition: Fx.Transitions.linear});
                fade.start({
                    'background-color': fadeTo,
                    'color': '000000'
                });
            });
            
            el.addEvent('blur', function() {
                var fade = new Fx.Styles(el, {duration: 120, transition: Fx.Transitions.linear});
                fade.start({
                    'background-color': 'FFFFFF',
                    'color': '5c5c5c'
                });
            });
        });
    },
    
    getFadeToColour: function() {
        var col = 'FFF9E9';
        return col;
    }
};

var FadeTextArea = {
    start: function() {
        var els = $$('TEXTAREA');
        
        els.each(function(el) {
            el.fadeToColour = FadeTextArea.getFadeToColour();
            
            el.addEvent('focus', function() {
                var fadeTo = this.fadeToColour;
                var fade = new Fx.Styles(el, {duration: 120, transition: Fx.Transitions.linear});
                fade.start({
                    'background-color': fadeTo,
                    'color': '000000'
                });
            });
            
            el.addEvent('blur', function() {
                var fade = new Fx.Styles(el, {duration: 120, transition: Fx.Transitions.linear});
                fade.start({
                    'background-color': 'FFFFFF',
                    'color': '5c5c5c'
                });
            });
        });
    },
    
    getFadeToColour: function() {
        var col = 'f2f7e3';
        var loc = document.location + '';
        loc = loc.toLowerCase().split('/')[3];
        
        switch(loc) {
            case 'investinsheffield':
                col = 'f1f7f9';
                break;
            case 'developinsheffield':
                col = 'f1f2f8';
                break;
            case 'liveinsheffield':
                col = 'f6f2f8';
                break;
            case 'visitsheffield':
                col = 'f9f6ef';
                break;
            case 'knowledgeeconomy':
                col = 'f8f1f0';
                break;
            case 'marketingsheffield':
                col = 'FCF4E8';
                break;
        }
        
        return col;
    }
};

var News = {
    start: function() {
        var news = $('news');
        
        if(news) {
            var latest = $('latestnews');
            var popular = $('popularnews');
            var tabs = news.getElements('.tabs')[0].getElements('a');
            
            // setup content divs
            popular.style.display = 'none';
            News.setHeights(latest);
            
            // setup links
            tabs.each(function(tab) {
                tab.div = tab.href.substring(tab.href.indexOf('#') + 1);
                
                tab.href = 'javascript:void(0)';
                tab.addEvent('click', function() {
                    if(!this.hasClass('selected')) {
                        var latest = $('latestnews');
                        var popular = $('popularnews');
                        
                        if(this.div == 'latestnews') {
                            latest.setStyle('opacity', '0');
                            latest.style.display = 'block';
                            News.setHeights(latest);
                            popular.style.display = 'none';
                            var fade = new Fx.Style(latest, 'opacity', {duration: 300, transition: Fx.Transitions.linear});
                            fade.start('0', '1');
                        } else {
                            latest.style.display = 'none';
                            popular.setStyle('opacity', '0'); 
                            popular.style.display = 'block'; 
                            News.setHeights(popular);
                            var fade = new Fx.Style(popular, 'opacity', {duration: 300, transition: Fx.Transitions.linear});
                            fade.start(0, 1);
                        }
                        
                        var tabs = this.parentNode.getElements('a');
                        tabs.each(function(tab) {
                            tab.removeClass('selected');
                        });
                        this.addClass('selected');
                    }
                });
            });
        }
    },
    
    setHeights: function(el) {
        if(el != null) {
            var as = el.getElements('a');
            var hmax = 0;
            as.each(function(a) {
                hmax = a.getSize().size.y > hmax ? a.getSize().size.y : hmax;
            });
            
            // adjust for padding
            hmax -= 10;
            
            as.each(function(a) {
                a.setStyle('height', hmax + "px");
            });
        }
    }
};

var HomePageFeatures = {
    start: function() {
        if($('venuefb')) {
            var fvenue = $('venuefb').getElements('.spacer')[0];
            var fsport = $('sportfb').getElements('.spacer')[0];
            
            var fvh = fvenue.getSize().size.y;
            var fsh = fsport.getSize().size.y;
            var hmax = fvh > fsh ? fvh : fsh;
            hmax += 10;
            
            fvenue.setStyle('height', hmax + 'px');
            fsport.setStyle('height', hmax + 'px');
        }
    }
};

var Contacts = {
    start: function() {
        var els = document.getElements('.contactslist');
        els.each(function(el) {
            var lis = el.getElements('li');
            lis.each(function(li) {
                var head = li.getElements('.header')[0];
                
                head.FadeLi = new Fx.Style(li, 'opacity', {duration:200, transition: Fx.Transitions.linear});
                head.li = li;
                
                li.className = 'closed';
                
                head.addEvent('click', function() {
                    var FadeLi = this.FadeLi;
                    var li = this.li;
                    
                    if(this.li.className == 'open') {
                        FadeLi.start(0).chain(function() {
                            li.className = 'closed';
                            FadeLi.start(1);
                        });
                    } else {
                        FadeLi.start(0).chain(function() {
                            li.className = 'open';
                            FadeLi.start(1);
                        });
                    }
                });
            });
        });
    }
};

var ResourceSelector = {
    start: function() {
        var els = $$('.resourceselector');
        els.each(function(el) {
            // set the initial state of the control
            ResourceSelector.init(el);
            
            // hook up action to add link
            var add = el.getElements('.add')[0];
            add.selector = el;
            add.addEvent('click', function() {
                ResourceSelector.addRow(this.selector);
            });
        });
    },
    
    init : function(selector) {
        var drop = selector.getElements('select')[0];
        var tb = selector.getElements('.selectedvalue')[0];
        
        // init selected options        
        var selectedOptions = new Array();
        for(var i=0; i<drop.options.length; i++) {
            if(tb.value.indexOf(drop.options[i].value) >= 0)
                selectedOptions[selectedOptions.length] = drop.options[i];
        }
        selectedOptions.each(function(opt) {
            opt.selected = true;
            ResourceSelector.addRow(selector);
        });
        
        // sort options
        ResourceSelector.sortDrop(drop);
    },
    
    addRow : function(selector) {
        var drop = selector.getElements('select')[0];
        var tb = selector.getElements('.selectedvalue')[0];
        var lastRow = selector.getElements('.dropdown')[0];
        
        if(drop.selectedIndex >= 0) {
            // get selected option
            var opt = drop.options[drop.selectedIndex];
            var val = opt.value;
            var txt = opt.text;
            var txt_l = txt.toLowerCase();
            
            // remove from drop down
            drop.options[drop.selectedIndex] = null;
            drop.selectedIndex = 0;
            if(drop.options.length == 0) {
                drop.disabled = true;
                drop.setStyle('background-color', 'f7f7f7');
            }
            
            // add to text box
            if(tb.value.indexOf(val) < 0)
                tb.value += val;
            
            // work out where to inject this row
            var before = null;
            var trs = selector.getElements('tr');
            trs.each(function(tr) {
                if(!tr.hasClass('dropdown')) {
                    var trval = tr.getElements('input')[0].value.toLowerCase();
                    var comp = (trval < txt_l) - (txt_l < trval);
                    if(comp > 0)
                        before = tr;
                }
            });
            if(before == null)
                before = lastRow;
            
            // add new row to table
            var newRow = new Element('tr').injectAfter(before);
            var tbCell = new Element('td').injectInside(newRow);
            var tbNew = new Element('input').addClass('text').injectInside(tbCell);
            tbNew.type = 'text';
            tbNew.value = txt;
            var dlCell = new Element('td').injectInside(newRow);
            
            // add delete link
            var link = new Element('a').addClass('delete').injectInside(dlCell);
            link.innerHTML = 'x';
            link.selectedValue = val;
            link.selectedText = txt;
            link.row = newRow;
            link.selector = selector;
            link.href = 'javascript:void(0)';
            link.addEvent('click', function() {
                ResourceSelector.deleteRow(this.selector, this, this.row);
            });
        }
    },
    
    deleteRow : function(selector, link, row) {
        var drop = selector.getElements('select')[0];
        var tb = selector.getElements('.selectedvalue')[0];
        var lastRow = selector.getElements('.dropdown')[0];
        
        // put option back in drop down
        var opt = new Option(link.selectedText, link.selectedValue);
        drop.options[drop.options.length] = opt;
        opt.selected = true;
        ResourceSelector.sortDrop(drop);
        drop.disabled = false;
        drop.setStyle('background-color', 'ffffff');
        //lastRow.setStyle('display', 'block');
        
        // remove row from table
        row.remove();
        
        // remove from selected text
        tb.value = tb.value.replace(link.selectedValue, '');
    },
    
    sortDrop : function(drop) {
        // collect current options in array
        var copyOption = new Array();
        for (var i = 0; i < drop.options.length; i++)
            copyOption[i] = new Array(drop.options[i].text, drop.options[i].value, drop.options[i].selected);

        // sort array by text
        copyOption.sort(
            function(a, b) { 
                return (b[0].toLowerCase() < a[0].toLowerCase()) - (a[0].toLowerCase() < b[0].toLowerCase()); 
            }
        );

        // clear current options
        drop.options.length = 0;

        // add sorted options back to dropdown
        for (var i = 0; i < copyOption.length; i++) {
            var opt = new Option(copyOption[i][0], copyOption[i][1], copyOption[i][2]);
            drop.options[drop.options.length] = opt;
        }
    }
};

var HomePageFlash = {
    start: function() {
        var flashobject = $('flashobject');
        if(flashobject) {
            var fo = new FlashObject("/Includes/Flash/Home3.swf", "Flash", "760", "198", "6", "#fff");
		    fo.write("flashobject");
		}
    }
};

window.addEvent('domready', Site.onDomReady);
window.addEvent('load', Site.onLoad);

// fix rad editor width
function OnClientModeChange(editor)
{
    var htmlArea = document.getElementById("RadEContentTextarea" + editor.Id); 
    htmlArea.style.width = (editor.GetWidth() - 24) + "px";
}

