if(typeof(gs_editor) =='undefined')
    gs_editor = false;

$().ready(function() {
    $('#qn_main').click(function() {$('#qn_main').parent().toggleClass('active');});
    ui.input();
});

function addThisLink(module) {
    var allow = true;
    $('#quick_nav a').each (function () {if(this.href == document.location.href) allow = false});
    if(allow)
        $.ajax({
            type:'post',
            url:'/admin/ajax/Core/qlinks',
            data: {module:module, addlink: document.location.href, addTitle: $('title').text()},
            success: function() {
                var txt = $('title').text();
                var reg = new RegExp("(.){0,22}");
                var tmp = txt.match(reg);
                if(tmp[0].length == 21)
                    tmp[0] += '...';

                var li = $('<li class="'+module+'" style="display:none"><a href="'+document.location.href+'">'+tmp[0]+'</a><a href="javascript:{}" onclick="delThisLink(this,\''+document.location.href+'\')" class="qn_del" title="Удалить"></a></li>');
                $('#quick_nav>ul').prepend(li);
                li.show('slow');
            }
        });
}

function delThisLink(obj, url) {
    $(obj).parent().hide('blind', {}, 1000, function() {$(obj).parent().remove();});
    $.ajax({
        type:'post',
        url:'/admin/ajax/Core/qlinks',
        data: {dellink: url},
        success: function() {
        }
    });
}

function order(obj, name) {
	var ptr = $(obj).parent().parent();
	var pptr = $(obj).parent().parent().parent();
	pptr.find('[tp=order]').remove();
	ptr.after('<tr id="tr_id" tp="order"><td colspan="6">Кто возьмет билетов пачку, тот получит водокачку, а сюда кто вставит код, то получит модуль, вот... <br>Код:&nbsp;&nbsp;&nbsp;<input type="text" id="module_code" size="27" maxlength="32">&nbsp;&nbsp;&nbsp;<input id="module_order_button" type="submit" value="Скачать модуль" onclick="down(\''+name+'\')"></td></tr>');
}

function down(name, ky, up) {
	confirmclose("Загрузка еще не закончена, Вы уверены что хотите покинуть страницу?\n\r Система может быть нестабильна...");
	if(!ky)
		var k = $('#module_code').val();
	else
		var k = ky;
	if(ky)
	{
		$('#info_id').html(
			'Загрузка модуля с сервера: <span id="mload">загружаем...</span><br /><br />' +
			'Распаковка модуля: <span id="munpack">ожидаем загрузки...</span>'
			);
	}
	else
	{
		$('#tr_id td').html(
				'Загрузка модуля с сервера: <span id="mload">загружаем...</span><br /><br />' +
				'Распаковка модуля: <span id="munpack">ожидаем загрузки...</span>'
				);
	}
	$.ajax({
		type:'POST',
		url: '/admin/ajax/modules/down/',
		data: {'module': name, 'key': k},
		success: function(text) {
			if(text == 'ok') {
				$('#mload').html('модуль загружен');
				$('#munpack').html('распаковываем архив');
				if(up)
					upmodule(name, k);
				else
					unpack(name, k);
			} else {
				$('#mload').html(text);
			}
		}
	});
}

function unpack(name, key) {
	$.ajax({
		type:'POST',
		url: '/admin/ajax/modules/unpack/',
		data: {'module': name, 'key': key},
		success: function(text) {
			if(text == 'ok') {
				$('#munpack').html('распаковываем архив');
				document.location.href = document.location.href; 
			} else {
				$('#munpack').html(text);
			}
			clearclose();
		}
	});
}

function upmodule(name, key) {
	$.ajax({
		type:'POST',
		url: '/admin/ajax/modules/update/',
		data: {'module': name, 'key': key},
		success: function(text) {
			if(text == 'ok') {
				$('#munpack').html('распаковываем архив');
				document.location.href = document.location.href; 
			} else {
				$('#munpack').html(text);
			}
			clearclose();
		}
	});
}

function confirmclose(quest) {
	window.onbeforeunload = function () {
			return confirm(quest);
	};
}

function clearclose() {
	window.onbeforeunload = function () {
		return true;
};
}

