/* 
 * main js file
 */

var Polygone = new Class({

	directory: null,
	controller: null,
	action: null,
	id: null,
	uri: null,
	initialize: function(options) {
		this.uri = options.uri;
		this.directory = options.directory.replace('/', '_');
		this.controller = options.controller.replace('/', '_');
		this.action = options.action.replace('/', '_');
		this.id = options.id;
		
		this.site();

	},
	site: function() {
		// slideshow
		if($('moocase')) {
			var mooc = new mooCase('moocase' ,{
				elements: 'slideshow-items',
				togglers: 'slideshow-controls',
				timer: 8,
				speed: 10
			});
		}

		this.initScrollbars();

	},
	call: function(options) {
		var paths = ['action'];
		if(this.directory) {
			paths.push(this.directory);
		}
		paths.push(this.controller);
		
		var action = paths.join('_');

		// call the controller action
		if($type(this[action]) == 'function') {
			this[action](options);
		}
		// call the page action
		if($type(this[action+'_'+this.action]) == 'function') {
			this[action+'_'+this.action](options);
		}
			
	},
	action_shops_index: function(options) {
		this.action_shops_category(options);
	},
	action_shops_category: function(options) {
		new mooSelecta({
			selector: 'category',
			triggerClass: 'category',
			wrapperWidthAdjustment: -3,
			triggerPadding: 0,
			wrapperClass: 'option-wrapper',
			optionClass: 'select-option',
			optionClassSelected: 'option-selected',
			optionClassOver: 'option-selectedover'
		});

		
		$('category').addEvent('change', function(e) {
			new Request.HTML({
				url: options.base_url+'/'+$('category').getProperty('value'),
				update: 'search-shop-list',
				onRequest: function() {
					$('search-alpha').grab(new Element('div', {
						'id': 'loader',
						'opacity': 0.5
					}));
				},
				onSuccess: function() {
					Cufon.replace('#search-shop-list .font-hn', {
						hover: true
					});
					$('loader').set('tween', {
						onComplete: function() {
							$('loader').destroy();
						}
					}).tween('opacity', 0);

					this.initScrollbars();
				}.bind(this)
			}).post();
			return false;
		}.bind(this));
	},
	action_shops_floor: function(options) {		
		var obj = new Swiff(options.swf_url, {
			container: $('floor-plan'),
			id: 'embed-floor-plan',
			width: 990,
			height: 540,
			params: {
				menu: 'false',
				wmode: 'opaque',
				allowfullscreen: 'true',
				scale: 'noScale',
				bgcolor: '#FFFFFF'
			},
			vars: {
				fv_mainSWF: 'static/swf/plans.swf',
				fv_numPlan: options.floor_id,
				fv_numBoutique: options.shop_id
			}
			
		});
	},
	initScrollbars: function() {
		if($$('.scrollable').length > 0) {
			var container = $$('.scrollable')[0];
			container.setStyle('position', 'relative');
			var containerId = 'scrollable'+new Date().getTime();
			var parent = container.getParent();
			parent.setStyle('position', 'relative');
			container.setStyles({
				overflow: 'hidden'
			});
			container.set('id', containerId);

			var scrollBlock = new Element('div', {'class': 'scroll-block'});
			container.getChildren().each(function(el) {
				scrollBlock.grab(el);
			});

			container.grab(scrollBlock);

			if(container.getSize().y < scrollBlock.getSize().y) {
				var scrollBar = new Element('div', {
					id: 'scroll-bar'
				});
				scrollBar.setStyles({
					top: container.getPosition(parent).y,
					right: 0,
					height: container.getDimensions().height - 10
				});

				parent.grab(scrollBar.grab(new Element('div', {
					id: 'scroll-knob'
				})));

				new ScrollBar(containerId, 'scroll-bar', 'scroll-knob', {
					slider: {
						offset: -1,
						mode: 'vertical'
					}
					
				});
			}
		}
	}
});



