var page_class = new Class({
	Implements: [Options],
	/* standart egenskap */
	options: {
		under_menu						: null	
	},  	
	fb_out								: false,
	yt_out								: false,
	wt_out 								: false,
	wc_out								: false,
	visible_box_id						: '',	
	flash_obj							: null,	
	
	/* -- constructor -- */
	initialize		: function($options){
		this.setOptions($options);		
		window.addEvent('load', this.page_loaded.bind(this));
	},
	page_loaded		: function(){
		
	},
	flash_loaded	: function(json){				
		var json_obj =  JSON.decode(json);						
		this.flash_obj = new page_flash_class({'xml_info' : json_obj, 'flash_id': flash_id});								
		if (Browser.Engine.trident){
			this.flash_obj.flash_mover();
		} else {
			flash_ref['onFlashMover'] = this.flash_obj.flash_mover.bind(this.flash_obj);
			flash_ref['onFlashMout'] =  this.flash_obj.flash_mout.bind(this.flash_obj);
		}
		flash_ref['onPicChange'] =  this.flash_obj.switch_pic.bind(this.flash_obj);
		
	},	
	fb_mouse_over   : function($fb_frame_id){
		if (this.fb_out == true) return;
		this.hide_visible_box();
		this.fb_out = true;
		var fb_frame = $($fb_frame_id);		
		fb_frame.setStyles({'display': 'block', 'width': '225px', 'height': '1px'});		
		fb_frame.set('tween', {onComplete: function(){
			this.setProperty('allowTransparency', "true");
		}.bind(fb_frame)});		
		fb_frame.tween('height', '400px');				
		this.visible_box_id = $fb_frame_id;
	},
	wt_mouse_over	: function($wh_div_id){
		if (this.wc_out == true) return;
		this.hide_visible_box();
		this.wc_out = true;
		var wc_div = $($wh_div_id);		
		wc_div.setStyles({'display': 'block', 'width': '225px', 'height': '1px'});		
		wc_div.tween('height', '110px');		
		this.visible_box_id = $wh_div_id;
	},
	wc_mouse_over	: function($webcam_img_id){
		if (this.wt_out == true) return;
		this.hide_visible_box();
		this.wt_out = true;
		var wt_div = $($webcam_img_id);		
		wt_div.setStyles({'display': 'block', 'width': '225px', 'visibility':'hidden'});		
		var wt_div_size = wt_div.getElement('img').getSize();
		wt_div.setStyles({'display': 'block', 'width': '225px', 'height': '1px', 'visibility':'visible', 'overflow': 'hidden'});		
		wt_div.tween('height', (parseInt(wt_div_size.y) + 4)+'px');		
		this.visible_box_id = $webcam_img_id;
	},
	yt_mouse_over	: function($yt_div_id){
		if (this.yt_out == true) return;
		this.hide_visible_box();
		this.yt_out = true;
		var yt_div = $($yt_div_id);		
		yt_div.setStyles({'display': 'block', 'width': '225px', 'height': '1px'});		
		yt_div.tween('height', '300px');		
		this.visible_box_id = $yt_div_id;
	},
	hide_visible_box: function(){
		//console.log(this.visible_box_id);
		if (this.visible_box_id != ''){
			var tmp_var = $(this.visible_box_id);
			this.fb_out	= false;
			this.yt_out	= false;
			this.wt_out = false;
			this.wc_out	= false;
			tmp_var.set('tween', {duration: 100});
			tmp_var.setStyle('overflow', 'hidden');
			tmp_var.tween('height', '0px');
		}
		//this.visible_box_id = '';
	}
});