var ui = {
		toggleblock:function(obj) {
			$(obj).parent().next().slideToggle("slow");
		},
		cnt: [],
		tabs:function(name) {
			var tab_titles = []; 
			var i = 0;
			$('#'+name+'>div').each(function(){
				if(i) $(this).hide();
				var ahref = $('<a href="javascript:{}">'+$(this).attr('title')+'</a>');
				ahref.click(function() { 
					var el = $(this);
					$('#'+name+'>div').each(function(){
						if($(this).attr('title') == el.html())
							$(this).show();
						else
							$(this).hide();
					});
				});
				tab_titles.push(ahref);
				i++;
			});
			
			$('#'+name+'>ul.gstab_ttl').remove();
			
			var ttl = $('<ul class="gstab_ttl"></ul>');
			
			for(var t=0; t < tab_titles.length; t++) {
				var li = $('<li></li>');
				li.append(tab_titles[t]);
				ttl.append(li);
			}
			
			$('#'+name).prepend(ttl);
		},
		addtotab: function(name, text, newname) {
			$('#'+name).hide();
			$('#'+name).append(text);
			$('#'+name).show();
			this.tabs(name);
			this.tabs(newname);
		},
		media: function(callback) {
                    	var dv = $('<div></div>');
                            dv.appendTo('body');
                            $.ajax({
                                    url:'/admin/ajax/Core/fileman/',
                                    success: function(t) {
                                            dv.html(t);
                                            dv.dialog({
                                                    width: 752,
                                                    dragable: false,
                                                    resizable: false,
                                                    title:'Файловый менеджер',
                                                    modal: true,
                                                    buttons: {
                                                            'Вставить выбранный файл': function() {
                                                                callback(GSFileman.active.spath);
                                                                    dv.dialog('close');
                                                            },
                                                            Cancel:function() {dv.dialog('close');}
                                                    },
                                                    close: function() {
                                                            dv.dialog('destroy').remove();
                                                    }
                                            });
                                            GSFileman.start();
                                    }
                            });
		},
		mediaCallback:function(id, text) {
			ui.cnt[id](text);
		},
		showimg:function(name) {
			ui.media(function(t){
						$('#img_prev_'+name).attr('src', t);
						$('[name='+name+']').val(t); 
						var aa = $('<a href="javascript:{}">удалить изображение</a>');
						aa.addClass('gs_ui_a');
						aa.click(function(){ui.delimg(this, name);});
						$('#img_prew_del_'+name).html(aa);
					});
		},
                translit: function(text, space) {
                    if(!space) space = ' ';
                    var arr = {
                        'а':'a','б':'b','в':'v','г':'g',
                        'д':'d','е':'e','ё':'jo','ж':'zh',
                        'з':'z','и':'i','й':'j','к':'k',
                        'л':'l','м':'m','н':'n','о':'o',
                        'п':'p','р':'r','с':'s','т':'t',
                        'у':'u','ф':'f','х':'kh','ч':'ch',
                        'ц':'c','ш':'sh','щ':'shh','ъ':'',
                        'ы':'y','ь':'','э':'eh','ю':'ju','я':'ja', ' ':space
                    };

                    var arr_b = {
                        'А':'A','Б':'B','В':'V','Г':'G',
                        'Д':'D','Е':'E','Ё':'Jo','Ж':'Zh',
                        'З':'Z','И':'I','Й':'J','К':'K',
                        'Л':'L','М':'M','Н':'N','О':'O',
                        'П':'P','Р':'R','С':'S','Т':'T',
                        'У':'U','Ф':'F','Х':'Kh','Ч':'Ch',
                        'Ц':'C','Ш':'Sh','Щ':'Shh','Ъ':'',
                        'Ы':'Y','Ь':'','Э':'Eh','Ю':'Ju','Я':'Ja', ' ':space
                    };
                    var newtext = '';
                    for(var i = 0; i < text.length; i++) {
                        if(arr[text[i]])
                            newtext += arr[text[i]];
                        else if(arr_b[text[i]])
                            newtext += arr_b[text[i]];
                        else if(text[i] == 'ь' ||text[i] == 'Ь'||text[i] == 'ъ'||text[i] == 'Ъ' )
                            newtext += '';
                        else
                            newtext += text[i];
                    }
                    return newtext;
                },
		delimg: function(obj, name){ 
			$('#img_prev_'+name).attr('src', '');
			$('[name="'+name+'"]').val(''); 
			$(obj).remove(); 
		},
                input: function() {
                    $('.inputtext').each(function(){
                        if($(this).val() == '')
                            {
                                $(this).val($(this).attr('def'));
                                $(this).addClass('inputdefault');
                            }
                        $(this).click(function() {
                            if($(this).val() == $(this).attr('def'))
                                $(this).val('');
                            $(this).removeClass('inputdefault');
                        });

                        $(this).blur(function() {
                            if($(this).val() == '')
                            {
                                $(this).val($(this).attr('def'));
                                $(this).addClass('inputdefault');
                            }
                            $(this).removeClass('inputtextfocus');
                        });

                        $(this).keydown(function() {
                            if($(this).val() == $(this).attr('def'))
                                $(this).val('');
                            $(this).removeClass('inputdefault');
                        });

                        $(this).focus(function() {
                            $(this).addClass('inputtextfocus');
                        });
                    });
                }
}



function a(obj, lvl) {
	if(!lvl)
		lvl = 0;
	if(!obj)
	{
		var elem = $('#gs_struct>ul>li');
	}
	else
		var elem = $(obj).find('ul:first>li');

	elem.each(function() {
		var strlen = $(this).find('a:first').html();
		var mx = 70-(3*lvl);
		
		if(strlen.length > mx)
		{
			var reg = new RegExp("(.){"+mx+"}");
			//console.log(reg,strlen.match(reg));
			var tmp = strlen.match(reg);
			$(this).find('a:first').html(tmp[0]+'...');
		}
		if($(this).find('ul').length)
			a(this, (lvl+1));
		});
}

