/**
 * brainGuide.com
 *
 * (en) 100-allarea: Include/Init of all relevant JS Files Functions
 * (de) 100-allarea: Einfügen/Initialisierung aller relevanten JS Dateien/Funktionen

 *
 * @copyright       Copyright 2008, Thomas Kalteis brainGuide AG
 * @version         1.0
 * @revision        $Revision: 10 $
 * @lastmodified    $Date: 2008-04-09
 */
 /****** 1 Global variables ******/
 /****** 2 Include needed JS files ******/
 /****** 3 Init all JS Datasets and Obersver ******/
 /****** 4 Footer init all widgets after page is loaded  ******/
 /****** 5 Page specific custom functions ******/
 
 
 
 
 /****** 1 Global variables ******/
// current expert (ep) and company page (cp)
	var ep;
	var cp;
	
	var intorductionToggle;
	var newsFade;
	var helpSP;
	var tp_fu_categories;
	
	var clickHeatSite;
	var clickHeatGroup;
	var clickHeatServer;
	
	
// var start = 1;
// var perdatapage = 5;
// var end = start + perdatapage;

 
 /****** 2 Include needed JS files ******/ 
/* (en) 100-allarea: Include needed JS Files */
/* (de) 100-allarea: Einfügen der benötigte JS Dateien */
function includeJS(skinversion) {
	
	var bgVersion = skinversion;
	
	/* (en) Imports global JS Fuctions */
	/* (de) Stellt alle globalen JS Funktionen zur Verfuegung */
	document.write('<script type="text/javascript" src="/themes/big-apple/global/js/global.js"> <\/script>');
	
	/* (en) Imports prototype JS libary */
	/* (de) Stellt Prototype JS Bibliothek zur Verfuegung */
	document.write('<script type="text/javascript" src="/themes/big-apple/login/global/js/prototype.js"> <\/script>');
	
	/* (en) Function for the Spry Collapsible Panels */
	/* (de) Fuktionen f?r die Spry zusammenklappbaren Panels */
	document.write('<script type="text/javascript" src="/themes/big-apple/global/spry/SpryCollapsiblePanel.js"> <\/script>');
	
	
	/* (en) Function for the Spry menurbar (Systemnavigation) */
	/* (de) Fuktionen f?r die Spry Men?leiste (Systemnavigation) */
	document.write('<script type="text/javascript" src="/themes/big-apple/global/spry/SpryMenuBar.js"> <\/script>');

	/* (en) Function sliding Panels */
	/* (de) Fuktionen f?r gleitende Panels */
	document.write('<script type="text/javascript" src="/themes/big-apple/global/spry/SprySlidingPanels.js"> <\/script>');
	
	/* (en) Function for the Spry accordion Panels */
	/* (de) Fuktionen f?r die Spry Akkordeon Panels */
	document.write('<script type="text/javascript" src="/themes/big-apple/global/spry/SpryAccordion.js"> <\/script>');
	
	/* (en) Function for the Spry tabbed Panels */
	/* (de) Fuktionen f?r die Spry Reiter Panels */
	document.write('<script type="text/javascript" src="/themes/big-apple/global/spry/SpryTabbedPanels.js"> <\/script>');

	/* (en) Function for the Spry Collapsible Panels */
	/* (de) Fuktionen f?r die Spry zusammenklappbaren Panels */
	document.write('<script type="text/javascript" src="/themes/big-apple/global/spry/SpryCollapsiblePanel.js"> <\/script>');

	/* (en) Function for the Spry visual effects (fading) */
	/* (de) Fuktionen f?r die Spry visuellen effekte (einblenden)  */
	document.write('<script type="text/javascript" src="/clickheat/js/clickheat.js"> <\/script>');

	
	/* (en) Function for the Spry data handling */
	/* (de) Fuktionen f?r das Spry Daten Handling */	
	document.write('<script type="text/javascript" src="/themes/big-apple/global/spry/SpryData.js"> <\/script>');
	document.write('<script type="text/javascript" src="/themes/big-apple/global/spry/SpryJSONDataSet.js"> <\/script>');
	document.write('<script type="text/javascript" src="/themes/big-apple/global/spry/xpath.js"> <\/script>');
	
			
	/* (en) Function for the Spry Paging */
	/* (de) Fuktionen f?r das Spry Paging */	
	document.write('<script type="text/javascript" src="/themes/big-apple/global/spry/SpryPagedView.js"> <\/script>');
	
	}




 /****** 3 Init all JS Datasets and Obersver ******/