var page_flash_class = new Class({
	Implements: [Options],
	/* standart egenskap */	
	options: {
		
		
	},  	
		
	flash_DOM							: null,
	flash_nx_DOM						: null,
	flash_pr_DOM						: null,	
	min_box_size						: {x:0, y:0},
	
			
	text_bg_DOM 						: null,
	text_lines_array 					: new Array(),
	current_pic							: 0, 
	max_text_lines 						: 10,
	total_pic 							: 0,
	current_pic 						: 0,
	locked_pic 							: { '0' : true},			
		
	
	/* -- constructor -- */
	initialize		: function($options){
		this.setOptions($options);				
		this.total_pic = parseInt(this.options.xml_info.totalImg);				
		if (this.total_pic > 0){			
			this.flash_pr_DOM = $('pr_image_div').getElement('div');			
			this.flash_pr_DOM.addEvent('click', this.flash_goto_pr_image.bind(this));						
			this.flash_nx_DOM = $('nx_image_div').getElement('div');
			if (Browser.Engine.trident == false){
				this.flash_pr_DOM.setStyles({'display': 'block', 'opacity' : '0.4'});
				this.flash_nx_DOM.setStyles({'display': 'block', 'opacity' : '0.4'});			
				$('pr_image_div').setStyles({'display': 'block', 'opacity' : '0.4'});
				$('nx_image_div').setStyles({'display': 'block', 'opacity' : '0.4'});
			} else {
				this.flash_pr_DOM.setStyles({'display': 'block'});
				this.flash_nx_DOM.setStyles({'display': 'block'});			
				$('pr_image_div').setStyles({'display': 'block'});
				$('nx_image_div').setStyles({'display': 'block'});
			}
			this.flash_nx_DOM.addEvent('click', this.flash_goto_next_image.bind(this));
		}							
		if (EDIT_CORE.page_loaded == 1){			
			this.init_flash();
		} else window.addEvent('load', this.init_flash.bind(this));									
	},	
	
	init_flash			: function(){		
		//alert(this.options.flash_id);		
		this.flash_DOM = $(this.options.flash_id);						
		this.flash_DOM.set_easing('back.easeOut');
		this.text_bg_DOM = $('img_text_wr');	
		//$('fp_img_text_wr').set('html', '');
		this.min_box_size = this.text_bg_DOM.getSize();//$$('.hard_field')[0].getSize();				
		
		this.make_line(3, 'img_text_text');	
		for (var $i = 0; $i < this.max_text_lines; $i ++){
			this.make_line(1, 'img_text_text');
		}									
		this.lay_down_text(this.flash_DOM.get_tag_value(this.current_pic, 'img_text'), this.flash_DOM.get_tag_value(this.current_pic, 'img_link'));					
		$('img_text_box').setStyle.delay(500, $('img_text_box'), ['visibility', 'visible']);
	},
	
	flash_goto_pr_image	: function(){						
		if (this.flash_DOM.pr_image('h_blinds_left')) {		
			if (this.current_pic - 1 > 0) this.switch_pic(this.current_pic - 1);	
			else this.switch_pic(0);
		}
	},
	flash_goto_next_image	: function(){		
		if (this.flash_DOM.next_image('h_blinds_right')) {			
			if (this.current_pic + 1 < this.total_pic) this.switch_pic(this.current_pic + 1);	
			else this.switch_pic(0);
		}
	},
	flash_mover	: function(){				
		this.flash_pr_DOM.tween('opacity', '1');
		this.flash_nx_DOM.tween('opacity', '1');
	},
	flash_mout	: function(){		
		this.flash_pr_DOM.tween('opacity', '0.4');
		this.flash_nx_DOM.tween('opacity', '0.4');
	},
	
	switch_pic : function (ind){	
	//if (current_pic == 1) return;
		if (this.locked_pic[ind] == true) return;
		this.locked_pic[this.current_pic] = false;				
		this.locked_pic[ind] = true;		
		this.current_pic = ind;
		this.lay_down_text(this.flash_DOM.get_tag_value(ind, 'img_text'), this.flash_DOM.get_tag_value(ind, 'img_link'));
	},
	goto_pic 	: function (ind){	
		if (this.locked_pic[ind] == true) return;
		this.flash_DOM.stop_auto_play();
		this.flash_DOM.set_easing('Quint.easeOut');
		var _transition_name = 'h_blinds_left';
		if (ind > this.current_pic) 	_transition_name = 'h_blinds_right';	
		if (this.flash_DOM.goto_image(ind, _transition_name)) this.switch_pic(ind);	
	},	
	make_line	: function ($padding, $class_name){
		var text_cont = $('img_text_wr');
		var padding_div = new Element('div', {'html' : '&nbsp;', styles:{'height': '0px', 'display':'none', 'overflow':'hidden', 'padding-top': $padding+'px'}});
		var text_div = new Element('div', {'class': $class_name});
		var text_div_div = new Element('div');
		text_div_div.inject(text_div);
		padding_div.inject(text_cont);
		text_div.inject(text_cont);	
		this.text_lines_array.push({'padding-div': padding_div, 'main':text_div, 'sub':text_div_div});		
	},
	lay_down_text	: function (text, link){			
		var clean_text = text.replace('<p>', '').replace('</p>', '');
		var lines = clean_text.split('<br />');	
		if (lines.length == 1) lines = clean_text.split('<br/>');	
		if (lines.length == 1) lines = clean_text.split('<br>');	
		if (lines.length == 1) lines = clean_text.split('\n');
		if (lines.length > 1 || clean_text != '') {				
			if (this.max_text_lines < lines.length){			
				for (var $i = lines.length; $i < lines.length; $i ++){
					make_line(1, 'img_text_text');
				}
				this.max_text_lines = lines.length;
			}
			this.text_bg_DOM.setStyles({'display': 'block'});						
			//this.text_bg_DOM.setStyles({'height' : parseInt(this.min_box_size.y) + 'px', 'width': parseInt(this.min_box_size.x)+0+'px'});			
		} else {
			//this.text_bg_DOM.setStyle('display','none');					
			 this.text_bg_DOM.morph({'height' : parseInt(this.min_box_size.y) + 'px', 'width': parseInt(this.min_box_size.x)+0+'px'});			
		}
		var time_offset = 0;		
		for (var $i = 0; $i < lines.length || $i < this.text_lines_array.length; $i ++){		
			if ($i < lines.length && lines[$i] != ''){
				this.text_lines_array[$i].main.setStyle('display', 'block');
				this.text_lines_array[$i]['padding-div'].setStyle('display', 'block');
				if ($i == 0){							
					this.animate_text(lines[$i], this.text_lines_array[$i], $i);
				} else {
					this.text_lines_array[$i].main.setStyles({'width': '1px', 'display':'none'});
					time_offset += lines[$i].length * 25;
					this.animate_text.delay(time_offset, this, [lines[$i], this.text_lines_array[$i], $i]);						
				}
				
			} else {
				this.text_lines_array[$i].main.setStyle('display', 'none');
				this.text_lines_array[$i]['padding-div'].setStyle('display', 'none');
			}	
		}		
	},
	animate_text	: function (text, text_DOM, $i, link){	
		text_DOM.sub.set('html', text);		
		text_DOM.sub.setStyles({'opacity': 0, 'display':'block', 'width':'auto', 'visibility':'hidden'});	
		text_DOM.main.setStyles({'width': '5000px', 'display':'block', 'opacity': 0, 'overflow' : 'hidden', 'position': 'absolute'});
		var main_text_size = text_DOM.sub.getSize();				
		text_DOM.sub.setStyles({'opacity': 1, 'display':'inline', 'width':parseInt(main_text_size.x)+'px', 'visibility':'visible'});		
		text_DOM.main.setStyles({'width': '1px', 'display':'block', 'opacity': 1, 'position':'static'});	
		var text_bg_DOM_size = this.text_bg_DOM.getSize();					
		var new_height = parseInt(text_bg_DOM_size.y) + parseInt(main_text_size.y);
		if ($i == 0) new_height = parseInt(this.min_box_size.y) + parseInt(main_text_size.y);
		this.text_bg_DOM.morph({'height' : new_height+'px', 'width':  (parseInt(this.min_box_size.x) > parseInt(main_text_size.x)?parseInt(this.min_box_size.x):parseInt(main_text_size.x))+'px'});			
		text_DOM.main.tween.delay(240, text_DOM.main, ['width', (parseInt(main_text_size.x)) + 'px']);	
	},	
	fp_menu_text_menu_mover	:function ($elem, ind){
		if (this.locked_pic[ind] == true) return;
		//$elem.morph({'background-position': '0px 0px', 'color' : '#ec7311'});
		//$elem.getElement('span.num').tween( 'color' , '#ec7311');
		//$elem.tween('background-position', '0px 0px');
	},
	fp_menu_text_menu_mout	: function ($elem, ind){
		if (this.locked_pic[ind] == true) return;
		//$elem.morph({'background-position': '0px 40px', 'color' : '#6d6d6d'});
		//$elem.getElement('span.num').tween( 'color' , '#3d3e3e');
		//$elem.tween('background-position', '0px 40px');
	},
	flash_xml_parsed_handler	:function (info_json){
		var param_obj = JSON.decode(info_json);	
		total_pic = param_obj.totalImg
		if (doc_loaded == false) lay_text = true;
		else lay_down_text(flash_DOM.get_tag_value(current_pic, 'img_text'), flash_DOM.get_tag_value(current_pic, 'img_link'));
	}	
});

