var defaultParam;

function initTags(){
	$('input.tags').unbind();
	$('input.tags').autocomplete("/tags_list.php", {
		width: 358,
		max: 10,
		//highlight: false,
		selectFirst: false,
		multiple: true,
		multipleSeparator: ", ",
		scroll: true,
		scrollHeight: 300
	});	
}

var monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function generateDays(obj){
	var days = 0, selected = 0;
	var dayElement = $(".day",obj), yearElement = $(".year",obj), monthElement = $(".month",obj);
	
	monthLength[1] = 28;
	if ($(yearElement).attr('value') % 4 == 0)
		monthLength[1] = 29;

	selected = $(dayElement).attr('selectedIndex');
	$('option',dayElement).remove();

	days = monthLength[$(monthElement).attr('value') - 1];

	for (i = 1; i <= days; i++)
		$(dayElement).append('<option value="'+i+'">'+i+'</option>');

	if (selected < days)
		$('option',dayElement).eq(selected).attr('selected',true);
	 
}

ids = new Array;
interval = new Array;
curImage = new Array;

$(document).ready(function(){
	if($('object').length){
		var player = "/uflvplayer.swf";
		$('object').each(function(){
			var name = $(this).attr('data');
			var ext = (name.split('.')).pop();
			if(ext=="flv"){
				var w = $(this).attr('width');
				var h = $(this).attr('height');
				//$(this).attr('data',"/include/tiny_mce/plugins/media/img/flv_player.swf?flvToPlay="+name);
				$(this).attr('data',player);
				var s = "";
				s += '<param name="bgcolor" value="#FFFFFF" />';
				s += '<param name="allowFullScreen" value="true" />';
				s += '<param name="allowScriptAccess" value="always" />';
				s += '<param name="movie" value="/uflvplayer.swf" />';
				s += '<param name="FlashVars" value="way='+name+'&amp;swf='+player+'&amp;w='+w+'&amp;h='+h+'&amp;autoplay=1&amp;tools=1&amp;skin=white&amp;volume=70&amp;q=1" />';
				//alert($(this).tagName());
				$(this).before('<object width="'+w+'" height="'+h+'" data="'+player+'" type="application/x-shockwave-flash">'+s+'</object>');
				$(this).remove();
			}
		});
	}
	if($('.carusel').length&&$('.carusel li').length>5){
    	$(".carusel").jCarouselLite({
			btnNext: ".next",
			btnPrev: ".prev",
			//scroll: 1,
			inverse:false,
			auto: 2000,
			visible: 5,
			speed: 800/*,
			circular: false*/
		});
	}
	$('.pole').live('focus',function(){
		if($(this).attr('default')){
			if($(this).attr('value')==$(this).attr('default'))$(this).attr('value','');
		}
	});
	$('.pole').live('blur',function(){
		if($(this).attr('default')){
			if($(this).attr('value')=='')$(this).attr('value',$(this).attr('default'));
		}
	});
	if($('#all').length&&($('#all .highslide').length||$('#all #preview').length)&&!$('.upload.video').length){
		hs.graphicsDir = '/include/highslide/graphics/';
		if($('.highslide').length){
			if($('.highslide').length>1){
				initGalleryHighslide();
			}
			$('.highslide').each(function() {
				this.onclick = function() {
					return hs.expand(this);
				};
			});
			/*$('.highslide').click(function() {
				return hs.expand(this);
			});*/
		}
		//if($(".tags").length>0){
			//alert('ok');
		//	initTags();
		//}
	}
});

