function ShowSettingsTab(a_id) {
	var id = a_id.replace('link_','');
	jQuery('a[id^=link_]').each(function(){this.style.fontWeight = 'normal'});
	jQuery('div[id^=tab_]').each(function(){this.style.display = 'none'});
	
	document.getElementById(a_id).style.fontWeight = 'bold';
	document.getElementById('tab_'+id).style.display = 'block';
}

function message_box(text,img,actions,modeless,variable) {
//actions - array of Object{text,img,func}
	if (variable==undefined) variable = 'loading-box';
	if (text==undefined) text = '';
	
	jQuery('#loading-text').html(text);
	if (img) {
		jQuery('#loading-img').html('<img src="'+img+'">').show();
	}
	if (actions!=undefined) {
		var html = '';
		for (var i=0;i<actions.length;i++)
			switch (actions[i].func) {
				case 'std_cancel':
					html += '<a onClick="'+variable+'.close()"><img class="image" src="/_admincp/_design/img/forms/btn_close.png">&nbsp;<b>'+language.mb_actCancel+'</b></a>';
				break;
				default:
					html += '<a onClick="'+actions[i].func+'">';
					if (actions[i].img) html += '<img src="'+actions[i].img+'">';
					html += '&nbsp;<strong>'+actions[i].text+'</strong>';
			}
		jQuery('#loading-actions').html(html).show();
	} else jQuery('#loading-actions').hide();
	
	ShowInPopup('loading-box',false,modeless);
}

function ShowInPopup(id,shadow,modeless) {
	if (modeless==undefined) modeless = true;
	var obj = {
		target: '#'+id,
		closeOnClick: modeless,
		closeOnEsc: modeless,
		speed: 0,
		oneInstance: false,
		absolute: (id=='loading-box' ? false : true),
		api: true
	};

	obj.expose = {
			color: '#333',
			opacity: (shadow ? 0.8 : 0),
			loadSpeed: 0,
			closeSpeed: 0,
			zIndex: (id=='loading-box' ? 9999 : 9000)
	};

	loading_layer = jQuery('#'+id).overlay(obj);
	loading_layer.load();
};

function Validate(frm) {
	var ok = true;
	frm.find('.validate').each(function() {
		var params = new Object;
		eval ('params = '+jQuery(this).attr('rel'));
		if (params.min_length==undefined) params.min_length = 0;
		if (params.max_length==undefined) params.max_length = Infinity;

		var value = this.tagName=='INPUT' ? jQuery(this).val() : jQuery(this).val();
		var err_msg = params.error;
		if (value!='')
		switch (params.type) {
			case 'text':
					ok = true;
			break;
			case 'email':
				if (!value.match(/^(\s*[\w\-\.]+\@[\w\-\.]+\.[\w]{2,5}\s*;?\s*)+$/)) {
					ok = false;
				}
			break;
			case 'datetime':
				//this regexp can be advanced with control 0-31 0-12 etc
				if (!value.match(/^[\d]{2,4}-[\d]{1,2}-[\d]{1,2}((\s[\d]{1,2}:[\d]{2})?)$/g) && !value.match(/^[\d]{1,2}.[\d]{1,2}.[\d]{2,4}((\s[\d]{1,2}:[\d]{2})?)$/g)) {
					ok = false;
				}
			break;
			case 'date':
				//this regexp can be advanced with control 0-31 0-12 etc
				if (!value.match(/^[\d]{2,4}-[\d]{1,2}-[\d]{1,2}$/g) && !value.match(/^[\d]{1,2}.[\d]{1,2}.[\d]{2,4}$/g)) {
					ok = false;
				}
			break;
			case 'decimal':
				//this regexp can be advanced with control 0-31 0-12 etc
				if (!value.match(/^([0-9\.]+)$/g)) {
					ok = false;
				}
			break;
			case 'int':
				if (!value.match(/^\d+$/)) {
					ok = false;
				}
			break;
			case 'file':
				if (!value.match(/\.(doc|docx|pdf)$/)) {
					ok = false;
				}
			break;
		}
		
		if (value=='' && params.req || value.length < params.min_length || value.length > params.max_length)
			ok = false;
		
		jQuery(this).siblings('span.err_val').remove();
		jQuery(this).removeClass('inp_text_err');
		if (!ok) {
			jQuery(this).after('<span class="err_val"><br>'+err_msg+'</span>');
			jQuery(this).addClass('inp_text_err');
			//jQuery(this).parents('form:first').find('[id^=save_]').hide();
			jQuery(this).select();	
			return false;
		} else {
			//jQuery(this).parents('form:first').find('[id^=save_]').show();
		}
	});
	return ok;
}

