/**
 * ___helperFunctions___
 *  
 * @author ciskavriezenga
 */

if(IT == undefined){
	var IT = new function(){};
}


/*
 * @addLink add a link to an element
 * @param {Object} element element to add new div to 
 * @param {string} href href for new link
 * @param {String} idName string with the id name 
 * @param {String} className string with the class name
 */ 
function addLink(element, href, className, idName){
	var newLink = createLink(href, className, idName);
	element.append(newLink);	
	return newLink;
}



/*
 * @createDiv create a link element 
 * @param {string} href href for new link
 * @param {String} className string with the class name
 * @param {String} idName string with the id name 
 */ 
function createLink(href, className, idName){
	if(idName){ var newLink =  $('<a href="' + href + '" id="' + idName + '" class="' + className + '"/>');}
	else { var newLink =  $('<a href="' + href + '" class="' + className + '"/>');};
	return newLink;
}



/*
 * @addDiv add a div to an element
 * @param {Object} element element to add new div to 
 * @param {String} idName string with the id name 
 * @param {String} className string with the class name
 */ 
function addDiv(element, className, idName){
	var newDiv = createDiv(className, idName);
	element.append(newDiv);	
	return newDiv;
}



/*
 * @createDiv create a div element 
 * @param {String} className string with the class name
 * @param {String} idName string with the id name 
 */ 
function createDiv(className, idName){
	if(idName){ var newDiv =  $('<div id="' + idName + '" class="' + className + '"/>');}
	else { var newDiv =  $('<div class="' + className + '"/>');};
	return newDiv;
}



/*
 * @createSpan create a div element 
 * @param {String} className string with the class name
 * @param {String} className string with the id name
 * @param {Object} content content for the span
 */ 
/*
function createSpan(className, idName, content){
	if(idName){ var newDiv =  $('<span id="' + idName + '" class="' + className + '"/>');}
	else { var newDiv =  $('<span class="' + className + '"/>');};
	newDiv.html(content);
	return newDiv;
}
	*/



IT.connectLinksToContent = function(linkClass, contentArray){
	IT.Log.stream("connectLinksToContent: inside connectLinksToContent function");
	IT.Log.debug("connectLinksToContent: linkClass = " + linkClass);
	
	//create wrapper for content and linkClass
	var content = contentArray; 
	var getContent = function(){return content;}
	var linkC = linkClass;
	var getLinkClass = function(){return $(linkC);}
	
	IT.Log.debug("connectLinksToContent: mainlinks: " + $(linkClass).children('.mainLink'))
	
	$(linkClass).children('.mainLink').click(
			function(){
				IT.Log.debug("CLICKED: clicked on: " + $(this).attr("class"));
				getLinkClass().find(".vissibleSubs").toggleClass("vissibleSubs", false);
				IT.changeContent(this, getContent())	
			}
		)
	$(linkClass).children('.subLinks').children('.sublink').click(
			function(){
				IT.Log.debug("CLICKED: clicked on: " + $(this).attr("class"));
				//turn of visibility of visible sublinks
				
				//change content
				IT.changeContent(this, getContent())	
			}
		)
		
	
	IT.Log.debug("connectLinksToContent: end of function");
}

IT.connectSubLinks = function(linkClass){
	IT.Log.stream("connectSubLinks: inside connectLinksToContent function");
	//IT.Log.debug("connectSubLinks: linkClass = " + linkClass);
	var sublinksContainers = $(linkClass).children('.subLinks').each(function(){
		var child = $(this);
		IT.Log.debug("found child = " + child);
		subLinksNr = child.attr("class").split(" ")[2];
		var mainLink = $(linkClass).find('.mainLink' + "." + subLinksNr);
		//create wrapper for child object
		var getChild = function(){return child;}
		//connect link to child display function
		mainLink.click(
			function(){
				IT.Log.debug("CLICKED: clicked on: " + $(this).attr("class"));
				//IT.changeContent(this, getContent())
				getChild().toggleClass("vissibleSubs", true);
			}
		)
	})
	
}	



	

//	IT.Log.debug("connectLinksToContent: mainLinksWithSubs: " + mainLinksWithSubs);
	
	
	



 /*
  * @method switchToContent switch to content belonging to clicked link
  * @param {Object} element element of clicked link
  */
