//Verze 2012-01-06
var opti;
var _gaq=_gaq||[];
(function() {
	if (!_optiConfig) return;
	if (!_optiConfig.accountName && !_optiConfig.accountName) return;
	if (!_optiConfig.debugMode) {
		_optiConfig.debugMode=window.location.search.match(/(\?|&)optiga=debug/i)?true:false;
	}
	
	//Account name
	var accId=_optiConfig.accountName;
	if (_optiConfig.accountNameDomain && typeof _optiConfig.accountNameDomain == "object") {
		var key;
		for (key in _optiConfig.accountNameDomain) {
			if (window.location.hostname.indexOf(key)!=-1) {
				accId=_optiConfig.accountNameDomain[key];
			}
		}
	}
	if (!accId) return;
	_gaq.push(['_setAccount',accId]);
	
	//Domain
	var domainLimit=_optiConfig.domain;
	if (_optiConfig.domainDomain && typeof _optiConfig.domainDomain == "object") {
		var key;
		for (key in _optiConfig.domainDomain) {
			if (window.location.hostname.indexOf(key)!=-1) {
				domainLimit=_optiConfig.domainDomain[key];
			}
		}
	}
	if (domainLimit) _gaq.push(['_setDomainName',domainLimit]);
		
	//Tracker output	
	var trackerName=_optiConfig.trackerName;
	if (!trackerName) trackerName="opti";
	_gaq.push(function() {
		window[trackerName]=_gat._getTrackerByName();
	});
		
	//Env configuration	
	var envPath=_optiConfig.env;
	if (_optiConfig.autoUpdate) {
		envPath=('https:'==document.location.protocol?'https://':'http://')+"shared.systemanimato.cz/optiga-env.js";
	}
	if (!envPath) {
		envPath="./optiga-env.js";
	}
	if (envPath) {
		var el=document.createElement("script");
		el.type="text/javascript";
		el.src=envPath;
		var s=document.getElementsByTagName('script')[0];
		var ok=s.parentNode.insertBefore(el,s);	
		if (_optiConfig.debugMode) {
			console.log('OptiGA: attached env file from '+envPath+", ok = "+ok);	
		}		
	}
	
	
	//More pushes
	if (_optiConfig.more && _optiConfig.more.length) {
		_gaq=_gaq.concat(_optiConfig.more);
	}
	
	//Main function, run from optiga-env.js after the file is loaded
	_optiConfig.loadGa = function() {
		if (!_optiConfig.loadedGa) {
			_gaq.push(['_trackPageview']);	
			if (_optiConfig.debugMode) {
				_gaq.push(function() {
					console.log("OptiGA: _trackPageView, ID "+accId);		
				});			
	
			}
			if (!_optiConfig.envLoaded && _optiConfig.debugMode) {
				console.log("OptiGA: Error, running loadGa without env file loaded :(");		
			}
			_gaq.push(function() {
				_gaq=[];
				if (_optiConfig.debugMode) {
					console.log("OptiGA: Clearing _gaq");
				}
			});			
			var ga=document.createElement('script');
			ga.type='text/javascript';
			ga.async=true;
			ga.src=('https:'==document.location.protocol?'https://ssl':'http://www')+'.google-analytics.com/ga.js';
			var s=document.getElementsByTagName('script')[0];
			var ok=s.parentNode.insertBefore(ga,s);
			if (_optiConfig.debugMode) {
				console.log('OptiGA: loading main GA script from '+ga.src+", ok = "+ok);	
				console.log('_gaq is:');
				console.log(_gaq);
			}
		}
		_optiConfig.loadedGa=true;
	}
		
	//Attach events to certain elements
	if (_optiConfig.bindEvents) {
		var readyFunction;
		var jQueryMode=false;
		if (typeof jQuery != "undefined") {
			readyFunction=function(a) {jQuery(a);}
			jQueryMode=true;
		} else {
			readyFunction=function(a) {
				if (window.addEventListener) {
					window.addEventListener("DOMContentLoaded",a);
				} else {
					window._optiBindEvents=a;
					var repeatBinding=function() {
						if (document.body && document.body.appendChild) {
							window._optiBindEvents();
						} else {
							window.setTimeout(repeatBinding,400);
						}
					};
					repeatBinding();
				}
			}
		}
		
		var sendEventToGa=function(type,action,data) {
			var tracker=window[_optiConfig.trackerName];
			if (tracker) {
				tracker._trackEvent(type,action,data);
			} else {
				_gaq.push(["_trackEvent",type,action,data]);
			}
			if (_optiConfig.debugMode) {
				console.log('OptiGA: _trackEvent, type="'+type+'", action="'+action+'", data="'+data+'"');	
			}
		}
		
		var listenToClick=function(el,type,action,data) {
			if (_optiConfig.debugMode) {
				el.style.border="dashed 2px blue";
			}
			if (el.addEventListener) {
				el.addEventListener("click",function() {sendEventToGa(type,action,data);},false);
	
			} else if (el.attachEvent) {
				el.attachEvent("onclick",function() {sendEventToGa(type,action,data);},false);
			}
		}
		
		var bindEvents=function() {
			if (_optiConfig.debugMode) {console.log("OptiGA: Připojuji GA k externím odkazům...");}
			var els=document.getElementsByTagName("A");
			var i;
			for (i in els) {
				var el=els[i];
				var hr=el.href;
				var filenameParts;
				
				if (!hr || hr=="#") continue;

				var match=hr.match(/https?:\/\/([^\/]+)(:\d+)?\//i);
				if (match && match[1]!=window.location.hostname) {
					listenToClick(el,"external","go",hr);
				}

				if (hr.substring(0,6)=="mailto") {
					var data=hr.substring(7);
					listenToClick(el,"email","send",data);
				}				
				else if (hr.substring(0,3)=="ftp") {
					listenToClick(el,"ftp","go",hr);
				} else if (filenameParts=hr.match(/(.*)\.(doc|docx|xls|xlsx|ppt|pptx|pdf|zip|txt|wma|mov|avi|wmv|mp3|flv|aac|mpg|mpeg|dwg)($|\&|\?)/i)) {
					var filename=filenameParts[1]+"."+filenameParts[2];
					if (filename.indexOf("//")!=-1) {
						filename=filename.substring(filename.indexOf("//")+2,filename.length);
					}
					if (filename.indexOf("/")!=-1) {
						filename=filename.substring(filename.indexOf("/")+1,filename.length);
					}
					listenToClick(el,"file","download",filename);
				}
			}
		}
		
		
		readyFunction(bindEvents);
	}
	
	//If optiga-env.js is not loaded
	window.setTimeout(_optiConfig.loadGa,2500);
	
})();
