﻿/*! 
 * main js-namespace for swebus
 */
var swebus = function() {
    // initializer
    var init = function() {
		addMouseOverEventOnNavigationTop();
		addEventsOnToolbar();
		updateSelectsOnCommuteCardSearchForm();
		addCssClassesOnTables();
    },
    
    addCssClassesOnTables = function () {
		jQuery('.TimeTable table').each(function(i) {
			jQuery(this).find('tr:first').addClass('Head');
			jQuery(this).find('tr:even').addClass('Even');
		});
    },
    
    //Update selects on commute card search form using AJAX
    updateSelectsOnCommuteCardSearchForm = function() {
		if(!IsCommuteSearchPage() && !IsCommuteSearchResultPage()) return;
		var startStopId;
		var str = '';
		var url = location.toString();
		if(url.lastIndexOf('?') != -1) {
			url = url.substring(0, url.lastIndexOf('?'));
		}
		var fromSelect = jQuery(jQuery('.CommuteCardSearchForm select')[0]);
		var toSelect = jQuery(jQuery('.CommuteCardSearchForm select')[1]);
		fromSelect.each(function(index) {
			jQuery(jQuery(this).find('option')).each(function(index1) {
				if(index1 < 2) {
					str += '<option value="0">' + jQuery(this).html() + '</option>';
				}
			});
			if(fromSelect[0].selectedIndex < 2) {
				toSelect.attr('disabled', true);
			} else {
				startStopId = fromSelect[0][fromSelect[0].selectedIndex].value-10000;
				getAllDestinationStops(url, startStopId, toSelect, fromSelect, str, true);
			}
			jQuery(this).change(function() {
				startStopId = jQuery(this).attr('value');
				startStopId = startStopId != '0'? startStopId-10000:startStopId;
				if(startStopId == '0') {
					toSelect.html('<option value="0">&nbsp;</option>');
					toSelect.attr('disabled', true);
					//toSelect.append(str);
					return;
				}
				getAllDestinationStops(url, startStopId, toSelect, fromSelect, str);
			});
		});
	},
	
	//Returns true if this is commute search page
	IsCommuteSearchPage = function() {
		return jQuery(document).find('.PageTypeCommuteSearchPage')[0] != null;
	},
	
	//Returns true if this is commute search page
	IsCommuteSearchResultPage = function() {
		return jQuery(document).find('.PageTypeCommuteSearchResult')[0] != null;
	},
	
	//Get all destination stops
	getAllDestinationStops = function(location, startStopId, toSelect, fromSelect, str, prepend) {
		jQuery.ajax({
			type: 'POST',
			url: location+'?ajax=true',
			data: {'startStopId': startStopId},
			contentType: 'application/x-www-form-urlencoded; charset=utf-8',
			dataType: 'html',
			success: function(response) {
				var stopId = toSelect[0][toSelect[0].selectedIndex].value;
				//toSelect.attr('disabled', false);
				if(fromSelect.attr('disabled')) {
					toSelect.attr('disabled', true);
				} else {
					toSelect.attr('disabled', false);
				}
				toSelect.html('');
				toSelect.append(str+response);
				if(prepend) {
					var items = toSelect[0].getElementsByTagName('option');
					for(i=0;i<items.length;i++) {
						if(items[i].value == stopId) {
							items[i].selected = 'selected';
						}
					}
				}
			}
		});
	},
	
	//Add mouse over event on navigation top
	addMouseOverEventOnNavigationTop = function() {
		jQuery('#navigationTop .Folder').each(function(index) {
			var folder = jQuery(this);
			var levelThree = folder.next();
			if(typeof document.body.style.maxHeight === 'undefined') {
				levelThree.mouseover(function() {
					folder.parent().addClass('Over');
				});
				levelThree.mouseout(function() {
					folder.parent().removeClass('Over');
				});
				folder.mouseover(function() {
					folder.parent().addClass('Over');
				});
				folder.mouseout(function() {
					folder.parent().removeClass('Over');
				});
			} else {
				levelThree.mouseover(function() {
					folder.addClass('Over');
				});
				levelThree.mouseout(function() {
					folder.removeClass('Over');
				});
			}
		});
	},
	
	//Add events on toolbar
	addEventsOnToolbar = function() {
		//IE6 fix
		var toolbar = jQuery('.Toolbar');
		//toolbar.css('top', document.body.offsetHeight);
		//alert(jQuery(document.body).innerHeight())
		
		
		var tabs = jQuery('.Toolbar .Links a');
		var tabContainers = jQuery('.TabContainers .TabContainer');
		tabs.each(function(index) {
			var isRunning = false;
			var isActive = false;
			var tabItem = jQuery(this);
			var tabContent = jQuery(tabContainers[index]);
			var closeButton = tabContent.find('.CloseButton');
			tabItem.click(function() {showTabContent();});
			closeButton.click(function() {hideTabContent();});
			var showTabContent = function() {
				if(isRunning) return;
				isRunning = true;
				hideAllTabs();
				if(isIE6()) {
					if(tabContent.css('top') != '-10000000px') {
						hideTabContent();
						isRunning = false;
						return;
					}
					isRunning = true;
					//alert(tabContent.css('top'))
					var tabContentHeight = tabContent[0].offsetHeight-1;
					tabContent.css('left', (tabItem.parent()[0].offsetLeft-1)+'px');
					tabContent.css('top', '-'+tabContentHeight+'px');
					isRunning = false;
					return;
				}
				if(tabContent.css('top') != '10px') {
					hideTabContent();
					isRunning = false;
					return;
				}
				isRunning = true;
				var tabContentHeight = tabContent[0].offsetHeight-1;
				tabItem.addClass('Active');
				tabContent.css('left', (tabItem.parent()[0].offsetLeft-1)+'px');
				tabContent.animate({top: '-'+tabContentHeight}, 250, function() {
					if(tabContent.find('.TextField')[0]) {
						//tabContent.find('.TextField')[0].focus();
					}
					isRunning = false;
				});
			};
			var hideTabContent = function() {
				if(isIE6()) {
					tabContent.css('top', '-10000000px');
					tabItem.removeClass('Active');
				} else {
					tabContent.animate({top: '10px'}, 250, function() {
						tabItem.removeClass('Active');
					});
				}
			};
			var isIE6 = function() {
				return typeof document.body.style.maxHeight === 'undefined';
			};
			var hideAllTabs = function() {
				//tabs.removeClass('Active');
				if(isIE6()) {
					tabContainers.each(function(index1) {
						if(index1 != index && jQuery(this).css('top') != '-10000000px') {
							jQuery(this).css('top', '-10000000px');
							jQuery(tabs[index1]).removeClass('Active');
						}
					});
				} else {
					tabContainers.each(function(index1) {
						if(index1 != index && jQuery(this).css('top') != '10px') {
							jQuery(this).animate({top: '10px'}, 250, function() {
								jQuery(tabs[index1]).removeClass('Active');
							});
						}
					});
				}
			};
		});
		
		jQuery('#frmCow .TextField').keypress(function(event) {
			if (event.keyCode == '13') {
				sendCallMeForm();
				return false;
		   }
		});
		jQuery('#submitCallMe').click(function(e) {
			sendCallMeForm();
			return false;
		});
		
		var sendCallMeForm = function(tabContainer) {
			var form = jQuery('#frmCow');
			//var url = form.attr('action');
			var url = '/Templates/AjaxProxies/CustomerService/CustomerService.aspx';
			var postData = form.serialize();
			var textField = form.find('.TextField');
			var tabContainer = jQuery(jQuery('.TabContainers .TabContainer')[0]);
			var formContainer = tabContainer.find('.FormContainer');
			var thankYouContainer = tabContainer.find('.ThankYouContainer');
			var alertMessage = tabContainer.find('.AlertMessage');
			alertMessage.addClass('Hidden');
			if(textField.attr('value').length == 0 || isNaN(textField.attr('value'))) {
				//alertMessage.html('Du behöver ange ett nummer');
				alertMessage.removeClass('Hidden');
				reRenderContainer(tabContainer);
				return false;
			}
			jQuery.post(url, postData, function(data){
				formContainer.addClass('Hidden');
				thankYouContainer.removeClass('Hidden');
				reRenderContainer(tabContainer);
				//alert(url)
			});
			return false
		};
		
		var reRenderContainer = function(tabContainer) {
			var tabContentHeight = tabContainer[0].offsetHeight-1;
			tabContainer.animate({top: '-'+tabContentHeight}, 250, function() {
			});
		};
	},
	
	//Render startpage flash
	renderStartpageFlash = function(flashMovie) {
		var flashMovie = flashMovie;
		var flashDirectory = flashMovie.substring(0, flashMovie.lastIndexOf('/')+1);
		var flashvars = {
			skinName: flashDirectory+'Clear_Skin_3',
			streamName: 'swebus'
			//autoPlay: 'true',
			//autoRewind: 'false'
		};
		var params = {
			loop:'true',
			scale: 'showall',
			menu: 'true',
			play: 'true',
			allowScriptAccess: 'sameDomain',
			wmode:'window',
			quality:'high',
			salign:''
		};
		var attributes = {};
		jQuery('#myAlternativeContent1').flash({
			swf: flashMovie,
			height: 288,
			width: 512,
			params: params,
			flashvars: flashvars
		});
	}
	
	return {
        init: init,
        renderStartpageFlash: renderStartpageFlash
    };
}();
jQuery(document).ready(function() {
	swebus.init();
});
//jQuery(function() {
//    swebus.init();
//});
