//***************************************************
// LinkLite !
// PHP Version 1.0.0
// (c) 2010 GAFMEDIA Software
//
// Designer   : Gabriel Faucon
// Programer  : Laurent Moulinier
// Bug report : technical@gafmediastudio.com
// Website    : http://www.gafmediastudio.com.com
//***************************************************
var Username = "popof";
var Password = "000421";
var LoginParams = true;

//var Username = "";
//var Password = "";
//var LoginParams = false;
var TimerHandler;
var CurrentDelay = 0;
var RefreshDelay = 30;
var DaySelected  = false;
var RecapArray        = new Array();
var SystemPieData     = new Array();
var BrowserPieData    = new Array();
var ResolutionPieData = new Array();
var LanguagePieData   = new Array();
var RefererPieData    = new Array();

var CurrentLanguage = "en";
var CurrentSkin     = "default";
var LanguageListXML = null;
var LanguageDataXML = null;
var SkinListXML     = null;
var SkinDataXML     = null;
//----------------------------------------------------------------------------------------
//
//----------------------------------------------------------------------------------------
function SetCookie() {
	var today   = new Date();
	var expdate = new Date();
	var data    = RefreshDelay+"|"+Username+"|"+Password+"|"+CurrentLanguage+"|"+CurrentSkin;
	expdate.setTime( today.getTime() + ( 365*24*60*60*1000 ) );
	document.cookie = "LinkLite_UserData=" + data + ";expires=" + expdate.toGMTString() ;
}
//----------------------------------------------------------------------------------------
function GetCookie(){
	if ( document.cookie ) {
		var Index = document.cookie.indexOf( "LinkLite_UserData" );
		if ( Index != -1 ) {
			var StartPos = document.cookie.indexOf( "=", Index) + 1;
			var EndPos   = document.cookie.indexOf( ";", Index);
			if (EndPos == -1) {
				EndPos = document.cookie.length;
			}
			var cookValue = document.cookie.substring(StartPos, EndPos);
			var cookArray = cookValue.split( "|" );
			if ( cookArray.length >= 5){
				RefreshDelay    = parseInt(cookArray[0]);
				//Username        = cookArray[1];
				//Password        = cookArray[2];
				CurrentLanguage = cookArray[3]; 
				CurrentSkin     = cookArray[4];
				LoginParams     = true;
				if (CurrentSkin != "default") ReplaceCssFile("default", 'http://linklite.gafmediastudio.com/external/skin/get_skin_css.php?Name='+CurrentSkin);
			} 
		}
	}
}
//----------------------------------------------------------------------------------------
function ReplaceCssFile(OldCssFilename, NewCssFilename){
	var AllElement = document.getElementsByTagName("link");
	for (var i = AllElement.length; i>=0; i--){
		if (AllElement[i] && AllElement[i].getAttribute("href")!=null && AllElement[i].getAttribute("href").indexOf(OldCssFilename)!=-1){
			var FileRef = document.createElement("link");
			FileRef.setAttribute("rel",  "stylesheet");
			FileRef.setAttribute("type", "text/css");
			FileRef.setAttribute("href",  NewCssFilename);
			AllElement[i].parentNode.replaceChild(FileRef, AllElement[i])
		}
	}
}
//----------------------------------------------------------------------------------------
GetCookie();
//----------------------------------------------------------------------------------------
// http://docs.jquery.com/UI/Slider
//----------------------------------------------------------------------------------------
$(function() {
	//----------------------------------------------------------------------------------------
	//  PROGRESSBAR
	//----------------------------------------------------------------------------------------
	$("#CountdownProgress").progressbar({
		value: 0
	});
	//----------------------------------------------------------------------------------------
	// SLIDER REFRESH DELAY
	//----------------------------------------------------------------------------------------
	$("#slider_refresh_delay").slider(
		{
			min: 10,
			max: 120,
			value: RefreshDelay,
			orientation: "horizontal",
			change: function(event, ui) {
				RefreshDelay = ui.value;
				document.getElementById("p_slider_Value").innerHTML = RefreshDelay + " sec.";
			},
			stop: function(event, ui) { 
				RefreshDelay = ui.value;
				document.getElementById("p_slider_Value").innerHTML = RefreshDelay + " sec.";
				CurrentDelay = 0;
				$("#CountdownProgress").progressbar("option", "value", 0);
				SetCookie();
			}
		}
	);
	//----------------------------------------------------------------------------------------
	// Expande and collapse Pie View
	//----------------------------------------------------------------------------------------
	$(".btnToggle").click(function(){
		if (DaySelected == true){
			$("#expand-full").slideToggle("normal");
			$(".btnToggle").toggleClass("active"); 
		}
		return true;
	});
	//----------------------------------------------------------------------------------------
	// Login Dialog Box
	//----------------------------------------------------------------------------------------	
	/*var login_options = {
		bgiframe: true,
		hide: true,
		autoOpen: false,
		modal: true,
		resizable: false,
		title: "Login",
		buttons: { 
			"Ok": function() { 
				Username = document.getElementById("Username").value;
				Password = document.getElementById("Password").value;
				$(this).dialog("close");
				LoginParams = true;
				SetCookie(); 
				GetXmlData("GetAllRecap", null);
				setTimeout(UpdateProgress, 1000);
			},
			"Cancel": function() { 
				$(this).dialog("close"); 
			}
		} 
	};
	$("#login-dialog").dialog(login_options);*/
	//----------------------------------------------------------------------------------------
	// Login Button
	//----------------------------------------------------------------------------------------
	/*$('#btn_login').click( 
		function() {
			$("#login-dialog").dialog('open');
			if (LoginParams == true){
				LoginParams = false;
				Username = "";
				Password = "";
				SetCookie();
				//----------------------------------------------------------------------------------------
				if (LanguageDataXML != null) document.getElementById("btn_login").innerHTML = String(LanguageDataXML.getElementsByTagName("btn_login_0")[0].firstChild.nodeValue);
				else document.getElementById("btn_login").innerHTML = "Login";
				document.getElementById("connected").innerHTML = "0";
				document.getElementById("day").innerHTML = "0";
				document.getElementById("month").innerHTML = "0";
				document.getElementById("year").innerHTML = "0";
				document.getElementById("all").innerHTML = "0";
				$("#expand-full").slideUp("normal");
				//----------------------------------------------------------------------------------------
				RecapArray.splice(0, RecapArray.length);
				plot = $.plot( $("#placeholder"), [RecapArray], placeholder_options);
				overview = $.plot( $("#overview"), [RecapArray], overview_options );
				//----------------------------------------------------------------------------------------
			} else {
				if (LanguageDataXML != null) document.getElementById("btn_login").innerHTML = String(LanguageDataXML.getElementsByTagName("btn_login_1")[0].firstChild.nodeValue);
				else document.getElementById("btn_login").innerHTML = "Logout";
			}
		} 
	);*/
	//----------------------------------------------------------------------------------------
	// Language Combobox
	//----------------------------------------------------------------------------------------
	$("#Language_Combobox").change(
		function(){
			CurrentLanguage = document.getElementById("Language_Combobox").value;
			GetLanguageData(CurrentLanguage+".xml");
			SetCookie();
		}
	);
	//----------------------------------------------------------------------------------------
	// Language Combobox
	//----------------------------------------------------------------------------------------
	$("#Skin_Combobox").change(
		function(){
			var TmpSkinName = document.getElementById("Skin_Combobox").value;
			ReplaceCssFile(CurrentSkin, 'http://linklite.gafmediastudio.com/external/skin/get_skin_css.php?Name='+TmpSkinName);
			CurrentSkin = TmpSkinName;
			SetCookie();
		}
	);
	//----------------------------------------------------------------------------------------
	// Init in Collapse State
	//----------------------------------------------------------------------------------------
	$("#expand-full").slideUp("fast");
	//----------------------------------------------------------------------------------------
	//
	//----------------------------------------------------------------------------------------
	function ConvertStrDateToTimeStamp(Year,Month,Day){
		d = new Date();
		d.setFullYear(Year);
		d.setMonth(Month-1);
		d.setDate(Day);
		d.setHours(0);
		d.setMinutes(0);
		d.setSeconds(0);
		return d; 
	}
	//----------------------------------------------------------------------------------------
	function UpdateProgress() {
		if (LoginParams == false) return;
		CurrentDelay ++;
		if (CurrentDelay > RefreshDelay){
			CurrentDelay = 0;
			GetXmlData("GetAllRecap", null);
		}
		var Percent = Math.round((CurrentDelay / RefreshDelay) * 100);
		$("#CountdownProgress").progressbar("option", "value", Percent);
		setTimeout(UpdateProgress, 1000);
	}
	//----------------------------------------------------------------------------------------
	function ReceivedLanguageXML(XmlData){
		var NewValue = "";
		var TmpXML;
		if (LanguageListXML == null){
			if (window.DOMParser){
				var parser      = new DOMParser();
				LanguageListXML = parser.parseFromString(XmlData,"text/xml");
			} else {
				var xmlDoc   = new ActiveXObject("Microsoft.XMLDOM");
				xmlDoc.async = "false";
				LanguageListXML.loadXML(XmlData);
			}
			var AllNodes = LanguageListXML.documentElement.childNodes;
			for (i=0; i<AllNodes.length; i++) {
				NewValue = NewValue + "<option value='" + AllNodes[i].getAttribute("id") + "'>" + AllNodes[i].getAttribute("label") + "</option>";
			}
			var LanguageCBX = document.getElementById("Language_Combobox");
			LanguageCBX.innerHTML = NewValue;
			for (i=0; i<LanguageCBX.options.length; i++){
				if ( LanguageCBX.options[i].value == CurrentLanguage){
					LanguageCBX.selectedIndex = i;
					break;
				}
			}
			//-------------------------------------------------------------------------
			// Load Current Language !
			//-------------------------------------------------------------------------
			GetLanguageData(CurrentLanguage+".xml");
		} else {
			if (window.DOMParser){
				var parser = new DOMParser();
				LanguageDataXML = parser.parseFromString(XmlData,"text/xml");
			} else {
				var xmlDoc   = new ActiveXObject("Microsoft.XMLDOM");
				xmlDoc.async ="false";
				LanguageDataXML.loadXML(XmlData);
			}
			if (LoginParams == true){
				//document.getElementById("btn_login").innerHTML = String(LanguageDataXML.getElementsByTagName("btn_login_1")[0].firstChild.nodeValue);
			} else {
				//document.getElementById("btn_login").innerHTML = String(LanguageDataXML.getElementsByTagName("btn_login_0")[0].firstChild.nodeValue);
			}
			if (DaySelected == true){
				document.getElementById("btn_Toggle_Content").innerHTML = String(LanguageDataXML.getElementsByTagName("btn_toggle_content_1")[0].firstChild.nodeValue);
			} else {
				document.getElementById("btn_Toggle_Content").innerHTML = String(LanguageDataXML.getElementsByTagName("btn_toggle_content_0")[0].firstChild.nodeValue);
			}
			document.getElementById("lng_Connected").innerHTML      = String(LanguageDataXML.getElementsByTagName("lng_connected")[0].firstChild.nodeValue);
			document.getElementById("lng_Day").innerHTML            = String(LanguageDataXML.getElementsByTagName("lng_day")[0].firstChild.nodeValue);
			document.getElementById("lng_Month").innerHTML          = String(LanguageDataXML.getElementsByTagName("lng_month")[0].firstChild.nodeValue);
			document.getElementById("lng_Year").innerHTML           = String(LanguageDataXML.getElementsByTagName("lng_year")[0].firstChild.nodeValue);
			document.getElementById("lng_All").innerHTML            = String(LanguageDataXML.getElementsByTagName("lng_all")[0].firstChild.nodeValue);
			document.getElementById("lng_RefreshDelay").innerHTML   = String(LanguageDataXML.getElementsByTagName("lng_refresh_delay")[0].firstChild.nodeValue);
			document.getElementById("lng_SelectArea").innerHTML     = String(LanguageDataXML.getElementsByTagName("lng_select_area")[0].firstChild.nodeValue);
			document.getElementById("lng_SYSTEM").innerHTML         = String(LanguageDataXML.getElementsByTagName("lng_system")[0].firstChild.nodeValue);
			document.getElementById("lng_BROWSER").innerHTML        = String(LanguageDataXML.getElementsByTagName("lng_browser")[0].firstChild.nodeValue);
			document.getElementById("lng_RESOLUTION").innerHTML     = String(LanguageDataXML.getElementsByTagName("lng_resolution")[0].firstChild.nodeValue);
			document.getElementById("lng_LANGUAGE").innerHTML       = String(LanguageDataXML.getElementsByTagName("lng_language")[0].firstChild.nodeValue);
			document.getElementById("lng_REFERER").innerHTML        = String(LanguageDataXML.getElementsByTagName("lng_referer")[0].firstChild.nodeValue);
			document.getElementById("lbl_language").innerHTML       = String(LanguageDataXML.getElementsByTagName("lbl_language")[0].firstChild.nodeValue);
			document.getElementById("lbl_skin").innerHTML           = String(LanguageDataXML.getElementsByTagName("lbl_skin")[0].firstChild.nodeValue);
		}
	}
	//----------------------------------------------------------------------------------------
	function GetLanguageData(Filename) {
		$.ajax({ 
			datatype: "text",
			type: "GET",
			data: 'FileName=http://linklite.gafmediastudio.com/external/language/'+Filename,
			url: 'get_cross_domain_file.php',
			success: ReceivedLanguageXML,
			error : function(XMLHttpRequest, textStatus, errorThrown){	
				alert("Text Status = "+textStatus+'\n Error Thrown = '+errorThrown);
			}
		});
	}
	//----------------------------------------------------------------------------------------
	function ReceivedSkinXML(XmlData){
		var NewValue = "";
		var TmpXML;
		if (window.DOMParser){
			var parser      = new DOMParser();
			SkinListXML = parser.parseFromString(XmlData,"text/xml");
		} else {
			var xmlDoc   = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async = "false";
			SkinListXML.loadXML(XmlData);
		}
		var AllNodes = SkinListXML.documentElement.childNodes;
		for (i=0; i<AllNodes.length; i++) {
			NewValue = NewValue + "<option value='" + AllNodes[i].getAttribute("id") + "'>" + AllNodes[i].getAttribute("label") + "</option>";
		}
		var SkinCBX = document.getElementById("Skin_Combobox");
		SkinCBX.innerHTML = NewValue;
		for (i=0; i<SkinCBX.options.length; i++){
			if ( SkinCBX.options[i].value == CurrentSkin){
				SkinCBX.selectedIndex = i;
				break;
			}
		}
	}
	//----------------------------------------------------------------------------------------
	function GetSkinData(Filename) {
		$.ajax({ 
			datatype: "text",
			type: "GET",
			data: 'FileName=http://linklite.gafmediastudio.com/external/skin/'+Filename,
			url: 'get_cross_domain_file.php',
			success: ReceivedSkinXML,
			error : function(XMLHttpRequest, textStatus, errorThrown){	
				alert("Text Status = "+textStatus+'\n Error Thrown = '+errorThrown);
			}
		});
	}
	//----------------------------------------------------------------------------------------
	function UpdateFieldLabel(xmlDoc) {
		var MustRefresh = false;
		var OldValue;
		var NewValue;
		//----------------------------------------------------------------------------------------
		OldValue = String(document.getElementById("connected").innerHTML);
		NewValue = String(xmlDoc.getElementsByTagName("countConnected")[0].firstChild.nodeValue);
		if (OldValue != NewValue) MustRefresh = true;
		document.getElementById("connected").innerHTML = NewValue;
		//----------------------------------------------------------------------------------------
		OldValue = String(document.getElementById("day").innerHTML);
		NewValue = String(xmlDoc.getElementsByTagName("countDay")[0].firstChild.nodeValue);
		if (OldValue != NewValue) MustRefresh = true;
		document.getElementById("day").innerHTML = NewValue;
		//----------------------------------------------------------------------------------------
		OldValue = String(document.getElementById("month").innerHTML);
		NewValue = String(xmlDoc.getElementsByTagName("countMonth")[0].firstChild.nodeValue);
		if (OldValue != NewValue) MustRefresh = true;
		document.getElementById("month").innerHTML = NewValue;
		//----------------------------------------------------------------------------------------
		OldValue = String(document.getElementById("year").innerHTML);
		NewValue = String(xmlDoc.getElementsByTagName("countYear")[0].firstChild.nodeValue);
		if (OldValue != NewValue) MustRefresh = true;
		document.getElementById("year").innerHTML = NewValue;
		//----------------------------------------------------------------------------------------
		OldValue = String(document.getElementById("all").innerHTML);
		NewValue = String(xmlDoc.getElementsByTagName("countAll")[0].firstChild.nodeValue);
		if (OldValue != NewValue) MustRefresh = true;
		document.getElementById("all").innerHTML = NewValue;
		//----------------------------------------------------------------------------------------
		// Refresh Graph Only if Data Change !!!
		//----------------------------------------------------------------------------------------
		if (MustRefresh == true) GetXmlData("GetDayRecap", null);
	}
	//----------------------------------------------------------------------------------------
	function UpdateDayRecapData(xmlDoc) {
		//-------------------------------------------------------
		// LinkLite XML Item Format : <item year="2008" month="05" day="23" value="6"/>
		//-------------------------------------------------------
		RecapArray.splice(0, RecapArray.length);
		var Day;
		var Month;
		var Year;
		var DateStamp;
		var Connection;
		var AllNodes = xmlDoc.documentElement.childNodes;
		for (i=0; i<AllNodes.length; i++) {
			Day   = String(AllNodes[i].getAttribute("day"));
			Month = String(AllNodes[i].getAttribute("month"));
			Year  = String(AllNodes[i].getAttribute("year"));
			DateStamp  = ConvertStrDateToTimeStamp(Year,Month,Day);
			Connection = AllNodes[i].getAttribute("value");
			RecapArray.push([DateStamp,Connection]);
		}
		//--------------------------------------------------------------
		// Add TodayCount
		//--------------------------------------------------------------
		var DayValue = String(document.getElementById("day").innerHTML);
		var d = new Date();
		d.setHours(0);
		d.setMinutes(0);
		d.setSeconds(0);
		RecapArray.push([d,DayValue]);
		//--------------------------------------------------------------
		plot = $.plot( $("#placeholder"), [RecapArray], placeholder_options);
		overview = $.plot( $("#overview"), [RecapArray], overview_options );
	}
	//----------------------------------------------------------------------------------------
	function UpdateDayDetailsData(xmlDoc) {
		//-------------------------------------------------------
		// LinkLite XML Item Format : <item time="06:34:17" ip="112.145.249.149" system="Microsoft Windows NT 4.0" browser="Microsoft Internet Explorer" version="4.0" resolution="1280x1024" language="ko" referer="http://57.gafmediastudio.com/icons.html" isp="112.145.249.149"/>
		//-------------------------------------------------------
		function AddItemInArray(TargetArray, Value){
			for (j=0; j<TargetArray.length; j++) {
				if (TargetArray[j]["label"] == Value){
					TargetArray[j]["data"] = TargetArray[j]["data"] + 1;
					TargetArray[j]["counter"] = TargetArray[j]["counter"] + 1;
					return;
				}
			}
			TargetArray.push( { label: Value,  data: 1,  counter: 1} );
		}
		//-------------------------------------------------------
		function SortDataCallback(a, b){
			return b["data"] - a["data"];
		}
		//-------------------------------------------------------
		DaySelected = true;
		$("#expand-full").slideDown("normal");
		document.getElementById("btn_Toggle_Content").innerHTML = String(LanguageDataXML.getElementsByTagName("btn_toggle_content_1")[0].firstChild.nodeValue);
		//-------------------------------------------------------
		SystemPieData.splice(0, SystemPieData.length);
		BrowserPieData.splice(0, BrowserPieData.length);
		ResolutionPieData.splice(0, ResolutionPieData.length);
		LanguagePieData.splice(0, LanguagePieData.length);
		RefererPieData.splice(0, RefererPieData.length);
		//-------------------------------------------------------
		var AllNodes = xmlDoc.documentElement.childNodes;
		var TmpData;
		//-------------------------------------------------------
		for (i=0; i < AllNodes.length; i++) {
			TmpData = AllNodes[i].getAttribute("system");
			AddItemInArray(SystemPieData, TmpData );
		}
		SystemPieData.sort( SortDataCallback );
		system_pie = $.plot( $("#system"), SystemPieData, pie_options_system);
		//-------------------------------------------------------
		for (i=0; i<AllNodes.length; i++) {
			TmpData = AllNodes[i].getAttribute("browser");
			AddItemInArray(BrowserPieData, TmpData );
		}
		BrowserPieData.sort(SortDataCallback);
		browser_pie = $.plot( $("#browser"), BrowserPieData, pie_options_browser);
		//-------------------------------------------------------
		for (i=0; i<AllNodes.length; i++) {
			TmpData = AllNodes[i].getAttribute("resolution");
			AddItemInArray(ResolutionPieData, TmpData );
		}
		ResolutionPieData.sort(SortDataCallback);
		resolution_pie = $.plot( $("#resolution"), ResolutionPieData, pie_options_resolution);
		//-------------------------------------------------------
		for (i=0; i<AllNodes.length; i++) {
			TmpData = AllNodes[i].getAttribute("language");
			AddItemInArray(LanguagePieData, TmpData );
		}
		LanguagePieData.sort(SortDataCallback);
		language_pie = $.plot( $("#language"), LanguagePieData, pie_options_language);
		//-------------------------------------------------------
		for (i=0; i<AllNodes.length; i++) {
			TmpData = AllNodes[i].getAttribute("referer");
			AddItemInArray(RefererPieData, AllNodes[i].getAttribute("referer") );
		}
		RefererPieData.sort(SortDataCallback);
		referer_pie = $.plot( $("#referer"), RefererPieData, pie_options_referer);
	}
	//----------------------------------------------------------------------------------------
	function ParseReceivedData(xmlData) {
		//-----------------------------------------------------------------------------------
		// Extract relevant data from the http response to preserve compatibility 
		//-----------------------------------------------------------------------------------
		var xmlDoc;
		//-----------------------------------------------------------------------------------
		// Switch XML Parser for IE and other
		//-----------------------------------------------------------------------------------
		if (window.DOMParser){
			parser=new DOMParser();
			xmlDoc=parser.parseFromString(xmlData,"text/xml");
		} else {
			xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async="false";
			xmlDoc.loadXML(xmlData);
		} 
		var Target        =  xmlDoc.getElementsByTagName("action")[0].firstChild.nodeValue;
		var ExtractedData = "";
		var SubNodes      = xmlDoc.getElementsByTagName("data")[0].childNodes;
		for (i=0; i<SubNodes.length; i++){
			ExtractedData += SubNodes[i].nodeValue;
		}
		ExtractedData = ExtractedData.replace(/\$60/gi,'<');
		ExtractedData = ExtractedData.replace(/\$62/gi,'>');
		var Pos = ExtractedData.indexOf('\?>') + 2;
		ExtractedData = ExtractedData.substring(Pos);
		//-----------------------------------------------------------------------------------
		// Switch XML Parser for IE and other
		//-----------------------------------------------------------------------------------
		if (window.DOMParser){
			parser=new DOMParser();
			xmlDoc=parser.parseFromString(ExtractedData,"text/xml");
		} else {
			xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async="false";
			xmlDoc.loadXML(ExtractedData);
		} 
		//-----------------------------------------------------------------------------------
		// Error verification
		//-----------------------------------------------------------------------------------
		var MessageNode = xmlDoc.getElementsByTagName("MsgServer")[0];
		if (MessageNode != null){
			alert(xmlDoc.getElementsByTagName("MsgServer")[0].getAttribute("value"));
			//if (LanguageDataXML != null) document.getElementById("btn_login").innerHTML = String(LanguageDataXML.getElementsByTagName("btn_login_0")[0].firstChild.nodeValue);
			//else document.getElementById("btn_login").innerHTML = "Login";
			LoginParams = false;
			Username = "";
			Password = "";
			SetCookie();					
		} else {
			//if (LanguageDataXML != null) document.getElementById("btn_login").innerHTML = String(LanguageDataXML.getElementsByTagName("btn_login_1")[0].firstChild.nodeValue);
			//else document.getElementById("btn_login").innerHTML = "Logout";
			if (Target == "GetAllRecap"){
				UpdateFieldLabel(xmlDoc);
			} else if (Target == "GetDayRecap"){
				UpdateDayRecapData(xmlDoc);
			} else if (Target == "GetDayDetails"){
				UpdateDayDetailsData(xmlDoc);
			}
		}
	}
	//----------------------------------------------------------------------------------------
	function GetXmlData(Action, ExtraData) {
		var PostData = "Action="+Action+"&Username="+Username+"&Password="+Password;
		if (ExtraData != null){
			PostData = PostData + ExtraData;
		}
		$.ajax({ 
			datatype : "xml",
			type: "POST", 
			url: TrackerPath+"script.php", 
			data: PostData,
			success: ParseReceivedData
		});
	}
	//----------------------------------------------------------------------------------------
	//
	//----------------------------------------------------------------------------------------
	$("#slider_refresh_delay").slider("option", "value", RefreshDelay);
	document.getElementById("p_slider_Value").innerHTML = RefreshDelay + " sec.";
	setTimeout(UpdateProgress, 1000);
	//----------------------------------------------------------------------------------------
	//
	//----------------------------------------------------------------------------------------
	$(document).ready(
		function(){
			GetLanguageData("list.xml");
			GetSkinData("list.xml");
			//if (LoginParams == true) GetXmlData("GetAllRecap", null);
			GetXmlData("GetAllRecap", null);
		}
	);
	//****************************************************************************************
	// FLOT PLUGIN LINE
	//****************************************************************************************
	var previousPoint = null;
	//----------------------------------------------------------------------------------------
	function weekendAreas(axes) {
		var markings = [];
		var d = new Date(axes.xaxis.min);
		d.setUTCDate(d.getUTCDate() - ((d.getUTCDay() + 1) % 7))
		d.setUTCSeconds(0);
		d.setUTCMinutes(0);
		d.setUTCHours(0);
		var i = d.getTime();
		do {
			markings.push({ xaxis: { from: i, to: i + 2 * 24 * 60 * 60 * 1000 } });
			i += 7 * 24 * 60 * 60 * 1000;
		} while (i < axes.xaxis.max);
		return markings;
	}
	//----------------------------------------------------------------------------------------
	function ConvertTimeStampToStrDate(DateStamp){
		try{
			d = new Date(DateStamp);
		} catch (e ){
			d = new Date();
		}
		return d.toLocaleString(); 
	}
	//----------------------------------------------------------------------------------------
	function showTooltip(x, y, contents) {
		$('<div id="tooltip">' + contents + '</div>').css( 
			{
				position: 'absolute',
				display: 'none',
				top: y + 5,
				left: x + 5,
				border: '1px solid #fdd',
				padding: '2px',
				'background-color': '#fee',
				'font-family': 'Arial, Helvetica, sans-serif',
				opacity: 0.80
			}
		).appendTo("body").fadeIn(200);
	}
	//----------------------------------------------------------------------------------------
	var placeholder_options = {
		xaxis: { mode: "time" },
		lines: { show: true, lineWidth: 1 },
		points: { show: true },
		selection: { mode: "x" },
		grid: { markings: weekendAreas, hoverable: true, clickable: true, backgroundColor: { colors: ["#fff", "#eee"] } }
	};
	//----------------------------------------------------------------------------------------
	var plot = $.plot( $("#placeholder"), [RecapArray], placeholder_options);
	//----------------------------------------------------------------------------------------
	$("#placeholder").bind(
		"plotselected", 
		function (event, ranges) {
			plot = $.plot( $("#placeholder"), [RecapArray], $.extend(true, {}, placeholder_options, { xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to } }));
			overview.setSelection(ranges, true);
		}
	);	
	//----------------------------------------------------------------------------------------
	$("#placeholder").bind(
		"plothover", 
		function (event, pos, item) {
			if (item) {
				if (previousPoint != item.datapoint) {
					previousPoint = item.datapoint;
					$("#tooltip").remove();
					var x = ConvertTimeStampToStrDate(item.datapoint[0]), y = item.datapoint[1];
					showTooltip(item.pageX, item.pageY - 30, x + " => <b>" + y + "</b>");
				}
			}
			else {
				$("#tooltip").remove();
				previousPoint = null;            
			}
		}
	);
	//----------------------------------------------------------------------------------------
	$("#placeholder").bind(
		"plotclick", 
		function (event, pos, item) {
			if (item) {
				var d = new Date(item.datapoint[0]);
				var Year  = d.getFullYear();
				var Month = (d.getMonth()+1 <= 9)? "0"+(d.getMonth()+1) : d.getMonth()+1;
				var Day   = (d.getDate() <= 9)? "0"+d.getDate() : d.getDate();
				var ExtraData = "&Day="+ Year + Month + Day;
				GetXmlData("GetDayDetails", ExtraData);
				//----------------------------------------------------------------
				// Set Details Date
				//----------------------------------------------------------------
				document.getElementById("DetailsDate").innerHTML = d.toLocaleString();
			}
		}
	);
	//----------------------------------------------------------------------------------------
	var overview_options = { 
		series: {lines: { show: true, lineWidth: 1 },shadowSize: 0},
		xaxis: { ticks: [], mode: "time" },
		yaxis: { ticks: [], min: 0, autoscaleMargin: 0.1 },
		selection: { mode: "x" }
	};	
	//----------------------------------------------------------------------------------------
	var overview = $.plot( $("#overview"), [RecapArray], overview_options );
	//----------------------------------------------------------------------------------------
	$("#overview").bind(
		"plotselected", 
		function (event, ranges) {
			plot.setSelection(ranges);
		}
	);
	//****************************************************************************************
	// FLOT PLUGIN PIE
	//****************************************************************************************
	function FormatLegendLabel(label, series) {
		var FormatedLabel = (label.length > 60)? label.substring(0,57) + "..." : label;		
		var Result = '<table width="500" border="0" cellpadding="0" cellspacing="0" style="font-size:10pt; font-family:Arial, Helvetica, sans-serif"><tr>';
		Result += '<td width="34" height="19" valign="middle" align="left" >'+series.datapoints.points[1]+'</td>';
		Result += '<td width="59" valign="middle" align="left">(' + series.percent.toFixed(2) + '%)</td>';
		if (label.substring(0, 4).toLowerCase() == "http"){ 
			Result += '<td width="408" valign="middle" align="left"><b><a href="'+label+'">'+FormatedLabel+'</a></b></td>';
		} else {
			Result += '<td width="408" valign="middle" align="left"><b>'+label+'</b></td>';
		}
		Result += '</tr></table>';
		return Result;
	}
	//----------------------------------------------------------------------------------------
	function FormatPieLabel(label, series){
		return '<div style="font-family:Arial, Helvetica, sans-serif;font-size:8pt;text-align:center;padding:2px;color:white;">'+series.percent.toFixed(2)+'%</div>';
	}
	//----------------------------------------------------------------------------------------
	var pie_options_system = {
		series: {
			pie: {
				show: true, 
				radius: 0.8,
				label: {
					show: true, 
					radius: 1, 
					formatter: FormatPieLabel,
					background: { opacity: 1 }
				},
				background: { opacity: 0.2 }
			}
		},
		legend : {
			show: true,	
			labelFormatter: FormatLegendLabel,
			noColumns: 1,
			container: $('#system-legend')
		}
	};
	//----------------------------------------------------------------------------------------
	var pie_options_browser = {
		series: {
			pie: {
				show: true, 
				radius: 0.8,
				label: { 
					show: true, 
					radius: 1, 
					formatter: FormatPieLabel,
					background: { opacity: 1 }
				},
				background: { opacity: 0.2 }
			}
		},
		legend : {
			show: true,	
			labelFormatter: FormatLegendLabel,
			noColumns: 1,
			container: $('#browser-legend')
		}
	};
	//----------------------------------------------------------------------------------------
	var pie_options_resolution = {
		series: {
			pie: {
				show: true, 
				radius: 0.8,
				label: { 
					show: true, 
					radius: 1, 
					formatter: FormatPieLabel,
					background: { opacity: 1 }
				},
				background: { opacity: 0.2 }
			}
		},
		legend : {
			show: true,	
			labelFormatter: FormatLegendLabel,
			noColumns: 1,
			container: $('#resolution-legend')
		}
	};
	//----------------------------------------------------------------------------------------
	var pie_options_language = {
		series: {
			pie: {
				show: true,
				radius: 0.8,
				label: { 
					show: true, 
					radius: 1, 
					formatter: FormatPieLabel,
					background: { opacity: 1 }
				},
				background: { opacity: 0.2 }
			}
		},
		legend : {
			show: true,	
			labelFormatter: FormatLegendLabel,
			noColumns: 1,
			container: $('#language-legend')
		}
	};
	//----------------------------------------------------------------------------------------
	var pie_options_browser = { 
		series: {
			pie: {
				show: true, 
				radius: 0.8,
				label: { 
					show: true, 
					radius: 1, 
					formatter: FormatPieLabel,
					background: { opacity: 1 }
				},
				background: { opacity: 0.2 }
			}
		},
		legend : {
			show: true,	
			labelFormatter: FormatLegendLabel,
			noColumns: 1,
			container: $('#browser-legend')
		}
	};
	//----------------------------------------------------------------------------------------
	var pie_options_referer = { 
		series: {
			pie: {
				show: true, 
				radius: 0.8,
				label: { 
					show: true, 
					radius: 1, 
					formatter: FormatPieLabel,
					background: { opacity: 1}
				},
				background: { opacity: 0.2 }
			}
		},
		legend : {
			show: true,	
			labelFormatter: FormatLegendLabel,
			noColumns: 1,
			container: $('#referer-legend')
		}
	};
	//----------------------------------------------------------------------------------------
	var system_pie = $.plot(
		$("#system"), 
		SystemPieData, 
		pie_options_system
	);
	//----------------------------------------------------------------------------------------
	var browser_pie = $.plot(
		$("#browser"), 
		BrowserPieData, 
		pie_options_browser
	);
	//----------------------------------------------------------------------------------------
	var resolution_pie = $.plot(
		$("#resolution"), 
		ResolutionPieData, 
		pie_options_resolution
	);
	//----------------------------------------------------------------------------------------
	var language_pie = $.plot(
		$("#language"), 
		LanguagePieData, 
		pie_options_language
	);
	//----------------------------------------------------------------------------------------
	var referer_pie = $.plot(
		$("#referer"), 
		RefererPieData, 
		pie_options_referer
	);
});
//----------------------------------------------------------------------------------------
// END
//----------------------------------------------------------------------------------------