/* (en) Calls the function to init all databindings */ 
/* (de) Ruft die Funktion zur Initalisierung der Datenverbindungen auf */

function initJS() {
	
	/* (en) Debug window: Setting opens the window */
	/* (de) Debug Fenster: Einstellung ?ffnet das Debug Fenster */
	//Spry.Data.Region.debug=true;

	/* (en) Top-Experts: Setting Paged-Dataset */
	/* (de) Top-Experts: Setting Paged-Datenanbindung */
	try { dsExperts = new Spry.Data.JSONDataSet("json/controller.do?path=/experts&method=personTopContentOverviewData",{useCache:false});}  catch(err) {}

	/* (en) Premium-Experts: Setting Paged-Dataset */
	/* (de) Premium-Experts: Setting Paged-Datenanbindung */
	try { dsPremiumPerson = new Spry.Data.JSONDataSet(getURLPerson(), {subPaths: "personPremiumData"});}  catch(err) {}
	
	
	/* (en) Premium-Compnays: Setting Paged-Dataset */
	/* (de) Premium-Companys: Setting Paged-Datenanbindung */
	try { dsPremiumCompany = new Spry.Data.JSONDataSet(getURLCompanies(), {subPaths: "companyPremiumData"});}  catch(err) {}


/* Check for bookmarked persons */
	try { Spry.Utils.loadURL('get', '/json/controller.do?path=/myBrains&method=getBookmarkedPersons',true,favPersonInitSuccessCallback);}  catch(err) {}

	/* (en) Observer: Adding Observer for Datasets */
	/* (de) Observer: F?ght die Oberserver zu den Datasets hinzu */
	dsExperts.addObserver(obsTopListPerson);
	dsPremiumPerson.addObserver(obsPremiumPerson);
	dsPremiumCompany.addObserver(obsPremiumCompany);
	
	

}
	



 /****** 4 Footer init all widgets after page is loaded  ******/
