﻿/*
 * @author tleung
 */

if(location.host.indexOf('HTML_templates') !== -1) {
	document.writeln('\n\t<link rel="stylesheet" href="css/js_main.css" type="text/css" media="all" />');
	}
else {
	document.writeln('\n\t<link rel="stylesheet" href="/css/js_main.css" type="text/css" media="all" />');
	};


swfobject.addLoadEvent(function() {
	/* start Added by Efe */
	// tracking
	tracking();
	/* end Added by Efe */
	
	// do stuff once page has loaded
	langCheck ();
	flashCheck ();
	hotspotsCheck ();
	linksCheck ();
	popupCheck ();
	browserCheck ();
	
	if (window.name === 'popup' && location.hash) {
		// force IE to scroll to anchor
		location.replace(location.hash);
		if (navigator.appName == 'Microsoft Internet Explorer') {
		// force IE to scroll to reload
		window.open(location.href,'popup','scrollbars=no,menubar=no,height=700,width=586,resizable=0,toolbar=0,location=0,status=0');
		};
	}
	
	//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 trackEvent
	//DEPENDENCIES: Google Analytics 2 - ga.js
	if (typeof pageTracker == 'object') {
	                var old_magicTracking = magicTracking; //swizzle
	                var magicTracking = function (a, b, c) {
	                                pageTracker._trackEvent('Flash', 'click', a);  //this requires specs
	                                old_magicTracking(a, b, c);
	                }
	}
});


function langCheck() {
	if ($('lang')) {
		var dropdown = document.createElement('SELECT');
		dropdown.id = 'lang_dropdown';
		dropdown.options[0] = new Option ('Please select country','');
		var firstOpt = dropdown.options[0];
		firstOpt.selected = true;
		firstOpt.disabled = true;
		var li = $('lang').childNodes;
		var b = 1;
		for (var a = 0, l = li.length; a < l; a++) {
			if (li[a].childNodes.length > 0) {
				dropdown.options[b] = new Option (li[a].firstChild.innerHTML, li[a].firstChild.href);
				b++;
			};
		};
		var mainContainer = $('main_container');
		mainContainer.appendChild(dropdown);
		mainContainer.removeChild($('lang'));
		observeEvent(dropdown,'change',langSelect);
	};
};

function langSelect(e) {
	var el = getEventElement(e);
	var country = el.options[el.selectedIndex].value;
	window.location = country;
};


function flashCheck() {
	var flashLink = $('flash-link');
	var logo = $('viBranding')
	if (flashLink) {
		var viewMode = shouldDisplayFlash();
		if (LOCALISED_STRINGS.htmlText && LOCALISED_STRINGS.flashText) {
			flashLink.href = '?flash=' + (viewMode ? 'false' : 'true');
			flashLink.innerHTML = LOCALISED_STRINGS[(viewMode ? 'htmlText' : 'flashText')];
		};
		if (!viewMode) {
			logo.style.cssText = 'visibility:visible';
			flashLink.className = flashLink.className.replace(/viewhtml/g, "viewflash");
		};
	}
	else {
		if (logo) logo.style.cssText = 'visibility:visible';
	};
	var flashToggle = $('flash-toggle');
	if (flashToggle && LOCALISED_STRINGS.flashText) {
		flashToggle.innerHTML = LOCALISED_STRINGS.flashText;
		flashToggle.className = flashToggle.className.replace(/viewhtml/g, "viewflash");
	};
	var footer = $('footer');
	if (footer) {
		//footer.setAttribute("style","display:block");
		footer.style.cssText = 'display:block';
	};
	var flash = $('main_flash');
	if (flash) observeEvent(flash,'focus',flash.blur);
};

function shouldDisplayFlash () {
	if (LOCALISED_STRINGS.htmlText && LOCALISED_STRINGS.flashText) {
		return (window.location.search.indexOf('flash=false') == -1);
	} else return false;
};


// Switch on Hotspots toggle 
function hotspotsCheck () {
	var hotspot = document.getElementsByTagName('div');
	for (var i = 0, len = hotspot.length; i < len; i++) {
		if (hasClassName(hotspot[i],'hotspot')) hotspot[i].className = 'hide';
	};
};