var GSDebug = {
		tmr:false,
		init: function() {
			var dv = $('<div class="gs-debug-wrap"><div class="gs-debug-bar"><ul><li onclick="GSDebug.getLog(\'sql\')">SQL</li><li onclick="GSDebug.getLog(\'request\')">REQUEST</li><li onclick="GSDebug.getLog(\'system\')">SYSTEM</li><li onclick="GSDebug.getLog(\'timers\')">TIMERS</li><li onclick="GSDebug.getLog(\'inc\')">INCLUDES</li><li onclick="GSDebug.getLog(\'templates\')">TEMPLATES</li></ul></div><div class="gs-debug-init">debug</div></div>');
			dv.appendTo('body');
			$('.gs-debug-init').click(function(){
				var bar = $('.gs-debug-wrap');
				if(bar.css('top') == '-30px')
					dv.animate({top:0});
				else
				{
					$('.gs-debug-data').remove();
					dv.animate({top:-30});
				}
			});
		}, 
		getLog: function(tp) {
			if(GSDebug.tmr)
				clearInterval(GSDebug.tmr);
			$('.gs-debug-data').remove();
			$.ajax({data:{type:tp},url:'/admin/ajax/Core/log', success:function(text){
				var json = jQuery.parseJSON(text);
				var tbl = $('<table class="gs-debug-data" width="100%" cellpadding=0 cellspacing=0></table>');
				$('.gs-debug-wrap').append(tbl);
				for(var i = 0; i < json.length; i++) {
					var tr = $('<tr data-row="'+ json[i].id+'" style="display:none"></tr>');
					switch(tp) {
						case 'sql':
							tr.append($('<td>'+json[i].method+'</td>')).
							append($('<td>'+json[i].query+'</td>')).
							append($('<td>'+json[i].rows+'</td>')).
							append($('<td>'+json[i].time+'</td>'));
							break;
						case 'request':
							tr.append($('<td>'+json[i].k+'</td>')).append($('<td>'+json[i].v+'</td>'));
							break;
						case 'system':
							tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
							break;
						case 'inc':
							tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
							break;
						case 'timers':
							tr.append($('<td>'+json[i].name+'</td>')).append($('<td>'+json[i].time+'</td>'));
							break;
						case 'templates':
							tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
							break;	
					}
					tbl.append(tr);
					tr.fadeIn('slow');
				}
				GSDebug.tmr = setInterval(function(){
					GSDebug.testLog(tp);
				}, 3000);
			}});
		},
		testLog:function(tp) {
			$.ajax({data:{type:tp},url:'/admin/ajax/Core/log', success:function(text){
				var json = jQuery.parseJSON(text);
				var tbl = $('.gs-debug-data tr');
				for(var i = 0; i < json.length; i++) {
					var add = true;
					tbl.each(function() {
						var row_id = $(this).attr('data-row');
						//console.log(row_id, json[i].id, $(this).data(), $(this));
						if(row_id == json[i].id)
							add = false;
					});
					if(add) {
						var tr = $('<tr data-row="'+ json[i].id+'" style="display:none"></tr>');
						switch(tp) {
						case 'sql':
							tr.append($('<td>'+json[i].method+'</td>')).
							append($('<td>'+json[i].query+'</td>')).
							append($('<td>'+json[i].rows+'</td>')).
							append($('<td>'+json[i].time+'</td>'));
							break;
						case 'request':
							tr.append($('<td>'+json[i].k+'</td>')).append($('<td>'+json[i].v+'</td>'));
							break;
						case 'system':
							tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
							break;
						case 'inc':
							tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
							break;
						case 'timers':
							tr.append($('<td>'+json[i].name+'</td>')).append($('<td>'+json[i].time+'</td>'));
							break;
						case 'templates':
							tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
							break;	
						}
						$('.gs-debug-data').prepend(tr);
						tr.fadeIn('slow');
					}
				}				
			}});
		}
}