function initFooter(nodeLevel) {
	
/* (en) Systemnavigation: Init Layer System Navigation */
/* (de) Systemnavigation: Initialisierung der Systemnavigation  */	
	var sysnav = new Spry.Widget.MenuBar("sysnav");
	
	
/* (en) Help: init the help introduction panel */
/* (de) Hilfe: Initialisierung des Hilfe Panels */
		
	//try { newsFade = new Spry.Effect.Fade('news', {duration: 1500, from: 20, to: 100, toggle:true});}  catch(err) {}
	//try { intorductionToggle = new Spry.Effect.Slide('intorductionToggle', {duration: 1000, from: '0px', to: '195px', toggle: true});}  catch(err) {}
	
	try { sendToAFriendFade = new Spry.Effect.Fade('sendToAFriend', {toggle:true});}  catch(err) {}
	try { helpSP = new Spry.Widget.SlidingPanels("help");}  catch(err) {}
	
	
	/* Hides Static Lists */
	try { Spry.Utils.addClassName('li_premium_experts_static','hide');}  catch(err) {}
	try { Spry.Utils.addClassName('li_experts_static','hide');}  catch(err) {}
	try { Spry.Utils.addClassName('li_premium_companys_static','hide');}  catch(err) {}
	
	
/* (en) Toolbar: Spry widgets in #col1  */
/* (de) Toolbar: Initialisiert die Spry Widgets von #Col1 */
	
	try { var cp_definition = new Spry.Widget.CollapsiblePanel("cp_definition", {enableAnimation:false, contentIsOpen:true}); } catch(err) {}
	try { var cp_newest_experts = new Spry.Widget.CollapsiblePanel("cp_newest_experts", {enableAnimation:false}); } catch(err) {}
	try { var cp_premium_events = new Spry.Widget.CollapsiblePanel("cp_premium_events", {enableAnimation:false}); } catch(err) {}
	try { var cp_premium_publications = new Spry.Widget.CollapsiblePanel("cp_premium_publications", {enableAnimation:false}); } catch(err) {}
	
	
/* (en) Content: Spry widgets in #col3  */
/* (de) Content: Initialisiert die Spry Widgets von #Col3 */
	
	// activate publications panel by default on level 1 & 2
	if(nodeLevel < 3) {
		var tp_li_topcontent = new Spry.Widget.TabbedPanels("tp_li_topcontent", {defaultTab: 2});
		//var tp_li_publications = new Spry.Widget.TabbedPanels("li_publications", {defaultTab: 1});
	} else {
		var tp_li_topcontent = new Spry.Widget.TabbedPanels("tp_li_topcontent");
		//var tp_li_publications = new Spry.Widget.TabbedPanels("li_publications");
	}
	//var tp_li_companys = new Spry.Widget.TabbedPanels("li_experts");
	//var tp_li_companys = new Spry.Widget.TabbedPanels("li_companys");
	//var tp_li_events = new Spry.Widget.TabbedPanels("li_events");
	
	//var cp_li_topcontent = new Spry.Widget.CollapsiblePanel("cp_li_topcontent", {enableAnimation:false});
	
	//tp_fu_categories = new Spry.Widget.TabbedPanels("fu_categories");
	//var cp_fu_tab = new Spry.Widget.CollapsiblePanel("cp_fu_tab", {enableAnimation:false});
	
	try {var cp_competence_partner = new Spry.Widget.CollapsiblePanel("cp_competence_partner", {enableAnimation:false}); } catch(err) {}
	try {var cp_event_partner = new Spry.Widget.CollapsiblePanel("cp_event_partner", {enableAnimation:false}); } catch(err) {}
	try {var cp_media_partner = new Spry.Widget.CollapsiblePanel("cp_media_partner", {enableAnimation:false}); } catch(err) {}

	
	
/* (en) Init of the heatmap */
/* (de) Initialisierung der Heatmap */	
	//try {configHeatMap();} catch(err) { }


/* (en) Init validation of send to a friend form fields */
/* (de) Initialisierung der Validierung für Sendt2Friend Formularfelder */
	initSendToFriendValidation();

/* (en) Applys round Corners to the specified elements */
/* (de) Runded die Ecken der ausgew?hlten Container ab */
	roundAll();
	
	
	
}


 /****** 5 Page specific custom functions ******/
/* (en) Site specific Functions */ 
/* (de) Seitenspezifische Funktionen */


/* (en) Configuration of the HeatMap */ 
/* (de) Konfiguration der Heatmap */

function configHeatMap() {
	
	/* Set Local File Name */
	clickHeatSite = '';
	clickHeatGroup = 'allarea';
	clickHeatServer = '/clickheat/click.php';
	initClickHeat();
	
}


/**
  * Observer 
  */
  
// Objects that wish to observe a data set must define a callback method
// for each notification it wishes to receive. In this example, our object
// will only be called for PostLoad and DataChanged notifications.


var obsTopListPerson = new Object;
obsTopListPerson.onPreLoad = function(notifier, data) {
	
	/* Hide Content while loading */
	Spry.Utils.addClassName('RegionTopPerson','SpryHiddenRegion');
};

obsTopListPerson.onPostLoad = function(notifier, data) {
	
	/* Show Content after loading */
	Spry.Utils.removeClassName('RegionTopPerson','SpryHiddenRegion');
}; 