var page_JS_class = new Class({
	Extends		: page_flash_class,
	Implements	: [Options],	
	/* standart egenskap */	
	options: {
		
		
	},  		
	min_box_size						: {x:0, y:0},
	
			
	text_bg_DOM 						: null,
	text_box_DOM						: null, 
	text_lines_array 					: new Array(),
	current_pic							: 0, 
	max_text_lines 						: 10,
	total_pic 							: 0,
	current_pic 						: 0,
	locked_pic 							: { '0' : true},			
	json_info							: null,
		
	
	/* -- constructor -- */
	initialize		: function($options){
		this.setOptions($options);				
		//this.total_pic = parseInt(this.options.xml_info.totalImg);				
		/*if (this.total_pic > 0){			
			
			//this.flash_nx_DOM.addEvent('click', this.flash_goto_next_image.bind(this));
		}							*/
		/*if (EDIT_CORE.page_loaded == 1){			
			this.init_flash();
		} else window.addEvent('load', this.init_flash.bind(this));									*/
	},	
	
	init_gallery		: function(json_info){
		this.json_info = json_info;		
		//this.text_bg_DOM = $('img_text_wr');						
		this.text_bg_DOM.getElement('.hard_field').set('html', json_info.name);												
		//this.lay_down_text(this.json_info.images[0].img_text.CTADA);					
		this.text_box_DOM.setStyle.delay(100, this.text_box_DOM, ['visibility', 'visible']);
		this.check_min_size_f = this.check_min_size;
	},
		
	check_min_size	: function(){
		//this.text_bg_DOM.erase('style');		
		this.min_box_size = this.text_bg_DOM.getSize();
		this.text_bg_DOM.setStyles({
			'width' 	: this.min_box_size.x + 'px',
			'height' 	: this.min_box_size.y + 'px'
		});
		//console.log(this.min_box_size);		
		this.make_line(3, 'img_text_text');	
		for (var $i = 0; $i < this.max_text_lines; $i ++){
			this.make_line(1, 'img_text_text');
		}
		/*this.text_box_DOM.setStyles({
			'height'	: 'auto',
			'width'		: 'auto'
		}); */
		this.check_min_size_f = $empty;
	},
	
	switch_pic : function (ind){	
	//if (current_pic == 1) return;
		if (this.locked_pic[ind] == true) return;
		this.locked_pic[this.current_pic] = false;				
		this.locked_pic[ind] = true;		
		this.current_pic = ind;
		this.lay_down_text(this.json_info.images[ind].img_text.CTADA);
	},
	goto_pic 	: function (ind, pic_json){		
		this.check_min_size_f.call(this);		
		if (this.locked_pic[ind] == true) return;						
		this.switch_pic(ind);	
	},	
	make_line	: function ($padding, $class_name){
		var text_cont = this.text_bg_DOM;
		var padding_div = new Element('div', {'html' : '&nbsp;', styles:{'height': '0px', 'display':'none', 'overflow':'hidden', 'padding-top': $padding+'px'}});
		var text_div = new Element('div', {'class': $class_name});
		var text_div_div = new Element('div');
		text_div_div.inject(text_div);
		padding_div.inject(text_cont);
		text_div.inject(text_cont);	
		this.text_lines_array.push({'padding-div': padding_div, 'main':text_div, 'sub':text_div_div});		
	},
	lay_down_text	: function (text, link){			
		var clean_text = text.replace('<p>', '').replace('</p>', '');
		var lines = clean_text.split('<br />');	
		if (lines.length == 1) lines = clean_text.split('<br/>');	
		if (lines.length == 1) lines = clean_text.split('<br>');	
		if (lines.length == 1) lines = clean_text.split('\n');
		if (lines.length > 1 || clean_text != '') {				
			if (this.max_text_lines < lines.length){			
				for (var $i = lines.length; $i < lines.length; $i ++){
					make_line(1, 'img_text_text');
				}
				this.max_text_lines = lines.length;
			}
			this.text_bg_DOM.setStyles({'display': 'block'});						
			//this.text_bg_DOM.setStyles({'height' : parseInt(this.min_box_size.y) + 'px', 'width': parseInt(this.min_box_size.x)+0+'px'});			
		} else {
			//this.text_bg_DOM.setStyle('display','none');					
			 this.text_bg_DOM.morph({'height' : parseInt(this.min_box_size.y) + 'px', 'width': parseInt(this.min_box_size.x)+0+'px'});			
		}
		var time_offset = 0;		
		for (var $i = 0; $i < lines.length || $i < this.text_lines_array.length; $i ++){		
			if ($i < lines.length && lines[$i] != ''){
				this.text_lines_array[$i].main.setStyle('display', 'block');
				this.text_lines_array[$i]['padding-div'].setStyle('display', 'block');
				if ($i == 0){							
					this.animate_text(lines[$i], this.text_lines_array[$i], $i);
				} else {
					this.text_lines_array[$i].main.setStyles({'width': '1px', 'display':'none'});
					time_offset += lines[$i].length * 25;
					this.animate_text.delay(time_offset, this, [lines[$i], this.text_lines_array[$i], $i]);						
				}
				
			} else {
				this.text_lines_array[$i].main.setStyle('display', 'none');
				this.text_lines_array[$i]['padding-div'].setStyle('display', 'none');
			}	
		}		
	},
	animate_text	: function (text, text_DOM, $i, link){	
		text_DOM.sub.set('html', text);		
		text_DOM.sub.setStyles({'opacity': 0, 'display':'block', 'width':'auto', 'visibility':'hidden'});	
		text_DOM.main.setStyles({'width': '5000px', 'display':'block', 'opacity': 0, 'overflow' : 'hidden', 'position': 'absolute'});
		var main_text_size = text_DOM.sub.getSize();				
		text_DOM.sub.setStyles({'opacity': 1, 'display':'inline', 'width':parseInt(main_text_size.x)+'px', 'visibility':'visible'});		
		text_DOM.main.setStyles({'width': '1px', 'display':'block', 'opacity': 1, 'position':'static'});	
		var text_bg_DOM_size = this.text_bg_DOM.getSize();					
		var new_height = parseInt(text_bg_DOM_size.y) + parseInt(main_text_size.y);
		if ($i == 0) new_height = parseInt(this.min_box_size.y) + parseInt(main_text_size.y);
		this.text_bg_DOM.morph({'height' : new_height+'px', 'width':  (parseInt(this.min_box_size.x) > parseInt(main_text_size.x)?parseInt(this.min_box_size.x):parseInt(main_text_size.x))+'px'});			
		text_DOM.main.tween.delay(240, text_DOM.main, ['width', (parseInt(main_text_size.x)) + 'px']);	
	}
});

var page_handler = new page_class();
var flash_ref = {
	'onXmlParsed' :page_handler.flash_loaded.bind(page_handler)
};

