/**
 *  USE:        Mazda3 microsite
 *  AUTHOR:     Syzygy UK Limited
 */
 
 
$(document).ready(function () {	
	expandingLinks();	
	topNavIE6();
	updateYouTubeVideo();	
	initWindowCloseButton();
	stf.init('body.popup #content'); //send to a friend form in popup
	
	//Tracking by Efe
    if (document.getElementById('mainContainer')) {
        appendMagic(filterTrackClassName(document.getElementsByTagName('a')));
    }
    
    //use for microsites only -for transition from Sophus to GA only
	//place inside of DOM ready function or similar
	//calls GA tracking first and then original magicTracking, it simulates pageView
	//DEPENDENCIES: Google Analytics 2 - ga.js
	if (typeof pageTracker == 'object') {
		var old_magicTracking = magicTracking;  //swizzle
		var magicTracking = function (a, b, c) {
			pageTracker._trackPageview(location.pathname + a);
			old_magicTracking(a, b, c);
		}
	}

});


/* Quick guide links */
function expandingLinks() { 
	$('.faqLinks li div.js-body').hide();	
	$('.faqLinks li .js-link a').toggle(function(){
		$(this).parent('h3').next('div.js-body').show();		
		$(this).removeClass().addClass('on');

	}, function()	{
		$(this).parent('h3').next('div.js-body').hide();		
		$(this).removeClass().addClass('off');
	});	
	
	//removing dotted line around links
   $('.js-link a').nb();		
}

$.fn.nb = function() {
    this.blur();
    return this.focus(function(){
           this.blur();
    });
}


// Top navigation, IE6 fix
function topNavIE6()	{
	if( jQuery.browser.msie && (jQuery.browser.version <= 6) ) {
		$('#nav > li').hover(
			function() { $('ul', this).css('display', 'block'); },
			function() { $('ul', this).css('display', 'none'); });
	}
}

//removing outline from the links
$.fn.nb = function() {
    this.blur();
    return this.focus(function(){
           this.blur();
    });
}

/* YouTube video */
function updateYouTubeVideo(){
	var config = {url: '', delay: 800, target: '_self', timeout: '', vid_color1: '000000', vid_color2: '666666', vid_width: '456', vid_height:'335'};	
	$('#diaryContent div.youtube').each(function(){
		swfobject.embedSWF('http://www.youtube.com/v/' + $(this).attr('id').split('ytid_')[1] + '&hl=en&fs=1&rel=0&color1=0x' + config.vid_color1 + '&color2=0x' + config.vid_color2, $(this).attr('id'), config.vid_width, config.vid_height, '9.0.0', 'flash/expressInstall.swf', {}, {
			wmode: 'opaque'});
	});
}





/* Tracking Added by Efe */
function filterTrackClassName (element){
    var res = Array(); var i = 0;
    for (var a = element.length-1; a >= 0; a--){
        var elClassName = element[a].className;
        if (elClassName.indexOf('track_') !== -1) {
            res[i]= element[a];
            i++;
        }
    }
    return res;
}

function appendMagic (clicklinks) {
	for (var a = clicklinks.length-1; a >=0; a--) {
        observeEvent(clicklinks[a],'click',function(e) {
            var el = getEventElement(e);
			el.blur();
			if (el.tagName === 'IMG') el = el.parentNode;
            if (el.tagName.toLowerCase() !== 'a') {
                magicTracking(alias, url, '');
                el = el.parentNode;
            }
			else {
	            var alias = el.className;
	            var pos = alias.search(/track_/i);
	            if (pos > -1) {
	                alias = alias.slice(pos + 6).split(' ')[0];
	            } else {
	                alias = 'Mazda3';
	            }
	            if (!hasClassName(el, 'click_only')) {
	                magicTracking(alias, el.href, el.target);
	            } else {
	                magicTracking(alias);
	            }
	            stopDefaultEvent(e);
			}
        });
    }
}


