var BaseUI =
{
    TabIndex      : 0,
    SlideshowList : [],
	SlidesDiv	  : null,
	Initialize 	  : function ()
	{
		
        if (BaseUI.GetCookie('hidesubhead') == null)
        {
            BaseUI.SetCookie('hidesubhead', 'true', 365)
        }
        else
        {
            $('.seo-subhead').hide()
        }

		var headerWidth = $('#nav ul').width()
		$('#nav li div.subnav').width(headerWidth - 18)
		
		$('input.date').dateinput({
			min: -1,
			offset: [-212, 0],
			trigger: true
		});
				
		$('div.sidebar div.scrollable').scrollable({
			circular: true,
			speed: 750,
			onSeek: function(e, index) 
			{
		        var api = $(".scrollable").data("scrollable"), slideIndex = api.getIndex() + 1
				console.log('Scroll')
				$('div.pager span.current').html(slideIndex)
		    }
		})
		
		$('div.hero-scrollable').scrollable({
            circular: true,
			speed: 0,
			items: '.photos',
			next: '.next-photo',
			prev: '.prev-photo'
		})
				
		$('div.accordion h3:odd')   .css('background', '#eaeaea')
		$('table.courses tr:odd td, table.table tr:odd td').css('background', '#eaeaea')
		
		BaseUI.SlidesDiv = $('#heroslides');
				
		$(function () 
		{
			$('ul.course-tabs').tabs("div.course-panes > div")
		})
		
		$('ul.tabs').tabs("div.panes > div", {
			onClick: function(e, index) {
				if (BaseUI.SlideshowList.length > 0) {
					$('#heroslides').cycle('destroy');
					$(BaseUI.SlidesDiv).html('');
					$.each(BaseUI.SlideshowList[index], function(index, item) {
						$(BaseUI.SlidesDiv).append('<div class="slide"><img src="' + item + '" alt="" /></div>');
					});
					$('#heroslides').cycle();
				}
			}
		});

		tabsApi = $('ul.tabs').data('tabs');

		if (tabsApi != null)
		{
			tabsApi.click(BaseUI.TabIndex);				
		}
		
		BaseUI.ShowSubnav   ()
		BaseUI.PromoPager   ()
		BaseUI.AccordionMenu()
		BaseUI.ImageNavHover()
		BaseUI.FancyboxPopUp()
		BaseUI.HeroScrollable()
		
	},
	ShowSubnav : function ()
	{
		$('#nav li').hover(function ()
		{
			$(this).addClass('active').children('div.subnav').show()
		}, 
        function () 
        {
			$(this).removeClass('active').children('div.subnav').hide()
		})
	},
	PromoPager : function ()
	{
		if ($("div.sidebar div.scrollable:visible").length) {
			var api = $("div.sidebar div.scrollable").data("scrollable"),
				promoItems = api.getSize()
				currItem = api.getIndex() + 1
			
			$('div.pager span.current').html(currItem)
			$('div.pager span.total').html(promoItems)	
		}
	},
	AccordionMenu : function ()
	{
		//$(".accordion h3:first").addClass("active")
		$(".accordion div.listing-info").hide() // hide all ul except the first one

		$(".accordion h3").click(function(e)
		{
			$(this).next("div.listing-info").slideToggle("slow").siblings("div.listing-info:visible").slideUp("slow") // hide the ul if visible
			$(this).toggleClass("active")
			$(this).siblings("h3").removeClass("active")
			e.preventDefault()
		})
	},
	ImageNavHover : function()
	{
		$('.nav-thumbs li').hover(function ()
		{
			$(this).children('div').fadeIn()
		}, function ()
		{
			$(this).children('div').fadeOut()
		})
	},
	FancyboxPopUp : function()
	{
		if ($("div.caption a.lightbox:visible").length)
		{
			$('div.caption a.lightbox').fancybox({
				'titlePosition'		: 'over',
				'overlayOpacity' 	: '0.8',
				'overlayColor' 		: '#333333'
			})
		}
	},
	HeroScrollable : function()
	{
		$('#heroslides, div.media-scrollable').cycle({

		});
	},
    NumberFilter_KeyDown : function(e) 
    {
        switch (e.keyCode) 
        {
            case Sys.UI.Key.backspace: return true
            case Sys.UI.Key.del:       return true
            case Sys.UI.Key.tab:       return true
            case Sys.UI.Key.esc:       return true
            case Sys.UI.Key.enter:     return true
            case Sys.UI.Key.down:      return true
            case Sys.UI.Key.end:       return true
            case Sys.UI.Key.home:      return true
            case Sys.UI.Key.left:      return true
            case Sys.UI.Key.pageDown:  return true
            case Sys.UI.Key.pageUp:    return true
            case Sys.UI.Key.right:     return true
            case Sys.UI.Key.up:        return true
            case 48:                   return true //0
            case 49:                   return true //1
            case 50:                   return true //2
            case 51:                   return true //3
            case 52:                   return true //4
            case 53:                   return true //5
            case 54:                   return true //6
            case 55:                   return true //7
            case 56:                   return true //8
            case 57:                   return true //9
            case 96:                   return true //0
            case 97:                   return true //1
            case 98:                   return true //2
            case 99:                   return true //3
            case 100:                  return true //4
            case 101:                  return true //5
            case 102:                  return true //6
            case 103:                  return true //7
            case 104:                  return true //8
            case 105:                  return true //9
            default:
                if (e.preventDefault)
                {
                    e.preventDefault()
                }
                return false
        }
    },
    SetClass: function(el, className) 
    {
        if (el) 
        {
            if ((Sys.Browser.agent == Sys.Browser.InternetExplorer) && (Sys.Browser.version < 8)) 
            {
                el.className = className
            }
            else 
            {
                el.setAttribute("class", className)
            }
        }
    },
    Show: function(el) 
    {
        if (el) 
        {
            el.style.visibility = 'visible'
        }
    },
    Hide: function(el) 
    {
        if (el) 
        {
            el.style.visibility = 'hidden'
        }
    },
    MakeRequest: function(url, verb, data, func, obj) 
    {
        var TheRequest = new Sys.Net.WebRequest()

        TheRequest.set_url(url)
        TheRequest.set_httpVerb(verb)

        if (data) 
        {
            TheRequest.set_body(data)
            TheRequest.get_headers()["Content-Length"] = data.length;
        }

        TheRequest.set_userContext(new RequestParams(func, obj))
        TheRequest.add_completed(BaseUI.MakeRequestComplete)
        TheRequest.invoke()

        return TheRequest
    },
    MakeRequestComplete: function(executer, eventArgs) 
    {
        var TheParams = executer.get_webRequest().get_userContext()

        if (executer.get_responseAvailable()) 
        {
            TheParams.responseData = executer.get_responseData().replace(/\u2028/g, '')
        }
        else 
        {
            TheParams.responseData = null
        }
        if (TheParams.func) TheParams.func(TheParams)
    },
    Expand: function(el) 
    {
        if (el) 
        {
            el.style.visibility = 'visible'
            el.style.display    = 'block'
        }
    },
    Collapse: function(el) 
    {
        if (el) 
        {
            el.style.visibility = 'hidden'
            el.style.display    = 'none'
        }
    },
    GetSelectedValue : function(sel)
    {
        return sel.options[sel.selectedIndex].value
    },
    OpenBookingWindow: function(link)
    {
        _gaq.push(function() 
        {
            var tracker = _gaq._getAsyncTracker();
            window.open(tracker._getLinkerUrl(link));
        });
        return false;
    },
    GetCookie: function(cookieName)
    {
        var a_all_cookies  = document.cookie.split(';')
        var a_temp_cookie  = ''
        var cookie_name    = ''
        var cookie_value   = ''
        var b_cookie_found = false

        for (i = 0; i < a_all_cookies.length; i++) 
        {
            a_temp_cookie = a_all_cookies[i].split('=')
            cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '')

            if (cookie_name == cookieName) 
            {
                b_cookie_found = true;
                if (a_temp_cookie.length > 1) 
                {
                    cookie_value = decodeURIComponent(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''))
                }
                return cookie_value
                break
            }
            a_temp_cookie = null
            cookie_name = ''
        }

        if (!b_cookie_found) return null
    },
    SetCookie: function(cookieName, cookieValue, nDays) 
    {
        if (nDays != null)
        {
            var today  = new Date()
            var expire = new Date()
        
            if (nDays == null || nDays == 0) nDays = 1
        
            expire.setTime(today.getTime() + 3600000 * 24 * nDays)

            document.cookie = cookieName + "=" + encodeURIComponent(cookieValue) + ";path=/;expires=" + expire.toGMTString()
        }
        else
        {
            document.cookie = cookieName + "=" + encodeURIComponent(cookieValue) + ";path=/"
        }
    }
}

function RequestParams(afunc, obj) 
{
    this.func         = afunc
    this.responseData = null
    this.obj          = obj
    this.Error        = null
}

$(document).ready(BaseUI.Initialize)
