$(document).ready(function() {
	
	// LEASE END PAGE -------------
	// Accordion - re-purposed from ovp.js
	// initialize accordion if necessary, implement deeplinking using query string, and add icons to right side of accordion headers 
	if ($('#accordion1').length > 0) {
			
		var params = {};
		var accordion_index;
		var anchor = decodeURI(location.href); //.split('#').pop();
		var accordion_count = $("#accordion1").find("h3").length;
		
		// browser sniffing considered harmful, but opera doesn't like long accordions with autoHeight: false
		var doAutoHeight = false;
		if(navigator.userAgent.indexOf('Opera/9') != -1 && accordion_count > 5) {
			doAutoHeight = true;
		}
		// ditto: firefox won't deeplink correctly to long accordions
		if (navigator.userAgent.indexOf('Firefox') != -1 && anchor != '') {
			var anchorOffset = $("#accordion1 h3 a[name$='"+anchor+"']").offset();
			window.scroll(0, anchorOffset.top);
		}
		if(accordion_count > 1) {
			$("#accordion1").accordion({
				header: "h3",
				icons: { 'header': 'ui-icon-triangle-1-s', 'headerSelected': 'ui-icon-triangle-1-n' },
				autoHeight: doAutoHeight,
				collapsible: true
			}).bind('accordionchange', function(event, ui) {
				var newHeaderOffset = ui.newHeader.offset();
				if($(ui.newHeader).attr('class')){
					var anchorName = $(ui.newHeader).attr('class');
					anchorName = anchorName.split(" ");
					window.location.hash = "#" + anchorName[0];
					window.scroll(0, newHeaderOffset.top);
				}
			})
			.find('h3').each(function(i) {
				if ($(this).hasClass('.ui-state-active')) {
					$(this).append('<span class="ui-icon ui-icon-triangle-1-n" style="position: absolute; left: 640px;"></span>');
				}
				else
					$(this).append('<span class="ui-icon ui-icon-triangle-1-s" style="position: absolute; left: 640px;"></span>');
			});

			// close all accordions at startup
			$(".accordion").accordion("activate" , false );
			
			// set anchor to currently selected accordion
			$('#accordion1 h3 > a').each(function(i) {
				if ($(this).parent('.ui-state-active')) {
					anchor = $(this).attr('name');
					accordion_index = i;
				}
			});			
		}
	}
	
	// Live chat button
	$('a.chat-btn').click(function(){		
		if (getLanguage() === 'fr') {
			window.open('https://www.chat.gm.ca/netagent/gm_cimlogin.aspx?questid=995A6FEE-0743-49C8-A2BE-D711E94ECD73&portid=99966668-740D-4506-9F88-0B6BEDD6849E&nareferer='+escape(document.location),'_blank','resizable= yes,width=581,height=437,scrollbars=yes');
		}
		else {
			window.open('https://www.chat.gm.ca/netagent/cimlogin.aspx?questid=374502E7-C2BE-4A92-8769-01F6CA1241BB&portid=CB60220E-12A5-4130-A46E-16CAA5D0677E&nareferer='+escape(document.location),'_blank','resizable= yes,width=581,height=437,scrollbars=yes'); 					
		}
		return false;
	});	

	// Tabs
	$('#tabs').tabs();
	
	readPcCookie();
	
	// Find a Dealer (1st instance)
	$('#PostalCodeBtn1').click(function(){
		var pc = formatPostalCode($('#PostalCode1').val());
		findDealer(pc);
		return false;
	});	
	// Find a Dealer (2nd instance)
	$('#PostalCodeBtn2').click(function(){
		var pc = formatPostalCode($('#PostalCode2').val());
		findDealer(pc);
		return false;
	});
	// Find a Dealer (3rd instance)
	$('#PostalCodeBtn3').click(function(){
		var pc = formatPostalCode($('#PostalCode3').val());
		findDealer(pc);
		return false;
	});
	// submit Find a Dealer on Enter key.
	$('.PostalCode').click(function() {
		//$(this).val('');
	}).keyup(function(e) {	
		if(e.keyCode == 13) {
			var pc = formatPostalCode($('.PostalCode').val());
			findDealer(pc);
			return false;
		}
	});		
	
	// ----------------------------
	

	
// Archive links

	// archive
	$('.archive').hide();	
	$('.archive:first').addClass('selected').show();
	$('span.body').hide();

	$('.archive:gt(0)').hide(); // hide all years after first (or zero based index)

	$('#years li a').click(function(){

		if ( !$(this).parent().hasClass('.selected') ) { // as long as not already on

			var myIndx = $('#years li a').index(this);

			$('#years li').removeClass('selected');
			
			$('.archive:visible').hide();

			$('.archive:eq('+myIndx+')').show();

			$('#years li:eq('+myIndx+')').addClass('selected');

		}

		return false;

	});
	
	
	// news - open first box
	openFirstNewsBox();
	function openFirstNewsBox () {
		$('div.collapse:first').addClass('expand').removeClass('collapse');
		$('div.expand:first p.synopsis').hide();
		$('div.expand:first p.read-news').hide();	
		$('div.expand:first span.body').show();
		$('div.expand:first p.close').show();
	}
	
	// news - expand/collapse box
	$('p.read-news').click(function() 
	{
		// reset default values for all news items
		$('span.body').hide();		
		$('p.synopsis').show();
		$('p.read-news').show();		
		$('p.close').hide();
		$('.expand').removeClass('expand').addClass('collapse');		
		
		// toggle selected collapse/expand class
		if ($(this).parent().parent().attr("class") == 'collapse') {
			$(this).parent().parent().removeClass('collapse');		
			$(this).parent().parent().addClass('expand');
		} else {		
			$(this).parent().parent().removeClass('expand');
			$(this).parent().parent().addClass('collapse');		
		}
		// toggle selected synopsis, body and links
		$(this).siblings('p.synopsis').toggle();
		$(this).siblings('span.body').toggle();
		$(this).siblings('p.close').toggle();		
		$(this).toggle();
		
		return false;
	});
	
	$('p.close').click(function() 
	{
		// toggle selected collapse/expand class
		if ($(this).parent().parent().attr("class") == 'collapse') {
			$(this).parent().parent().removeClass('collapse');		
			$(this).parent().parent().addClass('expand');	
		} else {		
			$(this).parent().parent().removeClass('expand');
			$(this).parent().parent().addClass('collapse');		
		}
			
		// toggle selected synopsis, body and links
		$(this).siblings('p.synopsis').toggle();
		$(this).siblings('span.body').toggle();
		$(this).siblings('p.read-news').toggle();		
		$(this).toggle();
		
		return false;
	});
	
	$('.btn-close').click(function() {
		$('#menu-overlay').hide();
		$('#nameplateNav a').parent('li').removeClass('over');	
	});
	
	// menu overlay
	$('#menu-overlay').hover(
		function() {	
		}, 
		function() {
			$('#nameplateNav a').parent('li').removeClass('over');
		}
	);

	$('li#menu-home a').hover(
		function() {
	
			$('#nameplateNav a').parent('li').removeClass('over');
			$('li#menu-home').addClass('over');		
		}, 
		function() {	
		}
	);

	$('li#menu-features a').hover(
		function() {

			$('#nameplateNav a').parent('li').removeClass('over');				
			$('li#menu-features').addClass('over');				
		}, 
		function() {
		}
	);

	$('li#menu-autocare a').hover(
		function() {
		
			$('#nameplateNav a').parent('li').removeClass('over');	
			$('li#menu-autocare').addClass('over');
		}, 
		function() {		
		}
	);				
				
	$('li#menu-drivinggreen a').hover(
		function() {		
			$('#nameplateNav a').parent('li').removeClass('over');
			$('li#menu-drivinggreen').addClass('over');
		}, 
		function() {		
		}						
	);
	
	$('li#menu-news a').hover(
		function() {
			$('#nameplateNav a').parent('li').removeClass('over');
			$('li#menu-news').addClass('over');
		}, 
		function() {		
		}						
	);
	
	$('li#menu-perks a').hover(
		function() {	
			$('#nameplateNav a').parent('li').removeClass('over');
			$('li#menu-perks').addClass('over');
		}, 
		function() {
			$('#nameplateNav a').parent('li').removeClass('over');		
		}						
	);	
	
	$('li#menu-community a').hover(
		function() {
			$('#nameplateNav a').parent('li').removeClass('over');	
			$('li#menu-community').addClass('over');
		}, 
		function() {		
		}						
	);
	
	$('li#menu-ownerstories a').hover(
		function() {
			$('#nameplateNav a').parent('li').removeClass('over');
			$('li#menu-ownerstories').addClass('over');
		}, 
		function() {
			$('#nameplateNav a').parent('li').removeClass('over');			
		}
	);

	$('li#menu-ownerstories-fr a').hover(
		function() {
			$('#nameplateNav a').parent('li').removeClass('over');
			$('li#menu-ownerstories-fr').addClass('over');
		}, 
		function() {
			$('#nameplateNav a').parent('li').removeClass('over');			
		}								
	);
	
	// highlight table rows
	$('table#event-items tbody tr:odd').addClass('odd');
	$('table#event-items tbody tr:even').addClass('even');
	
	// Character count for Comments form body.
	$('textarea#comment').keydown( function() {
		charCounter(document.getElementById('comment'), document.getElementById('char-count'), 1000);
	});	
	$('textarea#comment').keyup( function() {
		charCounter(document.getElementById('comment'), document.getElementById('char-count'), 1000);
	});

});

