var formElement2Focus = 0;
var RCATS_Movies_Content = '';
function RCATS_Movies() {
	TVData.loadTabContent('RCATS_Movies');
}

var RCATS_Channels_Content = '';
function RCATS_Channels() {
	TVData.loadTabContent('RCATS_Channels');
}

function FRNTABS_Reccomended() {
	TVData.loadTabContent('FRNTABS_Reccomended');
}

var FRNTABS_New_Content = '';
function FRNTABS_New() {
	TVData.loadTabContent('FRNTABS_New');
}

var FRNTABS_Commented_Content = '';
function FRNTABS_Commented() {
	TVData.loadTabContent('FRNTABS_Commented');
}

var MOVIES_Topviewed_Content = '';
function MOVIES_Topviewed() {
	TVData.loadTabContent('MOVIES_Topviewed');
}

var MOVIES_New_Content = '';
function MOVIES_New() {
	TVData.loadTabContent('MOVIES_New');
}

var MOVIES_Topvoted_Content = '';
function MOVIES_Topvoted() {
	TVData.loadTabContent('MOVIES_Topvoted');
}

var MOVIES_Topcommented_Content = '';
function MOVIES_Topcommented() {
	TVData.loadTabContent('MOVIES_Topcommented');
}

var USERS_Topviewed_Content = '';
function USERS_Topviewed() {
	TVData.loadTabContent('USERS_Topviewed');
}

var USERS_New_Content = '';
function USERS_New() {
	TVData.loadTabContent('USERS_New');
}

var USERS_Topvoted_Content = '';
function USERS_Topvoted() {
	TVData.loadTabContent('USERS_Topvoted');
}

var FRIENDS_Accepted_Content = '';
function FRIENDS_Accepted() {
	TVData.loadTabContent('FRIENDS_Accepted');
}

var FRIENDS_Unaccepted_Content = '';
function FRIENDS_Unaccepted() {
	TVData.loadTabContent('FRIENDS_Unaccepted');
}

function OMOVIES_Similar() {
	TVData.loadTabContent('OMOVIES_Similar');
}

var OMOVIES_User_Content = '';
function OMOVIES_User() {
	TVData.loadTabContent('OMOVIES_User');
}

function OCHANNELS_Similar() {
	TVData.loadTabContent('OCHANNELS_Similar');
}

var OCHANNELS_User_Content = '';
function OCHANNELS_User() {
	TVData.loadTabContent('OCHANNELS_User');
}

/* User channels */
var UCH_Topviewed_Content = '';
function UCH_Topviewed() {
	TVData.loadTabContent('UCH_Topviewed');
}

var UCH_New_Content = '';
function UCH_New() {
	TVData.loadTabContent('UCH_New');
}

var UCH_Topvoted_Content = '';
function UCH_Topvoted() {
	TVData.loadTabContent('UCH_Topvoted');
}

var UCH_Topcommented_Content = '';
function UCH_Topcommented() {
	TVData.loadTabContent('UCH_Topcommented');
}

var UCHTAB_Reccomended_Content = '';
function UCHTAB_Reccomended() {
	TVData.loadTabContent('UCHTAB_Reccomended');
}

var UCHTAB_Recent_Content = '';
function UCHTAB_Recent() {
	TVData.loadTabContent('UCHTAB_Recent');
}

function USERMY_Channels() {
	TVData.loadTabContent('USERMY_Channels');
}

var USERMY_Movies_Content = '';
function USERMY_Movies() {
	TVData.loadTabContent('USERMY_Movies');
}

function USER_Channels() {
	TVData.loadTabContent('USER_Channels');
}

var USER_Movies_Content = '';
function USER_Movies() {
	TVData.loadTabContent('USER_Movies');
}

var SEARCH_Movies_Content = '';
function SEARCH_Movies() {
	TVData.loadTabContent('SEARCH_Movies');
}

var SEARCH_Channels_Content = '';
function SEARCH_Channels() {
	TVData.loadTabContent('SEARCH_Channels');
}

var SEARCH_Users_Content = '';
function SEARCH_Users() {
	TVData.loadTabContent('SEARCH_Users');
}

var USERFAV_Movies_Content = '';
function USERFAV_Movies() {
	TVData.loadTabContent('USERFAV_Movies');
}

var USERFAV_Channels_Content = '';
function USERFAV_Channels() {
	TVData.loadTabContent('USERFAV_Channels');
}

var USERFAV_Users_Content = '';
function USERFAV_Users() {
	TVData.loadTabContent('USERFAV_Users');
}

var TAG_MOVIES_Content = '';
function TAG_Movies() {
	TVData.loadTabContent('TAG_Movies');
}

var TAG_Channels_Content = '';
function TAG_Channels() {
		TVData.loadTabContent('TAG_Channels');
}

function CHEDIT_Movies() {}
function MVEDIT_Movies() {}