$(document).ready(function(){
	$('.commentform .save').live('click', function(){
		var ok = 1;
		div = $(".commentform");
		var parent = 0;
		vars = new Array;
		var post = "";
		$('.pole',div).each(function(){
			if($(this).is('.required')){
				if($(this).attr("default")&&$(this).attr("default")==$(this).attr("value")||$(this).attr("value")==""){
					$(this).addClass('error');
					alert('Заполните необходимые поля');
					ok = false;
					return false;
				}
			}
			vars[$(this).attr("name")] = $(this).attr("value");
			post += (post?'&':'') + $(this).attr("name") + '=' + $(this).attr("value"); 
		});
		/*if(!Check_mail(vars['comemail'])&&ok){
			$('#comemail').addClass('error');
			alert('Неверный E-mail');	
			ok = false;
			return false;
		}*/
		if(ok){
			apdiv = $('.comments');
			var type = $(apdiv).attr("name");
			$(div).prepend('<div class="loading"></div>');
			$(div).find('.loading').fadeIn(300);
			$.post(
				"/comment.php",
				post + '&type=' + type, 
				function(data){
					$(".comments").html(data);
					//tyni_init_comment('#comtext');
					$('.loading').fadeOut(300);
				}
			);
		}
		return false;
	});
	$('.ask').live('click', function(){
		$('.bg').css("display","block").animate( {opacity: 0.5 } , 500 );
		$('form','.faqform').css('display','block');
		$('.info').empty();
		$('.error').empty();
		$('.faqform').animate( { top:'20%', left:'35%', opacity: "show" } , 300 );
		return false;
	});
	$('.close').live('click', function(){
		$('.bg').fadeOut(200,function(){$(this).animate( {opacity: 0 })});
		$('.faqform').fadeOut(200);
		if($(this).attr('tagName')=="A")return false;
	});
	$('.faqform .save').live('click', function(){
		var ok = 1;
		div = $(".faqform");
		var parent = 0;
		vars = new Array;
		var post = "";
		$('.pole',div).each(function(){
			if($(this).is('.required')){
				if($(this).attr("default")&&$(this).attr("default")==$(this).attr("value")||$(this).attr("value")==""){
					$(this).addClass('error');
					alert('Заполните необходимые поля');
					ok = false;
					return false;
				}
			}
			vars[$(this).attr("name")] = $(this).attr("value");
			post += (post?'&':'') + $(this).attr("name") + '=' + $(this).attr("value"); 
		});
		if(!Check_mail(vars['comemail'])&&ok){
			$('#comemail').addClass('error');
			alert('Неверный E-mail');	
			ok = false;
			return false;
		}
		if(ok){
			apdiv = $('.comments');
			var type = $(apdiv).attr("name");
			$(div).prepend('<div class="loading"></div>');
			$(div).find('.loading').fadeIn(300);
			$.post(
				"/faq.php",
				post, 
				function(data){
					$(".comments").html(data);
					div = $(".faqform");
					$(div).fadeIn().css('left','35%').css('top','20%');
					if($("p.info").length){
						$('form',div).css('display','none');
						var elem = $('p.info');
						$('.faqin',div).prepend($(elem).clone());
						$(elem).empty().remove();
						$(div).fadeOut(3000);
						$('.bg').fadeOut(3000);
						
					}
					if($("p.error").length){
						//alert($('.error').html());
						var elem = $('p.error');
						$('.faqin',div).prepend($(elem).clone());
						$(elem).empty().remove();
					}
					//tyni_init_comment('#comtext');
					$('.loading').fadeOut(300);
				}
			);
		}
		return false;
	});
	$('.pole').live('focus',function(){
		$(this).removeClass("error");
		if($(this).attr('default')){
			if($(this).attr('value')==$(this).attr('default'))$(this).attr('value','');
		}
	});
	$('.pole').live('blur',function(){
		if($(this).attr('default')){
			if($(this).attr('value')=='')$(this).attr('value',$(this).attr('default'));
		}
	});
	$('.comments .del').live('click', function(){
		apdiv = $('.comments');
		var type = $(apdiv).attr("name");
		div = $(this).parent();
		id = $('.title a',div).attr('name');
		id = (id.split('-')).pop();
		if(id){
			$.get(
				"/"+(type=='faq'?"faq":"comment")+".php?type="+type+"&del="+id,
				function(data){
					if(!data)$(div).slideUp();
						else alert(data);
				}
			);
		}else alert("Ошибка удаления!");
		return false;
	});
});

