package com.guru.component.tracking
{
	import com.guru.call.FunctionCall;
	import com.guru.conn.ConnAbstract;
	import com.guru.conn.ConnPath;
	import com.guru.encrypt.GuruEncrypt;
	import com.guru.facebook.FacebookDataBridge;
	import flash.display.Loader;
	import flash.net.URLRequest;
	/**
	 * ...
	 * @author Eddy Lee
	 */
	public class Tracking
	{
		private static var sInstance:Tracking;
		
		public static function getInstance():Tracking
		{
			if (sInstance == null)
			{
				sInstance = new Tracking();
			}
			return sInstance;
		}
		
		public function Tracking() 
		{
			
		}
		
		public function mediamind(pConversionTagID_str:String):void
		{
			var ebRand = Math.random()+"";
			ebRand = ebRand * 1000000;
			var activityParams = escape("ActivityID="+pConversionTagID_str+"&f=1");
			var loader:Loader = new Loader();
			var url = "HTTP://bs.serving-sys.com/BurstingPipe/activity3.swf?ebAS=bs.serving-sys.com&activityParams=" + activityParams + "&rnd=" + ebRand;
			var request:URLRequest = new URLRequest(url);
			try { loader.load(request); } catch (error:Error) {}
		}
		
		public function track(pData_str:String):void
		{
			var connAbstract:ConnAbstract = new ConnAbstract(ConnPath.getTrackingPath());
			connAbstract.setSuccessCall(new FunctionCall(this, onTrackSuccess, connAbstract));
			connAbstract.setFailCall(new FunctionCall(this, onTrackFail, connAbstract));
			var param_str:String = FacebookDataBridge.getLoggerUid() + "|" + pData_str;
			Logger.track("TRACK: " + param_str);
			connAbstract.send({data:GuruEncrypt.encrypt(param_str)});
		}
		
		private function onTrackSuccess(pConnAbstract:ConnAbstract):void
		{
			if (pConnAbstract.getXML()..status[0] == "true")
			{
				Logger.track("TRACK: SUCCESS :D");
			}
			else
			{
				this.onTrackFail(pConnAbstract);
			}
		}
		
		private function onTrackFail(pConnAbstract:ConnAbstract):void
		{
			Logger.track("TRACK: FAIL ;(");
		}
		
	}

}