var C={

	_init_: function(){
		if(typeof sIFR == "function"){
			sIFR.replaceElement(named({sSelector:'#h2sifr h2', sFlashSrc:'/img/arialbold.swf', sColor:'#ffffff', sBgColor:'#d62828', sCase:'upper'}));
			sIFR.replaceElement(named({sSelector:'#h3sifr h3', sFlashSrc:'/img/arialbold.swf', sColor:'#ffffff', sBgColor:'#d62828', sCase:'upper'}));
			sIFR.replaceElement(named({sSelector:'#menu2 li.active', sFlashSrc:'/img/arialbold.swf', sLinkColor:'#000000', sBgColor:'#ffffff', sCase:'upper'}));
			sIFR.replaceElement(named({sSelector:'#menu2 li', sFlashSrc:'/img/arialbold.swf', sLinkColor:'#d62828', sBgColor:'#ffffff', sCase:'upper'}));
		}
		//перепозиционируем баннеры
		C.try2moveBanners();
		//форматируем таблицы
		C.parseTables();
		//рисуем закладки для редактирования карточки "клубня"
		C.memberDrawEditTabs();
		//скрываем лишние формы в личном кабинете участника конкурса
		C.competitors.init();
	},

	loginFocus: function(elem){
		if(elem.value=='логин'){elem.value=''}
	},

	loginBlur: function(elem){
		if(elem.value==''){elem.value='логин'}
	},

	passwdFocus: function(elem){
		//меняем <input type="text"> на <input type="password">
		var input_name=jQuery(elem).attr('name');
		var new_elem=jQuery('<input type="password" name="'+input_name+'" onblur="C.passwdBlur(this)">').insertBefore(elem).get(0);
		jQuery(elem).remove();
		new_elem.focus();
	},

	passwdBlur: function(elem){
		if(!elem.value){
			//меняем <input type="password"> на <input type="text">
			var input_name=jQuery(elem).attr('name');
			var new_elem=jQuery('<input type="text" name="'+input_name+'" value="пароль" onfocus="C.passwdFocus(this)">').insertBefore(elem).get(0);
			jQuery(elem).remove();
		}
	},

	subscribeFocus: function(elem){
		if(elem.value=='ваш e-mail'){elem.value=''}
	},

	subscribeBlur: function(elem){
		if(elem.value==''){elem.value='ваш e-mail'}
	},

	showHideAnswer: function(id){
		var answer=jQuery('#answer'+id).get(0);
		if(answer.offsetHeight>0){
			jQuery(answer).hide("fast");
		}else{
			jQuery(answer).show("normal");
		}
	},

	try2moveBanners: function(){
		if(!U.gbi('banners')){return;}
		//передвигаем баннеры
		var banners_top=U.gbi('banners').offsetTop;
		var banners_height=U.gbi('banners').offsetHeight;
		var page_height=U.gbi('contentBlock').offsetHeight+U.gbi('contentBlock').offsetTop;
		var top=page_height - banners_top - banners_height;
		if(top>1){
			jQuery('#banners').css('top',top);
			//если баннеры передвинуты, то нужно увеличить размер правой колонки
			var cb_height=U.gbi('contentBlock').offsetHeight;
			jQuery('#contentBlock>.rcol').height(cb_height);
		}
	},

	parseTables: function(){
		jQuery('.contentZone table').each(function(){//перебираем таблицы, расположенные внутри контейнера class="contentZone"
			if(jQuery(this).get(0).className.search(/no-parse/)<0){//пропускаем таблицы с классом no-parse
				C.parseTable(this);
				jQuery(this).addClass('parsed');
			}
		});
	},
	
	parseTable: function(table){
		//
		// в первой части мы исследуем таблиц, 
		// узнаем ее параметры
		// в частности мы создаем матрицу таблицы -
		// одномерный массив, каждый элемент которого
		// это число, равное количеству ячеек в столбце
		//
		var matrix=[];//матрица ячеек
		var line=1;//текущая строка
		var mxc=1;//max colspan
		var mxr=1;//max rowspan
		jQuery('tr',table).each(function(){//перебираем строки
			var cells=jQuery('th,td',this).get();//получаем массив ячеек строки
			var index=0;//текущий столбец
			for(var i=0;i<cells.length;i++){//перебираем ячейки
				if(line==1)mxr=(mxr<rowspan)?rowspan:mxr;//отыскиваем максимальный rowspan в первой строке, чтобы знать высоту заголовка страницы
				var rowspan=( parseInt(jQuery(cells[i]).attr('rowspan')) || 1 );//устанавливаем rowspan ячейки или 1
				var colspan=( parseInt(jQuery(cells[i]).attr('colspan')) || 1 );//устанавливаем colspan ячейки или 1
				for(var j=0;j<colspan;j++){//перебираем colspan
					while((matrix[index] || 0)>=line)index++;//двигаемся по матрице вправо пока не найдем незанятую ячейку
					if(index==0)mxc=(mxc<colspan)?colspan:mxc;//отыскиваем максимальный colspan в первой колонке, чтобы знать ширину заголовка таблицы
					matrix[index]=(matrix[index] || 0) + rowspan;//заполняем матрицу ячейками
					index++;
				}
			}
			line++;
		})

		var matrix_height=0;//определяем высоту таблицы
		for(var i=0;i<matrix.length;i++)matrix_height=(matrix[i]>matrix_height)?matrix[i]:matrix_height;
		var matrix_width=matrix.length;//определяем ширину таблицы

		//
		// во второй части (которая идентична первой механизмом перебора строк и ячеек,
		// поэтому код не повторяет комментариев) мы устанавливаем ячейкам 
		// необходимые атрибуты на основе полученных о таблице сведений
		//
		var matrix=[];
		var line=1;
		jQuery('tr',table).each(function(){
			var cells=jQuery('th,td',this).get();
			var index=0;
			for(var i=0;i<cells.length;i++){
				var rowspan=( parseInt(jQuery(cells[i]).attr('rowspan')) || 1 );
				var colspan=( parseInt(jQuery(cells[i]).attr('colspan')) || 1 );
				jQuery(this).addClass('row'+line);
				jQuery(this).addClass((line%2==0)?'even':'odd');
				jQuery(cells[i]).addClass('col'+(index+1));
				for(var j=0;j<colspan;j++){
					while((matrix[index] || 0)>=line)index++;
					matrix[index]=(matrix[index] || 0) + rowspan;
					if(line==1)jQuery(cells[i]).addClass('top');//всем верхним ячейкам добавляем класс "top"
					if((index+1)==matrix_width)jQuery(cells[i]).addClass('right');//всем правым "right"
					if(matrix[index]==matrix_height)jQuery(cells[i]).addClass('bottom');//всем нижним "bottom"
					if(index==0)jQuery(cells[i]).addClass('left');//всем левым ячейкам добавляем класс "left"
					if(matrix[index]<=mxr)jQuery(cells[i]).addClass('headrow');//всем ячейкам в составе горизонтального (или верхнего) заголовка таблицы добавляем класс "headrow"
					if((index+colspan)<=mxc)jQuery(cells[i]).addClass('headcol');//всем ячейкам в составе вертикального (или левого) заголовка таблицы - класс "headrow"
					index++;
				}
			}
			line++;
		})
	},

	memberTry2save: function(id){
		if(window.FCKeditorAPI){
			var oEditor=FCKeditorAPI.GetInstance('members[body]'); 
			var body=oEditor.GetXHTML("html");//alert(body); return false;
		}else{
			var body=document.forms['memberEditForm'].elements['members[body]'].value;
		}
		var hash={
			ajax: 2,
			action: 'memberedit',
			'members[body]': body
		};
		jQuery('#ajaxloader span').css('visibility','visible');
		$.post('./member'+id+'.html',hash,function(data){
			jQuery('#membersBody').empty().append(data);
			jQuery('#ajaxloader span').css('visibility','hidden');
			//переключаем в режим просмотра
			C.memberSwitchToView();
		});
		return false;
	},

	memberDrawEditTabs: function(){
		matches=location.href.match(/member(\d+)\.html$/);
		if(matches && matches[1]){
			$.getJSON('/_scripts/member_check_session.php',{json:1,mid:matches[1]},function(json){
				if(json && typeof json.logged){
					//пользователь авторизован и находится на своей странице
					//рисуем закладки
					jQuery('<p id="viewEditTabs"></p>').prependTo('#member');
					//переключаемся в редактирование
					C.memberSwitchToEdit();
				}
			});
		}
	},

	memberSwitchToEdit: function(){
		jQuery('#viewEditTabs').empty().append('<span class="view"><a href="javascript:C.memberSwitchToView()">смотреть</a></span><span class="edit"><b>редактировать</b></span>');
		jQuery('#memberBodyBox').hide();
		jQuery('#memberEditForm').show();
	},

	memberSwitchToView: function(){
		jQuery('#viewEditTabs').empty().append('<span class="view"><b>смотреть</b></span><span class="edit"><a href="javascript:C.memberSwitchToEdit()">редактировать</a></span>');
		jQuery('#memberBodyBox').show();
		jQuery('#memberEditForm').hide();
	},

	competitors: {
		init: function(){
			var $logreg=$('#competitorsLogreg');
			if(!$logreg.length){return;}
			$logreg.children('div').each(function(i){
				//формируем ссылки скрыть показать
				var $h4=$(this).children('h4').wrapInner(
					$('<a></a>').attr({href:'#'})
				);
				$h4.children('a').bind('click',function(event){
					event.preventDefault();
					$(this).parent().next('form').slideToggle('fast').parent().toggleClass('shown');
				});
				//скрываем вторую и третью формы
				if(!$(this).is('div.shown')){
					$(this).children('form').slideUp();
				}
			});
		}
	},

	_f: function(){
	}
}