var core = {
		editpage: function(sid, page_id) {
			var dv = $('<div></div>');
			dv.appendTo('body');
			$.ajax({
				url:'/admin/ajax/Pages/pedit',
				data: {'sid':sid,'id':page_id},
				success: function(t) {
					dv.hide().html(t);
					dv.dialog({
						width: $(document).width()-100,
						dragable: false,
						resizable: false,
						title:'Редактирование страницы',
						modal: true,
						buttons: {
							'Сохранить': function() {
                                                            var title = $('input[name=title]').val();
                                                            var keywords = $('input[name=keys]').val();
                                                            var theme = $('select[name=theme]').val();
                                                            var page_title = $('[name=page_title]').val();
                                                            var menu = $('[name=menu]').val();
                                                            var menu_pid = GSMenu.choise_id;
                                                            var description = $('input[name=desc]').val();
                                                            var content = tinymce.activeEditor.getContent();
                                                            var sid = $('input[name=sid]').val();
                                                            var id = $('input[name=id]').val();
                                                            var def = $('[name=def]').val();

                                                            $.ajax({url:'/admin/ajax/Pages/pedit',success:function() {window.location.reload();},type:'POST', data:{title:title, page_title:page_title, def:def, menuid:menu, menu_pid:menu_pid, keys:keywords, theme:theme, desc:description, content:content, sid:sid, id:id}});
                                                            dv.dialog('close');
							},
							'Отмена':function() {dv.dialog('close');}
						},
                                                open:function() {
                                                  tinyMCE.settings = {
                                                            theme : "advanced",
                                                            mode : "none",
                                                            script_url : '/core/library/js/tiny_mce/tiny_mce.js',
                                                            plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,logic,images",
                                                            theme_advanced_buttons1 : "save,|,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,images,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
                                                            theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
                                                            theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,blockquote,pagebreak,mceLogic",
                                                            theme_advanced_toolbar_location : "top",
                                                            theme_advanced_toolbar_align : "left"
                                                    };

                                                    tinyMCE.execCommand('mceAddControl', true, 'page_content');
                                                },
                                                beforeclose:function() {
                                                    tinyMCE.execCommand('mceRemoveControl', false, 'page_content');
                                                },
						close: function() {
                                                    //clearTiny();
                                                    dv.dialog('destroy').remove();
						}
					});
				}
			});
		},
		addpage: function(sid, page_id) {
			var dv = $('<div></div>');
			dv.appendTo('body');
			$.ajax({
				url:'/admin/ajax/Pages/padd',
				data: {'sid':sid,'id':page_id},
				success: function(t) {
					dv.hide().html(t);
					dv.dialog({
						width: $(document).width()-100,
						dragable: false,
						resizable: false,
						title:'Создание страницы',
						modal: true,
						buttons: {
							'Сохранить': function() {
                                                            var title = $('input[name=title]').val();
                                                            var keywords = $('input[name=keys]').val();
                                                            var theme = $('select[name=theme]').val();
                                                            var description = $('input[name=desc]').val();
                                                            var content = tinymce.activeEditor.getContent();
                                                            var syskey = $('input[name=key]').val();
                                                            var sid = $('input[name=sid]').val();
                                                            var menu = $('[name=menu]').val();
                                                            var menu_pid = GSMenu.choise_id;
                                                            var page_title = $('[name=page_title]').val();
                                                            var pid = $('input[name=pid]').val();
                                                            var def = $('[name=def]').val();

                                                            $.ajax({url:'/admin/ajax/Pages/padd',success:function() {window.location.reload();},type:'POST', data:{title:title, menuid:menu, def:def,menu_pid:menu_pid, page_title:page_title, keys:keywords, theme:theme, desc:description, content:content, key:syskey, sid:sid, pid:pid}});
                                                            dv.dialog('close');
							},
							'Отмена':function() {dv.dialog('close');}
						},
                                                open:function() {
                                                  tinyMCE.settings = {
                                                            theme : "advanced",
                                                            mode : "none",
                                                            plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,logic,images",
                                                            script_url : '/core/library/js/tiny_mce/tiny_mce.js',
                                                            theme_advanced_buttons1 : "save,|,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,images,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
                                                            theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
                                                            theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,blockquote,pagebreak,mceLogic",
                                                            theme_advanced_toolbar_location : "top",
                                                            theme_advanced_toolbar_align : "left"
                                                    };

                                                    tinyMCE.execCommand('mceAddControl', true, 'page_content');
                                                },
                                                beforeclose:function() {
                                                    tinyMCE.execCommand('mceRemoveControl', false, 'page_content');
                                                },
						close: function() {
                                                    //clearTiny();
                                                    dv.dialog('destroy').remove();
						}
					});
				}
			});
		},
                print: function(text) {
                    var bd = $('html').clone();
                    bd.find('body').html(text);
                    //bd.find('body').append('<br/><br/><center><button onclick="window.print()">Распечатать</button></center>');
                    newwindow2=window.open('','Заказ','height=500,width=800');
                    var tmp = newwindow2.document;
                    tmp.write(bd.html());
                    tmp.close();
                    newwindow2.print();
                },
                delpage:function(id) {
                    if(confirm('Вы точно хотите удалить страницу?')) {
                        $.ajax({url:'/admin/ajax/Pages/pdel',success:function() {window.location.reload();},type:'POST', data:{id:id}});
                    }
                },
                update:function(id, rev) {
                    $.ajax({url:'/admin/ajax/modules/update',success:function(text) {
                            var fields = (text);

                            if(!fields) return false;
                            $('#upbuttns').hide();
                            $('#showprogress').show();

                            if(fields['error']) {
                                alert(fields.error);
                                return false;
                            }
                            $('#files_upload').html(fields['files_upload']);
                            $('#current_file').html(fields['current_file']);
                            $('#md5check').attr('src', '/core/admin/templates/default/img/icons/'+fields['md5check']);
                            $('#file_size').html(fields['file_size']);
                            if(fields['status'] == 'continue')
                            {
                                core.update(id, rev);
                            } else if(fields['status'] == 'finish') {
                                window.location.reload();
                            }
                    },dataType:'json',type:'POST', data:{module:id, rev:rev}});
                },
                updatesql:function(id, rev) {
                    $.ajax({url:'/admin/ajax/modules/sql',success:function(text) {
                            var fields = (text);

                            if(!fields) return false;

                            if(fields['status'] != 'ok')
                                alert(fields.status);
                            else
                                window.location.reload();
                            
                    },dataType:'json',type:'POST', data:{module:id, rev:rev}});
                },
                mails:{
                    changestatus: function(id) {
                        var f = $('<form method="post"><input type="hidden" name="st_id" value="'+id+'"></form>');
                        f.appendTo('body').submit();
                    },
                    edit: function(id) {
                        var f = $('<form method="post"><input type="hidden" name="edit_id" value="'+id+'"></form>');
                        f.appendTo('body').submit();
                    },
                    del: function(id) {
                        var f = $('<form method="post"><input type="hidden" name="del_id" value="'+id+'"></form>');
                        f.appendTo('body').submit();
                    }
                }
}