var Data = Class.create();
Data.prototype = {
	initialize: function() {
		this.initDataLinks();
	},

	initDataLinks: function() {
		$$('a.mov_datalink').each(
			function(obj) {
				obj.onclick = function() {
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('movies_container', '/movieslist' + ( !familyFilter ? ',filtr,0' : '' ) + params, {
						method: 'get',
						onComplete: function() {
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);
		$$('a.search_datalink').each(
			function(obj) {
				obj.onclick = function() {
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('search_box', '/search_ajax' + ( !familyFilter ? ',filtr,0' : '' ) + params, {
						method: 'get',
						onComplete: function() {
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);
		$$('a.uch_datalink').each(
			function(obj) {
				obj.onclick = function() {
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('user_channels_container', '/userchannel' + params, {
						method: 'get',
						onComplete: function() {
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);
		$$('a.usr_datalink').each(
			function(obj) {
				obj.onclick = function() {
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('users_container', '/userslist' + params, {
						method: 'get',
						onComplete: function() {
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);
		$$('a.usr_datalink').each(
			function(obj) {
				obj.onclick = function() {
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('users_container', '/userslist' + params, {
						method: 'get',
						onComplete: function() {
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);
		$$('a.usr_uch_datalink').each(
			function(obj) {
				obj.onclick = function() {
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('usertab_container', '/userchannelslist,id,' + userID + ( !familyFilter ? ',filtr,0' : '' ) + params, {
						method: 'get',
						onComplete: function() {
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);
		$$('a.usr_mov_datalink').each(
			function(obj) {
				obj.onclick = function() {
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('usertab_container', '/usermovieslist,id,' + userID + ( !familyFilter ? ',filtr,0' : '' ) + params, {
						method: 'get',
						onComplete: function() {
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);
		$$('a.mymov_datalink').each(
			function(obj) {
				obj.onclick = function() {
					$A($(this).up(1).getElementsByTagName('a')).each( function(obj) { obj.removeClassName('selected'); } );
					$(this).addClassName('selected');
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('my_movies_list', '/mymovieslist' + params, {
						method: 'get',
						onLoading: function() {
							$('my_movies_list').setStyle( { height: $('my_movies_list').getHeight() + 'px' } );
							$('my_movies_list').update('');
							$('my_movies_list').addClassName('loading');
						},
						onComplete: function() {
							$('my_movies_list').removeClassName('loading');
							$('my_movies_list').setStyle( { height: 'auto' } );
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);
		$$('a.favmov_datalink').each(
			function(obj) {
				obj.onclick = function() {
					$A($(this).up(1).getElementsByTagName('a')).each( function(obj) { obj.removeClassName('selected'); } );
					$(this).addClassName('selected');
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('fav_movies_list', '/favmovieslist' + params, {
						method: 'get',
						onLoading: function() {
							$('fav_movies_list').setStyle( { height: $('fav_movies_list').getHeight() + 'px' } );
							$('fav_movies_list').update('');
							$('fav_movies_list').addClassName('loading');
						},
						onComplete: function() {
							$('fav_movies_list').removeClassName('loading');
							$('fav_movies_list').setStyle( { height: 'auto' } );
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);
		$$('a.favchn_datalink').each(
			function(obj) {
				obj.onclick = function() {
					$A($(this).up(1).getElementsByTagName('a')).each( function(obj) { obj.removeClassName('selected'); } );
					$(this).addClassName('selected');
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('fav_channels_list', '/favchannelslist' + params, {
						method: 'get',
						onLoading: function() {
							$('fav_channels_list').setStyle( { height: $('fav_channels_list').getHeight() + 'px' } );
							$('fav_channels_list').update('');
							$('fav_channels_list').addClassName('loading');
						},
						onComplete: function() {
							$('fav_channels_list').removeClassName('loading');
							$('fav_channels_list').setStyle( { height: 'auto' } );
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);
		$$('a.favusr_datalink').each(
			function(obj) {
				obj.onclick = function() {
					$A($(this).up(1).getElementsByTagName('a')).each( function(obj) { obj.removeClassName('selected'); } );
					$(this).addClassName('selected');
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('fav_users_list', '/favuserslist' + params, {
						method: 'get',
						onLoading: function() {
							$('fav_users_list').setStyle( { height: $('fav_users_list').getHeight() + 'px' } );
							$('fav_users_list').update('');
							$('fav_users_list').addClassName('loading');
						},
						onComplete: function() {
							$('fav_users_list').removeClassName('loading');
							$('fav_users_list').setStyle( { height: 'auto' } );
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);
		$$('a.mychn_datalink').each(
			function(obj) {
				obj.onclick = function() {
					$A($(this).up(1).getElementsByTagName('a')).each( function(obj) { obj.removeClassName('selected'); } );
					$(this).addClassName('selected');
					var params = this.href.substr(this.href.indexOf(','))
					new Ajax.Updater('my_channels_list', '/mychannelslist' + params, {
						method: 'get',
						onLoading: function() {
							$('my_channels_list').setStyle( { height: $('my_channels_list').getHeight() + 'px' } );
							$('my_channels_list').update('');
							$('my_channels_list').addClassName('loading');
						},
						onComplete: function() {
							$('my_channels_list').removeClassName('loading');
							$('my_channels_list').setStyle( { height: 'auto' } );
							TVData.initDataLinks();
							TVInterface.initClipBoxes();
						}
					});
					return false;
				}
			}
		);

		/* search */
		$$('#order_box a').each(
			function(obj) {
				obj.onclick = function() {
					$$('#order_box a').each( function(obj) {
						obj.removeClassName('selected');
					});
					obj.addClassName('selected');

					var tab = $$('div#searchresults div.tabs li.selected a').last();
					eval(tab.getAttribute('rel') + '_Content = false;');
					TVData.loadTabContent(tab.getAttribute('rel'),this.getOrderBy(obj),this.getPage(),true);
					return false;
				}.bind(this).bind(obj);
			}.bind(this)
		);

		$$('#pager_box a').each(
			function(obj) {
				obj.onclick = function() {
					$$('#pager_box a').each( function(obj) {
						obj.removeClassName('selected');
					});
					obj.addClassName('selected');

					var tab = $$('#searchresults div.tabs li.selected a').last();

					TVData.loadTabContent(tab.getAttribute('rel'),this.getOrderBy(),this.getPage(obj));
					return false;
				}.bind(this).bind(obj);
			}.bind(this)
		);
		
		$$('#categories_box a').each(
			function(obj) {
				obj.onclick = function() {
					$$('#categories_box a').each( function(obj) {
						obj.removeClassName('selected');
					});
					obj.addClassName('selected');

					var tab = $$('#searchresults div.tabs li.selected a').last();
					categoryID = obj.getAttribute('rel');
					TVData.loadTabContent(tab.getAttribute('rel'),this.getOrderBy(),this.getPage(),true);
					return false;
				}.bind(this).bind(obj);
			}.bind(this)
		);
		/* user channel */

	},

	getPage: function (obj)
	{
		obj = obj || $$('#pager_box a.selected').last();
		if (!obj) {
			return 1;
		}
		var url = obj.href.split(',');
		return url[url.indexOf('page') + 1] + ' ' + url[url.indexOf('page') + 1];
	},

	getOrderBy: function (obj)
	{
		obj = obj || $$('#order_box a.selected').last();
		if (!obj) {
			return null;
		}
		var url = obj.href.split(',');
		return url[url.indexOf('orderBy') + 1] + ' ' + url[url.indexOf('order_dir') + 1];

	},

	loadTabContent: function(contentName, orderBy, page, noCategoriesReload) {
		var contentType		= contentName.split('_')[0];
		var contentSubtype	= contentName.split('_')[1];
		var orderBy = orderBy || null;
		var page = page || null;
		var context = context || null;
		switch(contentType) {
			case 'RCATS':
				var container	= 'categories_box';
				var addr		= '/rcats';
				var parameters	= { cat_type: contentSubtype, context: context || "" };
				break;
			case 'SRCATS':
				var container	= 'categories_box';
				var addr		= '/srcats';
				var parameters	= { cat_type: contentSubtype, context: context || "" };
				break;
			case 'FRNTABS':
				var container	= 'main_tabs_content';
				var addr		= '/frntabs';
				var parameters	= { cnt_type: contentSubtype };
				break;
			case 'MOVIES':
				var container	= 'movies_container';
				var addr		= '/movieslist';
				if(categoryID) {
					var parameters	= { mov_type: contentSubtype, kategoria: categoryID };
				} else {
					var parameters	= { mov_type: contentSubtype };
				}
				break;
			case 'OMOVIES':
				var container	= 'other_movies';
				var addr		= '/othermovieslist';
				var parameters	= { omov_type: contentSubtype, uid: userID, id: movieID };
				break;
			case 'OCHANNELS':
				var container	= 'user_channel_container';
				var addr		= '/otherchannelslist';
				var parameters	= { ouch_type: contentSubtype, uid: userID, id: channelID };
				break;
			case 'USERS':
				var container	= 'users_container';
				var addr		= '/userslist';
				var parameters	= { usr_type: contentSubtype };
				break;
			case 'FRIENDS':
				var container	= 'friends_container';
				var addr		= '/friendslist';
				var parameters	= { frn_type: contentSubtype };
				break;
			case 'UCH':
				var container	= 'user_channels_container';
				var addr		= '/userchannel';
				if(categoryID) {
					var parameters	= { uch_type: contentSubtype, kategoria: categoryID };
				} else {
					var parameters	= { uch_type: contentSubtype };
				}
				break;
			case 'UCHTAB':
				var container	= 'user_channel_container';
				var addr		= '/getuchcnt';
				var parameters	= { uch_type: contentSubtype };
				break;
			case 'USERMY':
				var container	= 'my_container';
				var addr		= contentSubtype == 'Movies' ? '/mymovies' : '/mychannels';
				var parameters	= { };
				break;
			case 'USER':
				var container	= 'usertab_container';
				var addr		= contentSubtype == 'Movies' ? '/usermovieslist' : '/userchannelslist';
				var parameters	= { id: userID };
				break;
			case 'USERFAV':
				var container	= 'fav_container';
				var addr		= contentSubtype == 'Movies' ? '/favmovies' : (contentSubtype == 'Channels' ? '/favchannels' : '/favusers');
				var parameters	= { };
				break;
			case 'TAG':
				var container	= 'tag_container';
				var addr		= contentSubtype == 'Movies' ? '/movieslist' : '/userchannel';
				var parameters	= { tag: tagName, mov_type: 'Tag', uch_type: 'Tag' };
				break;
			case 'SEARCH':
				var container	= 'search_box';
				var addr		= '/search_ajax';
				if(orderBy) {
					var order = orderBy.split(' ');
				} else {
					var order = new Array();
					order[0] = order[1] = '';
				}
				var parameters	= { cat_type: contentSubtype, query: $('query').value, orderBy: order[0], order_dir: order[1], page: page, kategoria: categoryID };
				$$('#order_box a').each( function (obj) {
					var urlArr = obj.href.split(',');
					urlArr[urlArr.indexOf('cat_type') + 1] = contentSubtype;
					obj.href = urlArr.join(',');
				}.bind(contentSubtype));

				$$('#pager_box a').each( function (obj) {
					var urlArr = obj.href.split(',');
					urlArr[urlArr.indexOf('cat_type') + 1] = contentSubtype;
					obj.href = urlArr.join(',');
				}.bind(contentSubtype));

				switch(contentSubtype) {
					case 'Movies':
						$('categories_container').show();
						if(!noCategoriesReload) this.loadTabContent('SRCATS_Movies');
						break;
					case 'Channels':
						$('categories_container').show();
						if(!noCategoriesReload) this.loadTabContent('SRCATS_Channels');
						break;
					case 'Users':
						$('categories_container').hide();
						break;
				}
				break;

		}
		var orderByAtt = '';
		if (orderBy) {
			orderByAtt = '_' + orderBy.replace(/\s/,'_');
		}
		if (page) {
			orderByAtt = '_' + page;
		}
		if(!familyFilter) addr = addr + ',filtr,0';

		$(container).setStyle( { height: $(container).getHeight() + 'px' } );
		$(container).update('');
		$(container).addClassName('loading');
		new Ajax.Updater(container, addr, {
			method: 'get',
			parameters: parameters,
			onSuccess: function(transport) {
				$(container).removeClassName('loading');
				eval(contentName + orderByAtt + '_Content = transport.responseText;');
			}.bind(orderByAtt),
			onComplete: function() {
				$(container).setStyle( { height: 'auto' } );
				TVInterface.initClipBoxes();
				TVData.initDataLinks();
			}
		});
	},

	addComment: function(type, parentID, parentCommentID, containerID) {
		if(!checkIfLoggedIn()) { 
			TVInterface.showAlert('Ta akcja wymaga zalogowania');
			return false;
		}
		var content = $(containerID).getElementsByTagName('textarea')[0].value;
		new Ajax.Updater(containerID, '/addcomment', {
			method: 'post',
			parameters: { t: type, pid: parentID, cmt_id: parentCommentID, content: content }
		});
	},

	addToFavourites: function(type, elementID) {
		new Ajax.Request('/add2fav', {
			method: 'post',
			parameters: { t: type, id: elementID },
			onLoading: function() {
				TVInterface.showLoader();
			},
			onSuccess: function(transport) {
				TVInterface.hideLoader( true );
				TVInterface.showAlert( transport.responseText );
			}
		});
	},
	
	deleteFromFavourites: function(type, elementID) {
		TVInterface.showConfirm('Czy na pewno usunąć ten element z ulubionych?', function() { TVData.doDeleteFromFavourites( type, elementID ) }.bind(type).bind(elementID));
	},
	
	doDeleteFromFavourites: function(type, elementID) {
		new Ajax.Request('/delfromfav', {
			method: 'post',
			parameters: { t: type, id: elementID },
			onLoading: function() {
				TVInterface.showLoader();
			},
			onSuccess: function(transport) {
				var rsp = transport.responseText.split('|');
				if(rsp[0] == '1') {
					$('el_' + elementID).update('<div class="delmsg">Element został usunięty.</div>');
				}
				TVInterface.hideLoader( true );
				TVInterface.showAlert( rsp[1] );
			}
		});
	},
	
	deleteMovie: function(movieID) {
		TVInterface.showConfirm('Czy na pewno chcesz usunąć ten film?', function() { TVData.doDeleteMovie( movieID ) }.bind(movieID));
	},
	
	doDeleteMovie: function(movieID) {
		new Ajax.Request('/delmovie', {
			method: 'post',
			parameters: { id: movieID },
			onLoading: function() {
				TVInterface.showLoader();
			},
			onSuccess: function(transport) {
				var rsp = transport.responseText.split('|');
				if(rsp[0] == '1') {
					$('mv_' + movieID).update('<div class="delmsg">Film został usunięty.</div>');
				}
				TVInterface.hideLoader( true );
				TVInterface.showAlert( rsp[1] );
			}
		});
	},

	deleteChannel: function(channelID) {
		TVInterface.showConfirm('Czy na pewno chcesz usunąć ten kanał?', function() { TVData.doDeleteChannel( channelID ) }.bind(channelID));
	},

	doDeleteChannel: function(channelID) {
		new Ajax.Request('/delchannel', {
			method: 'post',
			parameters: { id: channelID },
			onLoading: function() {
				TVInterface.showLoader();
			},
			onSuccess: function(transport) {
				var rsp = transport.responseText.split('|');
				if(rsp[0] == '1') {
					$('ch_' + channelID).update('<div class="delmsg">Kanał został usunięty.</div>');
				}
				TVInterface.hideLoader( true );
				TVInterface.showAlert( rsp[1] );
			}
		});
	},

	addVote: function(type, elementID, vote) {
		new Ajax.Request('/rankelement', {
			method: 'post',
			parameters: { id: elementID, vote: vote, t: type },
			onLoading: function() {
				TVInterface.showLoader();
			},
			onSuccess: function(transport) {
				TVInterface.hideLoader( true );
				TVInterface.showAlert( transport.responseText );
			}
		});
	},
	
	addToFriends: function(userID) {
		new Ajax.Request('/add2friends', {
			method: 'post',
			parameters: { id: userID },
			onLoading: function() {
				TVInterface.showLoader();
			},
			onSuccess: function(transport) {
				TVInterface.hideLoader( true );
				TVInterface.showAlert( transport.responseText );
			}
		});
	},
	
	delFromFriends: function(userID, userName) {
		TVInterface.showConfirm( 'Czy na pewno usunąć tego użytkownika ze znajomych?', function() { TVData.doDelFromFriends( userID, userName ) }.bind(userID).bind(userName) );
	},
	
	doDelFromFriends: function(userID, userName) {
		new Ajax.Request('/delfromfriends', {
			method: 'post',
			parameters: { id: userID },
			onLoading: function() {
				TVInterface.showLoader();
			},
			onSuccess: function(transport) {
				var rsp = transport.responseText.split('|');
				if(rsp[0] == '1') {
					$('box_' + userID).update('<div class="delmsg">Użytkownik został usunięty.</div>');
				}
				TVInterface.hideLoader( true );
				TVInterface.showAlert( rsp[1] );
			}
		});
	},

	acceptFriend: function(userID, userName) {
		new Ajax.Request('/acceptfriend', {
			method: 'post',
			parameters: { id: userID },
			onLoading: function() {
				TVInterface.showLoader();
			},
			onSuccess: function(transport) {
				TVInterface.hideLoader( true );
				TVInterface.showAlert( transport.responseText );
				FRIENDS_Accepted_Content = '';
				FRIENDS_Unaccepted_Content = '';
				$('box_' + userName).hide();
			}
		});
	},

	sendPopupForm: function(formID) {
		new Ajax.Request($(formID).readAttribute( 'action' ), {
			method: $(formID).readAttribute( 'method' ),
			parameters: $(formID).serialize( true ),
			onLoading: function() {
				TVInterface.hidePopup( true, true );
				TVInterface.showLoader();
			},
			onSuccess: function(transport) {
				TVInterface.hideLoader( true );
				TVInterface.showAlert( transport.responseText );
			}
		});
	}

}

var Interface = Class.create();
Interface.prototype = {
	initialize: function() {
		this.tempPopupContent = '';
		this.tempPopupContentContainer = null;
		$$('#searchbox ul li a').each(
			function(obj) {
				obj.onclick = function() { this.blur(); $$('#searchbox ul li.selected')[0].removeClassName('selected'); this.up().addClassName('selected'); $('query').focus(); $('query_type').value = this.readAttribute('rel'); return false; }
			}
		);
		$$('div.tabs ul li a').each(
			function(obj) {
				obj.onclick = function() {
					this.blur();
					this.up(1).getElementsByClassName('selected')[0].removeClassName('selected');
					this.up().addClassName('selected');
					var rel = this.readAttribute('rel');
					if(rel) {
						eval(rel + '();');
						return false;
					}
					return true;
				}
			}
		);
		$$('#comments a.ac').each(
			function(obj) {
				obj.onclick = function() {
					var rel = this.readAttribute('rel');
					if(rel) {
						$$('#comments a.ac').each( function(obj) { obj.show(); } );
						this.hide();
						TVInterface.showCommentReplyForm(rel);
					}
					return false;
				}
			}
		);
		this.initClipBoxes();
		this.sliderData = $A();
		this.initVote();
		new Draggable( 'popup' );
	},
	
	initVote: function() {
		$$('span.vote').each(
			function(obj) {
				obj.getElementsBySelector('span a').each(
					function(obj, index) {
						obj.onmouseover = function() { $(this).up().addClassName('v' + (index + 1)); };
						obj.onmouseout	= function() { $(this).up().removeClassName('v' + (index + 1)); };
						obj.onclick		= function() { var attribs = $(this).up().readAttribute('rel').split('|'); TVData.addVote(attribs[0], attribs[1], index + 1); }
					}
				);
			}
		);
	},
	
	initClipBoxes: function() {
		$$('.clipbox').each(
			function(obj) {
				obj.onmouseover	= function() { $(this).style.top = '2px'; $(this).style.left = '2px'; $(this).getElementsByClassName('shadow')[0].hide(); };
				obj.onmouseout	= function() { $(this).style.top = '0'; $(this).style.left = '0';  $(this).getElementsByClassName('shadow')[0].show(); };
				obj.onclick		= function() { document.location.href = $(this).down('h4 a').href; }
			}
		);
		$$('.userchannelbox').each(
			function(obj) {
				obj.onmouseover	= function() { $(this).style.top = '2px'; $(this).style.left = '2px'; $(this).getElementsByClassName('shadow')[0].hide(); };
				obj.onmouseout	= function() { $(this).style.top = '0'; $(this).style.left = '0';  $(this).getElementsByClassName('shadow')[0].show(); };
				obj.onclick		= function() { var as = $(this).getElementsBySelector('h4 a'); document.location.href = ( as[1] ? as[1].href : as[0].href ); }
			}
		);
		$$('.friendbox').each(
			function(obj) {
				obj.onmouseover	= function() { $(this).style.top = '2px'; $(this).style.left = '2px'; $(this).getElementsByClassName('shadow')[0].hide(); };
				obj.onmouseout	= function() { $(this).style.top = '0'; $(this).style.left = '0';  $(this).getElementsByClassName('shadow')[0].show(); };
				obj.onclick		= function() { document.location.href = $(this).down('h4 a').href; }
			}
		);
		$$('.userbox').each(
			function(obj) {
				obj.onmouseover	= function() { $(this).style.top = '2px'; $(this).style.left = '2px'; $(this).getElementsByClassName('shadow')[0].hide(); };
				obj.onmouseout	= function() { $(this).style.top = '0'; $(this).style.left = '0';  $(this).getElementsByClassName('shadow')[0].show(); };
				obj.onclick		= function() { document.location.href = $(this).down('h4 a').href; }
			}
		);
	},

	initSliders: function() {
		$$('.slider').each(
			function(obj) {
				TVInterface.sliderData[obj.id] = { currentIndex: 0, busy: false };
				obj.getElementsByClassName('moveleft')[0].onclick	= function() { this.blur(); TVInterface.moveSlider(this, 'L'); return false; }
				obj.getElementsByClassName('moveright')[0].onclick	= function() { this.blur(); TVInterface.moveSlider(this, 'R'); return false; }
			}
		);
	},

	moveSlider: function(invoker, direction) {
		var sliderID	= invoker.up().id;
		var sliderObj	= invoker.up().getElementsByClassName('slidingcontainer')[0];
		var elements	= sliderObj.getElementsByClassName('element');
		switch( direction ) {
			case 'L':
				if(!this.sliderData[sliderID].busy && this.sliderData[sliderID].currentIndex > 0) {
					var moveAmount = elements[this.sliderData[sliderID].currentIndex - 1].getWidth() + parseInt(elements[this.sliderData[sliderID].currentIndex - 1].getStyle('margin-right').replace(/px/, ''));
					new Effect.MoveBy( sliderObj, 0, moveAmount, { afterFinish: function() { TVInterface.releaseSlider(sliderID); } } );
					this.sliderData[sliderID].currentIndex--;
					this.sliderData[sliderID].busy = true;
				}
				break;
			case 'R':
				if(!this.sliderData[sliderID].busy && !this.checkSliderEnd(sliderObj, elements, this.sliderData[sliderID].currentIndex)) {
					var moveAmount = elements[this.sliderData[sliderID].currentIndex].getWidth() + parseInt(elements[this.sliderData[sliderID].currentIndex].getStyle('margin-right').replace(/px/, ''));
					new Effect.MoveBy( sliderObj, 0, -moveAmount, { afterFinish: function() { TVInterface.releaseSlider(sliderID); } } );
					this.sliderData[sliderID].currentIndex++;
					this.sliderData[sliderID].busy = true;
				}
				break;
		}
	},

	correctSlider: function(sliderID) {
		var sliderObj = $(sliderID).getElementsByClassName('slidingcontainer')[0];
		if(!sliderObj.getStyle('left')) return;
		var offset = parseInt(sliderObj.getStyle('left').replace(/px/, ''));
		if(offset >= 0) return;
		offset = -offset + 1;
		var elements = $(sliderID).getElementsByClassName('element');
		elementOffset = 0;
		for(i = 0; i < this.sliderData[sliderID].currentIndex; i++) {
			elementOffset += elements[i].getWidth() + parseInt(elements[i].getStyle('margin-right').replace(/px/, ''));
		}
		var diff = elementOffset - offset;
		if(diff != 0) {
			new Effect.MoveBy( sliderObj, 0, -diff, { afterFinish: function() { TVInterface.releaseSlider(sliderID); } } );
			this.sliderData[sliderID].busy = true;
		}
	},

	releaseSlider: function(sliderID) {
		this.sliderData[sliderID].busy = false;
	},

	checkSliderEnd: function(sliderObj, elements, currentIndex) {
		var containerWidth = $(sliderObj.up()).getWidth();
		var leftElementsLength = 0;
		for(i = currentIndex; i < elements.length; i++) {
			leftElementsLength += elements[i].getWidth();
			if(leftElementsLength > containerWidth) return false;
		}
		return true;
	},

	showCommentReplyForm: function(parentID) {
		$$('#comments div.acf').each( function(obj) { obj.hide(); } );
		$('ac' + parentID).update('<form action="/addcomment" method="post"><div class="addcomment"><h5>Odpowiedz</h5><textarea name="comment" rows="5" cols="80"></textarea><a href="#" onclick="TVData.addComment(\'' + commentType + '\', ' + parentElID + ', ' + parentID + ', \'ac' + parentID + '\'); return false;" class="button2">WYőLIJ</a></div></form>');
		Effect.BlindDown('ac' + parentID);
	},

	preloadPopup : function() {

		this.showPopup('test');
	},

	showPopup: function( content, focusForm ) {
		if( typeof( content ) == 'object' ) {
			this.tempPopupContent = content.innerHTML;
			this.tempPopupContentContainer = content;
			content.update();
			$('popupContent').update( this.tempPopupContent );
		} else {
			this.tempPopupContent = '';
			this.tempPopupContentContainer = null;
			$('popupContent').update( content );
		}
		this.centerElement( 'popup' );
		this.showPopupBg();
		if(focusForm) {
			var formElement2Focus = focusForm - 1;
			Effect.Appear( 'popup', { afterFinish: function() { $('popupContent').getElementsByTagName('form')[0].elements[formElement2Focus].focus(); } } );
		} else {
			Effect.Appear( 'popup' );
		}
	},

	showPopupBg: function() {
		windowDimensions = this.getWindowSize();
		if(windowDimensions[1] > $('bodyElement').getHeight()) {
			$('popupbg').setStyle({ height: windowDimensions[1] + 'px' });
		} else {
			$('popupbg').setStyle({ height: $('bodyElement').getHeight() + 'px' });
		}
		$('popupbg').show();
	},
	
	hidePopupBg: function() {
		$('popupbg').hide();
		$('popupbg').setStyle({ height: 'auto' });
	},
	
	hidePopup: function( noEffect, dontHideBG ) {
		if(this.tempPopupContent != '') {
			this.tempPopupContentContainer.update( this.tempPopupContent );
		}
		if(noEffect) {
			$('popup').hide();
			if(!dontHideBG) {
				this.hidePopupBg();
			}
		} else {
			Effect.SwitchOff( 'popup', { afterFinish: function() { $('popupbg').hide(); if(this.showAlertCallback){this.showAlertCallback(); this.showAlertCallback = null;}}.bind(this) } );
			this.showAlertCallback = null;
		}
	},

	showLoader: function() {
		this.centerElement( 'loader' );
		$('loader').show();
		this.showPopupBg();
	},

	hideLoader: function( dontHideBG ) {
		$('loader').hide();
		if(!dontHideBG) {
			this.hidePopupBg();
		}
	},

	showAlert: function( content, type , callback) {
		this.showAlertCallback = callback || null;
		this.showPopup(
			'<p>' + content + '</p>' +
			'<div class="buttons"><a href="#" class="ok center" onclick="TVInterface.hidePopup(); return false;">OK</a></div>'
		);
	},

	showConfirm: function( content, callback ) {
		this.showPopup(
			'<p>' + content + '</p>' +
			'<div class="buttons"><div class="cont"><a href="#" class="cancel button_OK" onclick="TVInterface.hidePopup(); return false;">OK</a><a href="#" class="cancel last" onclick="TVInterface.hidePopup(); return false;">Anuluj</a></div></div>'
		);
		Event.observe($('popup').down('a.button_OK'),'click',function () {
			this.showAlertCallback = callback;
		}.bind(this));
	},

	centerElement: function(element) {
		windowDimensions = this.getWindowSize();
		bodyOffsets = Position.page( $('bodyElement') );
		$(element).setStyle({ left: ( ( $('bodyElement').getWidth() / 2 ) -  ( $(element).getWidth() / 2 ) ) + 'px', top: ( ( windowDimensions[1] / 2 ) -  ( $(element).getHeight() / 2 ) - bodyOffsets[1] ) + 'px' });
	},

	getWindowSize: function() {
		var myWidth = 0, myHeight = 0;
		if( typeof( window.innerWidth ) == 'number' ) {
			myWidth = window.innerWidth;
			myHeight = window.innerHeight;
		} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			myWidth = document.documentElement.clientWidth;
			myHeight = document.documentElement.clientHeight;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			myWidth = document.body.clientWidth;
			myHeight = document.body.clientHeight;
		}
		return [myWidth, myHeight];
	},

	showPlayer: function(movieID, external, autostart) {
		if(!external) {
			$('playerContainer').update('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="595" height="350" id="telewizor-tv_player" align="middle">\
				<param name="allowScriptAccess" value="sameDomain" />\
				<param name="allowFullScreen" value="false" />\
				<param name="movie" value="/i/pl/player.3.swf" />\
				<param name="quality" value="high" />\
				<param name="wmode" value="opaque" />\
				<param name="FlashVars" value="URL=/vurl,id,' + movieID + ( autostart ? '&amp;autostart=1' : '' ) + '&amp;button=1" />\
				<embed src="/i/pl/player.3.swf" wmode="opaque" FlashVars="URL=/vurl,id,' + movieID + ( autostart ? '&amp;autostart=1' : '' ) + '&amp;button=1" quality="high" width="595" height="350" name="telewizor-tv_player" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
		} else {
			if(!external.match(/classid/)) external = external.replace(/<object/, '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"');
			if(external.match(/<script/)) {
				var match = /src="(.*)"/.exec(external);
				var x = document.createElement("script");
				x.defer = true;
				x.src = match[1];
				x.type = "text/javascript";
				$('playerContainer').appendChild(x);
			} else {
				$('playerContainer').update(external);
			}
		}
	}

}


var User = Class.create();

User.prototype = {

	initialize: function() {

	},

	printRegisterErrors : function (errors) {

		var errorUsrName = '';
		var errorUsrPassword = '';
		var errorUsrPasswordConfirm = '';
		var errorUsrEmail = '';
		var errorImgCode = '';

		if (errors.login) {

			switch (errors.login) {

				case 1:
					errorUsrName = 'Podany login jest za krótki';
					break;

				case 2:
					errorUsrName = 'Podany login jest już używany';
					break;

				case 3:
					errorUsrName = 'Podany login jest nieprawidłowy';
					break;

			}
		}

		if (errors.password) {

			switch (errors.password) {

				case 1:
					errorUsrPassword = 'Podane hasło jest za krótkie';
					break;

				case 2:
					errorUsrPasswordConfirm = 'Podane hasło jest nie zgodne z potwierdzeniem';
					break;
			}
		}

		if (errors.email) {

			switch (errors.email) {

				case 1:
					errorUsrEmail = 'Podany email jest nieprawidłowy';
					break;
			}
		}
		if (errors.imgCode) {

			errorImgCode = 'Podany kod jest nieprawidłowy';
		}

		this.showError('errorUsrName', errorUsrName);
		this.showError('errorUsrPassword', errorUsrPassword);
		this.showError('errorUsrPasswordConfirm', errorUsrPasswordConfirm);
		this.showError('errorUsrEmail', errorUsrEmail);
		this.showError('errorImgCode', errorImgCode);

	},

	showError : function (errorContent, errorValue) {

		if ($(errorContent)) {

			if ($(errorContent).innerHTML != errorValue) {

				$(errorContent).style.display = 'none';
				$(errorContent).update(errorValue);

				if (errorValue.length > 0) {
					new Effect.BlindDown(errorContent);
				}
			}
		}
	},

	submitRegister : function (formObj) {

		var query = Form.serialize(formObj, true);

		var url = '/action_user_register';

		new Ajax.Request (
	    	url,
	    	{
	      		method: 'POST',
	      		parameters: query,
	      		onComplete: function (req) {

	      			eval('var ret=' + req.responseText);

	      			if (ret.errors) {
	      				this.printRegisterErrors(ret.errors);
	      			} else {
	      				if(ret.usrId) {
									TVInterface.hidePopup();
									showLoggedInMenu();
	      				} else {
									TVInterface.showAlert('Podczas zakładania konta wystąpił błąd!');
								}
							}

	      		}.bind(this)
	    	}
	    )

		return false;
	},

	submitLogin : function (formObj) {

		if ($('errorLoginMessage')) {
			$('errorLoginMessage').update('');
		}
		var query = Form.serialize(formObj, true);

		var url = '/action_user_login';

		new Ajax.Request (
	    	url,
	    	{
	      		method: 'POST',
	      		parameters: query,
	      		onComplete: function (req) {
	      			if (req.responseText*1 == 1) {
	      				TVInterface.hidePopup();
	      				showLoggedInMenu();
	      			} else {
						this.showError('errorLoginMessage', 'Podany login lub/i hasło jest nieprawidłowe');
	      			}
	      		}.bind(this)
	    	}
	    )
		return false;
	},

	showRegisterForm : function() {

		this.showForm('register');
	},

	showLoginForm : function() {

		this.showForm('login');
	},

	showForm : function(formType) {

		//TVInterface.preloadPopup();

		var url = '/ajax_forms,formType,' + formType;

		new Ajax.Request (
	    	url,
	    	{
	      		method: 'GET',
	      		parameters: '',
	      		onComplete: function (req) {
	      			TVInterface.showPopup(req.responseText, 1);
	      		}.bind(this)
	    	}
	    )
	}
}

var VG_myChannelVideos = Class.create();
var VG_myChannelItems = new String('');

VG_myChannelVideos.prototype = {

	initialize : function(listVideosContent, userChannelContent, ChannelId) {

		if ($(listVideosContent) && $(userChannelContent)) {
			this.ChannelId = ChannelId;
			this.listVideosContent = listVideosContent;
			this.userChannelContent = userChannelContent;
			this.getChannelVideos(ChannelId);
		}
	},

	getChannelVideos : function (ChannelId) {

		var query = '';

		if (ChannelId > 0) {

			query += '?request_type=edit_channel';
			query += '&id=' + ChannelId;
		} else {

			query += '?request_type=add_channel';
		}

		new Ajax.Request (
	        '/uchmanagedata',
	        {
				method: 'POST',
				parameters: query,
				onComplete: function (req, json) {

					eval('var ret=' + req.responseText);

					var innerHTML = '<ul id="videosList">';

	          		if (ret.items.user_videos_count > 0) {

	          			for (i = 0 ; i < ret.items.user_videos_count ; i++) {
	          				innerHTML += '<li id="videosList_videosList' + ret.items.user_videos[i].VID_ID + '">';
	          				innerHTML += '<img src="' + ( ret.items.user_videos[i].VID_CLAP_IMAGE ? ret.items.user_videos[i].VID_CLAP_IMAGE : '/i/p.gif') + '" width="128" height="94" alt="" />';
	          				innerHTML += ret.items.user_videos[i].VID_NAME;
										innerHTML += '</li>';
	          			}
	          		}

	          		innerHTML += '</ul>';

	          		$(this.listVideosContent).update(innerHTML);

	          		innerHTML = '<ul id="channelList">';

	          		if (ret.items.user_channel_count > 0) {

	          			for (i = 0 ; i < ret.items.user_channel_count ; i++) {
	          				innerHTML += '<li id="videosList_videosList' + ret.items.user_channel[i].VID_ID + '">';
	          				innerHTML += '<img src="' + ( ret.items.user_channel[i].VID_CLAP_IMAGE ? ret.items.user_channel[i].VID_CLAP_IMAGE : '/i/p.gif') + '" width="128" height="94" alt="" />';
	          				innerHTML += ret.items.user_channel[i].VID_NAME;
										innerHTML += '</li>';
	          			}
	          		}

	          		innerHTML += '</ul>';

	          		$(this.userChannelContent).update(innerHTML);

					Sortable.create(
						'videosList',
			     		{
			     			tag: 'li',
								dropOnEmpty: true,
			     			containment: ['videosList', 'channelList'],
			     			overlap: 'horizontal',
			     			constraint: false,
			     			onChange: function() {

			     				VG_myChannelItems = Sortable.serialize('channelList');
			     			}
			     		}
			     	);

			   		Sortable.create(
			   			'channelList',
			     		{
			     			tag: 'li',
								dropOnEmpty: true,
			     			containment: ['videosList', 'channelList'],
			     			overlap: 'horizontal',
								constraint: false,
			     			handle: 'handle',
			     			onChange: function() {

			     				VG_myChannelItems = Sortable.serialize('channelList');
			     			}
			     		}
			     	);
			     	VG_myChannelItems = Sortable.serialize('channelList');

	    		}.bind(this)
			}
		);
	},

	saveChannel : function () {

		var query = '?request_type=save_channel&id=' + this.ChannelId;

		query += '&' + VG_myChannelItems;

		new Ajax.Request (
	        '/uchmanagedata',
	        {
				method: 'POST',
				parameters: query,
				onComplete: function (req, json) {

					eval('var ret=' + req.responseText);

					if (ret.success == 1) {
						TVInterface.showAlert('Lista filmów zapisana.');
					} else {
						TVInterface.showAlert('Podczas zapisu wystąpił błąd!.');
					}
				}
	        }
		);
	}
}


var VG_smallChannelVideos = Class.create();

VG_smallChannelVideos.prototype = {

	initialize : function(contentId, channelId) {

		this.channelId = channelId;
		this.contentId = contentId;

		var url = '/action_small_channel_videos,channelId,' + channelId;

		new Ajax.Request (
			url,
			{
				method: 'GET',
				parameters: '',
				onComplete: function(req, json) {

					eval('var ret=' + req.responseText);
					this.videos = ret;
					this.videosCount = ret.length;
					this.renderHTML(0);

				}.bind(this)
			}
		)
	},

	renderHTML : function(positionId) {

		var innerHTML = '';

		var index = 0;

		var forIndex = 0;

		for (i = positionId -1 ; i < positionId + 2 ; i++) {

			index = i;

			if (index < 0) { index = this.videosCount - index - 2;}
			if (index >= this.videosCount) { index = 0;}

			if (this.videos[index]) {

				if (forIndex == 1) {

					innerHTML += '<div style="border:4px solid #000; float: left; width:160px; height:140px; margin:2px">';
					innerHTML += '<img src="' + this.videos[index].VID_CLAP_IMAGE + '" id="' + this.videos[index].VID_CLAP_IMAGE + '"/>';
					innerHTML += '<div style="text-align: center">';
					innerHTML += this.videos[index].VID_NAME;
					innerHTML += '</div>';
				} else {

					innerHTML += '<div style="border:4px solid #000; float: left; width:110px; height:82px; margin-top: 20px">';
					innerHTML += '<img src="' + this.videos[index].VID_CLAP_IMAGE + '" id="' + this.videos[index].VID_CLAP_IMAGE + '" style="width:110px; cursor: pointer"/>';

				}
				innerHTML += '</div>';
			}
			forIndex++;
		}

		$(this.contentId).update(innerHTML);

		$$('#' + this.contentId +' img').each(

			function (v,i) {

				Event.observe(v,'click',
					function (event) {

						var obj = Event.element(event);
						this.changePosition(obj.id);

					}.bindAsEventListener(this)
				);
			}.bind(this)
		);
	},

	changePosition : function(imgSrc) {

		var positionId = 0;


		this.videos.each(

			function(v, i) {

				if (v.VID_CLAP_IMAGE == imgSrc) {

					this.renderHTML(v.INDEX);
				}
			}.bind(this)
		)
	}
}



var VG_userMessages = Class.create();

VG_userMessages.prototype = {

	initialize : function(contentId, contentType) {

		this.contentId = contentId;

		this.getMessages(contentType, 0);
	},

	changeFolder : function(contentType) {

		this.getMessages(contentType, 0);
		this.renderContent();
		this.renderNavigation();
	},

	getMessages : function(contentType, pageId) {

		this.contentType = contentType;

		var url = '/action_user_messages,' +
				  'request_type,show_folder,' +
				  'contentType,' + contentType + ',' +
				  'page,' + pageId;

		new Ajax.Request (
			url,
			{
				method: 'GET',
				parameters: '',
				onComplete: function(req, json) {

					eval('var ret=' + req.responseText);

					this.requestResult = ret;
					this.renderContent();
					this.renderNavigation();

				}.bind(this)
			}
		)
	},


// Nawigacja,
	renderNavigation : function() {

		var selectFolder = true;
		var innerHTML = '';

		innerHTML += '<div class="container"><div' + (this.contentType == 'INCOMING' ? ' class="selected"' : '') + '>';

		if (this.contentType != 'INCOMING' || selectFolder) {

			innerHTML += '<a href="#" id="menuIncoming">Odebrane</a>';
		} else {

			innerHTML += 'Odebrane';
		}
		innerHTML += ' (' +
					 this.requestResult.folders.incoming_new + '/' +
					 this.requestResult.folders.incoming +
					 ')' +
					 '</div>';


		innerHTML += '<div' + (this.contentType == 'SENDED' ? ' class="selected"' : '') + '>';
		if (this.contentType != 'SENDED' || selectFolder) {

			innerHTML += '<a href="#" id="menuSended">Wysłane</a>';
		} else {

			innerHTML += 'Wysłane';
		}
		innerHTML += ' (' +
					 this.requestResult.folders.sended +
					 ')</div>';

		/*innerHTML += '<div>';
		if (this.contentType != 'WORK' || selectFolder) {

			innerHTML += '<a href="#" id="menuWork">Kopie robocze</a>';
		} else {

			innerHTML += 'Kopie robocze';
		}
		innerHTML += ' (' +
					 this.requestResult.folders.work +
					 ')</div>';
		*/

		innerHTML += '<div' + (this.contentType == 'TRASH' ? ' class="selected"' : '') + '>';
		if (this.contentType != 'TRASH' || selectFolder) {

			innerHTML += '<a href="#" id="menuTrash">Kosz</a>';
		} else {

			innerHTML += 'Kosz';
		}
		innerHTML += ' (' +
					 this.requestResult.folders.trash +
					 ')</div>';

		innerHTML += '</div><div class="buttons">' +
					 '<a href="#" id="menuNew">' +
					 'Napisz wiadomość' +
					 '</a>' +
					 '</div>';

		$('msgNavigation').update(innerHTML);

		if ($('menuIncoming')) $('menuIncoming').onclick = (function() { this.changeFolder('INCOMING'); return false; }.bind(this));
		if ($('menuSended')) $('menuSended').onclick = (function() { this.changeFolder('SENDED'); return false; }.bind(this));
		//if ($('menuWork')) $('menuWork').onclick = (function() { this.changeFolder('WORK'); return false; }.bind(this));
		if ($('menuTrash')) $('menuTrash').onclick = (function() { this.changeFolder('TRASH'); return false; }.bind(this));
		if ($('menuNew')) $('menuNew').onclick = (function() { this.showNewMessageForm(); return false; }.bind(this));
	},

	renderList : function() {

		var innerHTML = '';

		if (this.requestResult.messages.items_count && this.requestResult.messages.items_count > 0) {

			innerHTML += '<form method="post" action="/" id="messagesForm">';

			innerHTML += '<div id="messagesItems">';

			var items = this.requestResult.messages.items;

			innerHTML += '<table>' +
							'<thead>' +
								'<th class="first">' +
								'&nbsp;' +
								'</th>' +
								'<th>' +
									((this.contentType != 'SENDED') ? 'Nadawca' : 'Odbiorca') +
								'</th>' +
								'<th>' +
									'Tytuł wiadomości' +
								'</th>' +
							'</thead>';

			for (i = 0 ;  i < this.requestResult.messages.items_count ; i++) {

				innerHTML += '<tr>' +
								'<td>' +
								'<input type="checkbox" name="umsCheck[]" value="' + items[i].UMS_ID + '">' +
								'</td>' +
								'<td>' +
									items[i].USR_NAME +
								'</td>' +
								'<td>' +
									'<a href="/?umsId=' + items[i].UMS_ID + '">' +
										(items[i].MSG_TITLE != '' ? items[i].MSG_TITLE : '&lt;brak tematu&gt;') +
									'</a>' +
								'</td>' +
							'</tr>';
			}

			innerHTML += '</table>';

			innerHTML += '</div>';

			if (this.requestResult.messages.items_page_bar.numbers) {

				var numbers = this.requestResult.messages.items_page_bar.numbers;

				innerHTML += '<div id="msgPageBar" style="text-align: center">';

				for (i = 0 ; i < numbers.length ; i++) {

					if (numbers[i].url) {

						innerHTML += '&nbsp;<a href="/?page=' + numbers[i].id + '">' + numbers[i].label + '</a>&nbsp;';
					} else {

						innerHTML += '&nbsp;<b>' + numbers[i].label + '</b>&nbsp;';
					}
				}

				innerHTML += '</div>';
			}


			innerHTML += '<div class="buttons">';
			innerHTML += '<a href="#" id="submitDropMessages" class="del">Usuń wybrane</a>';
			innerHTML += '</div>';

			innerHTML += '</form>';

		} else {

			innerHTML += '<div style="margin:20px; text-align: center">Wybrany folder jest pusty</div>';
		}

		$('msgContent').update(innerHTML);


		if ($('submitDropMessages')) {

			$('submitDropMessages').onclick = function () {

				var query = Form.serialize($('messagesForm'),'true');

				var url = '/action_user_messages,' +
						  'request_type,drop_messages,' +
						  'contentType,' + this.contentType;

				new Ajax.Request (
					url,
					{
						method: 'POST',
						parameters: query,
						onComplete: function(req, json) {

							this.getMessages(this.contentType, 0);

						}.bind(this)
					}
				)
				return false;

			}.bind(this);
		}

		$$('#msgPageBar a').each(

			function(v, i ) {

				v.onclick = function (e) {

					var obj = Event.element(e);

					this.getMessages(this.contentType, obj.href.toQueryParams().page);

					return false;

				}.bind(this)

			}.bind(this)
		);
		$$('#messagesItems a').each(

			function(v, i ) {

				v.onclick = function (e) {

					var obj = Event.element(e);

					var queryParams = obj.href.toQueryParams();

					if (queryParams.umsId && queryParams.umsId > 0) {

						this.getMessag(queryParams.umsId);
					}
					return false;

				}.bind(this)

			}.bind(this)
		);

	},

	getMessag : function (umsId) {

		var query = 'umsId=' + umsId;

		var url = '/action_user_messages,' +
				  'request_type,show_message,' +
				  'contentType,' + this.contentType;

		new Ajax.Request (
			url,
			{
				method: 'POST',
				parameters: query,
				onComplete: function(req, json) {

					eval('var ret=' + req.responseText);

					if (ret.message) {

						var innerHTML = '<div id="msgContentTblCnt"><table cellspacing="5" id="msgContentTbl">';

						innerHTML += '<tr>';
						innerHTML += 	'<th align="right" valign="top">';
						innerHTML += 		'Nadawca:';
						innerHTML += 	'</th>';
						innerHTML += 	'<td>';
						innerHTML += 		ret.message.USR_NAME;
						innerHTML += 	'</td>';
						innerHTML += '</tr>';
						innerHTML += '<tr>';
						innerHTML += 	'<th align="right" valign="top">';
						innerHTML += 		'Tytuł:';
						innerHTML += 	'</th>';
						innerHTML += 	'<td>';
						innerHTML += 		ret.message.MSG_TITLE;
						innerHTML += 	'</td>';
						innerHTML += '</tr>';
						innerHTML += '<tr>';
						innerHTML += 	'<th align="right" valign="top">';
						innerHTML += 		'Treść:';
						innerHTML += 	'</th>';
						innerHTML += 	'<td>';
						innerHTML += 		ret.message.MSG_BODY;
						innerHTML += 	'</td>';
						innerHTML += '</tr>';

						innerHTML += '</table></div>';

						$('msgContent').update(innerHTML);
					}

				}.bind(this)
			}
		)
		return false;

		console.log(umsId);
	},

	showNewMessageForm : function () {

		this.contentType = 'NEW';

		var innerHTML = '';

		innerHTML += '<form method="post" action="" id="newMessageForm" onsubmit="return false"><div><div>';
		innerHTML += '<table>';
		innerHTML += '<tr>';
		innerHTML += '<td valign="top">';
		innerHTML += '<label for="msg_from">Do:</label>';
		innerHTML += '</td>';
		innerHTML += '<td>';
		innerHTML += '<input type="text" class="input" name="msg_from" id="msg_from" />';
		innerHTML += '</td>';
		innerHTML += '</tr>';
		innerHTML += '<tr>';
		innerHTML += '<td valign="top">';
		innerHTML += '<label for="msg_subject">Temat:</label>';
		innerHTML += '</td>';
		innerHTML += '<td>';
		innerHTML += '<input type="text" class="input" name="msg_subject" id="msg_subject"/>';
		innerHTML += '</td>';
		innerHTML += '</tr>';
		innerHTML += '<tr>';
		innerHTML += '<td valign="top">';
		innerHTML += '<label for="msg_body">Treść:</label>';
		innerHTML += '</td>';
		innerHTML += '<td>';
		innerHTML += '<textarea name="msg_body" id="msg_body"></textarea>';
		innerHTML += '</td>';
		innerHTML += '</tr>';
		innerHTML += '</table>';
		innerHTML += '</div><input type="submit" value="Wyślij" class="submit" /></div></form>';

		$('msgContent').update(innerHTML);

		$('newMessageForm').onsubmit = function () {

			var query = Form.serialize($('newMessageForm'),'true');

			var url = '/action_user_messages,' +
					  'request_type,send_message';
			TVInterface.showLoader();
			new Ajax.Request (
				url,
				{
					method: 'POST',
					parameters: query,
					onComplete: function(req, json) {

						eval('var ret=' + req.responseText);
						TVInterface.hideLoader();
						if (ret.msg_id && ret.msg_id > 0) {
							TVInterface.showAlert('Wiadomość wysłana.');
							this.getMessages('INCOMING', 0);
						} else {
							TVInterface.showAlert('Podczas wysyłania wiadomości wystąpił błąd.');
						}

					}.bind(this)
				}
			)
			return false;

		}.bind(this);
	},

	renderContent : function() {

		var innerHTML = '';

		innerHTML += '<div>';
		innerHTML += '<div id="msgNavigation">';
		innerHTML += '</div>';
		innerHTML += '<div id="msgContent">';
		innerHTML += '</div>';
		innerHTML += '</div>';

		$(this.contentId).update(innerHTML);

		this.renderList();
	}
}

function getCookie(n) {
	var r=null,a=n+"=",b=a.length,c=document.cookie,l=c.length,i=0,j,e;while(i<l){j=i+b;if(c.substring(i,j)==a){e=c.indexOf(";",j);if(e==-1)e=c.length;r=unescape(c.substring(j,e));break;}i=c.indexOf(" ",i)+1;if(i==0)break;}return r;
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function checkIfLoggedIn() {
	return getCookie('USR_NAME');
}

function stopEvent(e) { 
	if (!e) var e = window.event; 
	e.cancelBubble = true; 
	if (e.stopPropagation) e.stopPropagation(); 
}

function do_maximizePlayer() { // powieksza okno playera do pelnego ekranu
	if(document.all && navigator.userAgent.toLowerCase().indexOf('opera')==-1) {
		$('bodyElement').className = 'noscroll';
		$('maincontainer').className = 'fullscreen noscroll';
		if (typeof document.body.style.maxHeight == "undefined") $('maincontainer').insertBefore($('playerContainer'), $('header'));
		$('playerContainer').className = 'fullscreen';
		$('maincontainer').style.height = '100%';
	} else {
		$('playerContainer').className = 'fullscreen';
	}
	$('header').hide();
	$('rightbox').hide();
	//document.getElementById('addBanner').style.display = 'none';
	window.scrollTo(0, 0);
}

function do_minimizePlayer() { // przywraca standardowy rozmiar playera
	if(document.all && navigator.userAgent.toLowerCase().indexOf('opera')==-1) {
		if (typeof document.body.style.maxHeight == "undefined") $('playerExtContainer').appendChild($('playerContainer'));
		$('bodyElement').className = '';
		$('maincontainer').className = '';
		$('playerContainer').className = '';
		$('maincontainer').style.height = 'auto';
	} else {
		$('playerContainer').className = '';
	}
	$('header').show();
	$('rightbox').show();
}
