var flv_gemius_proto = 'http://';
if (document.location && document.location.protocol && document.location.protocol=='https:') {
	flv_gemius_proto = 'https://';
}

function flv_gemius_parameters_fn() {
	var d=document;
	var href=new String(d.location.href);
	var ref;
	var f=0;
	var fv='-';
	if (d.referrer) { ref=new String(d.referrer); } else { ref=''; }
	if (typeof Error!='undefined') {
		var fo;
		eval('try { f=(d==top.document)?1:2; if (typeof top.document.referrer=="string") { ref=top.document.referrer } } catch(e) {f=3;}');
		eval('try { fv=navigator.plugins["Shockwave Flash"].description; } catch (e) {}');
		eval('if (typeof ActiveXObject!="undefined") { try { fo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); } catch(e) { try { fo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); fv="X"; fo.AllowScriptAccess="always"; } catch(e) { if (fv=="X") { fv="WIN 6,0,20,0"; }} try { fo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); } catch(e) {} } if ((fv=="-" || fv=="X") && fo) { fv=fo.GetVariable("$version"); }}');
	}
	var url='&fr='+f+'&fv='+escape(fv)+'&tz='+(new Date()).getTimezoneOffset()+'&href='+escape(href.substring(0,499))+'&ref='+escape(ref.substring(0,499));
	if (screen) {
		var s=screen;
		if (s.width) url+='&screen='+s.width+'x'+s.height;
		if (s.colorDepth) url+='&col='+s.colorDepth;
	}
	return url;
}

var flv_gemius_parameters = flv_gemius_parameters_fn();