function get_tiny() {
	tinyMCE.init({
		// General options
		mode : "textareas",
		theme : "advanced",
		plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,logic,images",

		// Theme options
		theme_advanced_buttons1 : "save,|,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,images,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
		theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
		theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,blockquote,pagebreak,mceLogic",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_statusbar_location : "bottom",
		theme_advanced_resizing : true,

		// Drop lists for link/image/media/template dialogs
		template_external_list_url : "js/template_list.js",
		external_link_list_url : "js/link_list.js",
		external_image_list_url : "js/image_list.js",
		media_external_list_url : "js/media_list.js"
	});
}
function jtiny() {
	$('textarea').tinymce({
		script_url : '/core/library/js/tiny_mce/tiny_mce.js',
		// General options
		theme : "advanced",
		plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,logic,images",

		// Theme options
		theme_advanced_buttons1 : "save,|,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,images,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
		theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
		theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,blockquote,pagebreak,mceLogic",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_statusbar_location : "bottom",
		theme_advanced_resizing : true,

		// Drop lists for link/image/media/template dialogs
		template_external_list_url : "js/template_list.js",
		external_link_list_url : "js/link_list.js",
		external_image_list_url : "js/image_list.js",
		media_external_list_url : "js/media_list.js"
	});
}

function clearTiny() {
    if(tinymce && tinymce.activeEditor)
    	tinyMCE.execCommand('mceRemoveControl', false, tinymce.activeEditor.editorId)
    //tinyMCE = null
    //tinymce = null
    //$('script').each(function() {if(this.src == '/core/library/js/tiny_mce/tiny_mce.js' || this.src == '/core/library/js/tiny_mce/jquery.tinymce.js') $(this).remove();});
    //$('<script type="text/javascript" src="/core/library/js/tiny_mce/tiny_mce.js"></script>').appendTo('head');
    ///$('<script type="text/javascript" src="/core/library/js/tiny_mce/jquery.tinymce.js"></script>').appendTo('head');
}

function jtinysimple(cont) {
    if(!cont) cont = $();
	cont.find('textarea[mceEditor]').tinymce({
		script_url : '/core/library/js/tiny_mce/tiny_mce.js',
                // General options
		theme : "simple",
                oninit : function(e) {
                    //console.log(e, this);
                    e.execCommand("mceAddControl",true,$($(cont).find('textarea')[0]).attr('id'))
                }
		});
}

var ItabAllSelect = Array();
function ItabInit(name,selectItem)
{
	ItabAllSelect[name]=selectItem;
}
function ItabSelect(name,index)
{
	if(ItabAllSelect[name]!=index)
	{
		$('#tab_title_'+name+'_'+index).addClass('current');
		$('#tab_title_'+name+'_'+ItabAllSelect[name]).removeClass('current');

		$('#tab_html_'+name+'_'+index).show();
		$('#tab_html_'+name+'_'+ItabAllSelect[name]).hide();

		ItabAllSelect[name]=index;
	}
}
function setCookie (name, value, expires, path, domain, secure)
{
      document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}
function getCookie(name)
{
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}
function chekCookie(nodId)
{
	if($('#object_div_tree'+nodId).is(':hidden'))
	{
		 setCookie('treeCond['+nodId+']',0);
	}
	else
	{
		 setCookie('treeCond['+nodId+']',1);
	}
}
function ShowObject(id,display)
{
	
	var img = $('#object_plus_' + id);
	
	if(!display)
		display = 'block';
	
	if($('#object_div_'+id).length)
	{
		
		if($('#object_div_'+id).is(':hidden'))
		{
			$('#object_div_'+id).css('display', display);
			
			if(img == null)
				return;
			
			if(img.attr('src'))
				img.attr('src', img.attr('src').replace(/plus/g, "minus"));
			else
				img.css('background-image', img.css('background-image').replace(/plus/g, "minus"));
		}
		else
		{
			$('#object_div_'+id).hide();
			if(img == null)
				return;
			if(img.attr('src'))
				img.attr('src', img.attr('src').replace(/minus/g, "plus"));
			else
				img.css('background-image', img.css('background-image').replace(/minus/g, "plus"));
		}
		
	}
}
function rememberTab(tabnum)
{
	if($('.currenttab'))
	{
		$('.currenttab').value = tabnum;
	}
}

function gOfs(obj)
{
	var x=0,y=0;
	/*if(obj.style.position=='absolute')
	{
		x=obj.style.left;
		y=obj.style.top;
	}else*/ if(obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			x+=obj.offsetLeft;
			y+=obj.offsetTop;
			obj=obj.offsetParent;
		}
	}else if (obj.x)
	{
		x += obj.x;
		y += obj.y;

	}
	//alert(x+' '+y);
	return {x: x, y: y}
}

