(function (){
	datacontrol("DataControlZB");

	function ExtractField(str,fld){
		var s = fld+'="';
		var e = '"';
	    var f = str.substr(str.indexOf(s)).substr(s.length);
	    f = f.substring(f.indexOf(e),0)
	    return f;
	}
	
	var zbucks = 0;
	var zchievements = 0;
	var pbucks = 0;
	var lastwrite = 0;
	
	var ctrl = document.getElementById("DataControlZB");

	ctrl.DataFileName = "zbucks";
	ctrl.SetUpdate = function (func){
		if(window.ActiveXObject){
			ctrl.OnDataChanged = func;
		}else{
			DataControlZB_OnDataChanged = func;
		}
	};
	function ReadData(){
		var data = ctrl.GetData();
		var delim = "|";

		//|currentBalance|lifetimeEarnings|now.getTime()|userName);
		if(typeof(dataChangedZBucksReload) == "function"){
			if(data.indexOf("reload")==0){
				dataChangedZBucksReload();
				return;
			}
		}
		
		if(typeof(dataChangedZBucks) != "function"){return;}
		
		if(data.indexOf(delim) == 0){
			var arr = data.split(delim);
			dataChangedZBucks(arr[1],arr[2],null,arr[3]);
			return;
		}
	
	
		var zb = ExtractField(data,"current");
		var pb = ExtractField(data,"pBucks");
		var zc = ExtractField(data,"lifetime");
		
		var ts = ExtractField(data,"updated");

		//don't fire if we were the ones who wrote.
		//log.debug("Writing latwrite is %s and ts is %s",lastwrite,ts);
		if(lastwrite != ts){
			dataChangedZBucks(zb,zc,pb,ts);
		}
	};
	
	function WriteData(zb,zc,pb){
		if(parseInt(zb) >= 0){
			zbucks = zb;
		}
		if(parseInt(zc) >= 0){
			var zchievements = zc;
		}
		if(parseInt(pb) >= 0){
			var pbucks = pb;
		}

		lastwrite = (new Date()).getTime();

		var SaveFile = '<?xml version="1.0"?><currencyBalance status="" current="'+zbucks+'" lifetime="'+zchievements+'" pBucks="'+pbucks+'" updated="'+lastwrite+'"/>';

		ctrl.SetData(SaveFile);
	};
	
	ctrl.SetUpdate(ReadData);

	//Add write function 
	if(typeof(AddZBListener) == "function"){
		AddZBListener(WriteData);
	}

	//call first load
	ReadData();
})();