var obsPremiumPerson = new Object;
obsPremiumPerson.onPreLoad = function(notifier, data) {
	  
	/* Hide Content while loading */
	Spry.Utils.addClassName('RegionPremiumPerson','SpryHiddenRegion');
};

obsPremiumPerson.onPostLoad = function(notifier, data) {
	  
	/* Show Content after loading */
	Spry.Utils.removeClassName('RegionPremiumPerson','SpryHiddenRegion');
};


var obsPremiumCompany = new Object;
obsPremiumCompany.onPreLoad = function(notifier, data) {
	
	/* Hide Content while loading */
	Spry.Utils.addClassName('RegionPremiumCompany','SpryHiddenRegion');
	
};

obsPremiumCompany.onPostLoad = function(notifier, data) {
	
	/* Show Content after loading */
	Spry.Utils.removeClassName('RegionPremiumCompany','SpryHiddenRegion');
	
};

/**
 * Setting Url to JSON Dataset
 */
function getURLPerson() {
	var s = "json/controller.do?path=/experts&method=personPremiumOverviewData&nestedSetId=" + nid;
	if(ep) {
		s+="&page="+ep;
	}
	return s;
}

function getURLCompanies() {
	var s = "json/controller.do?path=/companies&method=companyPremiumOverviewData&nestedSetId=" + nid;
	if(cp) {
		s+="&page="+cp;
	}
	return s;
}

/**
 * Paging function, loads the previous page in the
 * premium experts box.
 */
function goBack() {
	// get current page
	var curPage = parseInt(dsPremiumPerson.getData()[0]["personPremiumPage"]);
	if(curPage > 1) {
		ep = curPage - 1;
	}
	dsPremiumPerson.setURL(getURLPerson(), {subPaths: "personPremiumData"});
	dsPremiumPerson.loadData();
}

/**
 * Paging function, loads the next page in the
 * premium experts box.
 */
function goForward() {
	// get current page
	var curPage = parseInt(dsPremiumPerson.getData()[0]["personPremiumPage"]);
	// return if last page reached
	var totalPages = parseInt(dsPremiumPerson.getData()[0]["personPremiumPages"]);
	if(curPage == totalPages) {
		return;
	}
	// load data for requested page
	ep = curPage + 1;
	dsPremiumPerson.setURL(getURLPerson(), {subPaths: "personPremiumData"});
	dsPremiumPerson.loadData();
}

/**
 * Paging function, loads the previous page in the
 * premium companies box.
 */
function prevPageCompanies() {
	// get current page
	var curPage = parseInt(dsPremiumCompany.getData()[0]["companyPremiumPage"]);
	// decrement if not first page
	if(curPage > 1) {
		cp = curPage - 1;
	}
	dsPremiumCompany.setURL(getURLCompanies(), {subPaths: "companyPremiumData"});
	dsPremiumCompany.loadData();
}

/**
 * Paging function, loads the next page in the
 * premium experts box.
 */
function nextPageCompanies() {
	// get current page
	var curPage = parseInt(dsPremiumCompany.getData()[0]["companyPremiumPage"]);
	// return if last page reached
	var totalPages = parseInt(dsPremiumCompany.getData()[0]["companyPremiumPages"]);
	if(curPage == totalPages) {
		return;
	}
	// load data for requested page
	cp = curPage + 1;
	dsPremiumCompany.setURL(getURLCompanies(), {subPaths: "companyPremiumData"});
	dsPremiumCompany.loadData();
}

/**
 * Loads the today's top experts.
 */
function loadTopExperts() {
	dsExperts.setURL("json/controller.do?path=/experts&method=personTopContentOverviewData");
	dsExperts.loadData();
}

/**
 * Loads the today's new experts.
 */
function loadNewExperts() {
	dsExperts.setURL("json/controller.do?path=/experts&method=personNewContentOverviewData");
	dsExperts.loadData();
}

/**
 * Function to update the selected tab panel using a cookie.
 */
/*function storeNav(panel) {
	updateCookie("tp_fu_tab", panel);
}*/