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


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

$.extend($.expr[':'], {
        gallery: function(elem, pos, match) {
			var flag = false;
			flag = $(elem).attr('rel') == 'lightbox' ? true : ($(elem).attr('rel') == 'colorbox' ? true : false);
			return flag;
        }
    });

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() {
        }
    });
}

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) {
        mcImageManager.browse({
            insert_filter:function(a) {
                callback(a);
            }
        });
    },
    mediaCallback:function(id, text) {
        ui.cnt[id](text);
    },
    showimg:function(name) {
        ui.media(function(t){
            $('[id="img_prev_'+name+'"]').attr('src', t.url);
            $('[id="img_prev_'+name+'"]').height(64);
            $('[id="img_prev_'+name+'"]').width(64);
            $('[name="'+name+'"]').val(t.url);
            var aa = $('<a href="javascript:{}"><img src="/core/admin/templates/default/img/icons/wrong16.png" title="Удалить изображение" onclick="" width="16" height="16"></a>');
            aa.addClass('gs_ui_a');
            aa.click(function(){
                ui.delimg(this, name);
            });
            $('[id="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', '/core/admin/templates/default/images/default.png');
        $('#img_prev_'+name).attr('width', 64);
        $('[name="'+name+'"]').val('/core/admin/templates/default/images/default.png');
        $(obj).remove(); 
    },
    inputBox:function(elems) {
      $(elems).each(function(){
          if(!$(this).hasClass('gs-inputBox-center')) {
              var main = $('<div class="gs-inputBox" />');
              var inp = $(this).clone();
              inp.addClass('gs-inputBox-center');
              var pp = '<div class="gs-inputBox-left"></div>';
              var ap = '<div class="gs-inputBox-right"></div>';
              main.append(pp).append(inp).append(ap);
              $(this).after(main).remove();
          }
      });  
    },
    input: function() {
        $('[def]').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');
            });
        });
    },
    fade: {
        time:false,
        current_row:false,
		rows: function(table, row) {
            var ii = 0;
            $(table).children('tbody').children('tr').each(function(){
				if(ii > 0) {
					if(this != row) {
						$(this).addClass('activeRow');
					} else $(this).removeClass('activeRow');
				}
				ii++;
			});
		},
		element: function(table, row) {
			var ii = 0;
            var detached_tbody = $(table).children('tbody').detach();
            detached_tbody.children('tr').each(function(){
            //$(table).children('tbody').children('tr').each(function(){
				if(ii > 0) {
					if(this != row) {
						$(this).css({opacity: .3, background:'#7B7B7B'});
					} else {
						$(this).css({opacity: 1, background:'transparent'});
					}
				}
				ii++;
			});
            $(table).append(detached_tbody);
		},
		removeFade: function(table) {
            //clearTimeout(ui.fade.time);
			$(table).children('tbody').children('tr').removeClass('activeRow');
		}
	},
	overlay:function(obj, flag) {
		obj = obj || document;
		var dv = $('div[data-ui="overlay"]');
		if(obj == document) {
			var left = 0;
			var top = 0;
			var w = $(obj).width();
			var h = $(obj).height();
			dv.css({
				position:'fixed',
				right:0,
				bottom: 0,
				width:w,
				height:h,
				top:top+'px',
				left:left+'px',
				opacity: 0.98
			});
		} else {
			var left = $(obj).offset().left;
			var top = $(obj).offset().top;
			var w = $(obj).width();
			var h = $(obj).height();
			if(flag)
				h = $(document).height() - top;
			dv.css({
				width:w,
				height:h,
				top:top+'px',
				left:left+'px',
				opacity: 0.98
			})
		}
		dv.show();
	},
	overlayDestroy:function() {
		setTimeout(function(){$('div[data-ui="overlay"]').fadeOut('slow')}, 200);
	}
}

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);
                }, 5000);
            }
        });
},
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 = {
	confirm:function(func, type, args) {
		type = type || 'delete';
		switch(type) {
			case 'delete':
					if(confirm('Вы уверены что хотите удалить это?')) {
						func.call(args);
					}
			break;
			case 'confirm':
					if(confirm('Подтвердите действие.')) {
						func.call(args);
					}
			break;
		}
	},
	include:function(src, tp){
		var type = tp || 'script';
		if(type == 'script')
			var script = $('<script type="text/javascript" src="'+src+'"></script>');
		else
			var script = $('<link rel="stylesheet" href="'+src+'" />');
		$('head').append(script);
	},
	first_start:function() {
		$.ajax({url:'/admin/ajax/Core/ajax?action=first'}).success(function(html){
			$.colorbox({
				inline:true,
				href:'#first_intro',
				title:'Первый запуск',
				open:true
			});
			ui.inputBox('input[type="text"]');
			$('select').selectBox();
			$('#save_first').button().click(function() {$("#first_form").submit();});
		});
	},
    editpage: function(sid, page_id) {
                            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=pid]').val();
                            var def = $('[name=def]').val();
                            var parent_id = $('[name=parent_id]').val();
                            var page_type = $('[name=page_type]').val();

                            $.ajax({
                                url:'/admin/ajax/Pages/pedit',
                                success:function() {
                                    //window.location.href='/admin/Pages/site?id='+sid+'&sp='+parent_id;
                                },
                                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, 
                                    page_type:page_type,
                                    sid:sid, 
                                    id:id
                                }
                            });
                            return false;
        },
