﻿/// <reference path="/ui/scripts/lib/jquery-1.4.1-vsdoc.js"/>
/*global jQuery document location setTimeout*/
"use strict";
(function ($) {
	var window = this,
		view;

	view = {
		page: { 
			init: function () {
				this.browserOddities(); 
			},
			
			/* Fix oddities in browsers, do remember that we shouldn't put logic here. */
			browserOddities: function () {
				if (typeof $.browser.webkit !== 'undefined') {
					/* Tweak the searchinput to the correct height. */
					$('#helperMenu input.search').height(20);
				}


				if ((typeof $.browser.msie !== 'undefined') && parseInt($.browser.version, 10) < 8) {
					$('input, textarea, select, button').focus(function () {
						$(this).addClass('focus');
					});
					$('input, textarea, select, button').blur(function () {
						$(this).removeClass('focus');
					});
				}
			}
		},

		travelPlanner: {
			
			init: function () {

				$('#quickPlanner input, #quickPlanner label').focus(function () {
					$(this).prev('label').addClass('invisible');
				});
				
				$('#quickPlanner input').blur(function () {
					if ($(this).val().length === 0) {
						$(this).prev('label').removeClass('invisible');
					}
				});
			}
			
			
		},

		search: {
			init: function () {

				$('#search input').focus(function () {
					$(this).prev('label').addClass('invisible');
				});
				
				$('#search input').blur(function () {
					if ($(this).val().length === 0) {
						$(this).prev('label').removeClass('invisible');
					}
				});
			}
			
		},

		trafficStatus: {
			timeout: 55000,
			init: function () {
				if ($('#trafficStatus').length) {

					$('#trafficStatus h2').click(function () {
						var ul = $(this).siblings('ul');
						if ($(this).parent('li').hasClass('expanded')) {
							ul.slideUp('fast');
						} else {
							ul.slideDown('fast');
						}
						
						$.view.trafficStatus.updateSlice();
						$(this).parent('li').toggleClass('expanded');
					});

					if ($.view.util.isIE6) {
						this.update();
					}
					setTimeout(this.loop, this.timeout);
				}
			},

			updateSlice: function () {
	            if ($.browser.msie && $.browser.version > 7) {
			        window.external.ContentDiscoveryReset();
	            }
			},

			loop: function () {
				$.view.trafficStatus.update();
				setTimeout($.view.trafficStatus.loop, $.view.trafficStatus.timeout);        
			},

			update: function () {
				var time = $('#trafficStatus div h1 .entry-time');
				$.get("/ui/pages/modules/trafficeventsdata.aspx?time=" + time.html(), function (data) { 
					data = $.trim(data);
					if (data.length > 22) {
						$('#trafficStatus div').html(data);
					} else {
						if ($('#trafficStatus div h1 time').length) {
							time.attr("datetime", data);
						}
						time.html(data.substring(11, 16));
					}
				});
			}
		},

		translation: {
			init: function () {
			
				if (!$.view.util.isIE6) {
					var cookie_value = $.getCookie('SL_lang'),
						originalLang = $('html').attr('lang');

					$('#langSelect option[value=' + originalLang + ']').hide();
					$('#langSelect option:visible:first-child').attr('selected', 'true');

					if (cookie_value !== '' && cookie_value !== originalLang) {
						$.view.translation.translate(cookie_value);
					}

					$('#helperMenu li a.viewTranslator').click(function (event) {
						$(this).siblings('#langSelector').slideDown();
						$(this).siblings('#langSelector').children('#langSelect').focus();
						return false;
					});
					$('#helperMenu #langSelector .translate').click(function () {
						var currentLang = $.getCookie('SL_lang');
						if (currentLang !== '' && currentLang !== originalLang) {
							$.setCookie('SL_lang', $('#langSelect').val(), 1);
							location.href = location.href;
						} else {
							$.view.translation.translate('');
							$(this).parent().parent().hide();
						}
					});
					$('#helperMenu #langSelector .close').click(function () {
						$(this).parent().parent().slideUp();
					});
					$('#translationIndicator .reset').click(function () {
						$.setCookie('SL_lang', '', -1);
						location.href = location.href;
					});
				}
			},
			 
			translate: function (lang) {
			    var langTo = $('#langSelect').val(),
					originalLang = $('html').attr('lang');
    
			    if (lang !== "") {
			        langTo = lang; 
				}
				if (langTo !== originalLang) {
					$.setCookie('SL_lang', langTo, 1);
					$('#accessibilityMenu, #helperMenu ul li:not([class=translate]), #search, #tabMenu, #mainMenu, #main, footer, .footer').translate(originalLang, langTo, {
							complete: function () {
								$('#translationIndicator:hidden').slideDown();
							}
						});
					$('#langSelect option[value=' + langTo + ']').hide();
					$('#langSelect option[value=' + originalLang + ']').show();
					$('#langSelect option:visible:first-child').attr('selected', 'true');
				}
				else {
					$.setCookie('SL_lang', '', -1);
					location.href = location.href;
				}
			}
		},
		util: {
			isCompleted: false,
			isIE6: ((typeof $.browser.msie !== 'undefined') && parseInt($.browser.version, 10) < 7),
			init: function () {

			}
		}
	};


	$.extend({ view: view });

	$(document).ready(function () {
		$.runInit($.view);
		$.view.util.isCompleted = true;
	});


}(jQuery));

