


/**
 * 
 * Copyright (c) 2008 xantus s.a. All rights reserved.
 * @author ksykula
 *
 * 
 */

var DirectEdit = {
	
	params : {
	
		backlink : null,
	
		closelink : null,
	
		locale : null

	},

	reinit : function( context ) {
		// delay used for FF bugfix
		$(document).oneTime(10,"reinit",function(){
			DirectEdit.__reinit(context);
		});
	},

	__reinit : function( context ){
			/** Creates the structure with the form and divs. * */
		var ocmsDataReady = true;
		$("div[id^='ocms_']", context ).each( function() {
			if( ocms_de_data[this.id] == undefined || ocms_de_data[this.id] == null )
			{
				ocmsDataReady = false;
				return false;
			}
		});
		
		if( !ocmsDataReady )
		{
			DirectEdit.reinit(context);
			return;
		}
		
			$("div[id^='ocms_']", context ).each( function() {
				
				$(this).tplAppend(ocms_de_data[this.id], t_ocms_de_template);
				var btWidth = 0;
				var t_buttons = t_ocms_de_buttonDisabled;
				if (!ocms_de_data[this.id].disabled) {
					t_buttons = t_ocms_de_buttonEnabled;
				}
				// Creates the buttons
					if (ocms_de_data[this.id].hasEdit) {
						btWidth = btWidth + 20;
						$('#buttons_' + this.id).tplAppend( {
							typeClass :'ocms_de_edit',
							title :ocms_de_data[this.id].button_edit,
							id :this.id
						}, t_buttons);
						$('#buttons_' + this.id).width(btWidth);
					}
					if (ocms_de_data[this.id].hasDelete) {
						btWidth = btWidth + 20;
						$('#buttons_' + this.id).tplAppend( {
							typeClass :'ocms_de_delete',
							title :ocms_de_data[this.id].button_delete,
							id :this.id
						}, t_buttons);
						$('#buttons_' + this.id).width(btWidth);
					}
					if (ocms_de_data[this.id].hasNew) {
						$('#buttons_' + this.id).tplAppend( {
							typeClass :'ocms_de_new',
							title :ocms_de_data[this.id].button_new,
							id :this.id
						}, t_buttons);
						btWidth = btWidth + 20;
						$('#buttons_' + this.id).width(btWidth);
					}

				});

			/** For the first load set the buttons to the correct position. * */
			$("div[id^='ocms_']", context ).each(func_ocms_de_reposition);


			/** This sets the effects to the direct edit buttons. * */
			$(".ocms_de_bt").hover(func_ocms_de_activate, func_ocms_de_deactivate);

			/** After click of the direct edit button the form is submitted. * */
			$('a.ocms_de_edit, a.ocms_de_delete, a.ocms_de_new').click(
					func_ocms_de_submit).mouseover( function() {
				var atr = $(this).attr('rel');
				if (!$(this).hasClass(atr + '_hover')) {
					$(this).addClass(atr + '_hover');
				}
			}).mouseout( function() {
				var atr = $(this).attr('rel');
				if ($(this).hasClass(atr + '_hover')) {
					$(this).removeClass(atr + '_hover');
				}
			});
	}

}