function flv_gemius_escape(str,limit) {
	function Hex(n) {
		var hexMap = "0123456789ABCDEF";
		return hexMap.charAt(n>>4)+hexMap.charAt(n&0xF);
	}
	var c,s,uc,ul;
	var dst = "";
	for (var i=0 ; i<str.length ; i++) {
		c = str.charCodeAt(i);
		if ((c>=0xDC00)&&(c<0xE000)) continue;
		if ((c>=0xD800)&&(c<0xDC00)) {
			i++;
			if (i>=str.length) continue;
			s = str.charCodeAt(i);
			if ((s<0xDC00)||(s>=0xE000)) continue;
			c = ((c-0xD800)<<10)+(s-0xDC00)+0x10000;
		}
		if (c<0x80) {
			uc = escape(String.fromCharCode(c)).replace(/\+/g,"%2B").replace(/\//g,"%2F");
			if (c<=0x20) {
				ul=3;
			} else {
				ul=1;
			}
		} else if (c<0x800) {
			uc = "%u"+Hex(c>>8)+Hex(c&0xFF);
			ul = 2;
		} else if (c<0x10000) {
			uc = "%u"+Hex(c>>8)+Hex(c&0xFF);
			ul = 3;
		} else {
			uc = "%U"+Hex((c>>24)&0xFF)+Hex((c>>16)&0xFF)+Hex((c>>8)&0xFF)+Hex(c&0xFF);
			ul = 4;
		}
		limit -= ul;
		if (limit<0) {
			return dst;
		}
		dst+=uc;
	}
	return dst;
}

/*
*
* Events
*
*/

var FLV_eventListener = {
	init : function() {

		me = FLV_eventListener;

		me.flashObjectsArray = new Array();
		me.moviesArray = new Array();

		me.FLVTimeArray = new Object();
		me.FLVTimeArrayJS = new Object();

		me.lineNumber = 0;
		me.timeout = 300000;
		me.maxLength = 200;
		me.output=null;
		me.lastMovie=null;
		if (window.addEventListener) {
			window.addEventListener('unload',me.myOnUnload,true);
		} else if (window.attachEvent) {
			window.attachEvent('onunload',me.myOnUnload);
		}

		me.session_player = (new Date()).getTime().toString(36)+Math.round(Math.random()*100000000).toString(36)+Math.round(Math.random()*100000000).toString(36);
		
		setInterval('me.timeCheck();',me.timeout);
	},

	movieData : function(content_id, content_name, totalTime, userTime, customPackage) {
		if (me.lastMovie!=null) {
			me.sendMovieData(me.lastMovie);
		}

		totalTime = Math.round(totalTime/1000);
		var curr = me.moviesArray.length;
		me.lastMovie = curr;

		me.moviesArray[curr] = new Array();

		var customPackageStr="";
		if (customPackage!=undefined) {
			for (var i=0 ; i<customPackage.length ; i++) {
				if (i<customPackage.length-1) {
					customPackageStr+=customPackage[i]+";";
				} else {
					customPackageStr+=customPackage[i];
				}
			}
		}

		me.moviesArray[curr]["content_name"] = content_name;
		me.moviesArray[curr]["content_id"] = content_id;
		me.moviesArray[curr]["lastPlayTime"]="";
		me.moviesArray[curr]["currentTime"]="";
		me.moviesArray[curr]["totalTime"]=totalTime;
		me.moviesArray[curr]["lastTimeStamp"]="";
		me.moviesArray[curr]["firstTimeStamp"]=Math.round((new Date()).getTime()/1000);
		me.moviesArray[curr]["movieInfo"]=me.session_player+";"+Math.round(totalTime)+";"+me.moviesArray[curr]["firstTimeStamp"]+"|"+content_id+";"+content_name+";"+customPackageStr;
		me.moviesArray[curr]["data"]="";
	},

	closeMovieData : function(content_id, movieTime) {
		movieTime = Math.round(movieTime/1000);
		var curr = me.findElement(content_id);

		var tempTime = movieTime;

		if (me.FLVTimeArrayJS[content_id]!==undefined && me.moviesArray[curr]["lastPlayTime"]<me.FLVTimeArrayJS[content_id]) {
			var playLength = Math.round(movieTime - me.moviesArray[curr]["lastPlayTime"]);
			if (playLength>0 && playLength!=NaN) {
				me.moviesArray[curr]["data"]+="|"+me.moviesArray[curr]["lastTimeStamp"]+";"+Math.round(me.moviesArray[curr]["lastPlayTime"])+";"+playLength;
			}
			me.moviesArray[curr]["lastPlayTime"]="";
		} else if (me.moviesArray[curr]["lastPlayTime"]!=="" && me.FLVTimeArrayJS[content_id]===undefined) {
			var playLength = Math.round(movieTime - me.moviesArray[curr]["lastPlayTime"]);
			if (playLength>0 && playLength!==NaN) {
				me.moviesArray[curr]["data"]+="|"+me.moviesArray[curr]["lastTimeStamp"]+";"+Math.round(me.moviesArray[curr]["lastPlayTime"])+";"+playLength;
			}
			me.moviesArray[curr]["lastPlayTime"]="";
		}
	},

	findElement : function(content_id) {
		var i=me.moviesArray.length - 1;

		for (i=me.moviesArray.length - 1 ; i>-1 ; i--) {
			if (me.moviesArray[i]["content_id"]==content_id) {
				return i;
			}
		}

		return -1;
	},

	eventListener : function(content_id, movieTime, userTime, eventType) {
		movieTime = Math.round(movieTime/1000);
		userTime = Math.round(userTime/1000);
		var curr = me.findElement(content_id);

		var playLength = Math.round(movieTime - me.moviesArray[curr]["lastPlayTime"]);
		var lastString = "|"+me.moviesArray[curr]["lastTimeStamp"]+";"+Math.round(me.moviesArray[curr]["lastPlayTime"])+";"+playLength;
		if (playLength<=0) {
			playLength=0;
			lastString = "";
		}

		if (eventType === "playing") {
			me.moviesArray[curr]["lastTimeStamp"]= Math.round((new Date()).getTime()/1000) - me.moviesArray[curr]["firstTimeStamp"];
			me.moviesArray[curr]["lastPlayTime"]=movieTime;
		} else if (eventType === "complete") {
			if (window.opera) {
				me.sendMovieData(curr);
				me.moviesArray[curr]["data"]="";
				me.moviesArray[curr]["lastPlayTime"]="";
			}
		} else if (eventType !== "playing" && me.moviesArray[curr]["lastPlayTime"]!=="") {
			if (me.checkLength(curr,lastString)>me.maxLength) {
				me.sendMovieData(curr);
				me.moviesArray[curr]["data"]="";
				me.moviesArray[curr]["lastPlayTime"]="";
			} else {
				me.moviesArray[curr]["data"] += lastString;
				me.moviesArray[curr]["lastPlayTime"]="";
			}
		}
		if (eventType === "complete") {
			me.sendMovieData(curr);
		}
	},

	setTime : function(content_id,movieTime) {
		movieTime = Math.round(movieTime/1000);
		var curr = me.findElement(content_id);
		me.moviesArray[curr]["currentTime"]=movieTime;
	},

	traceData : function(id) {
		var outputData = "v=1|"+me.moviesArray[id]["movieInfo"]+me.moviesArray[id]["data"];

		if (typeof window.flv_gemius_images == 'undefined') {
			window.flv_gemius_images = new Array();
		}

		var gemius_l = window.flv_gemius_images.length;
		window.flv_gemius_images[gemius_l] = new Image();
		window.flv_gemius_images[gemius_l].src = flv_gemius_proto+flv_gemius_host+'/_'+(new Date()).getTime()+'/redot.gif?id='+flv_gemius_identifier+'&sarg='+flv_gemius_escape(outputData,240)+flv_gemius_parameters;
	},

	sendMovieData : function(id) {
		me.completeMovieData(id);

		if (me.moviesArray[id]["data"]!="") {
			me.traceData(id);
		}
		me.moviesArray[id]["data"]="";
	},

	sendAllMovieData : function() {
		for (var i=0 ; i<me.moviesArray.length ; i++) {
			me.completeMovieData(i);
			if (me.moviesArray[i]["data"]!="") {
				me.traceData(i);
				me.moviesArray[i]["data"]="";
			}
		}
	},

	completeMovieData : function(id) {
		var tempTime;
		if (window.opera) {
			for (var i=0 ; i<me.flashObjectsArray.length ; i++) {
				var element;
				element = document.getElementsByName(me.flashObjectsArray[i])[me.flashObjectsArray[i]];
				var tmpArr = element.getMovieTime();
				if (tmpArr[0] == me.moviesArray[id]["content_id"]) {
					tempTime = Math.round(tmpArr[1]/1000);
					break;
				}
			}
		} else {
			tempTime = me.moviesArray[id]["currentTime"];
		}
		if (me.moviesArray[id]["lastPlayTime"]!=="") {
			var playLength = Math.round(tempTime - me.moviesArray[id]["lastPlayTime"]);
			var lastPlayTimeTemp = Math.round(me.moviesArray[id]["lastPlayTime"]);
			if (playLength<0) {
				playLength=0;
			}
			me.moviesArray[id]["lastPlayTime"]=tempTime;
			if (playLength>0) {
				if (me.FLVTimeArrayJS[me.moviesArray[id]["content_id"]]!=undefined) {
					if (lastPlayTimeTemp<me.FLVTimeArrayJS[me.moviesArray[id]["content_id"]]) {
						me.moviesArray[id]["data"]+="|"+me.moviesArray[id]["lastTimeStamp"]+";"+lastPlayTimeTemp+";"+playLength;
					}
				} else {
					me.moviesArray[id]["data"]+="|"+me.moviesArray[id]["lastTimeStamp"]+";"+lastPlayTimeTemp+";"+playLength;
				}
			}
		}
	},

	checkLength : function(id,newData) {
		if (me.moviesArray[id]["data"] !== undefined) {
			var data = me.moviesArray[id]["data"];
			var info = me.moviesArray[id]["movieInfo"];
			var mylength = data.length + newData.length + info.length;
			return mylength;
		} else {
			return 0;
		}
	},

	timeCheck : function() {
		me.sendAllMovieData();
	},

	registerFLVTime : function(content_id,time) {
		me.FLVTimeArray[content_id]=Math.round(time);
		me.FLVTimeArrayJS[content_id]=Math.round(time);
	},

	registerFlashObject : function(name) {
		me.flashObjectsArray.push(name);
	},

	getFLVTimeArray : function() {
		return me.FLVTimeArray;
	},

	myOnUnload : function() {
		me.sendAllMovieData();
		var start = (new Date()).getTime();
		while (start+200>(new Date()).getTime());
	},

	checkBrowser : function() {
		if (window.opera) {
			return "Opera";
		} else {
			return "Other";
		}
	}
};
FLV_eventListener.init();
