// Copyright (c) 2000-2008 Synology Inc. All rights reserved.
MODULE_PHOTO_SLIDE = function(div_id, config) {
	this.slide_intervals = [[3], [5], [10], [15], [20]];
	this.slide_intervals_data_store = new Ext.data.SimpleStore({
		fields: ['value'],
		data : this.slide_intervals
	});

	MODULE_PHOTO_SLIDE.superclass.constructor.call(this, div_id, config);
};

Ext.extend(MODULE_PHOTO_SLIDE, SYNOBLOG_MODULE, {
	thumb_list: null,
	thumb_index: 0,
	slide_intervals: null,
	slide_intervals_data_store: null,
	current_interval: 0,
	all_albums_data_store: null,
	timer: null,

	init: function() {
		var el_content = Ext.get(this.div_id+'_content');
		if(el_content != null) {
			var mgr_content = el_content.getUpdateManager();
			mgr_content.update("modules/photo_slide.php", "action=get_module_content");
			this.getThumbListAndInterval();
		}
	},
	getThumbListAndInterval: function() {
		Ext.Ajax.request({
			url: "modules/photo_slide.php",
			params: 'action=get_thumb_list_and_interval',
			method: "POST",
			scope: this,
			success: function(res, opts) {
				this.thumb_list = Ext.util.JSON.decode(res.responseText);
				if(this.thumb_list.totalCount > 1) {
					this.current_interval = this.thumb_list['current_interval'] * 1000;
					onStartSlideShow();
				}
			}
		});
	},
	changeThumb: function() {
		if(this.thumb_list[0] == null) {
			return;
		}
		
		document.images.pic.src = this.thumb_list[0]['path'];
		document.images.pic.width = this.thumb_list[0]['width'];
		document.images.pic.height = this.thumb_list[0]['height'];

		if (document.anchors["piclink"] == null) {
			document.anchors("piclink").href= this.thumb_list[0]['link'];
			document.anchors("piclink").title = this.thumb_list[0]['title'];
		} else {
			document.anchors["piclink"].href= this.thumb_list[0]['link'];
			document.anchors["piclink"].title = this.thumb_list[0]['title'];
		}

		var dom = Ext.getDom('photo_slide_pic_title');
		dom.innerHTML = this.thumb_list[0]['title'];
	},
	changeHideImage: function() {
		if(this.thumb_list[1] == null) {
			return;
		}
		document.images.photo_slide_hide_pic.src = this.thumb_list[1]['path'];
		
		Ext.Ajax.request({
			url: "modules/photo_slide.php",
			params: {
				action: 'get_thumb_list_and_interval',
				current_path: this.thumb_list[0]['current_path'],
				current_album: this.thumb_list['current_album']
			},
			method: "POST",
			scope: this,
			success: function(res, opts) {
				this.thumb_list = Ext.util.JSON.decode(res.responseText);
			}
		});
	},
	customizeConfigDialog: function() {
		this.configDialog.addButton(blog_str_common_save, this.save, this);
		this.configDialog.addButton(blog_str_common_close, this.hide, this);

		var layout = this.configDialog.getLayout();
		layout.beginUpdate();

		var content = '<div style="margin:20px;width:340px;" id="photo_slide_form"></div>';

		var cp = layout.add('center', new Ext.ContentPanel(Ext.id(), {autoCreate:true, title: blog_str_photo_slide_title, background:true}));
		cp.setContent(content);
		layout.endUpdate();

		this.configDialog.getLayout().getRegion("center").showPanel(0);

		this.configDialog.on("show", function(dialog){
			this.ds.load();
			this.form.load({url:'modules/photo_slide.php', params:{action: 'get_setting'}});
		}, this);

		this.getForm();
	},
	getConfigDialogData: function(action) {
		if(action.type == 'submit') {
			this.configDialog.hide();
		}
	},
	getForm: function() {
		this.ds = new Ext.data.Store({
			proxy: new Ext.data.HttpProxy({url: 'modules/photo_slide.php', method: 'POST'}),
			baseParams: {action: 'get_all_albums'},
			reader: new Ext.data.JsonReader({root: 'all_albums'},[{name: 'album_name'}]),
			fields: ['album_name']
		});

		this.form.column({width:340},
			new Ext.form.ComboBox({
				fieldLabel: blog_str_photo_slide_album,
				name: 'album_name',
				store: this.ds,
				displayField:'album_name',
				typeAhead: true,
				mode: 'local',
				triggerAction: 'all',
				selectOnFocus:true,
				width: 212,
				editable: false
			}),
			new Ext.form.ComboBox({
				fieldLabel: blog_str_photo_slide_interval + "(" + blog_str_photo_slide_interval_seconds + ")",
				store: this.slide_intervals_data_store,
				displayField:'value',
				valueField: 'value',
				name: 'interval',
				typeAhead: true,
				mode: 'local',
				triggerAction: 'all',
				selectOnFocus:true,
				width: 212,
				editable: false
			})
		);
		this.form.render('photo_slide_form');
	},
	save: function() {
		this.form.submit({url:'modules/photo_slide.php',
			waitTitle:' ',
			waitMsg:blog_str_man_blog_header_pic_plz_wait,
			params: {action: 'save_setting'}
		});
	},
	reset: function() {
		 this.form.reset();
	}
});

function onStartSlideShow() {
	if(document.images.pic == null) {
		setTimeout('onStartSlideShow()', 100);
	} else {
		document.images.pic.onload = onPhotoSlidePicLoad;
		var synoblog = SYNOBLOG.instance();
		var module = synoblog.getModule('photo_slide');
		module.changeThumb();
		module.timer = setTimeout('onStartSlideShow()', module.current_interval);
	}
}

function onPhotoSlidePicLoad() {
	var synoblog = SYNOBLOG.instance();
	var module = synoblog.getModule('photo_slide');
	module.changeHideImage();
}

SYNOBLOG.instance().registerModule("photo_slide", {hasConfigDialog: 1, width:400, height:240}, MODULE_PHOTO_SLIDE);
