if (navigator.appName == "Opera") {
	document.write('<link href="/Includes/css/opera.css" rel="stylesheet" type="text/css" media="screen" />'); }
	
if ((navigator.appVersion.indexOf("Mac") != -1)) {
	document.write('<link href="/Includes/CSS/mac.css" rel="stylesheet" type="text/css" media="screen" />'); }

//Import Webkit Stylesheet
if (window.webkit) {
	document.write('<link href="/Includes/CSS/Webkit.css" rel="stylesheet" type="text/css" media="screen" />');
}

var Site = {
	start: function() {
	    ExternalLinks.start();
	    Meetings.start();
	    ResourceSelector.start();
	    ClearDefault.start();
	    MembershipTermsLink.start();
	    RefundPolicyLink.start();
	    CDROMLinks.start();
	    RegUsersPasswordChange.start();
	    MembersPasswordChange.start();
	    DocumentLinkTracker.start();
	    Loader();
	    __CMS_CurrentUrl = document.location;
    }
};

var SelectBoxOtherTextRevealer = {
    start: function(selectBoxID, textFieldWrapperID, otherValue)
    {
        var selectBox = $(selectBoxID);
        var textFieldWrapper = $(textFieldWrapperID);
        var otherValue = otherValue;
        
        selectBox.addEvent('change', function()
            {
                if(selectBox.options[selectBox.selectedIndex].value == otherValue)
                    textFieldWrapper.removeClass('invisible');
                else
                    textFieldWrapper.addClass('invisible');
            });
        
        if(selectBox.options[selectBox.selectedIndex].value == otherValue)
            textFieldWrapper.removeClass('invisible');
        else
            textFieldWrapper.addClass('invisible');
    }
};

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 Meetings = {
    start: function() {      
        var links = $$('.showmorelink');
        links.each(function(link) {
            var regionId = link.getProperty('id');
            regionId = regionId.replace('link_', 'details_');
            var mySlide = new Fx.Slide(regionId);
            mySlide.hide();
            link.addEvent('click', function(e) {
                e = new Event(e);
                mySlide.toggle();
                e.stop();
                if (link.innerHTML == "Open") {
                    link.innerHTML = "Close";
                }
                else {
                    link.innerHTML = "Open";
                }
            });
        });
    }
};

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 ClearDefault = {
    start: function() {
        var els = $$('.clearDefault');
        els.each(function(el) {
            el.addEvent('focus', function() {
                if (el.defaultValue==el.value) {
                    el.value = ""
                 }
            });
        });
    }
};

var MembershipTermsLink = {
    start: function() {
        var termsLink = $('termslink');
        if (termsLink == null)
            return;
        termsLink.href = "javascript:void(0);";
        termsLink.addEvent('click', function() {
            window.open("/membershipterms.htm", "Membership_Terms_and_Conditions", "width=500,height=500,resizable=yes,scrollbars=yes");
        });
    }
};

var RefundPolicyLink = {
    start: function() {
        var refundLink = $('refundlink');
        if (refundLink == null)
            return;
        refundLink.href = "javascript:void(0);";
        refundLink.addEvent('click', function() {
            window.open("/RefundPolicy.htm", "Refund_Policy", "width=500,height=500,resizable=yes,scrollbars=yes");
        });
    }
};

var CDROMLinks = {
    start: function() {
        var links = $$('.cdrom');
        links.each(function(link) {
            var href = link.href;
            link.addEvent('click', function() {
                window.open(href, "CDROM", "width=900,height=800,resizable=yes,scrollbars=yes");
            });
            link.href = "javascript:void(0);";
        });
    }
};

