ViewControllerRunned = false;

ViewController = function() {

	function init() {
		window.pictures = {
			car: {
				normal: $("car-picture"),
				zoom: $("car-picture-zoom")
			},
			interior: {
				normal: $("interior-picture"),
				zoom: $("int-picture-zoom")
			}
		}
	}
	
	function setSectionAnimation() {
		var fieldsets = $(document.body).getElements(".group_choices fieldset");
		
		fieldsets.each(function(field) {
			var head = field.getParent().getFirst();
			var fieldToggle = new Fx.Slide(field).addEvent("onStart", function(){
				if(!this.open) head.removeClass("close");
				else head.addClass("close");
			});
			if (!!getParent(field, {nodeName:"div", className:"choice"}).className.match(/defaultClosed/)){
				fieldToggle.hide();
			}
			
			head.addEvent("click",function(){
			//console.info("plop")
				fieldToggle.toggle();
			})
		});
		$$(".body").setStyle("min-height", "");
	}
	
	function sendTrackerZoomBtn(){
	
		var categoryTrack = "Configurator-"+financeParameters.idVehicle+Configurator.context;
		
		var stepTrack = "";
		var labelTrack = ""
		
		if($("mainInside").getElements("ul.stepHeading li.current span").length != 0){
			stepTrack = $("mainInside").getElement("ul.stepHeading li.current span").innerHTML;
		}else{
			var stepHeadLis = $("mainInside").getElements("ul.stepHeading li");
			for( var i =0; i < stepHeadLis.length; i++){
				var liStep = $(stepHeadLis[i]);
				var classLiStep = liStep.className.trim();
				liStep.className = "";
				liStep.addClass(classLiStep);
				
				if(liStep.hasClass("current")){
					stepTrack = liStep.getElement("span").innerHTML;
				}
			}
		}
		
		stepTrack = stepTrack.replace(/^\s+/g,'').replace(/\s+$/g,'');
		stepTrack = stepTrack.substring(3)+" pictures loop click";
		
		setTimeout(function(){
			sendGA(['_trackEvent',categoryTrack, stepTrack, ""+labelTrack]);
			//console.log("track send")
		},100);
	}
	
	function setZoomButtonClick() {
	
		function show(element) {
			element.setStyles({
				opacity: 0,
				position: "absolute",
				border: "1px solid black"
			}).setStyles({
				top: (window.getScrollTop() + window.getHeight() / 2) - element.getSize().size.y / 2,
				left: (window.getScrollLeft() + window.getWidth() / 2) - element.getSize().size.x/2
			}).effect("opacity").start(1);
		}
		
		function hide(element) {
			element.effect("opacity").start(0);
		}
		
		if($("views")) {
			var zoomButtons = $("views").getNext().getElements(".zoom");
			if(window.App) {
				zoomButtons.addEvent("click", function() {
					App.picker.view.layer.show();
					sendTrackerZoomBtn();
				});
			}
			else {
				zoomButtons[0].addEvent("click",function() {
					show(pictures.car.zoom);
					//console.log("zoom picture car");
				});
				zoomButtons[1].addEvent("click", function() {
					show(pictures.interior.zoom);
					//console.log("zoom picture interior");
				});
				$$(pictures.car.zoom,pictures.interior.zoom).injectInside(document.body).addEvent("click", function() {
					hide(this);
				})
			}
		}
	}
	
	function setToggler() {
		if($("car-picture-zoom") && $("int-picture-zoom")) {
			var PickerViews = document.body.getElements("#views");
			PickerViews.each(function(views) {
				views = views.getElements("li");
				views[0].addEvent("click", function() {
					viewStateChange(["car","interior"]);
					views[0].getParent().removeClass("leftHighLighted");
				});
				views[1].addEvent("click", function() {
					viewStateChange(["interior","car"]);
					views[1].getParent().addClass("leftHighLighted");
				});
				function viewStateChange(state){
					$$(pictures[state[0]].normal, pictures[state[0]].zoom).setStyle("display", "block");
					$$(pictures[state[1]].normal, pictures[state[1]].zoom).setStyle("display", "none");
				}
			})
		}
	}
	
	function addBuyHandler(){
		var _this = this;
		var btnsBuy = $$('.btnBuy');
		if (btnsBuy.length == 0) return;
		var buyBtnLayer =  new Sixtools.Layer(window,new Element('div'),	{top:100,showCloseCross:false, noHTMLContainer:true});
		buyBtnLayer.addEvent('onHideLayer' , function(){
			this.content.empty();
		});

		window.addEvent('buyHandlerIsInJsMode', function(url){
			var _d = new Date().getTime();
			new Sixtools.Remote({
				'url' : componentNamespace + "/popin.action?popin=&wantedPageUrl=" + url + "&modelkey=" + modelKey + '&noc=' + _d
			},{
				onComplete : function() {
					buyBtnLayer.content.setHTML(this.responses.url.text);
					
					if(buyBtnLayer.content.getElements('.cross').length > 0) {
						buyBtnLayer.content.getElements('.cross').removeProperty('onclick');
						buyBtnLayer.content.getElements('.cross').addEvent('click', function(e) {
							e = new Event(e);
							e.stopPropagation();
							buyBtnLayer.hide();
						});
					}
					
					buyBtnLayer.show();
					
					//ajout du close
					buyBtnLayer.closer.style.display = 'block';

				},
				onFailure : function() {
					buyBtnLayer.content.setHTML('error message');
					buyBtnLayer.show();

					//ajout du close
					buyBtnLayer.closer.style.display = 'block';
				}
			});
		})


		$$('.btnBuy').addEvent('click', function(e){new Event(e).stop();
			/* Gestions des differents popin<:comportements au clic sur le bouton acheter maintenant en mode eligible eshop */
			var _url = Setup.eshopPopinURI;
			var _d = new Date().getTime();
			new Sixtools.Remote({
				'url' : _url + '&noc=' + _d
			},{
				onComplete : function() {
					var oResp = eval("(" + this.responses.url.text + ")");
					if (eval(oResp.response.isPopinExpected.$)){
                        // Here we know which tracker message we have to send to track55
                        if (oResp.response.url.$ == CHOOSE_COLOR_POPIN_PATH){
                            sendOnClickTracker(TRACKER_LABEL_SELECT_COLOR);
                        } else if (oResp.response.url.$ == CONFIG_POPIN_PATH){
                            sendOnClickTracker(TRACKER_LABEL_CONTINUE_CONFIG);
                        } else if (oResp.response.url.$ == BUY_POPIN_PATH){
                            sendOnClickTracker(TRACKER_LABEL_FINSIH);
                        }
						window.fireEvent('buyHandlerIsInJsMode', oResp.response.url.$);
					} else {
                        if (currentStep == 3){
                            sendOnClickTracker(TRACKER_LABEL_OK_TO_BUY);
                        }
						document.location = oResp.response.url.$;
					}
				},
				onFailure : function() {
					buyBtnLayer.content.setHTML('error message');
					buyBtnLayer.show();

					//ajout du close
					buyBtnLayer.closer.style.display = 'block';
				}
			});

		}.bind(this));
	}

	function Run() {
		if(ViewControllerRunned == false){
			ViewControllerRunned = true;
			addBuyHandler();
			init();
			setSectionAnimation();
			setZoomButtonClick();
			setToggler();
		}
	}
	
	
	if(window.App != undefined) {
		App.addEvent("everythingIsLoaded", Run);
	}
	else {
		
		window.onload = Run;
	}
}();