$(document).ready(function(){
	$(".del").click(function (){
		return confirm("Вы действительно хотите удалить указанную информацию?");
	});
	if($("#main #tags").length>0){
		initTags();
	}
	if($('.preview img').length>0){
		$('.preview').hover(
			function() {
				$('img',this).show();
			},
			function() {
				$('img',this).hide();
			}
		);
	}
	if($(".multicat").length>0){
		$('.multicat li:has("ul")').addClass('subcat');
		$('.multicat li:has("ul")').prepend('<span></span>');
		$('.multicat ul:has("input:checked")').slideToggle(300);
		$('.multicat ul:has("input:checked")').parent('li').find('span:first').toggleClass('open');
		$('.multi a').click(function () {
			$(this).parent().find('.multicat').slideToggle(300);
			if($(this).text()=="показать")$(this).text('спрятать');
				else $(this).text('показать');
			return false;
		});
		$('.multicat span').click(function () {
			$('ul:first',this.parentNode).slideToggle(300);
			$(this).toggleClass('open');
		});
		// огранечение отмеченых пунктов
		/*$('.multicat input:checkbox').click(function () {
			var count = $('.multicat input:checked').length;
			if(count<=4){
				$('#subcount strong').html(count-1);
			}else{
				this.checked=false;
				count = $('.multicat input:checked').length;
				$('#subcount strong').html((count>3)?'<b>'+(count-1)+'</b>':(count-1));
			}
		});*/
	}
	var oldLink = "";
	if($("#link").length>0&&$("#module").length>0){
		oldLink = $("#link").attr('value');
		$("#module").change(function () {
			if($("#module option:selected").attr('value')){
				$("#link").attr('value',$("#module option:selected").attr('value'))
				$("#link").attr("disabled","disabled");
			}else{
				$("#link").attr("disabled",false);
				$("#link").attr('value',oldLink);
			}
		})
		.change();
	}
});


$(document).ready(function(){
	setInterval(function(){
		if($('.new').css('display')=="none"){
			if($.browser.msie)$('.new').show();
				else $('.new').fadeIn('slow');
		}else{
			if($.browser.msie)$('.new').hide();
				else $('.new').fadeOut('slow');
		}
		//alert('ok');
	}, 1000);
	$('#mm > li').hover(
        function() {
            $(this).find('a:first').addClass("active");
            $(this).find('ul').stop(true, true).slideDown();
        },
        function() {
            $(this).find('a:first').removeClass("active");
            $(this).find('ul').slideUp('fast');
        }
    );

});

$(document).ready(function () {
	$('.hide').click(
        function() {
        	$(this).parent().slideUp();
			return false;
        }
    );
	if($('#multicat').length){
		$('#multicat li:has("ul")').find('a:first').addClass('subcat');
		//$('#multicat li:has("ul")').prepend('<span></span>');
		$('#multicat ul:has("a.act")').slideToggle(300);
		$('#multicat ul:has("a.act")').parent('li').find('a:first').toggleClass('open');
		a = $('#multicat li:has("ul")').find('a:first');
		$(a).click(function () {
			$('ul:first',this.parentNode).slideToggle(300);
			$(this).toggleClass('open');
			return false;
		});
		/*$('#multicat span').click(function () {
			$('ul:first',this.parentNode).slideToggle(300);
			$(this).toggleClass('open');
		});*/
	}
});

function setCookie(name, value, expiredays, path, domain, secure) {
   if (expiredays) {
      var exdate=new Date();
      exdate.setDate(exdate.getDate()+expiredays);
      var expires = exdate.toGMTString();
   }
   document.cookie = name + "=" + escape(value) +
   ((expiredays) ? "; expires=" + expires : "") +
   ((path) ? "; path=" + path : "") +
   ((domain) ? "; domain=" + domain : "") +
   ((secure) ? "; secure" : "");
}

