﻿function getUrlParameter( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null ){ return "";}else{return results[1];}
}

var TwitterGitter = new Class({
    Implements: [Options,Events],
    options: {
        count: 2,
        sinceID: 1,
        include_rts: 1,
        link: true,
        onRequest: $empty,
        onComplete: $empty
    },
    initialize: function(username,options) {
        //set options
        this.setOptions(options);
        this.info = {};
        this.username = username;
    },
    retrieve: function() {
        new JsonP('https://api.twitter.com/1/statuses/user_timeline.json', {
            data: {
                screen_name: this.username,
	            count: this.options.count,
	            since_id: this.options.sinceID,
                include_rts: this.options.include_rts
            },
            onRequest: this.fireEvent('request'),
            onComplete: function(data) {
	            if(this.options.link) {
		            data.each(function(tweet) { tweet.text = this.linkify(tweet.text); },this);
	            }
	            this.fireEvent('complete',[data,data[0].user]);
            }.bind(this)
        }).request();
        return this;
    },
    linkify: function(text) {
        return text.replace(/(https?:\/\/\S+)/gi,'<a href="$1">$1</a>').replace(/(^|\s)@(\w+)/g,'$1<a href="http://twitter.com/$2">@$2</a>').replace(/(^|\s)#(\w+)/g,'$1#<a href="http://search.twitter.com/search?q=%23$2">$2</a>');
    }
});

var SiteFeature = new Class({

    Implements: Options,

    options: $H({
        autoPlay: false,
        autoPlayInterval: 5000,
        fxDuration: 500,
        fxTransition: 'sine:out',
        navigationOrientation: 'left',
        overlayOpacity: 0.5,
        pauseOnMouseOver: false,
        showArrow: true,
        showLayerOnMouseOverOnly: false,
        trigger: 'click'
    }),

    initialize: function (element, options) {
        this.element = $(element);
        if (!this.element) {
            return;
        }
        this.setOptions(options);

        this.busy = false;
        this.current = null;
        this.interval = null;
        this.paused = false;

        // Elements
        this.elements = this.element.getChildren('div');

        this.initContent();
        this.initAutoPlay();
    },

    autoPlay: function () {
        var next = this.current + 1 < this.elements.length ? this.current + 1 : 0;
        this.toggle(next);
    },

    clearAutoPlay: function () {
        if (this.interval) {
            $clear(this.interval);
        }
    },

    hexToRgb: function (hex) {
        var h = hex.contains('#') ? hex.substring(1) : hex;
        var rgb = [];

        for (var i = 0; i < h.length; i += 2) {
            rgb.push(parseInt((h).substring(i, (i + 2)), 16).toInt());
        }

        return rgb;
    },

    initAutoPlay: function () {
        if (this.options.autoPlay) {
            var t = this.options.autoPlayInterval < this.options.fxDuration ? this.options.fxDuration : this.options.autoPlayInterval;
            this.interval = this.autoPlay.periodical(t, this);
        }
    },

    initContent: function () {
        this.element.addClass('initialized');

        //this.navigation = new Element('ul').inject(this.element, 'top');
        this.navigation = new Element('ul').inject($('SitefeatureNavigation'), 'top');

        this.navigation.setStyles({
        //left: this.options.navigationOrientation == 'left' ? 0 : this.elements[0].getWidth()
    });

    var trigger = this.options.trigger == 'hover' ? 'mouseover' : this.options.trigger.toLowerCase();

    this.elements.each(function (el, i) {
        // create Navigation
        var li = new Element('li').adopt(
				new Element('strong', {
				    html: el.getElement('h3').get('html')
				})
			);
        li.setStyles({
            'margin': '0'
		});
        li.inject(this.navigation);

        el.getElement('img').removeProperty('title');

        li.addEvent(trigger, function () {
            this.toggle(i);
        } .bind(this));

        if (i == 0) {
            li.addClass('current first');
        }

        // Overlay

        var children = el.getChildren();

        var layer = new Element('div', {
            'class': 'layer'
        }).addClass('layer').inject(el, 'bottom');

        if (!this.options.showLayerOnMouseOverOnly) {
            layer.setStyle('left', this.options.navigationOrientation == 'left' ? el.getWidth() - layer.getWidth() : 0);
        }
        else {
            layer.setStyle('left', this.options.navigationOrientation == 'left' ? el.getWidth() : (layer.getWidth() * -1));

            el.addEvents({
                'mouseleave': this.toggleLayer.bindWithEvent(this, [layer, 0]),
                'mouseenter': this.toggleLayer.bindWithEvent(this, [layer, 1])
            });
        }

        layer.store('fxInstance', new Fx.Tween(layer, {
            duration: this.options.fxDuration,
            transition: this.options.fxTransition
        }));

        children.each(function (el, i) {
            if (i > 0) {
                layer.grab(el);
            }
        });

        this.rgba(layer);
    }, this);

    this.elements.each(function (el, i) {
        el.setStyles({
            left: 0,
            opacity: i > 0 ? 0 : 1,
            zIndex: i > 0 ? 0 : 1
        });
    }, this);

    this.current = 0;
    this.positions = {
        minimized: this.options.navigationOrientation == 'left' ? this.elements[0].getWidth() : (this.elements[0].getElement('div').getWidth() * -1),
        maximized: this.options.navigationOrientation == 'left' ? this.elements[0].getWidth() - this.elements[0].getElement('div').getWidth() : 0
    };

    if (this.options.pauseOnMouseOver) {
        this.element.addEvents({
            'mouseenter': this.pause.bindWithEvent(this),
            'mouseleave': this.resume.bindWithEvent(this)
        });
    }
},

pause: function () {
    if (this.options.pauseOnMouseOver && this.interval) {
        this.clearAutoPlay();
        this.paused = true;
    }
},

resume: function () {
    if (this.paused) {
        this.initAutoPlay();
        this.paused = false;
    }
},

rgba: function (el) {
    $splat(el).each(function (el) {

        var s = el.getStyles('backgroundColor', 'paddingLeft', 'paddingRight');

        if (this.testRGBA(el)) {
            var rgba = this.hexToRgb(s.backgroundColor);
            rgba.push(this.options.overlayOpacity);

            el.setStyle('backgroundColor', 'rgba(' + rgba.join(',') + ')');
            return;
        }

        var styles = $H(el.getCoordinates()).extend({
            color: s.backgroundColor,
            opacity: this.options.overlayOpacity,
            paddingLeft: s.paddingLeft.toInt(),
            paddingRight: s.paddingRight.toInt()
        });
        styles.extend({
            'realWidth': styles.width - styles.paddingLeft - styles.paddingRight
        });
        var children = el.getChildren();

        var classes = el.get('class');
        el.removeProperty('class');

        // background
        var bg = new Element('div', {
            styles: {
                backgroundColor: styles.color,
                height: styles.height,
                left: 0,
                opacity: styles.opacity,
                position: 'absolute',
                top: 0,
                width: styles.width,
                zIndex: 0
            }
        });

        // content
        var childHolder = new Element('div', {
            'class': classes
        }).adopt(children).setStyles({
            backgroundColor: 'transparent',
            height: styles.height,
            left: 0,
            position: 'absolute',
            top: 0,
            width: styles.realWidth,
            zIndex: 1
        });

        var holder = new Element('div', {
            styles: {
                backgroundColor: 'transparent',
                height: styles.height,
                position: 'relative',
                width: styles.width
            }
        }).adopt(bg, childHolder);

        el.adopt(holder).setStyles({
            backgroundColor: 'transparent',
            width: styles.width
        });

    }, this);

},

testRGBA: function (el) {
    // Set an rgba() color and check the returned value        
    try {
        this.element.setStyle('backgroundColor', 'rgba(10,10,10,0.5)');
    } catch (e) { };

    var rgba = this.element.getStyle('backgroundColor').contains('rgba');

    this.element.setStyle('backgroundColor', 'transparent');

    return rgba;
},

toggle: function (i) {
    if (i == this.current || this.busy) {
        return;
    }
    this.busy = true;
    this.clearAutoPlay();

    var currentEl = this.elements[this.current];
    var nextEl = this.elements[i];

    var lis = this.navigation.getElements('li');
    lis[this.current].removeClass('current');
    lis[i].addClass('current');

    nextEl.setStyle('z-index', 2);
    nextEl.getElement('div').setStyle('left', this.positions.minimized);

    // hidecontent // overlay
    if (!this.options.showLayerOnMouseOverOnly) {
        this.toggleLayer(0, currentEl.getElement('div'), 0);
    }

    // show content
    if (!this.options.showLayerOnMouseOverOnly) {
        this.toggleLayer(0, nextEl.getElement('div'), 1);
    }

    new Fx.Tween(nextEl, {
        duration: this.options.fxDuration,
        transition: this.options.fxTransition
    }).start('opacity', 1).chain(function () {
        currentEl.setStyles({
            opacity: 0,
            zIndex: 0
        });
        nextEl.setStyle('z-index', 1);

        this.busy = false;
        this.current = i;

        this.initAutoPlay();
    } .bind(this));
},

toggleLayer: function (e, layer, maximize) {
    layer.retrieve('fxInstance').pause().start('left', maximize ? this.positions.maximized : this.positions.minimized);
}

});

var MooCarousel = new Class({
		wrapper:'',
		items:'',
		moveleft:'',
		moveright:'',
		slides:2,
		offset:350,
		currentslide:1,
		pos:0,
		ispaged:false,
		//aa:{},
		initialize: function(wrapper,items,moveleft,moveright, ns,sss,ispaged){
			//this.setOptions(options);
			this.wrapper = $(wrapper);
			this.items = $(items);
			this.moveleft = $(moveleft);
			this.moveright = $(moveright);
			this.slides = ns;
			this.offset = sss;
			this.ispaged = ispaged;
			this.parent = this.wrapper.getParent();
			this.scroll = new Fx.Scroll(this.wrapper, {offset:{'x':0, 'y':0} });
			this.dir = "right"; // direction of paging
			var that = this;
			
			if(this.ispaged){
				this.carousel_paging = new Element('div').addClass('carousel_paging');
				this.carousel_paging.id= this.wrapper.id + "_p";
				//alert(parseInt(this.slides));
				//	for (  i = parseInt(this.slides); i>0 ; i--){
				for (  i = 1;  i <= parseInt(this.slides) ; i++){
					var aa = new Element('a').addClass('page');
					if(i==1) aa.className= "current";
					aa.href="javascript:void(0);";
					aa.addEvent('click', this.page.bind(this, [i, aa, this.carousel_paging]));
					aa.innerHTML = i;
					aa.injectInside(this.carousel_paging);
				}
				//alert(this.carousel_paging.innerHTML);
				this.carousel_paging.injectAfter(this.parent);
				var carousel_fix = new Element('div').addClass('clearfix').injectBefore(this.carousel_paging);
				var carousel_fix = new Element('div').addClass('clearfix').injectInside(this.carousel_paging);
			}
						
		},
		
		
		camoveleft: function(event){
			event = new Event(event).stop();
			if(this.currentslide == 1) return;
			//this.aa[this.currentslide].className= "paging_anchor current"
			this.currentslide--;	
			if(this.ispaged){																						
				this.setcss('left');
				this.dir = 'left';
			}
			this.pos += -(this.offset);
			this.scroll.start(this.pos);this.scroll.toLeft();
			
		},
		camoveright: function(event){
			event = new Event(event).stop();
			if(this.currentslide >= this.slides) return;
			this.currentslide++;
			if(this.ispaged){																						
				this.setcss('right');
				this.dir = 'right';
			}
			this.pos += this.offset;
			this.scroll.start(this.pos);this.scroll.toLeft();
			//this.resetcss();
			//this.aa[this.currentslide].className= "paging_anchor current"
		},
		
		page: function(pagenum,o, p){
			//event = new Event(event).stop();
			//alert("page -" + pagenum);
			var sss = ((pagenum-1)*this.offset) ;
			if(pagenum > this.slides) return;
			if(pagenum == 1) sss = 0;
			this.currentslide = pagenum
			this.pos = sss
			this.scroll.start(this.pos);this.scroll.toLeft();
			//o.className="current";
			this.resetcss(o, p);
			/*var pa = $$(".paging_anchor");
				pa.each(function(el,i){
				el.className="page";
			});*/
		},
		setcss:function(dir){
			var x = parseInt(this.currentslide)-1; 		
			if(x < 0 ) x = 0; if( x >9) x =9; 
			var o = this.carousel_paging.getElements('a')[x];
			this.resetcss(o,this.carousel_paging);
		},
		resetcss: function(o,p){
			var cpa = p.getElements('a');
			cpa.each(function(el,i){
				el.className="page";
			});
			o.className="current";
		}
		
	});
	MooCarousel.implement(new Events);
	MooCarousel.implement(new Options);

function createExtLinks()
{
    var re = new RegExp('(?:f|ht)tp(?:s)?\://((?!emis-learning.com|www.emis-learning.com)[^/]+)', 'im');
    $('middle').getElements('a').each(function(el){
        if(($chk($(el).getProperty('href'))) && ($(el).hasClass('disabled') == false))
        {
            if($(el).getProperty('href').test(re) == true)
            {
                $(el).setProperty('target','_blank');
                var hyperlinkText = $(el).text;
                var extel = new Element('img', {'src':'/includes/images/ext.png', 'alt':'Opens in a new window'});
                if($(el).getChildren('img').length == 0)
                {
                    extel.inject($(el));
                    //$(el).setProperty('class','external');
                }
            }
        }
    });
}

function homepagePopular(newBox, newTab)
{
    $$('#popular_sections li').each(function(el){el.removeClass('selected');});
    $$('#topsection_right #topsection_right_content div.tabbox').each(function(el){el.setStyle('display','none');});
    $(newBox).setStyle('display', 'block');
    $(newTab).addClass('selected');
}

function populatePopularLinks()
{
    $$('#topsection_right #topsection_right_content div.tabbox').each(function(el){el.setStyle('display','none');});
    $$('#popular_sections li').each(function(el){el.removeClass('selected');});
   
    $('tab-latest').addEvent('click', homepagePopular.pass(['latest-news', 'tab-latest']));
    $('tab-tweeted').addEvent('click', homepagePopular.pass(['latest-tweets', 'tab-tweeted']));
    $('tab-read').addEvent('click', homepagePopular.pass(['most-read', 'tab-read']));
    
    $('latest-tweets').setStyle('display','block');
    $('tab-tweeted').addClass('selected');
}

function populateNewsArchiveMenu()
{
    var elements = $$('#newsarchive li.newsyear');
    elements.each(function(el){
        var childUl = $(el).getFirst('ul');
        $(el).setStyle('cursor','pointer');
        var mySlide = new Fx.Slide(childUl, {duration: 340}).hide();
        $(el).addEvent('click', function(){mySlide.toggle();});
    });
}

function createTopLink()
{
    new SmoothScroll({duration:500});
    var gototop = $('gototop');
    gototop.set('opacity','0').setStyle('display','block');
    window.addEvent('scroll',function(e) {
	    if(Browser.Engine.trident4) {
		    gototop.setStyles({
			    'position': 'absolute',
			    'bottom': window.getPosition().y + 10,
			    'width': 100
		    });
	    }
	    gototop.fade((window.getScroll().y > 300) ? 'in' : 'out');
	    
    });
}
function createPrintLink()
{
    if($defined($('lnkprint')))
    {
        $('lnkprint').addEvent('click', function()
        {
            window.print();
        });
    }
}
function createActionRollovers()
{
    $$('#actions div.jsrollover ul li a').each(function(el){
        var myEffect = new Fx.Morph(el, {duration:200,link:'cancel'});
        var thisbg = el.getStyle('background-color');
        var thiscol = el.getStyle('color');
        el.addEvent('mouseenter', function(e){e.stop();el.setStyle('color','#ffffff');myEffect.start({'background-color':'#5dafe2'});});
        el.addEvent('mouseleave', function(e){e.stop();el.setStyle('color',thiscol);myEffect.start({'background-color':thisbg});});
    });
}
function createRssRollovers()
{
    $$('#middle #two_col_r  #actions li a.subscriberss').each(function(el){
        var myEffect = new Fx.Morph(el, {duration:200,link:'cancel'});
        var thisbg = el.getStyle('background-color');
        var thiscol = el.getStyle('color');
        el.addEvent('mouseenter', function(e){e.stop();el.setStyle('color','#ffffff');myEffect.start({'background-color':'#ff9933'});});
        el.addEvent('mouseleave', function(e){e.stop();el.setStyle('color',thiscol);myEffect.start({'background-color':thisbg});});
    });
}

function initialiseJs()
{
    createTopLink();
    createPrintLink();
    createExtLinks();
    createActionRollovers();
    createRssRollovers();
    
}

function createYTOverlay(container, movie)
{
    var el= new Element('div',{
        'class':'sltips',
        'styles':{
            'position':'absolute',
            'top':'0',
            'left':'0',
            'width':'310px',
            'height':'260px',
            'z-index':'2000',
            'cursor':'pointer'
        },
        'events':{
            'click': function(){Mediabox.open('http://www.youtube.com/watch?v=' + movie + '&rel=0', '', '640 385');}
        }
    }).inject(container);
}
function createSLOverlay(container, image, alt)
{
    var contHeight = $(container).getStyle('height');
    var el= new Element('a',{
        'rel':'lightbox[gallery]',
        'styles':{
            'position':'absolute',
            'top':'0',
            'left':'0',
            'width':'310px',
            'height':contHeight,
            'z-index':'2000',
            'cursor':'pointer'
           
        },
        'events':{
            'mouseenter': function(){el.setStyle('background','url(/includes/images/action_zoom.jpg)no-repeat bottom right');},
            'click': function(){Mediabox.open(image, alt, '');},
            'mouseleave': function(){el.setStyle('background','none');}
        }
    }).inject(container);
}
function createSLOverlay2(container_array, gallery_array, selectornumber)
{
    
    container_array.each(function(container){
        
        var contHeight = $(container).getStyle('height');
        var el= new Element('a',{
            'rel':'lightbox[gallery]',
            'styles':{
                'position':'absolute',
                'top':'0',
                'left':'0',
                'width':'310px',
                'height':contHeight,
                'z-index':'2000',
                'cursor':'pointer'
               
            },
            'events':{
                'mouseenter': function(){el.setStyle('background','url(/includes/images/action_zoom.jpg)no-repeat bottom right');},
                'click': function(){
                    var indexint = $(selectornumber).getFirst('a.current').text.toInt();
                    indexint = indexint - 1;
                    Mediabox.open(gallery_array, indexint);
                    },
                'mouseleave': function(){el.setStyle('background','none');}
            }
        }).inject(container);
    });
}

function createVideoOverlay(container, movie)
{
    var el= new Element('div',{
        'styles':{
            'position':'absolute',
            'top':'0',
            'left':'0',
            'width':'310px',
            'height':'220px',
            'z-index':'2000',
            'cursor':'pointer'
        },
        'events':{
            'mouseenter': function(){el.setStyle('background','url(/includes/images/action_videoplay.jpg)no-repeat bottom right');},
            'click': function(){Mediabox.open(movie, '', '640 385');},
            'mouseleave': function(){el.setStyle('background','none');}
        }
    }).inject(container);
}