jQuery(document).ready(function(){

	//add element
	jQuery('a.add').live('click',function() {

		var id_node_add_to = jQuery(this).attr('rel');
		var new_tag = jQuery('[rel="'+id_node_add_to+'_new"]').clone(true);

		jQuery('#'+id_node_add_to).append(new_tag);

		var id_new_tag = new_tag.attr('id');
		var tag_prefix = id_node_add_to.replace(/\d+$/,'');

		var maxpos = 0;
		
		new_tag.siblings('[pos]').each(function(){	if (parseInt(jQuery(this).attr('pos')) > maxpos) maxpos = parseInt(jQuery(this).attr('pos')); });

		var prev = new_tag.siblings('[pos='+maxpos+']');
		
		var a;
		if (prev.attr('id') && (a = prev.attr('id').match(/([0-9]+)$/))) {
			n = parseInt(a[1],10) + 1;
		} else n = 1;
		
		new_tag.attr('id',id_new_tag+n);
		new_tag.find('[name*=[_]]').each(function() {	jQuery(this).attr('name',jQuery(this).attr('name').replace(/\[_\]/,'[_'+n+']'));	});
		new_tag.find('[id*=[_]]').each(function() {	jQuery(this).attr('id',jQuery(this).attr('id').replace(/\[_\]/,'[_'+n+']'));	});
		
		if (prev.attr('pos')) {
			new_tag.attr('pos',++maxpos);
			new_tag.find('span.pos').html(maxpos);
			
			if (new_tag.find('img[src*=Up_]').length) { 
				maxpos = 0;
				new_tag.siblings('[pos][locked!=1]').each(function(i){
					if (parseInt(jQuery(this).attr('pos')) > maxpos) maxpos = parseInt(jQuery(this).attr('pos'));
				});
				
				var prev_mov = new_tag.siblings('[pos='+maxpos+']');
				
				if (prev_mov.attr('id')) {
					prev_mov.find('img[src*=Down_]').attr('src',prev_mov.find('img[src*=Down_]').attr('src').replace(/Down_\d(\.\w+)/,'Down_1$1')).css('cursor','pointer');
					new_tag.find('img[src*=Up_]').attr('src',new_tag.find('img[src*=Up_]').attr('src').replace(/Up_\d(\.\w+)/,'Up_1$1')).css('cursor','pointer');
				}
			}
		} else {
			new_tag.attr('pos',1);
			new_tag.find('span.pos').html(1);
		}

		new_tag.removeAttr('rel');
		new_tag.removeAttr('locked');
		
		//add element to sorting. Also we must call this when updating content of sorted element
		if (new_tag.parents('table:first').find('th.sortable'))	new_tag.parents('table:first').trigger('update'); 
	});
	
	//setting locker
	jQuery('img.lock_setting').click(function(){
		var t = jQuery(this).parents('td:first').prev().html();
		jQuery(this).parents('td:first').prev().html(t.match(/="config\[\*/) ? t.replace(/="config\[\*/g,'="config[') : t.replace(/="config\[/g,'="config[*'));
		jQuery(t).siblings('input[name="'+t.id+'"]').val(act);
		
		var act = jQuery(this).attr('src').match(/_0\.\w+$/) ? '1':'0';
		jQuery(this).attr('src',jQuery(this).attr('src').replace(/_(0|1)\.(\w+)$/,'_'+act+'.$2'));
	});
																											  
	jQuery('img.delete_element').unbind('click');
	jQuery('img.delete_element').click(function() {
	var prefix = jQuery('#module_prefix').val();
		function DeleteLine() {
			if (curr.find('img[src*=up_]').attr('src')) {
				var next = curr.next('tr[id^='+prefix+']');
				var prev = curr.prev('tr[id^='+prefix+']');
				
				if (next.attr('id') || prev.attr('id')) {
					if (next.attr('id')==undefined) {
						var old_elm = curr.prev('tr[id^='+prefix+']').find('img[src$=down_1.gif]');
						old_elm.attr('src',old_elm.attr('src').replace('down_1.gif','down_2.gif'));
					}
					if (prev.attr('id')==undefined) {
						var old_elm = curr.next('tr[id^='+prefix+']').find('img[src$=up_1.gif]');
						old_elm.attr('src',old_elm.attr('src').replace('up_1.gif','up_2.gif'));
					}
				}
			}
			curr.remove();
		}
		
		if (!confirm('Вы уверены?')) return;

		var t = jQuery(this);
		var curr = t.parents('tr:first');
		var id = curr.attr('id');
		var table = t.parents('tbody:first').attr('id');

		if (!curr.parents('table:first').hasClass('noajax')) {
			show_message('Обработка данных');
			jQuery.ajax({
				type: "POST",
				url: "/_admincp/__new/Modules/_ajax/delete_line.php",
				data: "table="+table+"&id="+id,
				success: function(msg){
					DeleteLine();
					close_message();
				}
			});
		} else DeleteLine();
    });

	jQuery('img.delete_element-x').live('click',function() {
	
		var prefix = jQuery('#module_prefix').val();
		
		function DeleteLine() {
			if (curr.find('img[src*=Up_]').attr('src')) {
				
				var pos = parseInt(curr.attr('pos')), next_pos = Infinity, prev_pos = 0, new_src;
				
				curr.siblings('[pos][locked!=1]').each(function(i){
					if (parseInt(jQuery(this).attr('pos')) > pos && parseInt(jQuery(this).attr('pos')) < next_pos) {
						next_pos = jQuery(this).attr('pos');
					}
					if (parseInt(jQuery(this).attr('pos')) < pos && parseInt(jQuery(this).attr('pos')) > prev_pos) {
						prev_pos = jQuery(this).attr('pos');
					}
				});

				if (next_pos == Infinity && prev_pos != 0) {
					if (new_src = curr.siblings('[pos='+prev_pos+']').find('img[src$=Down_1.gif]').attr('src'))
						curr.siblings('[pos='+prev_pos+']').find('img[src$=Down_1.gif]').attr('src',new_src.replace('Down_1.gif','Down_0.gif'));
				}
				
				if (prev_pos == 0 && next_pos != Infinity) {
					if (new_src = curr.siblings('[pos='+next_pos+']').find('img[src$=Up_1.gif]').attr('src'))
						curr.siblings('[pos='+next_pos+']').find('img[src$=Up_1.gif]').attr('src',new_src.replace('Up_1.gif','Up_0.gif'));
				}
				
				//update next lines
				curr.siblings('tr[id^='+prefix+']').each(function(i){
					if (parseInt(jQuery(this).attr('pos')) > parseInt(curr.attr('pos'))) {
						jQuery(this).attr('pos',parseInt(jQuery(this).attr('pos'))-1);
						jQuery(this).find('span.pos').html(jQuery(this).attr('pos'));
					}
				});
			}
			curr.remove();
		}

		var curr = jQuery(this).parents('tr:first');
		var a = curr.attr('id').match(/(.*?)_([0-9]+)$/);
		if (jQuery(this).hasClass('noconfirm') || confirm('Вы уверены?')) {
			if (!curr.parents('table:first,tbody:first').hasClass('noajax')) {
				show_message('Обработка данных');
				jQuery.ajax({
					type: "POST",
					url: "/_admincp/__new/Modules/_ajax/delete_line.php",
					data: "table=z_"+a[1]+"&id="+a[2],
					success: function(msg){
						DeleteLine();
						close_message();
					}
				});
			} else DeleteLine();
		}
	});
	
	//actions with bottom select
	jQuery('.mainCheck').click(function(){
		jQuery('.tr_check').attr('checked','checked');
		jQuery('input#mainCheck').attr('checked','checked');
	});
	
	jQuery('.mainUnCheck').click(function(){
		jQuery('.tr_check').attr('checked','');
		jQuery('input#mainCheck').attr('checked','');
	});
	
	jQuery('#mainCheck').click(function(){
		if (jQuery(this).attr('checked'))
			jQuery('.mainCheck').trigger('click');
		else
			jQuery('.mainUnCheck').trigger('click');
	});
	
	jQuery('.tr_check').click(function(){
		if (!jQuery(this).attr('checked'))   
			jQuery('input#mainCheck').attr('checked','');
	});
	
	jQuery('#do_select').change(function(){
		if (this.value!='0' && jQuery('.tr_check').attr('checked')) {
			var str = 'module='+jQuery('#module_prefix').val()+'&ID_Block='+jQuery('#ID_Block').val()+'&act='+this.value+'&ids=';
			jQuery('.tr_check').each(function(){
				if (this.checked) str += this.value+',';
			});
			str = str.slice(0,-1);
			show_message('Обработка данных');
			jQuery.ajax({
				type: "POST",
				url: "/_admincp/__new/Modules/_ajax/check_action.php",
				data: str,
				success: function(msg){
					window.location.reload();
				}
			});
		}
	});
	
	//-----------------------

	jQuery('img.onoff-x').live('click',function() {
		function OnoffLine() {
			t.src = t.src.replace(/\/_(\w+)_(0|1)\.(\w+)$/,'/_$1_'+act+'.$3');
			jQuery(t).siblings('input[name="'+t.id+'"]').val(act);
		}
		
		var t = this;
		var act = t.src.match(/\/_\w+_(0|1)\.\w+$/)[1]==1 ? 0 : 1;
		
		var this_node = jQuery(t).parents('.NodeParent:first');
		var parent_node = this_node.parents(':first');
		
		var table = this_node.parents('form:first').attr('name');
		var field = t.id;
		if (t.id.match(/\[Default\]$/)) {
			jQuery(parent_node).find('img[id*=[Default]]').attr('src',t.src.replace(/\/_(\w+)_(0|1)\.(\w+)$/,'/_$1_0.$3'));
			jQuery(parent_node).find('input[name*=[Default]]').val(0);
		}
		
		if (!parent_node.hasClass('noajax')) {		
			var id = this_node.attr('id').replace(table+'_','');

			var a = this_node.attr('id').match(/(.*?)_([0-9]+)$/);
			message_box(language.mb_processing,'/_admincp/_design/img/bar/loading.gif','',false);
			jQuery.ajax({
				type: "POST",
				url: "/_admincp/__new/Modules/_ajax/onoff_line.php",
				data: "table=z_"+table+"&field="+field+"&id="+id+"&act="+act,
				success: function(msg){
					OnoffLine();
					loading_layer.close();
				}
			});
		} else OnoffLine();
    });
	
	jQuery('img.onoff').unbind('click');
	jQuery('img.onoff').click(function() {
		var t = jQuery(this);
		var act = t.attr('src').match(/l_1.png/) ? 1 : 0;
		var id = t.parents('tr:first').attr('id');
		var table = t.parents('tbody:first').attr('id');
		var field = t.parents('td:first').attr('id');
		if (!t.parents('table:first').hasClass('noajax')) {
			show_message('Обработка данных');
			jQuery.ajax({
				type: "POST",
				url: "/_admincp/__new/Modules/_ajax/onoff_line.php",
				data: "table="+table+"&field="+field+"&id="+id+"&act="+act,
				success: function(msg){
					t.attr('src',t.attr('src').replace(/l_(1|2).png/,'l_'+(act ? 2 : 1)+'.png'));
					close_message();
				}
			});
		} else t.attr('src',t.attr('src').replace(/l_(1|2).png/,'l_'+(act ? 2 : 1)+'.png'));
    });


	//insert error msg into the end of current td
	/*
	jQuery('.validate').change(function() {
		Validate(this);
	});
	*/

	jQuery('a[id=clear]').click(function() {
		jQuery(':input').val('');
		
		var j = 0;
		jQuery('textarea[id^=Text]').each(function(){
			if (document.getElementById('mce_editor_'+j) != null) tinyMCE.execInstanceCommand('mce_editor_'+j,'mceSetContent',false,' ');
			j++;
		});
		
		
	});
	
	jQuery('a[id^=link_]').click(function() {
		jQuery('a[id^=link_]').css('font-weight','normal');
		jQuery('div[id^=tab_]').hide();
		
		var id = this.id.replace('link_','');
		
		jQuery(this).css('font-weight','bold');
		jQuery('div#tab_'+id).show();		
	});
		
	//styled checkbox
	jQuery('img.icheck').click(function() {
		var name = this.id;
		curr_val = jQuery('input[name='+name+']').val();
		
		if (curr_val==1) {
			jQuery('input[name='+name+']').val(0);
			this.src = this.src.replace('btn_check_2.png','btn_check_1.png');
		}
		else {
			jQuery('input[name='+name+']').val(1);
			this.src = this.src.replace('btn_check_1.png','btn_check_2.png');
		}
	});


	jQuery('#save_module').click(function(){
		var form = jQuery('form#module');
		var a = form.attr('name').match(/([a-zA-Z]+)_([0-9]*)/);
		var module = a[1];
		var id = a[2];

		try { tinyMCE.triggerSave(); } catch(err) {};
		
		var str = form.find(':input').serialize();
		show_message('Обработка данных');
		jQuery.ajax({
			type: "POST",
			url: "/_admincp/__new/Modules/_ajax/save_module.php",
			data: "id="+id+"&module="+module+"&"+str,
			success: function(msg){
				window.parent.parent.document.location.reload();
				//close_box();
				
				//alert(msg);
			}
		});
	});
	
//	jQuery('a#back_on_close').click(function(){history.back(1)});
	if (jQuery('a#close').attr('href')=='#')
		jQuery('a#close').click(function(){close_box()});
	
	jQuery('#save_class').click(function(){
		var form = jQuery(this).parents('form:first');
		var module = form.attr('name');
		var script = form.attr('id');

		try { tinyMCE.triggerSave(); } catch(err) {};
		
		if (Validate(form)) {
			if (form.attr('method')=='post') {
				form.submit();
			} else {
				//alert('/_admincp/__new/Modules/'+module+'/_ajax/'+script+'.php');
				UpdatePositions(form);
				var str = form.find(':input').serialize();
				jQuery.ajax({
					type: "POST",
					url: '/_admincp/__new/'+(module.match(/^[a-z]/) ? 'Modules/' : '')+module+'/_ajax/'+script+'.php',
					data: str,
					success: function(msg){
						if (msg) eval(msg);
					}
				});
				form.find('input[type=hidden][name$=][Pos]]').remove();
			}
		}
	});
});
																						 
																						 
function UpdatePositions(frm) { //works for AdminTable!
	frm.find('span.pos').each(function(i){
		var tr = jQuery(this).parents('tr:first');
		if (tr.attr('id').match(/\d$/)) {
			var tbody_id = jQuery(this).parents('tbody:first').attr('id').replace(/\d+$/,'');
			var id = tr.attr('id').replace(tbody_id,'');
	//		alert('<input type="hidden" name="var['+id+'][Pos]" value="'+tr.attr('pos')+'">');
			jQuery(this).append('<input type="hidden" name="var['+id+'][Pos]" value="'+tr.attr('pos')+'">');
		}
	});
}