
/*
 * TabDetailModule v1.0
 * KKabadayi
 * 20080103
 * Requires jquery and jquery.block 

 Settings sample;

	var settings = {
		modules : [
			{
				id : 'Announcement',
				onactivate : null,
				ondeactivate : null,
				containers : [
					{
						id : 'abc1',
						loadmode : 'static'
					},
					{
						id : 'abc2',
						url : 'http://localhost/abc2.html',
						loadmode : 'once'
					}
				]
			},
			{
				id : 'Comments',
				onactivate : null,
				ondeactivate : null,
				containers : [
					{
						id : 'def1',
						url : 'http://localhost/def1.html',
						loadmode : 'dynamic'
					}
				]
			}
		],
		defaultmodule: 'Comments'
	}

 */

var Gezisitesi = window.Gezisitesi || {};

Gezisitesi.TabDetailModule = function( settings )
{
	this.settings = $.extend({
		modules : null,
		defaultmodule : null
	}, settings || {}); 

	if ( this.settings.modules == null )
	{
		alert( GezisitesiResources.StaticText.m042 );
		return;
	}
	
	this.ActivateModule( this.GetDefaultModule().id );
	
}

Gezisitesi.TabDetailModule.prototype.GetModule = function( id )
{
	var moduleCount = this.settings.modules.length;

	for( var i=0; i<moduleCount; i++)
		if ( this.settings.modules[i].id == id ) return this.settings.modules[i];
	
	return null;
}

Gezisitesi.TabDetailModule.prototype.GetModulesByAttribute = function( attribute, value )
{
	var result = new Array();
	var moduleCount = this.settings.modules.length;
	
	for( var i=0; i<moduleCount; i++)
		if ( this.settings.modules[i][attribute] == value ) result.push( this.settings.modules[i] );
	
	return result;
}

Gezisitesi.TabDetailModule.prototype.GetDefaultModule = function()
{
	if ( this.settings.defaultmodule != null )
		return this.GetModule( this.settings.defaultmodule )
	else
		return this.settings.modules[0];
}

Gezisitesi.TabDetailModule.prototype.LoadContainerData = function( container )
{
	if (container.loadmode == 'static') return;

	var containerselector = '#'+container.id;
	
	var containerurl = (container.url.indexOf('?') == -1) ? container.url + '?' : container.url + '&';
	
	containerurl += 'fpr=' + Math.round(Math.random()*1000000).toString();

	if (container.loadmode == 'once')
	{
		if ( $(containerselector).attr('cdl') != 1 )
		{
			this.BlockContainer(containerselector);
			$(containerselector).load( containerurl, function() { $(this).attr('cdl', 1); } );
		}
	}
	else
	{
		this.BlockContainer(containerselector);
		$(containerselector).load( containerurl );
	}
}

Gezisitesi.TabDetailModule.prototype.BlockContainer = function( containerselector )
{
	$(containerselector).block(GezisitesiResources.StaticText.m006 + GezisitesiResources.StaticText.m017, {'font-size':'12px','font-weight':'bold','background-color':'#eff5f7',border:'1px solid #cccccc'});
}

Gezisitesi.TabDetailModule.prototype.ActivateModule = function( id )
{
	if ( this.settings.activemodule == id ) return;
	this.DeactivateModules( id );
	
	var module = this.GetModule(id);
	var self = this;
	
	$(module.containers).each(function() {$('#'+this.id).show();});
	$(module.containers).each(function() {self.LoadContainerData( this );});
	if ( typeof(module.onactivate) == 'function' ) module.onactivate();

	this.settings.activemodule = id;
}

Gezisitesi.TabDetailModule.prototype.DeactivateModule = function( id )
{
	var module = this.GetModule(id);
	$(module.containers).each(function() {$('#'+this.id).hide();});
	if ( typeof(module.ondeactivate) == 'function' ) module.ondeactivate();
}

Gezisitesi.TabDetailModule.prototype.DeactivateModules = function( excepted )
{
	var self = this;
	$(this.settings.modules).each(function() {this.id != excepted && self.DeactivateModule(this.id);});
}