IT.changeContent = function(element, content){
	IT.Log.stream("IT.changeContent: inside changecontent function");
	element = $(element);
	IT.Log.debug("IT.changeContent: passed element: " + element);
	IT.Log.debug("IT.changeContent: elements class: " +  element.attr('class'));
	
	//check if element is already active
	if(!element.is(".activeLink")){
		//class name and nr of link
		var pageName = element.attr("class").split(' ')[0];
		var className = element.attr("class").split(' ')[1];
		//get contentContainer			
		var contentContainer = $("." + pageName.slice(0, 3) + "Content");
		//check if className is a mainLink 
		if(className == 'mainLink'){
			//------ mainlink -------
			//getLinkNr
			var linkNr = element.attr("class").split(' ')[2][4]; 
			//get linkParent and contentParent of link and content elements
			var linkContainer = element.parent();
			//find activeLink and activeContent
			var activeLink = linkContainer.find('.activeLink');
			//highlight selected link and de-highlight previous selected link
			activeLink.toggleClass('activeLink', false);
			element.toggleClass('activeLink', true);
			//get new content
			var newContent = content[linkNr];
			if($.isArray(newContent)){ newContent = newContent[0]};
		} else {
			// ------ subLink ------
			//get sublinks container
			var subLinksContainer = element.parent();
			//get mainLink
			var mainLinkNr = subLinksContainer.attr("class").split(' ')[2][4];
			var linkNr = element.attr("class").split(' ')[2][4];
			var linkContainer = subLinksContainer.parent();
			IT.Log.debug("############# mainlinkNr" + mainLinkNr);
			IT.Log.debug("############# linkNr" + linkNr);
			IT.Log.debug("############# linkContainer" + linkContainer.attr("class"));
			//find active link 	
			var activeLink = linkContainer.find('.activeLink');
			IT.Log.debug("activelink: " + activeLink.attr("class"));
			//highlight selected link and de-highlight previous selected link
			activeLink.toggleClass('activeLink', false);
			element.toggleClass('activeLink', true);
			element.toggleClass('activeLink', true);
			//get new content
			var newContent = content[mainLinkNr][1][linkNr];
			IT.Log.debug("_______####### newContent Class = " + $(newContent).html())
		}		
		//empty content container and place new content inside
		contentContainer.empty()
		contentContainer.append(   new EJS(	{url: '/dl/template_res/pages/' + newContent }).render({})	 );

	};			
	
};



 /*
  * @method switchToContent switch to content belonging to clicked link
  * @param {Object} element element of clicked link
  */
IT.switchToContent = function(element){
	
	IT.Log.debug("________inside switchToContent");
	
	
	//get nr of link
	element = $(element);
	
	IT.Log.debug("passed element: " + element);
	IT.Log.debug("elements class: " +  element.attr('class'));
	var className = element.attr("class").split(' ')[0];
	var linkNr = element.attr("class").split(' ')[1].slice(4);
	
	contentElement = $("." + className.slice(0, 3) + "Content.content"+ linkNr);
	IT.Log.debug("." + className.slice(0, 3) + "Content.content"+ linkNr);
	
	//check if content is already active
	if(!contentElement.is(".activeContent")){
		//get linkParent and contentParent of link and content elements
		var linkParent = element.parent(); 
		var contentParent = contentElement.parent();
		//find activeLink and activeContent
		var activeLink = linkParent.children().filter('.activeLink');
		var activeContent =  contentParent.children().filter('.activeContent');
		//highlight selected link and de-highlight previous selected link
		activeLink.toggleClass('activeLink', false);
		element.toggleClass('activeLink', true);
		//disable and enable visibilty content
		activeContent.toggleClass('activeContent', false);
		contentElement.toggleClass('activeContent', true);
	};
	
};	





IT.addIntouchButton = function(elementClass){
	var getIntouchButtonContainer = addDiv($(elementClass), "getIntouchButtonContainer", "GetInTouchContainer"); 
	var getIntouchButton = addLink(getIntouchButtonContainer, "/account/register.php", "getIntouchButton", "GetInTouch");
};