function charCounter(field, cntfield, maxlimit)
{
    if (field.value.length > maxlimit)
        field.value = field.value.substring(0, maxlimit);
    else
        cntfield.value = maxlimit - field.value.length;
}



function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else {
		var expires = "";
	}
	document.cookie = name+"="+value+expires+"; path=/; domain=.gm.ca";
	//alert(readCookie('pc'));
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function readPcCookie() {
	var pc = readCookie('pc');
	//alert(pc);
	if (pc) {
		$('.PostalCode').val(pc);
	}
}

function validatePostalCode(postalCode) {
	var pc = postalCode;
	var pcRegExp = /(^\D{1}\d{1}\D{1}\s?\d{1}\D{1}\d{1}$)/;
	if (pcRegExp.test(pc)) {
		return true;
	}
	else {
		return false;
	}
}

function formatPostalCode(postalCode) {
	if (postalCode != "Postal Code" && postalCode != "Code Postal") {
		var pc = postalCode.replace(/\s/,'').toUpperCase();
		$('.PostalCode').val(pc);
		return pc;
	}
}

function displayPostalCodeError() {
	if (getLanguage() === 'fr') {
		pcErrorMsg = 'Veuillez entrer un code postal valide ';
		pcEg = '(p. ex. : A1A 1A1)';
	}
	else {
		pcErrorMsg = 'Please enter a valid postal code ';
		pcEg = '(i.e. A1A 1A1)';
	}
	$('.error-pc').html('<span>' + pcErrorMsg + '<br />' + pcEg + '</span>');
}