// Method to show the change password box on my details page for Registered Users
var RegUsersPasswordChange = {
    start: function() {
        // Get the open link
        var openLink = $('changePasswordRegUser');
        
        // Stop processing if this link doens't appear in the page
        if (!openLink)
        {
            return;
        }
        
        // Get the fieldset conatining the password boxes
        var passwordsBoxes = $('changePasswordRegUserFieldset');
        
        // Hide the password boxes initially
        passwordsBoxes.setStyle('height', 0).setStyle('overflow', 'hidden').setStyle('display', 'none');
        
        // Add the event the fires when the open link is clicked
        openLink.addEvent('click', function() {
            passwordsBoxes.setStyle('display', 'block');
            
            var fx = new Fx.Styles(passwordsBoxes, {duration:800, wait:false});
            fx.start({
                    'height' : '78px'
                });
        });
    }
};

// Method to show the change password box on my details page for Members
var MembersPasswordChange = {
    start: function() {
        // Get the open link
        var openLink = $('changePasswordMember');
        
        // Stop processing if this link doens't appear in the page
        if (!openLink)
        {
            return;
        }
        
        // Get the fieldset conatining the password boxes
        var passwordsBoxes = $('changePasswordMemberFieldset');
        
        // Hide the password boxes initially
        passwordsBoxes.setStyle('height', 0).setStyle('overflow', 'hidden').setStyle('display', 'none');
        
        // Add the event the fires when the open link is clicked
        openLink.addEvent('click', function() {
            passwordsBoxes.setStyle('display', 'block');
            
            var fx = new Fx.Styles(passwordsBoxes, {duration:800, wait:false});
            fx.start({
                    'height' : '78px'
                });
        });
    }
};

window.addEvent('domready', Site.start);

// fix rad editor width
function OnClientModeChange(editor) {
    var htmlArea = document.getElementById("RadEContentTextarea" + editor.Id); 
    htmlArea.style.width = (editor.GetWidth() - 24) + "px";
}

var i = 1;
function backgroundImageSlideshow() {
    var banner = $('rotatingImages');
    var image = imageURLs[i];    
    i++;
    
    if (i == imageURLs.length)
        i = 0;
	
    if(!banner.newimagediv)
        banner.newimagediv = new Element('div').setStyles({'width':'709px','height':'151px','opacity':'0','z-index':'1','position':'relative'}).injectInside(banner);
    banner.newimagediv.setStyle('display', 'block');
    var fade = new Fx.Style(banner.newimagediv, 'opacity', {duration:1300, transition: Fx.Transitions.linear});
	
    banner.newimagediv.setStyle('background-image','url(' + image + ')');
 
    fade.stop();    
    fade.start(1).chain(function(){
        banner.setStyle('background-image',banner.newimagediv.getStyle('background-image'));
        banner.newimagediv.setStyles({'opacity':'0','display':'none'});                        
    });
    
    t = setTimeout('backgroundImageSlideshow()', 5000)
}

function Loader(){
    var banner = $('rotatingImages');
    
    if (banner == null) return;

    //Get the images cached in memory
    for (var img = 0; img < imageURLs.length; img++) {
        var image = new Image(709,151); 
        image.src = imageURLs[img];
    }
    
    //Set the first image to be there when loaded
    banner.setStyle('background-image',"url(" + imageURLs[0] + ")");
    
    setTimeout('backgroundImageSlideshow()', 10000)
}

var DocumentLinkTracker = {
    start: function() {
        if (!document.getElementsByTagName) return;
        var anchors = document.getElementsByTagName('a');
        for (var i=0; i<anchors.length; i++) {
            var anchor = anchors[i];
            try {
                var href = anchor.getAttribute('href');
                if (href.indexOf('.pdf') > -1 || href.indexOf('.doc') > -1 || href.indexOf('.docx') > -1
                    || href.indexOf('.ppt') > -1 || href.indexOf('.pptx') > -1)
                {
                    var closureMaker = function(line) {
                        return function(event){ pageTracker._trackPageview(line); };
                    };
                    var closure = closureMaker(href.substring(href.lastIndexOf('/')));
                    anchor.addEvent('click', closure);
                }
            }catch(err) {}
        }
    }
};