addpage: function(sid, page_id) {
            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();
            var page_type = $('[name=page_type]').val();

            $.ajax({
                url:'/admin/ajax/Pages/padd',
                success:function() {
                    window.location.href='/admin/Pages/site?id='+sid+'&sp='+page_id;
                },
                type:'POST', 
                data:{
                    title:title, 
                    menuid:menu, 
                    def:def,
                    menu_pid:menu_pid, 
                    page_title:page_title, 
                    keys:keywords, 
                    page_type:page_type,
                    theme:theme, 
                    desc:description, 
                    content:content, 
                    key:syskey, 
                    sid:sid, 
                    pid:pid
                }
            });
            return false;
},
selectPage:function(sid, pid) {
    $('#cr_page_button_template').click(function(){
        var pagesa = ['add', 'photo', 'shop','news'];
        window.location.href="/admin/Pages/page/"+pagesa[$('#create_page_select').val()]+"?id="+sid+"&pid="+pid;
    });
    $('#create-page-div').dialog({
        width:435,
        height:70,
        resizable:false,
        draggable:false,
        modal:true,
        title:'Выберите тип страницы',
        close: function() { $(this).dialog('destroy'); }
    });
},
selectGo:function(sid, pid) {
    var pagesa = ['add', 'shop', 'news','photo'];
    window.location.href="/admin/Pages/page/"+pagesa[$('#create_page').val()]+"?id="+sid+"&pid="+pid;
},
go:function(href) {
	window.location.href = href;
},
changeVisualMode:function() {
		$('<form method="post"><input name="change_visual_mode" value="true" /></form>').appendTo('body').submit();
},
copy:function(id) {
    $.ajax({url:'/admin/ajax/Core/ajax?action=getSiteStructure&pid='+id}).success(function(text) {
		$('<div style="text-align: center;overflow:hidden"></div>').html('<label>Введите ключ страницы</label><br /><input type="text" id="copy_key_page" /><br /><br />'+text).dialog({
			width:300,
			height:200,
			resizable:false,
			draggable:false,
			modal:true,
			title:'Копировать страницу',
			close: function() { $(this).dialog('destroy').remove(); },
			buttons: {
				'Копировать':function() {
					var pid = $('#pages_selection').val();
					var ttl = $('#copy_key_page').val();
					if(ttl == '') { alert('Системный ключ не может быть пустым. (Пример системного ключа: index или shop)'); } 
					else {
						var tmp = pid.split('|');
						$.ajax({data:{ttl:ttl}, url:'/admin/ajax/Core/ajax?action=copyPage&id='+id+'&pid='+tmp[0]+'&sid='+tmp[1]}).success(function(){
							core.go('/admin/Pages/site?id='+tmp[1]+'&sp='+tmp[0]);
						});
					}
				},
				'Закрыть':function() {
					$(this).dialog('close');
				}
		}
		});
		$('#pages_selection').selectBox();
		ui.inputBox('#copy_key_page');
	});
},
move:function(id) {
	$.ajax({url:'/admin/ajax/Core/ajax?action=getSiteStructure&pid='+id}).success(function(text) {
		$('<div style="text-align: center;overflow:hidden" />').html(text).dialog({
			width:300,
			height:100,
			resizable:false,
			draggable:false,
			modal:true,
			title:'Переместить страницу',
			close: function() { $(this).dialog('destroy').remove(); },
			buttons: {
				'Переместить':function() {
					var pid = $('#pages_selection').val();
					var tmp = pid.split('|');
					$.ajax({url:'/admin/ajax/Core/ajax?action=movePage&id='+id+'&pid='+tmp[0]+'&sid='+tmp[1]}).success(function(){
						core.go('/admin/Pages/site?id='+tmp[1]+'&sp='+tmp[0]);
					});
				},
				'Закрыть':function() {
					$(this).dialog('close');
				}
		}
		});
		$('#pages_selection').selectBox();
	});    
},
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();
    }
},
confirmclose: function (quest) {
    window.onbeforeunload = function () {
        return confirm(quest);
    };
},
clearclose: function () {
    window.onbeforeunload = function () {
        return true;
    };
}
}