var x=0,y=0;

function mousePageXY(e)
{
	x = 0, y = 0;
	if (!e) e = window.event;
	if (e.pageX || e.pageY)
	{
		x = e.pageX;
		y = e.pageY;
	}
	else if (e.clientX || e.clientY)
	{
		x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
		y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
	}
	return {"x":x, "y":y};
}
//Занимательный regexp=)
function trim(s){return s.replace(/^\s*|\s*$/g, "");}
function check_int(v){return /^\d*$/.test(v);}
function check_float(v){if(/^\d*$/.test(v)) return true;return /^\d+\.\d*$/.test(v);}
function check_code(s){return /^[a-zA-Z0-9_]*$/.test(s);}
function check_mail(s){return /^[a-z0-9_.-]+@[a-z0-9.-]+\.[a-z]{2,4}$/.test(s)}
function check_multimail(s){return /^([a-z0-9_.-]+@[a-z0-9.-]+\.[a-z]{2,4}[ ,]*)+$/.test(s)}
function input_type_int(th,on)
{	
	if(on)	th.className='inputtext';
	if(check_int(th.value))		return true;
	alert('Поле может содержать только числовое значение');
	return false;
}
function input_type_float(th)
{th.value=trim(th.value).replace(/,/ ,".").replace(/^\./ ,"0.").replace(/(\..*[1-9]{1}|\.)[0]+$/,"$1"); // Убей моск!
	if(check_float(th.value))		return true;
	alert('Поле может содержать только дробное или целочисленное числовое значение');
	return false;
}
function input_type_code(th){
	if(check_code(th.value))
	{
		return true;
		alert('Поле может содержать только английские символы и числа значение');
	}
	return false;
}
function input_type_mail(th)
{
	if(check_code(th.value))
	{
		return true;
		alert('Поле может содержать только английские символы и числа значение');
	}
	return false;
}

// Очищает значения указаных инпутов
function input_clear(id_arr)
{
	var el;
	for(var i=0; i<id_arr.length;i++)
	{
		el=document.getElementById(id_arr[i]);
		if(el)
		{
			el.value='';
		}
	}
}

// Изменение размеров текстарий
var __textareaYPos=-1;
function textareaStartDrag()
{
	__textareaYPos=-1;
	document.body.style.cursor = 'n-resize';
}
function textareaDrag(ix,iy,iobj)
{
	if(__textareaYPos==-1)
	{
		__textareaYPos = iy - iobj.previousSibling.style.height.replace(/[^0-9]/g,'');
	}
	var math=iy-__textareaYPos;
	if(math>=50)
	{
		iobj.previousSibling.style.height=math+'px';
	}
	//document.getElementById('debug').innerHTML='h:'+iobj.previousSibling.style.height+'<br>iy:'+iy+'<br>__'+__textareaYPos;
	
}
function textareaDrop(){
	__textareaYPos=-1;
	document.body.style.cursor = '';
}
/**
 * Вешает обработчики событий на обьект
 */
function selectInput(el)
{
	if(el.tagName=='INPUT')
	{
		el.onfocus=function(){this.className='inputtextfocus';};
		el.onblur =function(){this.className='inputtext';};
		return ;
	}
	if(el.tagName=='TEXTAREA')
	{
		el.onfocus=function(){this.className='inputtextareafocus';};
		el.onblur =function(){this.className='inputtextarea';};
	}
}
function addSelectInput()
{
	var onfocus=function(){this.className='inputtextfocus';};
	var onblur= function(){this.className='inputtext';};
	var check_mail_f = function(){
		this.value=trim(this.value);
		if(this.getAttribute('isNull')!=null && this.getAttribute('isNull')!='false' && this.value==""){
			this.className='inputtext';
			return ;
		}
		if(!check_mail(this.value))
		{
			this.className='inputtexterror';
		}else{
			this.className='inputtext';
		}
	};
	var check_multimail_f = function(){
		this.value=trim(this.value);
		if(this.getAttribute('isNull')!=null && this.getAttribute('isNull')!='false' && this.value==""){
			this.className='inputtext';
			return ;
		}
		if(!check_multimail(this.value))
		{
			this.className='inputtexterror';
		}else{
			this.className='inputtext';
		}
	};
	var check_int_f = function(){
		this.value=trim(this.value);
		if(this.getAttribute('isNull')!=null && this.getAttribute('isNull')!='false' && this.value==""){
			this.className='inputtext';
			return ;
		}
		if(!check_int(this.value))
		{
			this.className='inputtexterror';
		}else{
			this.className='inputtext';
		}
	}
	var elements=document.getElementsByTagName("INPUT");
	var isNull=false;
	for(var i=0;i<elements.length;i++)
	{
		if(elements[i].className=="inputtext")
		{
			if(elements[i].onfocus==undefined)
				elements[i].onfocus=onfocus;
			if(elements[i].onblur==undefined)
				elements[i].onblur =onblur;
			if(elements[i].getAttribute('check',false)) // Отслеживание типов
			{
				switch (elements[i].getAttribute('check',false).toLowerCase()) {
					case 'mail':
						elements[i].onblur=check_mail_f;
						break;
					case 'multimail':
						elements[i].onblur=check_multimail_f;
						break;
					case 'int':
						elements[i].onblur=check_int_f;
						break;
					default:
						break;
				}
			}
			
		}
	}
	var onfocus=function(){this.className='inputtextareafocus';};
	var onblur= function(){this.className='inputtextarea';};
	var elements=document.getElementsByTagName("TEXTAREA");
	var befor;
	var div;
	
	for(var i=0;i<elements.length;i++)
	{
		if(elements[i].className=="inputtextarea")
		{
			if(elements[i].onfocus==undefined)
				elements[i].onfocus=onfocus;
			if(elements[i].onblur==undefined)
				elements[i].onblur =onblur;
			
			// Навешевание изменения размера
			div=document.createElement("DIV");
			div.className="resizeDiv";
			div.style.width=elements[i].style.width;
			div.innerHTML='&middot;&middot;&middot;';
			
			elements[i].resizeDiv = div;
			
			if(elements[i].style.marginBottom)
			{
				div.style.marginBottom=elements[i].style.marginBottom;
				elements[i].style.marginBottom=0;
			}
			
			if(elements[i].nextSibling)
			{
				// Костыль для tinyMCE
				if(elements[i].nextSibling.className == 'mceEditor defaultSkin')
				{
					div.style.display='none';
					div.id="resizeDiv_" + elements[i].id;
					
					editor[elements[i].id] = true;
					
					var edControle=document.createElement("SPAN");
					
					edControle.className = "mceBtn";
					btnHtml = 'Редактор: <a href="#" onclick="editorControl(\'' + elements[i].id + '\'); return false;" id="eControle_' + elements[i].id + '">Выключить</a>';
					edControle.innerHTML = btnHtml;
					elements[i].parentNode.appendChild(edControle);
				}
				
				elements[i].parentNode.insertBefore(div, elements[i].nextSibling);
			}
			else
			{
				elements[i].parentNode.appendChild(div);
			}
			
			AddDragElement(div,textareaStartDrag, textareaDrop, textareaDrag);
			
		}
	}
}