function getCookie(name) {
	var prefix = name + "="
	var cookieStartIndex = document.cookie.indexOf(prefix)
	if (cookieStartIndex == -1)	return null
	var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
	if (cookieEndIndex == -1)cookieEndIndex = document.cookie.length
	return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}

lat_table = "abvgdeziiklmnoprstufhxcyieabvgdeziiklmnoprstufhxcyie__";
kir_table = "АБВГДЕЗИЙКЛМНОПРСТУФХХЦЫІЭабвгдезийклмнопрстуфххцыіэ /";

lat_table2 = "yozhchshyuyayeyiyozhchshyuyayeyi";
kir_table2 = "ёжчшюяєїЁЖЧШЮЯЄЇ";

lat_table3 = "schsch";
kir_table3 = "Щщ";
kir_table_null = "ьъЬЪ%@№\"'+><?!«»,.()";
maxLen = 64;
function KirToLat(){
	pole_name = document.getElementById("name");
	pole_link = document.getElementById("link");
	str = pole_name.value;
	str = str.toLowerCase();
	len = pole_name.value.length;
	new_ch="";
	str2 = "";
	if(len>0){
		for(i=0; i<len; i++){ 
			ch = str.substr(i, 1);
			new_ch = ch;
			pos1 = kir_table.indexOf(ch);
			pos2 = kir_table2.indexOf(ch);
			pos3 = kir_table3.indexOf(ch);
			pos4 = kir_table_null.indexOf(ch);
			if(pos1 >= 0) new_ch = lat_table.substr(pos1,1);
			if(pos2 >= 0) new_ch = lat_table2.substr(pos2*2, 2);
			if(pos3 >= 0) new_ch = lat_table3.substr(pos3*3, 3);
			if(pos4 >= 0) new_ch = "";
			str2 += new_ch;
			if (str2.length <= maxLen) pole_link.value = str2;
				//else pole_link.value = str2;
		}
	}else pole_link.value = str;
	//pole_link.value = "ok";
	//document.send_form.mes_len.value = (maxLen - document.send_form.mes_body.value.length);
	//document.send_form.mes_body.focus();	
}

function showli(name,type){
		var elem = document.getElementById('li_'+name);
		if(elem.className == "show"){
			if(!type)$(elem).find('div.inner:first').slideUp('fast');
			elem.className = "";
		}else{
			$(elem).find('div.inner:first').load("/leftblock.php?block="+name);
			if(!type)$(elem).find('div.inner:first').slideDown();
			elem.className = "show";
		}
}

function fulltime ()	{
	var d=new Date();
	document.clock.full.value= d.toLocaleString();//d.getDay()+"."+d.getMonth()+"."+d.getYear()+"  "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
	setTimeout('fulltime()',500)
}

function checkform(name){
	str = document.add.name.value;
	if(str==""){
		alert("Заполните необходимые поля.");
		return false;
	}else return true;
}

function check(field, check){
	checkflag = check.checked;
	for (i = 0; i < field.length; i++) {
		field[i].checked = checkflag;
	}
}

function jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function show(name){
		//var elemh2 = document.getElementById("h2"+name);
		var elem = document.getElementById(name);
		if(elem.style.display == "none"){
			elem.style.display = "block";
			//elemh2.className = "";
		}else{
			elem.style.display = "none";
			//elemh2.className = "h2_hidden";
		}
}

function ishow(name){
		var elemh2 = document.getElementById("a"+name);
		var elem = document.getElementById(name);
		if(elem.style.display == "none"){
			elem.style.display = "block";
			elemh2.className = "iopen";
		}else{
			elem.style.display = "none";
			elemh2.className = "iclose";
		}
}

