dojo.require("dojo.fx");
dojo.require("dojox.timing._base");

dojo.declare("BVVHomepage", null, {
	
	menuItemPrefix:"fair_menu_item_",
	contentItemPrefix:"fair_content_",
	contentPrefix:"content_",
	
	menuCurrent:"",
	menuHeld:"",
	
	menuIdentifiers:{},
	
	wipeOutMenu1:null,
	wipeInMenu1:null,
	wipeOutMenu2:null,
	wipeInMenu2:null,
  
	animationMenu1:null,
	animationMenu2:null,
	
	openedMenu:"",
	openedFair:"",
	selectedFairMenu:"",
	selectedFairContent:"",
	
	selindex:0,
	
	loopTimer:null,
	loopSec:20,
	loopSecAfterClick:60,
	loopDirection:1,
	
	imagesArr:null,
	AJAX_URL:"",
	constructor: function(menuCurrent, menuHeld, dataIdentifiersCurrent,dataIdentifiersHeld,images) {
		
		
		dojo.query(".item","homepageSiderContent").style('opacity', '0');
		dojo.query(".item","homepageSiderContent").style('display', 'none');
		this.imagesArr = images;
		//this.AJAX_URL = ajaxUrl;
		this.menuIdentifiers[menuCurrent] = dataIdentifiersCurrent; 
		this.menuIdentifiers[menuHeld] = dataIdentifiersHeld; 
		//this.menuCurrentData = dataIdentifiersCurrent;
		//this.menuHeldData = ;
		
	
		this.menuCurrent  = menuCurrent;
		this.menuHeld  = menuHeld;

		this.wipeOutMenu1 = dojo.fx.wipeOut({node: 'menu_'+menuCurrent,duration: 500});
		this.wipeInMenu1 = dojo.fx.wipeIn({node: 'menu_'+menuCurrent,duration: 500});
		this.wipeOutMenu2 = dojo.fx.wipeOut({node: 'menu_'+menuHeld,duration: 500});
		this.wipeInMenu2 = dojo.fx.wipeIn({node: 'menu_'+menuHeld,duration: 500});
		
		this.openMenu(menuCurrent);
	},
	
	
	
	openMenu: function(menuID){
		
		if(menuID == this.menuCurrent){
			this.animationMenu1 = this.wipeInMenu1; 
			this.animationMenu2 = this.wipeOutMenu2;
			dojo.query("#menu_button_"+menuID).addClass("selected");
			dojo.query("#menu_button_held").removeClass("selected");
		}
		else{
			this.animationMenu1 = this.wipeOutMenu1; 
			this.animationMenu2 = this.wipeInMenu2;
			dojo.query("#menu_button_"+menuID).addClass("selected");
			dojo.query("#menu_button_current").removeClass("selected");
			
			
		}
		
		this.openedMenu = menuID;
		
		
		this.animationMenu1.play();
		this.animationMenu2.play();
		
		this.setVisibleContent();
		this.selectFirstFair();
		this.timing();
	},
	
	selectFair: function(identifier){
		if(this.selectedFairMenu){
			dojo.query("#"+this.selectedFairMenu).removeClass("selected");
		}
		//console.log(this.selectedFairMenu);
		
		this.selectedFairMenu = this.menuItemPrefix+this.openedMenu+'_'+identifier;
		
		this.openedFair = identifier;
		dojo.query("#"+this.selectedFairMenu).addClass("selected");
		//this.setVisibleItem();
		
		this.setImageFair(identifier);
		this.setSelectedFair(identifier);
	},
	
	setImageFair:function(identifier){
		if(this.imagesArr && this.imagesArr[identifier] && this.imagesArr[identifier]["img"]){
			this.setImage(identifier,this.imagesArr[identifier]["img"]);
		}
		else{
			console.log(identifier);
			//this.loadImage();
		}
	},
//	loadImage:function(identifier){
//		//ajax
//		dojo.xhrGet({
//			url: this.AJAX_URL,
//			content: {
//				identifier: identifier
//			},
//			handleAs: "text",	
//			timeout: 60000,
//			sync: false,
//			load: function(rsp, ioargs) {
//				console.log("load");
//				
//				//calendar_content_node.innerHTML = rsp;
//				return rsp;
//			},
//	
//			error: function(error, ioargs){				
//				console.debug("ERROR", error, ioargs);
//			}
//		});
//	},
//	
	setImage:function(identifier,url){
		if(dojo.byId(this.contentItemPrefix+this.openedMenu+"_"+identifier+"_img")){
			dojo.byId(this.contentItemPrefix+this.openedMenu+"_"+identifier+"_img").src = url; 
		}
	},
	
	setVisibleContent:function(){
		dojo.query(".content","homepageSiderContent").style('display', 'none');
		dojo.query("#"+this.contentPrefix+this.openedMenu,"homepageSiderContent").style('display', 'block');
	},
	
	setVisibleItem:function(){
		dojo.query(".item","homepageSiderContent").style('display', 'none');
		dojo.query("#"+this.contentItemPrefix+this.openedMenu+"_"+this.openedFair,"homepageSiderContent").style('display', 'block');
		
	},
	
	
	setSelectedFair:function(newIdent){
		if(this.selectedFairContent && this.selectedFairContent !=""){
			var fadeOut = dojo.fadeOut({node: this.selectedFairContent,duration: 1000});
			fadeOut.play();
			dojo.query("#"+this.selectedFairContent,"homepageSiderContent").style('display', 'none');
		}
		
		if(newIdent && newIdent!=""){
			dojo.query("#"+this.contentItemPrefix+this.openedMenu+"_"+newIdent,"homepageSiderContent").style('display', 'block');
			var fadeIn = dojo.fadeIn({node: this.contentItemPrefix+this.openedMenu+"_"+newIdent,duration: 1000});
			fadeIn.play();
			this.selectedFairContent = this.contentItemPrefix+this.openedMenu+"_"+newIdent;
		}  
		
		for(var i in this.menuIdentifiers[this.openedMenu]){
			if(this.menuIdentifiers[this.openedMenu][i] == newIdent){
				this.selindex = parseInt(i) ;
			}
		}
		
	},
	
	selectFirstFair:function(){
		this.selindex = 0;
		if(this.menuIdentifiers[this.openedMenu] && this.menuIdentifiers[this.openedMenu][this.selindex]){
			this.selectFair(this.menuIdentifiers[this.openedMenu][this.selindex]);
		}		
	},
	
	
	next:function(){
		
		if(this.menuIdentifiers[this.openedMenu].length > this.selindex+1){
			this.selindex++;
		}
		else if(this.menuIdentifiers[this.openedMenu].length == this.selindex+1){
			this.selindex = 0;
		}
		
		this.selectFair(this.menuIdentifiers[this.openedMenu][this.selindex]);
	},
	
	
	back:function(){
		if(this.selindex > 0){
			this.selindex--;
		}
		else if(this.selindex == 0){
			this.selindex = this.menuIdentifiers[this.openedMenu].length -1;
		}
		
		this.selectFair(this.menuIdentifiers[this.openedMenu][this.selindex]);
	},
	
	
	timing:function(){
		if(this.menuIdentifiers[this.openedMenu].length > 1){
			var _this = this;

			this.loopTimer = new dojox.timing.Timer(this.loopSec * 1000);
			this.loopTimer.setInterval(this.loopSec * 1000);
			this.loopTimer.onTick = function(){
				_this.timingLoop();
			};
			this.loopTimer.start();
		}
		else{
			this.loopTimer = null;
		}
	},
	
	
	timingLoop:function(){
		if(this.loopTimer){
			if(this.loopDirection == 1){
				this.next();
			}
			else{
				this.back();
			}
			this.loopTimer.setInterval(this.loopSec * 1000);
		}
	},
	
	
	pauseLoop:function(){
		if(this.loopTimer){
			this.loopTimer.setInterval(this.loopSecAfterClick * 1000);
		}
	},
	
	clickMenuItem:function(identifier){
		this.pauseLoop();
		this.selectFair(identifier);
	},
	
	clickNext:function (){
		this.loopDirection = 1;
		this.pauseLoop();
		this.next();
	},
	
	clickBack:function(){
		this.loopDirection = -1;
		this.pauseLoop();
		this.back();
	}
	
	
	
	
});