/**
 * Аналог serialize в php
 */
function serialize(obj)
{
    var string = '';

    if (typeof(obj) == 'object') {
        if (obj instanceof Array) {
            string = 'a:';
            tmpstring = '';
            var count = 0;
            for (var key in obj) {
                tmpstring += serialize(key);
				tmpstring += serialize(obj[key]);
                count++;
            }
            string += count + ':{';
            string += tmpstring;
            string += '}';
        } else if (obj instanceof Object) {
            classname = obj.toString();

            if (classname == '[object Object]') {
                classname = 'StdClass';
            }

            string = 'O:' + classname.length + ':"' + classname + '":';
            tmpstring = '';
            count = 0;
            for (var key in obj) {
                tmpstring += serialize(key);
                if (obj[key]) {
                    tmpstring += serialize(obj[key]);
                } else {
                    tmpstring += serialize('');
                }
                count++;
            }
            string += count + ':{' + tmpstring + '}';
        }
    } else {
		if(obj == obj*1) obj *= 1;
        switch (typeof(obj)) {
            case 'number':
                if (obj - Math.floor(obj) != 0) {
                    string += 'd:' + obj + ';';
                } else {
                    string += 'i:' + obj + ';';
                }
                break;
            case 'string':
                string += 's:' + obj.length + ':"' + obj + '";';
                break;
            case 'boolean':
                if (obj) {
                    string += 'b:1;';
                } else {
                    string += 'b:0;';
                }
                break;
        }
    }
    return string;
}

/**
 * Удаляет html элемент obj
 */
function remove(obj)
{
	obj.parentNode.removeChild(obj);
}
var editor = new Array();
// array
/**
 * Вставляет в массив обьект, сдвигая индексы всех последующич значений (не засовывать асоциативные массивы)
 */
function array_insert_value(array,index,insert)
{
	var a=array.slice(0,index);
	a[index]=insert;
	return a.concat(array.slice(index));
}
/**
 * Удаляет значения массива имеющие значение undefined
 */
function array_claer_undefined(array)
{
	var new_array=[];
	for(var i=0;i<array.length;i++)
		if(array[i]!=undefined)
			new_array.push(array[i]);
	return new_array;
}
/**
 * Удаляет элемент массива с индексом index и сдвигает значения
 */
function array_remove_value(array,index)
{
	return array.slice(0,index-1).concat(array.slice(index+1));
}

function translate(val, obj, space) {
    $(obj).val(ui.translit(val, space).toLowerCase());
}

function rawurlencode (str) {
    str = (str + '').toString();

    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
    replace(/\)/g, '%29').replace(/\*/g, '%2A');
}

