﻿/*
 * @author tleung
 */




swfobject.addLoadEvent(function() {
	if ($('printTag')) appendMagic(filterTrackClassName($('printTag').getElementsByTagName('a')));
	// do stuff once page has loaded
	langCheck ();
	flashCheck ();
	hotspotsCheck ();
	linksCheck();
    // Google Analytics
	//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);
	    }
	}
	//GA tracking file download and external links
	//place inside of DOM ready function or similar
	//DEPENDENCIES: Google Analytics 2 - ga.js
	if (typeof pageTracker == 'object') {
	    var el = document.getElementsByTagName("a");
	    var link_path = ''; var tracking_string = '';
	    for (var cnt = el.length - 1; cnt > 0; cnt--) {
	        var link_path = el[cnt].pathname;
	        tracking_string = false;
	        if (location.host == el[cnt].hostname) {
	            if (link_path.match(/\.(doc|pdf|xls|ppt|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)$/)) {
	                tracking_string = el[cnt].pathname;
	            }
	        } else if (el[cnt].hostname !== '') {
	            tracking_string = '/external_links/' + el[cnt].hostname;
	        }
	        if (tracking_string !== false) {
	            el[cnt].tracking_string = tracking_string;
	            if (window.addEventListener) el[cnt].addEventListener('click', function() {
	                pageTracker._trackPageview(this.tracking_string);
	            }, false);
	            else if (window.attachEvent) el[cnt].attachEvent('onclick', function(e) {
	                pageTracker._trackPageview(e.srcElement.tracking_string);
	            });
	        }
	    };
	}

});



function setFullWindow () {
    if (shouldDisplayFlash()) {
        document.writeln('<style> html { height: 100% !important; } </style>');
    }
}


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 = $('countrySelect');
		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');
	if (flashLink) {
		var viewMode = shouldDisplayFlash();
	    flashLink.href = '?flash=' + (viewMode ? 'false' : 'true');
	    flashLink.innerHTML = LOCALISED_STRINGS[(viewMode ? 'htmlText' : 'flashText')];
	};
	var flashToggle = $('flash-toggle');
	if (flashToggle) {
		flashToggle.innerHTML = LOCALISED_STRINGS.flashText;
	};
	var footer = $('footer');
	if (footer) {
		//footer.setAttribute("style","display:block");
		//footer.style.cssText = 'display:block';
	};
};

function shouldDisplayFlash () {
    return (window.location.search.indexOf('flash=false') == -1);
};


// 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 li = el.parentNode.parentNode.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);
};


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;
	//var href = 'PopUp\/' + el.href;
	var load = window.open(href,'popup','scrollbars=yes,menubar=no,height=480,width=640,resizable=no,toolbar=no,location=no,status=no');
	if (load.focus) load.focus();
	stopDefaultEvent(e);
}

/* 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;
}