function get_tiny(callback_on_init) {
	callback_on_init = callback_on_init || false;
    tinyMCE.init({
        theme : "advanced",
        mode : "textareas",
        language : 'ru',
        plugins : "typograf, safari,spellchecker,imagemanager,filemanager,pagebreak,style,layer,table,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,logic",
        script_url : '/core/library/js/tiny_mce/tiny_mce.js',
        apply_source_formatting : true,
        convert_newlines_to_brs : false,
        force_br_newlines : false,
        force_p_newlines : false,
        forced_root_block : '',
        preformatted : true,
        validate_children : false,
		//valid_children : "-span[span]",
        verify_css_classes : true,
        verify_html : true,
        convert_urls : false,
        remove_script_host : false,
		init_instance_callback: callback_on_init,
        setup : function(ed) {
            ed.onBeforeGetContent.add(function(ed, o) {
                $(ed.contentDocument).find('img').each(function() {
                    if(!$(this).hasClass('imgLogic')&&!$(this).hasClass('imgLogicPHP'))
                    {
                        $(this).iresize({
                            action:'destroy',
                            editor:ed
                        });
                        $(this).iresize({
                            editor:ed
                        });
                    }
                });
            });
            ed.onSetContent.add(function(ed, o) {
                $(ed.contentDocument).find('img').each(function() {
                    if(!$(this).hasClass('imgLogic')&&!$(this).hasClass('imgLogicPHP'))
                    {
                        $(this).iresize({
                            action:'destroy',
                            editor:ed
                        });
                        $(this).iresize({
                            editor:ed
                        });
                    }
                });
            });
        },
        content_css : "/admin/ajax/Core/ajax?action=getTinyColor&rand="+Math.random(),
        extended_valid_elements:'div[*],span[*],h1[*],img[class|src|border=0|style|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]',
        theme_advanced_buttons1 : "typograf,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,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, insertimage, insertfile",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left"
    });
}

function jtiny() {
    $('textarea').tinymce({
        script_url : '/core/library/js/tiny_mce/tiny_mce.js',
        // General options
        theme : "advanced",
        language : 'ru',
        plugins : "safari,spellchecker,pagebreak,style,layer,table,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 : "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",
        language : 'ru',
        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;
        $('#menu_pid').val(this.choise_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);
                $('select').selectBox();
            }
        });
    },
    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();
    }
}

