/**
 * 	plotkitGraphWrapper
 * 
 * 		
 * 	This function wraps the rendering of the four statplots
 * 
 * 	@author Mark Koopmann <mark.koopmann@doccheck.com>
 */
 
// call single chart functions
function plotkitGraphWrapper(){

	if($('divDCPlotkitProfessionLoader')) {

		try{
			drawUserProfessionStats();
			drawUserSectionsStats();
			drawUserActivitiesStats();
		}
		catch(objError){
		
		}
	}

}

// draw professions graph (get values)
function drawUserProfessionStats(intArticleId){
	var strDocumentLocation 	= document.location.toString();
	var strRequestUrl 			= '/fileadmin/_scripts/_php/_ajax/ajax.dc_userstats.php';
	var strParameters 			= 'view=professions';

	var objAjax = new Ajax.Request( 
			strRequestUrl, 
			{ 
				method		: 'post', 
				parameters	: strParameters, 
				onComplete	: drawUserProfessionStatsCallback 	
			}
		);	
}

// draw sections graph (get values)
function drawUserSectionsStats(intArticleId){
	
	var strDocumentLocation 	= document.location.toString();
	var strRequestUrl 			= '/fileadmin/_scripts/_php/_ajax/ajax.dc_userstats.php';
	var strParameters 			= 'view=sections';

	var objAjax = new Ajax.Request( 
			strRequestUrl, 
			{ 
				method		: 'post', 
				parameters	: strParameters, 
				onComplete	: drawUserSectionsStatsCallback 	
			}
		);	
}

// draw activities graph (get values)
function drawUserActivitiesStats(intArticleId){
	var strDocumentLocation 	= document.location.toString();
	var strRequestUrl 			= '/fileadmin/_scripts/_php/_ajax/ajax.dc_userstats.php';
	var strParameters 			= 'view=activities';

	var objAjax = new Ajax.Request( 
			strRequestUrl, 
			{ 
				method		: 'post', 
				parameters	: strParameters, 
				onComplete	: drawUserActivitiesStatsCallback 	
			}
		);	
}

var fltAnimationTime = 1;
var objRequestProfession;
var objRequestSections;
var objRequestActivities;

// callback for draw professions graph
function drawUserProfessionStatsCallback(objRequest) {
	objRequestProfession = objRequest;
	switchPlotkitLoader('divDCPlotkitProfession','objRequestProfession');
}

// callback for draw sections graph
function drawUserSectionsStatsCallback(objRequest) {
	objRequestSections = objRequest;
	switchPlotkitLoader('divDCPlotkitSections','objRequestSections');
}

// callback for draw activities graph
function drawUserActivitiesStatsCallback(objRequest) {
	objRequestActivities = objRequest;
	switchPlotkitLoader('divDCPlotkitActivities','objRequestActivities');
}

// timeout function
function startTimeout(strPrefix, strRequest) {
	setTimeout("drawUserStatsGraph('"+strPrefix+"', '"+strRequest+"')", (fltAnimationTime * 2000));
}

// switches graph container
function switchPlotkitLoader(strPrefix, strRequest) {
	var objLoader = $(strPrefix+'Loader');
	var objContainer = $(strPrefix+'Container');


	if(Prototype.Browser.IE){
		objLoader.style.display = "none"; 
		new Effect.BlindDown(objContainer, {duration:fltAnimationTime, queue: {position: 'end', scope: strPrefix}, beforeStart:startTimeout(strPrefix, strRequest)});
	}
	else{
		new Effect.BlindUp(objLoader, {duration:fltAnimationTime, queue: {position: 'end', scope: strPrefix}});
		new Effect.BlindDown(objContainer, {duration:fltAnimationTime, queue: {position: 'end', scope: strPrefix}, beforeStart:startTimeout(strPrefix, strRequest)});
	}
}

// draw graph
function drawUserStatsGraph(strPrefix, strRequest) {
	
	eval('objRequest = '+strRequest+';');

	$(strPrefix+'Container').style.display = 'block';
	$(strPrefix+'Plotkit').style.visibility = 'visible';

	var objResponse = objRequest.responseText.parseJSON();
	
	var objArticleStats = objResponse['data'];
	
	var arrColorValues 	= [ 
								'#cc0033',
								'#eb99ad',
								'#9cd7f6',
								'#bae3f9',
								'#d7effb',
								'#ddb98e',
								'#F5BE01',
								'#416100',
								'#97AA00',
								'#59BDEF',
								'#144C99',
								'#5E3466',
								'#C06D67',
								'#CC6901',
								'#C0CC66',
								'#686262',
								'#db4d71',
								'#A37F65',
								'#9B9190',
								'#EE7900'
							];
	var arrXTicks 		= [];
	var arrHits 		= [];
	var arrColorScheme	= [];
	var intCounter		= 0;
	var intColorCounter = 0;

	objArticleStats.each(function(objItem){

		arrXTicks.push({v:intCounter, label:''});
		arrHits.push([intCounter, +objItem.count]);
		arrColorScheme.push(Color.fromHexString(arrColorValues[intColorCounter]));
		
		if(intColorCounter == 15){
			intColorCounter = 0;
		}
		
		intCounter++;
		intColorCounter++;
	});

	var objPlotkitOptions = {
	   	"IECanvasHTC": 		"/fileadmin/_scripts/_js/plotkit/iecanvas.htc",
		"colorScheme":		arrColorScheme,
		"backgroundColor":	Color.fromHexString('#FFFFFF'),	
	   	"padding": 			{left: 0, right: 0, top: 50, bottom: 50},
	   	"xTicks": 			arrXTicks, 
		"drawYAxis":		false, 
		"pieRadius": 		0.60
	};	

    var objLayout = new PlotKit.Layout("pie", objPlotkitOptions);
	objLayout.addDataset("sqrt", arrHits);
    objLayout.evaluate();
    
	
	var strCanvasId = strPrefix+'Graph';
	var objCanvas = MochiKit.DOM.getElement(strCanvasId);
	var objPlotter = new PlotKit.SweetCanvasRenderer(objCanvas, objLayout, objPlotkitOptions);
    objPlotter.render();

	/**
	 * 	after all that render the legend - this is gonna be cruel
	 */
	var objLegendContainer 	= $(strPrefix+'Legend');
	var strLegendText 		= '<ul>';
	var intCounter			= 0;
		
	objArticleStats.each(function(objItem){
		strLegendText += '<li style="color:'+arrColorValues[intCounter]+';font-size:18px;"><span style="vertical-align:middle;color:#000;font-size:10px;">'+objItem.name+' ('+objItem.count+')</span></li>';
		intCounter++;
	});
	strLegendText += '</ul>';
	strLegendText += objResponse['additional'];
	objLegendContainer.innerHTML = strLegendText;

	return true;
}
/**
 * 	start the plotkitGraphWrapper
 */