function showlogin(){
		var elem1 = document.getElementById("fon");
		var elem2 = document.getElementById("login_hide");
		//var elem3 = document.getElementById("idval");
		if(elem2.style.display == "none"){
			elem1.style.display = "block";
			elem2.style.display = "block";
			//if(name)elem3.value = name;
		}else{
			elem1.style.display = "none";
			elem2.style.display = "none";
			//elem3.value = "";
		}
}

function tyni_init_simple(pole2){
	tinyMCE.init({
	mode : "exact",
	elements : pole2,
	theme : "simple",
	language: "ru",
	content_css:"/images/editor.css",
	force_br_newlines: true,
	force_p_newlines: false,
	forced_root_block:''
	});
}
function tyni_init_comment(pole2){
	tinyMCE.init({
		mode : "exact",
		plugins : "style,emotions,inlinepopups,media,visualchars",
		elements : pole2,
		theme : "advanced",
		//editor_selector : "mceAdvanced",
		theme_advanced_buttons1 : "bold,italic,underline,sub,sup,fontsizeselect,forecolor,blockquote,removeformat",
		theme_advanced_buttons2 : "bullist,numlist,|,link,unlink,|,charmap,emotions,iespell,media,image",
		theme_advanced_buttons3 : "",
		theme_advanced_toolbar_location : "bottom",
		theme_advanced_toolbar_align : "center",
		language: "ru"
	});
}

function tyni_init_article(pole){
	tinyMCE.init({
		mode : "exact",
		plugins : "safari,style,emotions,inlinepopups,media,visualchars,fullscreen,table",
		elements : pole,
		theme : "advanced",
		//editor_selector : "mceAdvanced",
		theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,sub,sup,fontsizeselect,formatselect,forecolor,blockquote,removeformat",
		theme_advanced_buttons2 : "bullist,numlist,|,link,unlink,|,charmap,emotions,tablecontrols,image,fullscreen",
		theme_advanced_buttons3 : "",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "center",
		language: "en",
		content_css:"/images/editor.css",
		force_br_newlines: true,
		force_p_newlines: false,
		forced_root_block:''
	});
}

pole = "";
function tyni_init(pole){
	tinyMCE.init({
			mode : "exact",
			elements : pole,
			theme : "advanced",
			language: "ru",
			plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
	
			// Theme options
			theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
			theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,|,insertdate,inserttime,|,forecolor,backcolor",
			theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,code,fullscreen,preview",
			theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
			theme_advanced_toolbar_location : "top",
			theme_advanced_toolbar_align : "left",
			theme_advanced_statusbar_location : "bottom",
			file_browser_callback : "ajaxfilemanager",
			theme_advanced_resizing : true,
			force_br_newlines : true,
			force_p_newlines : false,
			forced_root_block : '',
			relative_urls : false, 
			remove_script_host : false,
			//cleanup: false,
			template_replace_values : {
				username : "Some User",
				staffid : "991234"
			}
		});
}
function ajaxfilemanager(field_name, url, type, win) {
			var ajaxfilemanagerurl = "../include/tiny_mce/plugins/ajaxfilemanager/ajaxfilemanager.php";
			switch (type) {
				case "image":
					break;
				case "doc":
					break;
				case "media":
					break;
				case "flash": 
					break;
				case "file":
					break;
				default:
					return false;
			}
            tinyMCE.activeEditor.windowManager.open({
                url: "../include/tiny_mce/plugins/ajaxfilemanager/ajaxfilemanager.php",
                width: 782,
                height: 440,
                inline : "yes",
                close_previous : "no"
            },{
                window : win,
                input : field_name
            });
            
		}
		
function Check_mail(value) {
	var regEmail = /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/;
	if(value.toUpperCase().match(regEmail)){
		return true;
	}else{
		return false;
	}
	
	/*reg = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
	if(value.match(reg) && value.indexOf(' ')==-1)return true;
		else return false;
*/
}

/*$(document).ready(function(){
	 
});*/
// ----------  ---------------

/* ------------------------ admin -------------------------- */