function textToggle(e) {
	var el = getEventElement(e);
	var clicked = el.parentNode.parentNode;
	var li = clicked.childNodes;
	for (var i = 0, len = li.length; i < len; i++) {
		if (li[i].tagName == 'DIV') {
			if (hasClassName(li[i],'hide')) li[i].className = 'show';
			else li[i].className = 'hide';
		};
	};
	el.blur();
	stopDefaultEvent(e);
	var hotspots = clicked.parentNode.childNodes;
	for (var i = 0, len = hotspots.length; i < len; i++ ) {
		if (hotspots[i] != clicked && hotspots[i].tagName == 'LI') {
			var hotspot = hotspots[i].childNodes;
			for (var a = 0, l = hotspot.length; a < l; a++ ) {
				if (hotspot[a].tagName == 'DIV') hotspot[a].className = 'hide';
			};
		};
	};
};


function linksCheck () {
	var links = document.getElementsByTagName('A');
	for (var i = 0, len = links.length; i < len; i++) {
		if (hasClassName(links[i],'popup')) observeEvent(links[i],'click',openWindow);			// opens alternative page in a popup
		if (hasClassName(links[i],'text-toggle')) observeEvent(links[i],'click',textToggle);	// hotspots text toggle functions
	};
};

function openWindow(e) {
	var el = getEventElement(e);
	var href = el.href;
	el.blur();
	stopDefaultEvent(e);
	//var href = 'PopUp\/' + el.href;
	var load = window.open(href,'popup','scrollbars=no,menubar=no,height=700,width=586,resizable=0,toolbar=0,location=0,status=0');
	if (load.focus) load.focus();
}

function popupCheck() {
	var popup = $('popup_wrapper');
	if (popup) popup.className += ' popup';
}


function browserCheck() {
	var browser = navigator.appName;
	var b_version = navigator.appVersion;
	var version = parseFloat(b_version);
	if ((browser == 'Microsoft Internet Explorer') && (version <= 4)) {
		ie6Hack();
	};
}

// Top navigation navigation
function ie6Hack() {
	var nav = $('nav');
	if (nav) {
		var sfEls = nav.getElementsByTagName('LI');
		for (var i = 0; i < sfEls.length; i++) {
			sfEls[i].onmouseover = function() {
				this.className += " sfhover";
			};
			sfEls[i].onmouseout = function() {
				this.className = this.className.replace(new RegExp(" sfhover\\b"), "");
			};
		};
	};
};
// End: Top navigation navigation


function tracking() {
	if ($('followMe')) appendMagic(filterTrackClassName($('followMe').getElementsByTagName('a')));
	if ($('btm_nav')) appendMagic(filterTrackClassName($('btm_nav').getElementsByTagName('a')));
	if ($('footer')) appendMagic(filterTrackClassName($('footer').getElementsByTagName('a')));
	if ($('popup_wrapper')) appendMagic(filterTrackClassName($('popup_wrapper').getElementsByTagName('a')));
	
};

/* start 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 = 'Mazda2';
	            };
	            if (!hasClassName(el, 'popup')) {		/* popup class customised for Mazda2 site */
	                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 == '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;
    }
}

/* end Added by Efe */



/* Sugar functions */

function $ (element) {
	return document.getElementById(element);
}
function hasClassName (element, className) { 
    var elementClassName = element.className; 
    return (elementClassName.length > 0 && (elementClassName == className || 
      elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))); 
}  
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 replaceElement (original, replacement) {
	if (original.outerHTML) original.outerHTML = replacement.outerHTML || replacement;
	else original.parentNode.replaceChild(replacement, original);
}
function cancelEvent (e) {
	e = e || window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
}
function stopDefaultEvent (e) { 
    e = e || window.event; 
    e.returnValue = false; 
    if (e.preventDefault) e.preventDefault(); 
}  
function getStyle (element, style) {
	var value = element.style[style];
	if (!value) {
		var css = document.defaultView.getComputedStyle(element, null);
		value = css ? css[style] : null;
	}
	if (style == 'opacity') return value ? parseFloat(value) : 1.0;
	return value == 'auto' ? null : value;
}