﻿wheel_locker = {
	is_block: false,
	init: function(j_objects) {
		var that = this;
		function addHandler(object, event, handler, useCapture) {
			if (object.addEventListener)
				object.addEventListener(event, handler, useCapture ? useCapture : false);
			else if (object.attachEvent)
				object.attachEvent('on' + event, handler);
		}
		function wheel(event) {
			var delta;
			event = event || window.event;
			if (event.wheelDelta) {
				delta = event.wheelDelta / 120;
				if (window.opera) delta = -delta;
			} else if (event.detail) {
				delta = -event.detail / 3;
			}
			if (that.is_block) {
				if (event.preventDefault)  event.preventDefault();
				event.returnValue = false;
			}
			return delta;
		} 
		addHandler(window, 'DOMMouseScroll', wheel);
		addHandler(window, 'mousewheel', wheel);
		addHandler(document, 'mousewheel', wheel);
		
		$(j_objects).hover(
			function() { that.is_block = true },
			function() {  that.is_block = false }
		);
	}
}

Izometry = function(aCoords) {
	this.aCoords = aCoords;

	this.init_DOM();
}

Izometry.prototype = {
	init_DOM: function() {
		this.jIzometry = $('#izometry');
		this.jFloor = this.jIzometry.find('img.floor_canvas');
		this.jMap = this.jIzometry.find('map');
		this.jRoof = this.jIzometry.find('.roof');

		this.init();
	},

	init: function() {
		this.address();
		this.get_areas();
	},

	address: function() {
		var	jNumber = $('#izometry .address .number'),
			aParts = jNumber.text().match("[0-9]+\/[0-9]", "g")[0].split("\/"),
			sResult = '';

		for(var i=0; i<aParts.length; i++) {
			if(i !== aParts.length-1) {
				//sResult += aParts[i] + '&#8202;/&#8202;';
				sResult += aParts[i] + '<span>/</span>';
			}
			else {
				sResult += aParts[i];
			}
		}

		jNumber.html(sResult);
    },

	get_areas: function() {
		var oThis = this;

		this.jAreas = this.jMap.find('area');

		this.jAreas.each(
			function(i) {
				oThis.add_controls($(this), i);
			}
		);
	},

	add_controls: function(jArea, iNumber) {
		var jImg = this.jFloor.clone().removeClass('floor png').addClass('izometry');
		var jLayer = $(document.createElement('div'));

		var is_current = jArea.hasClass('current');

		this.jFloor.after(jLayer);

		jLayer.append(jImg);

		if(is_current) {
			jLayer.addClass('active');
			if(jArea.hasClass('under_roof')) {
				this.jRoof.css({opacity: 0.5});
				this.bRoof_opacity = true;
			}
		}
		else {
			jLayer.addClass('hover not_display');
		}

		this.add_shapes(jImg, iNumber, is_current);

		this.attache_events(jArea, jLayer, iNumber, is_current);
	},

	add_shapes: function(jImg, iNumber, is_current) {
		var iCount = iNumber;

		if(!is_current) {
			iCount += parseInt(this.jAreas.size());
		};

		var shape = new ictinus.Shape(this.aCoords[iCount]);

		shape.decorate(jImg[0]);
	},

	attache_events: function(jArea, jLayer, iNumber, is_current) {
		var oThis = this;

		if(is_current) {
			jArea.hover(
	            function() {return false;},
	            function() {return false;}
			).click(
	            function() {return false;},
	            function() {return false;}
			);
		}
		else {
			jArea.hover(
	            function() {
					jLayer.removeClass('not_display');
					if($(this).hasClass('under_roof') && !oThis.bRoof_opacity) {
						oThis.jRoof.css({opacity: 0.5});
					}
	            },
	            function() {
	            	if(!oThis.bRoof_opacity) {
		            	oThis.jRoof.removeAttr('style');
	            	}
					jLayer.addClass('not_display');
	            }
			);
		}
	}
}


//-------------- AJAX -------------//
function Harvester(){
	var ajax_data = '';
	
	$('#reserve input').each(function(i){
		if($(this).attr('name')) {
			ajax_data += $(this).attr('name') + '=' + $(this).val() + '&';
		}
	});
	
	return ajax_data;
}

$(function() {
	var reserve = $('#reserve');
	var form = reserve.find('form');
	var formContainer = reserve.find('div.form');

	form.submit(function(){
		$.ajax({
		   type: "POST",
		   data: Harvester(),
		   url: $(this).attr('action'),
		   success: function(msg){
		   	var thanks = '<p class="thanks">' + $('p.thanks',msg).text() + '</p>';
		   	var gone = '<p>' + $('p.gone',msg).text() + '</p>';
		   	var yourId = '<p>' + $('p.your_id',msg).text() + '</p>';
		   	var uid = $(msg).find('form input').attr('value');

		   	// .split('&nbsp;')[1]

		   	formContainer.append('<div class="info">' + thanks + gone + yourId +'</div>');
		   	formContainer.find("input[name*=uid]").attr('value',uid);
		   	formContainer.find('div.intro').css('visibility','hidden');
		   	//formContainer.find('img.form_bg').addClass('hidden');
		   	formContainer.find('img.form_bg_thanks').removeClass('hidden');
		   	form.css('visibility','hidden');
		   	reserve.find('ins.gal_close').click(function(){
		   			
			reserve.addClass('keep_back');
			formContainer.find('div.info').remove();
			formContainer.find('div.intro').css('visibility','visible');
			//formContainer.find('input').not('.button').not("input[type*=hidden]").attr('value','');
			
			//formContainer.find('img.form_bg').removeClass('hidden');
			formContainer.find('img.form_bg_thanks').addClass('hidden');
			form.css('visibility','visible');
				   	
		   	});
		   }
		 });
		 
		 return false;
	});
	
	
	var imagesArr = new Array(
		"secret_1",
		"secret_2",
		"secret_3"
	);
	var bShow = Math.random() * imagesArr.length;
	if(bShow >= 1.9){
		var imgNum = Math.floor(Math.random() * imagesArr.length);
		var randomImg = imagesArr[imgNum];
		$("#content i[class*="+randomImg+"]").removeClass('hidden');
	}
	wheel_locker.init(".flash_gal");
});