var GSMenu = {
    choise_id:false,
    func_stack:{},
    choise:function(id, obj) {
        $('.choise_menu_li span').removeClass('choise');
        $(obj).addClass('choise');
        this.choise_id = id;
    },
    getNextMenuLevel:function(menuid, pid, obj) {
        if($(obj).children('ul').length) {
            $(obj).children('ul').slideDown();
            var im = $(obj).children('img');
            var niw = $('<img data-menuid="'+menuid+'" data-pid="'+pid+'" src="/core/admin/templates/default/img/icons/minus.gif" width=9 height=9 style="margin-bottom:-1px;cursor:pointer" />')
            if(im.length) {
                niw.click( function() {GSMenu.hideUl(this);} )
                im.replaceWith(niw);
            }
        } else {
            $.ajax({
                url:'/admin/ajax/Core/ajax/',
                type:'post',
                data:{action:'getMenuLis',menu:menuid,menu_pid:pid},
                success:function(text) {
                    $(obj).append(text);
                    var im = $(obj).children('img');
                    var niw = $('<img data-menuid="'+menuid+'" data-pid="'+pid+'" src="/core/admin/templates/default/img/icons/minus.gif" width=9 height=9 style="margin-bottom:-1px;cursor:pointer" />')
                    if(im.length) {
                        niw.click( function() {GSMenu.hideUl(this);} )
                        im.replaceWith(niw);
                    }
                }
            });
        }
    },
     getStartMenuLevel:function(menuid, pid, obj) {
            $.ajax({
                url:'/admin/ajax/Core/ajax/',
                type:'post',
                data:{action:'getMenuLis',menu:menuid,menu_pid:pid},
                success:function(text) {
                    $(obj).html(text);
                }
            });
    },
    hideUl:function(obj) {
        $(obj).parent().find('ul').hide();
        var im = $(obj);
        var niw = $('<img src="/core/admin/templates/default/img/icons/plus.gif" width=9 height=9 style="margin-bottom:-1px;cursor:pointer" />')
        niw.click(function(){
            GSMenu.getNextMenuLevel(niw.data('menuid'), niw.data('pid'), $(this).parent());
        });
        im.replaceWith(niw);
    },
    getMenus:function(obj) {
        $.ajax({
                url:'/admin/ajax/Core/ajax/',
                type:'post',
                data:{action:'getMenus'},
                success:function(text) {
                    $(obj).append(text);
                }
            });
    },
    getExistsLinks:function(obj,page) {
        $.ajax({
                url:'/admin/ajax/Core/ajax/',
                type:'post',
                data:{action:'getExistsLink', id:page},
                success:function(text) {
                    $(obj).html(text);
                }
            });
    },
    delExistLink:function(id, obj,page) {
        if(confirm('Вы уверены что хотите это сделать?')) {
            $.ajax({
                    url:'/admin/ajax/Core/ajax/',
                    type:'post',
                    data:{action:'delExistLink', id:id},
                    success:function() {
                        GSMenu.getExistsLinks(obj,page);
                    }
                });
        }
    }
}

var GSTemplConstruct = {
    type: 'table',
    cols:1,
    element_cols: 1,
    element_rows: 1,
    drag_element:false,
    setType: function() {
        this.type = $('#createType').val();
        if(this.type == 'table')
            {
                $('#createType').after('<div>Сколько колонок:<br><select id="columnSet" onchange="GSTemplConstruct.setCols(this.value)"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option></select></div>');
            }
        else {
            $('#columnSet').parent().remove();
            this.cols = 1;
        }
        this.getHTML();
    },
    setCols:function(val) {
        if(val > 6)
            val = 6;
        if(val <= 0)
            val = 1;
        this.cols = val;
        this.getHTML();
    },
    getHTML:function() {
        var html = '';
        switch(this.type) {
            case 'div':
                html = '<div class="gsc-div">'+this.getHTMLElement()+'</div>';
            break;

            case 'table':
                html = '<table class="gsc-table"><tr>';
                for(var i = 0; i < this.cols; i++) {
                    html += '<td>'+this.getHTMLElement()+'</td>';
                }
                html += '</tr></table>';
                break;
        }
        $('.gsc-main-form').html(html);
        $('.gsc-element td').droppable({
            tolerance : 'fit',
            accept : '[data-drag]',
            hoverClass: 'drophover',
            drop : function(event, ui) {
                    var el = $(ui.draggable).clone();
                    el.click(function(){ $(this).remove(); });
                    $(this).append(el);
            }
        });
    },
    getHTMLElement:function() {
        var html = '';
        html = '<table class="gsc-element">';
        for(var t = 0; t < this.element_rows; t++) {
            html += '<tr>';
            for(var i = 0; i < this.element_cols; i++) {
                html += '<td>&nbsp;</td>';
            }
            html += '</tr>';
        }
        html += '</table>';
        return html;
    },
    setElementCols:function() {
        this.element_cols = $('#elemCols').val();
        this.getHTML();
    },
    setElementRows:function() {
        this.element_rows = $('#elemRows').val();
        this.getHTML();
    },
    createDragElem:function(obj) {
        this.drag_element = $(obj).clone();
        this.drag_element.attr('data-elem', 'true');
        this.drag_element.css({
            position:'absolute',
            display:'block',
            opacity: 0.85,
            'z-index':10000
        });
        this.drag_element.appendTo('body');
        $('#constructor-wrap').bind('mousemove', function(e){
            GSTemplConstruct.drag_element.css({
                top:(e.clientY+25)+'px',
                left:(e.clientX-15)+'px'
            });
        });
    },
    removeDragElem:function() {
        $('#constructor-wrap').unbind('mousemove');
        $('[data-elem]').remove();
    }
}

