/**
 * JavaScript Image and text cycle
 * Pull content from CMS and cycle image together with texts
 * @author Daniel Djurfelter (daniel.djurfelter at atrox.se)
 * @version 1.0
 */

var jsus = {
	accordion : {
		init : function(objOpts){
			var fragment = document.createDocumentFragment();
			var eltContainer = null;
			var eltContent = null;
			
			var acc = $(objOpts.container);
			
			$.each(acc.children(),function(i,e){
				if(e.tagName.toLowerCase() == "h3") {
					if(eltContainer != null){
						$(objOpts.container).append(eltContainer);	
					}
			
					// Create new set
					eltContainer = $("<div/>",{className:"set"});
			
					// Append headline
					$(eltContainer).append(e);
			
					// Create new content
					eltContent = $("<div/>",{className:"content"}).appendTo(eltContainer);
				} else {
					$(eltContent).append(e);
				}
			});
			
			acc.append(eltContainer);
			
			$(acc).addClass("accordion").children(".set").children(".content").hide();
			
			$(objOpts.container + " > div > h3").click(function(){
				if(!$(this).hasClass("open"))
					$(objOpts.container + " div .open").removeClass("open").siblings(".content").slideUp(300);
			
				$(this).addClass("open").siblings(".content").slideToggle(300);
			});	
		}
	},
	
	hAccordion : {
		isMoving : false,
		
		width : {
			closed : 0,
			opened : 0
		},
		
		init : function(objOpts){
			var eltAcc = $("<div/>",{className:"accordion"});
			var arrAnchors = [];
			jsus.hAccordion.width = objOpts.width;
			
			$.each($(objOpts.parent).children("img"),function(i,e){
				var objSet = {className:"set"};
				
				if(i > 0)
					objSet = {className:"set", style:"width:" + objOpts.width.closed + "px"};
				
				var elt = $("<div/>",objSet);
				var eltAnchor = $("<a/>",{className:"slide"+i, href:"#"}).appendTo(elt);
				
				arrAnchors.push(eltAnchor[0]);
				
				$(e).appendTo(elt);
				$(elt).appendTo(eltAcc);
			});
			
			$(objOpts.parent).append(eltAcc);
			
			$($(arrAnchors)[0]).addClass("active");
			
			$(arrAnchors).click(function(){
				if(!$(this).hasClass("active") && !jsus.hAccordion.isMoving){
					jsus.hAccordion.isMoving = true;
					$(".set a.active").removeClass("active").parent(".set").animate({width: jsus.hAccordion.width.closed + "px"});
					$(this).addClass("active").parent(".set").animate({width: jsus.hAccordion.width.opened + "px"},function(){
						jsus.hAccordion.isMoving = false;
					});
				}
			});
		}	
	},
	
	slider : {
		// Cacheable cycle object 
		objCycle : null,
		
		/**
		 * Circle images along with texts of a project
		 * @method cycle.init()
		 * @param objOpts (object), the properties object
		 */
		init : function(objOpts){
			
			// Assign Cacheable object
			jsus.slider.objCycle = {
				texts : $(objOpts.texts),
				currIndex : 0,
				clicked : false
			};
			
			// Init the image cycle
			jQuery(objOpts.images).cycle({
				fx: 'fade',
				timeout: 4000,
				pager: objOpts.navigation,
				before : function(){
					if(!jsus.slider.objCycle.clicked && jsus.slider.objCycle.texts.length > 0){
						if(jsus.slider.objCycle.currIndex > jsus.slider.objCycle.texts.length-1){
							jsus.slider.objCycle.currIndex = 0;
						}
						
						jsus.slider.objCycle.texts.hide();
						$(jsus.slider.objCycle.texts[jsus.slider.objCycle.currIndex]).show();
						jsus.slider.objCycle.currIndex++;
					};
				}
			});
			
			// Make navigation trigger text shifts
			$(objOpts.navigation + " > a").click(function(){
				jsus.slider.objCycle.clicked = true;
				
				var arrNavs = $(this).parent().children();
				
				jsus.slider.objCycle.texts.hide();
				
				var index = 0;
				
				for(var i = 0; i < arrNavs.length; i++){
					if($(arrNavs[i]).hasClass("activeSlide")){
						$(jsus.slider.objCycle.texts[i]).show();
						jsus.slider.objCycle.currIndex = i+1;
						break;
					}
				}
				
				jsus.slider.objCycle.clicked = false;
			});
		}	
	}
};