function submitDealerForm() {
	var lang = getLanguage();
	var langLong = getLanguageLong();
	var brand = getBrand();
	var actionAttr;
	switch(brand)
	{
		case 'buick':
			actionAttr = '/gm/' + langLong + '/hostredirect?host=http://apps.gm.ca/app/GMCanada/DealerLocatorSearch.do&nav=4&cta=blank&lang=' + lang + '&MMNAMPLT_1=4';
			break;
		case 'cadillac':
			actionAttr = '/gm/' + langLong + '/hostredirect?host=http://apps.gm.ca/app/GMCanada/DealerLocatorSearch.do&nav=6&cta=blank&lang=' + lang + '&MMNAMPLT_4=6';
			break;
		case 'chevrolet':
			actionAttr = '/gm/' + langLong + '/hostredirect?host=http://apps.gm.ca/app/GMCanada/DealerLocatorSearch.do&nav=1&cta=blank&lang=' + lang + '&MMNAMPLT_7=1';
			break;
		case 'gmc':
			actionAttr = '/gm/' + langLong + '/hostredirect?host=http://apps.gm.ca/app/GMCanada/DealerLocatorSearch.do&nav=G&cta=blank&lang=' + lang + '&MMNAMPLT_2=G';
			break;
		case 'corporate':
			actionAttr = '/gm/' + langLong + '/hostredirect?host=http://apps.gm.ca/app/GMCanada/DealerLocatorSearch.do&nav=0&cta=blank&lang=' + lang;
			break;	
		default:
			actionAttr = '/gm/' + langLong + '/hostredirect?host=http://apps.gm.ca/app/GMCanada/DealerLocatorSearch.do&nav=0&cta=blank&lang=' + lang;
	}
	//alert(actionAttr);
	$('.dealer-form').attr('action', actionAttr).submit();
	return false;
} 

function findDealer(pc) {
	if(validatePostalCode(pc) === true) {
		createCookie('pc', pc, 30);
		submitDealerForm();
		return false;
	}
	else {
		displayPostalCodeError();
		return false;
	}
}

function getLanguage() {
	var thisURL = location.toString();
	var leLang;
	if ((thisURL.indexOf('/english') != -1) || (thisURL.indexOf('en_CA') != -1) || (thisURL.indexOf('lang=en') != -1)) { 
		leLang = "en";
	}
	else if ((thisURL.indexOf('/french') != -1)|| (thisURL.indexOf('fr_CA') != -1) || (thisURL.indexOf('lang=fr') != -1)) { 
		leLang = "fr"; 		
	}
	return leLang;
}

function getLanguageLong() {
	var thisURL = location.toString();
	var leLangLong;
	if ((thisURL.indexOf('/english') != -1) || (thisURL.indexOf('en_CA') != -1) || (thisURL.indexOf('lang=en') != -1)) { 
		leLangLong = "english";
	}
	else if ((thisURL.indexOf('/french') != -1)|| (thisURL.indexOf('fr_CA') != -1) || (thisURL.indexOf('lang=fr') != -1)) { 
		leLangLong = "french"; 		
	}
	return leLangLong;
}

function  getBrand() {
	var thisURL = location.toString();
	var leBrand;	
	if (thisURL.indexOf('/buick') != -1) { 
		leBrand = "buick";
	}
	else if (thisURL.indexOf('/cadillac') != -1) { 
		leBrand = "cadillac"; 		
	}
	else if (thisURL.indexOf('/chevrolet') != -1) { 
		leBrand = "chevrolet"; 		
	}
	else if (thisURL.indexOf('/gmc') != -1) { 
		leBrand = "gmc"; 		
	}
	else if (thisURL.indexOf('/gm-owners') != -1) { 
		leBrand = "corporate"; 		
	}
	return leBrand;	
}