var Site = {

	addToFavourites : function() {
		alert("addToFavourites not implemented yet");
	},
	
	showLoginForm : function( url, event )
	{
		var loginFormHolder = $("#login_form_holder");
		loginFormHolder.css("left", event.clientX + "px" );
		loginFormHolder.css("top", event.clientY + "px" );
		loginFormHolder.removeClass("invisible");
		loginFormHolder.load( url );
		
	},
	
	login : function()
	{
		var loginFormHolder = $("#login_form_holder");
		var loginForm = $("#login_form",loginFormHolder);
		
		this.sendForm( null, loginForm, function( data, textStatus){

			loginFormHolder.empty();
			loginFormHolder.html( data );
			
		});
		
	},
	
	sendForm : function( action, form, callback )
	{
		if( !action )
		{
			action = $(form).attr("action");
		}
		if( action )
		{
			$.post( action, $(form).serialize(), function( data, textStatus ){
				
				if( callback )
				{
					callback( data, textStatus );
				}
				
			});
		}		
	},
	
	redirect : function( url )
	{
		document.location = url;
	},
	
	chooseGrade : function( grade )
	{		
		grade.siblings().removeClass("highlighted");
		grade.prevAll().addClass("highlighted");
		grade.addClass("highlighted");
	},
	
	grade : function( grade )
	{
		var gradeValue = grade.attr('grade');
		var resource = grade.parent().attr('resource');
		$.post('/system/modules/pl.widzew.main/elements/util/json/grade_resource.json',
		{resource : resource, grade : gradeValue }, 
		function( data, textStatus ){
			if(textStatus == 'success')
			{
				Site.setResourceGradeAtSite( data.resource, data.grade );
			}
		}, "json");
	},
	
	getCurrentGrade : function( resource, callback )
	{
		$.post('/system/modules/pl.widzew.main/elements/util/json/current_resource_grade.json',
		{resource : resource }, 
		function( data, textStatus ){
			if(textStatus == 'success')
			{
				callback(data);
			}
		}, "json");
	
	},	
	
	setGradeAtSite : function( gradeHolder, gradeValue )
	{
		var grades = $('.grade', gradeHolder );
		grades.removeClass("highlighted");
		grades.each(function(i){
			if(i+1 <= gradeValue)
			{
				$(this).addClass("highlighted");
			}
			else
			{
				return false;
			}
		});
	},
	
	setResourceGradeAtSite : function( resource, gradeValue )
	{
		var resources = $(".grade_holder[resource="+resource+"]");
		resources.each(function(){
			if( !$(this).attr('active') )
			{
				Site.setGradeAtSite($(this), gradeValue);
			}			
		});
	},
	
	incrementViews : function( resource, callback )
	{
		$.post('/system/modules/pl.widzew.main/elements/util/json/views_incrementation.json',
		{viewedResource : resource }, 
		function( data, textStatus ){
			if(textStatus == 'success')
			{
				callback(data);
			}
		}, "json");
	},	
	
	loadContent : function( targetUrl , container, params  ) {	
		
		container.prepend("<div class='ajax_loading'></div>");
		container.addClass( TabbedPanel.AJAX_LOADING );
		var directEditParams = 
		{
			backlink : DirectEdit.backlink,
			closelink : DirectEdit.closelink,
			locale : DirectEdit.locale	
		}
		
		$.extend( params , directEditParams );
				
		$.ajax( {
			type :"POST",
			url : targetUrl,
			data : params,
			dataType : "html",
			
			success : function(html)
			{
				container.empty();
				$(html).appendTo(container);
				DirectEdit.reinit( container );
			},
			error : function( XMLHttpRequest, textStatus, errorThrown ) 
			{
				container.empty();
				alert(textStatus);
			},

			complete : function( XMLHttpRequest, textStatus )
			{				
				
			}
		});

	}

}

var Search = 
{
    form : null,
    
    option : null,
    
	chooseOption : function( option , form ) 
	{
		if( this.form )
		{
			this.form.addClass('invisible');
			
		}
		if( this.option )
		{
			this.option.removeClass('active');
		}
		this.option = $("#"+option);
		this.form = $("#"+form);
		this.form.removeClass('invisible')
		this.option.addClass('active')
				
	},
	
	go : function()
	{
		if( this.form )
		{
			this.form.submit();
		}
	}
	

}

var MainMenuBar = {

	visibleMenuItems :null,

	select : function(menuItem)
	{
		alert(menuItem);
	},

	showMenuItems : function(menuItem)
	{
		this.hideMenuItems();
		if (this.visibleMenuItems)
		{
			this.visibleMenuItems.addClass("invisible");
		}
		this.visibleMenuItems = $("#" + menuItem);
		this.visibleMenuItems.removeClass("invisible");
	},

	hideMenuItems : function(event)
	{
		if (this.visibleMenuItems) 
		{
			this.visibleMenuItems.addClass("invisible");
			this.visibleMenuItems = null;
		}		
		
	}
}




var TabbedPanelExtensions = {
		
	onTabSelect : function( tabbedPanel )
	{	
	    var prevSibs = tabbedPanel.selectedTab.prev();
	    var nextSibs = tabbedPanel.selectedTab.nextAll();
	    
		var size = prevSibs.size();
		
		if( size > 0 )
		{
			if( tabbedPanel.extensions.selectedTabPrevSibling )
			{
				tabbedPanel.extensions.selectedTabPrevSibling.removeClass("ext_nohr");
			}
			var sibling = $(prevSibs.get(size-1));
			sibling.addClass( "ext_nohr" );
			tabbedPanel.extensions.selectedTabPrevSibling = sibling;
		}
		nextSibs.each(function( i ){

			$(this).removeClass( "ext_nohr" );
			
		});
		
	}
	
}

function bookmarkPage()
{

 if (window.sidebar) {
 window.sidebar.addPanel('KS Widzew Łódź S.A.', 'http://www.widzew.pl', "");
 } else if (window.external) {
 window.external.AddFavorite( 'http://www.widzew.pl', 'KS Widzew Łódź S.A.');
 }
} 