(function($) {
$(function() {

  $('ul.tabs').delegate('li:not(.current)', 'click', function() {
    $(this).addClass('current').siblings().removeClass('current')
      .parents('div.section').find('div.box').hide().eq($(this).index()).fadeIn(150);
	  return false;
  })

})
})(jQuery)

$(document).ready(function () {
	if($('.add_price').length){
		$('.addprice').click(function () {
			$('.prices').append($('.add_price:hidden').clone().fadeIn(150));
			return false;
		});
		$('.add_price .del').delegate('','click', function(){
			//alert('ok');
			$(this).parent().fadeOut(150,function(){$(this).remove()});
			return false;
		});
		
		$('.add_price .price_sel').delegate('','change', function(){
			if($('.price_sel:not(:hidden) option[value='+$(this).attr('value')+']:selected').length>1){
				alert(($(this).attr('value').indexOf('g-')+1)?'Эта группа уже выбрана':'Этот пользователь уже выбран');
				$(this).attr('value',"");
			}
		});
	}
	if($('.multisel #multicat').length){
		$('#multicat li:has("ul")').addClass('subcat').prepend('<span></span>');
		$('#multicat ul:has("input:checked")').slideToggle(300).parent('li').find('span').toggleClass('open');
		$('#multicat span').click(function () {
			$('ul:first',this.parentNode).slideToggle(300);
			$(this).toggleClass('open');
		});
	}
	if($('#multicat_admin').length){
		$('#multicat_admin li:has("ul")').addClass('subcat').prepend('<span></span>');
		$('#multicat_admin ul:has("a.act")').slideToggle(300).parent('li').find('span:first').toggleClass('open');
		/*a = $('#multicat_admin li:has("ul")').find('a:first');
		$(a).click(function () {
			$('ul:first',this.parentNode).slideToggle(300);
			$(this).parent().find('span:first').toggleClass('open');
			return false;
		});*/
		$('#multicat_admin span').click(function () {
			$('ul:first',this.parentNode).slideToggle(300);
			$(this).toggleClass('open');
		});
	}
	$('.order.details').delegate('.edit','click', function(){
		var tr = $(this).parent().parent();
		var id = $(tr).attr('name');
		id = id.replace("order_det_","");
		$(tr).find('.article').css('display','none');
		$(tr).find('.name').attr('colspan','2');		
	});
});


/*
$(document).ready(function() { 
	if($('#pid').length){
		if($('#pid').length)var path = "product.php?ajax&act=edit&sub=product&id=" + $('#pid').attr('value'); 
			else var path = "product.php?act=add&sub=product";
		var options = { 
			target:        '#base',   // target element(s) to be updated with server response 
			beforeSubmit:  bSubmit,  // pre-submit callback 
			success:       aSubmit,//showResponse  // post-submit callback 
	 
			// other available options: 
			url:       path         // override for form's 'action' attribute 
			//type:      type        // 'get' or 'post', override for form's 'method' attribute 
			//dataType:  null        // 'xml', 'script', or 'json' (expected server response type) 
			//clearForm: true        // clear all form fields after successful submit 
			//resetForm: true        // reset the form after successful submit 
	 
			// $.ajax options can be used here too, for example: 
			//timeout:   3000 
		}; 
	
		// bind form using 'ajaxForm' 
		$('#add').ajaxForm(options);
		$('.confirm_save').click(function(){
			if(confirm("Сохранить информацию?")){
				$('#add').submit();
				return false;
			}else return false;
		});
	}
}); 

function bSubmit(formData, jqForm, options) { 
var queryString = $.param(formData); 
 
    // jqForm is a jQuery object encapsulating the form element.  To access the 
    // DOM element for the form do this: 
    // var formElement = jqForm[0]; 
 
    alert('About to submit: \n\n' + queryString); 
    $('#base').html('<div class="loading">Сохранение...</div>');
    return true; 
} 

function aSubmit(){
	alert('Информация сохранена');	
}
*/
/* ------------------------- end admin ---------------------- */