var config = {url: '', delay: 800, target: '_self', timeout: ''};
/* alias - tracking string, url - URL redirect after tracking (optional) */
function magicTracking(alias, url, target) {
    var products = null;
    var displayed = null;
    if (!tc_logging_active) return;
    alias = tc_fixURL(alias);
    config.target = target || '_self';
    if (Image){
        var img = new Image();
        if (typeof url == 'undefined' || url == '') {
            //no URL specified do nothing...
			url = '';
        } else {
            config.url = url;
            if (config.target == '_blank') {
				window.open(config.url); //open a new window
            }
            config.timeout = self.setTimeout('imageLoaded()',config.delay); //just in case the logging doesn't happen or browser doesn't support Image
            if (img.addEventListener) {
                img.addEventListener('load', imageLoaded, false);
            } else if (img.attachEvent) {
                img.attachEvent('onload', imageLoaded);
            } else if (img.onload){
        	    img.onload = function () {
        		    imageLoaded();
        	    };
            }
        }
        img.url = url;
        img.src = tc_get_log_URL("i",alias,tc_products,new Date().getTime(), displayed);
    }
}

function imageLoaded(){
    self.clearTimeout(config.timeout); //reset the timeout
    if (config.target == '_self') {
        window.location = config.url;
    }
}


//Sugar functions
function stopDefaultEvent (e) { 
    e = e || window.event; 
    e.returnValue = false; 
    if (e.preventDefault) e.preventDefault(); 
}  

function observeEvent (element, eventName, observerFunction) {
	if (window.addEventListener) element.addEventListener(eventName, observerFunction, false);
	else if (window.attachEvent) element.attachEvent('on' + eventName, observerFunction);
}
function getEventElement (e) { 
    e = e || window.event; 
    var el = e.target || e.srcElement; 
    if (el.nodeType == 3) el = el.parentNode; // SA bug 
    return el; 
} 
function hasClassName (element, className) {
    var elementClassName = element.className;
    return (elementClassName.length > 0 && (elementClassName == className ||
      elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))));
}
/* end Added by Efe */



//Open "Send to a friend" popup - from flash
function sendToFriend(img) {
    var options = 'height=550,width=530,toolbar=no,location=no,resizable=yes,scrollbars';
    var j = location.pathname.split("/")[1];
	var popupFormUrl = '/' + j + '/send-to-a-friend/';	    
	var name = 'friend';
	var win = window.open(popupFormUrl + '?img=' + img, name, options);

	if (window.focus) win.focus();
}
//Close popup
function initWindowCloseButton () {
	var elem = $('#close');
    if(elem.hasClass('hide')) { elem.removeClass('hide'); }
	$('a.window-close').click(function (e) { window.close(); });
}


//Send to a friend form: Add or remove friend from the form
var stf = {
	friendsDefault: 1, 	//default
	friendsMin: 1,		//minimum number of friends
	friendsTotal: '', 	//total number of friends
	
	init: function(elm)	{
		stf.carousel = $(elm);
		stf.friendsTotal = $('div.friend',stf.carousel).length;
		if(stf.friendsDefault >= stf.friendsTotal)	{
			stf.friendsDefault = stf.friendsTotal
		}
		$('div.friend:gt(' + (stf.friendsDefault-1) + ')',stf.carousel).addClass('blocked'); //show the first friend
		
		//add nav panel (add/remove links)
		var navPanel = '<p class="nav">';
		var addLabel = $('.recipients h3 span').attr('title');
		navPanel += '<a href="#" class="add">' + addLabel + '</a>';
		//navPanel += '<a class="remove" href="#">&nbsp;</a>';
		navPanel += '</p>';
		$('.recipients h3',stf.carousel).append(navPanel);
		
		//add event handlers
		$('.nav a.add',stf.carousel).bind('click',stf.addRemove);
		$('.nav a.remove',stf.carousel).bind('click',stf.addRemove);
		
		stf.updateNav();
		$('.nav a').nb(); //remove outline		
	},
	updateNav:function()	{
		openLinks = $('div.friend[@class="friend"]',stf.carousel).length;
		$('.nav a.add').removeClass('hide');
		$('.nav a.remove').removeClass('hide');
		if(openLinks === stf.friendsTotal)	{
			$('.nav a.add').addClass('hide');
		} else if(openLinks === stf.friendsMin)	{
			$('.nav a.remove').addClass('hide');
		}
	},
	addRemove: function(e)	{
		var action = $(this).hasClass('add') ? 'add' : 'remove';
		if(action === 'add'){
			$('div.friend.blocked:first',stf.carousel).removeClass('blocked');
		} else if(action === 'remove')	{
			if($('div.friend',stf.carousel).hasClass('blocked') === false)	{
				$('div.friend:last',stf.carousel).addClass('blocked');
			} else	{ 
				$('div.friend.blocked:first',stf.carousel).prev('div.friend.').addClass('blocked');
			}
			alert('removed');
		}
		stf.updateNav();
		e.preventDefault();
	}		
}