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


$(function() {
    $('#qn_main').click(function() {
        $('#qn_main').parent().toggleClass('active');
    });
    ui.input();
});
$.expr[':'].gallery = function(elem, pos, match) {
			var flag = false;
			flag = $(elem).attr('rel') == 'lightbox' ? true : ($(elem).attr('rel') == 'colorbox' ? true : false);
			return flag;
        }
$.expr[':'].tinymce = function(elem, pos, match) {
			var flag = true;
			flag = $(elem).hasClass('mceNoEditor') ? false : true;
			return flag;
        }
$.expr[':'].inputBox = function(elem, pos, match) {
			var flag = false;
			flag = $(elem).attr('type') == 'text' && !$(elem).parent().parent().hasClass('colorpicker') ? 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 core = {
	current_page:false,
	init:function(){
		var hash = window.location.hash;
		if(hash.match(/#\/ax\//i)) {
			ui.overlay('#main', true);
			core.ajax(hash.replace(/#\/ax/i,''));
		}
        GSMail.check();
	},
	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;
		}
	},
	ajax:function(href){
		onBeforeAjax();
		core.current_page = href;
		window.location.hash = '/ax'+href.replace(/(admin\/ajax)/i,'admin');;
		ui.overlay('#main', true);
		if(!href.match(/(admin\/ajax)/i))
			href = href.replace(/(admin)/i,'admin/ajax');
		//$('select').selectbox('destroy');
		$.ajax({url:href}).success(function(text){
			$('#main').html(text);
			$('#main_div').show();
			ui.overlayDestroy();
			$('select').selectbox();
			ui.inputBox('input:inputBox');
			onAfterAjax();
		});
	},
	ajaxReload:function() { core.ajax(core.current_page); },
	breadcrumb: function(list) {
		list = list || [{name:"Главная",url:"/admin/"}];
		var ul_crumb = $('<ul id="crumbs"></ul>');
		for(var i = 0; i < list.length; i++) {
			if(i != (list.length-1))
				var li = $('<li><a href="javascript:{}" onclick="core.ajax(\''+list[i].url+'\')">'+list[i].name+'</a></li>');
			else
				var li = $('<li>'+list[i].name+'</li>');
			ul_crumb.append(li);
		}
		$('#crumbs').replaceWith(ul_crumb);
	},
	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:inputBox');
			$('select').selectbox();
			$('#save_first').button().click(function() {$("#first_form").submit();});
		});
	},
selectPage:function(sid, pid) {
    $('#cr_page_button_template').click(function(){
		$('#create-page-div').dialog('close');
        var pagesa = ['add', 'photo', 'shop','news'];
        core.ajax("/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;
	core.ajax("/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();
},
action: function(action, params, callback) {
	$.ajax({url:'/admin/ajax/Core/ajax?action='+action, data: params, type:'post'}).success(function(text) { callback(text); });
},
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('|');
						$(this).dialog('close');
						$.ajax({data:{ttl:ttl}, url:'/admin/ajax/Core/ajax?action=copyPage&id='+id+'&pid='+tmp[0]+'&sid='+tmp[1]}).success(function(){
							core.ajax('/admin/Pages/site?id='+tmp[1]+'&sp='+tmp[0]);
						});
					}
				},
				'Закрыть':function() {
					$(this).dialog('close');
				}
		}
		});
		$('#pages_selection').selectbox();
		ui.inputBox('input:inputBox');
	});
},
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('|');
					$(this).dialog('close');
					$.ajax({url:'/admin/ajax/Core/ajax?action=movePage&id='+id+'&pid='+tmp[0]+'&sid='+tmp[1]}).success(function(){
						core.ajax('/admin/Pages/site?id='+tmp[1]+'&sp='+tmp[0]);
					});
				},
				'Закрыть':function() {
					$(this).dialog('close');
				}
		}
		});
		$('#pages_selection').selectbox();
	});    
},
relatives:function(name, callback) {
	core.include('/core/library/js/jstree/jquery.jstree.js');
	core.include('/core/library/js/jstree/themes/classic/style.css', 'css');
	$('<div><div id="jsTreeC"></div></div>').appendTo('body').dialog({
        width:600,
        height:500,
        resizable:true,
        draggable:false,
        modal:true,
		title:'Выберите элемент',
		open:function() {
			$.jstree._themes = "/core/library/js/jstree/themes/";
			$("#jsTreeC").jstree({
				"json_data" : {
					"ajax" : {
						"url" : "/admin/ajax/Core/ajax?action=jstree",
						"data" : function (n) {
							return { id : n.attr ? n.attr("data-eid") : 0, did : n.attr ? n.attr("data-did") : 0  };
						}
					}
				},
				"plugins" : [ "themes", "json_data", "ui" ]
			}).bind("select_node.jstree", function (event, data) {
				$("#jsTreeC").data('ncid', data.rslt.obj.attr("data-eid"));
			});
		},
        close: function() { $(this).dialog('destroy').remove(); },
		buttons: {
			"Выбрать":function() { if(callback) { callback($("#jsTreeC").data('ncid')); } $('input[id="'+name+'"]').val($("#jsTreeC").data('ncid')); $(this).dialog('close'); }
		}
    });
},
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('Вы точно хотите удалить страницу?')) {
        core.ajax('/admin/ajax/Pages/pdel?id='+id);
	}
},
turnActivity:function(id, obj){
	$.ajax({url:'/admin/ajax/Core/ajax?action=turnActivity&id='+id}).success(function(text) {
		var flag = '';
		if($(obj).attr('src') == '/core/admin/templates/default/img/icons/off-16.png')
		{
			$(obj).attr('src', '/core/admin/templates/default/img/icons/on-16.png');
			flag = 'Выключить страничку';
		}
		else
		{
			$(obj).attr('src', '/core/admin/templates/default/img/icons/off-16.png');
			flag = 'Включить страничку';
		}
		$(obj).attr('title', flag);
		//core.ajax(core.current_page);
	});
},
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" action="/admin/Core/mails/"><input type="hidden" name="st_id" value="'+id+'"></form>');
        f.appendTo('body').ajaxForm({success:function(){ core.ajax(core.current_page); }}).submit();
    },
    edit: function(id) {
        core.ajax('/admin/Core/mails/edit?id='+id);
    },
    del: function(id) {
        var f = $('<form method="post" action="/admin/Core/mails/"><input type="hidden" name="del_id" value="'+id+'"></form>');
        f.appendTo('body').ajaxForm({success:function(){ core.ajax(core.current_page); }}).submit();
    }
},
confirmclose: function (quest) {
    window.onbeforeunload = function () {
        return confirm(quest);
    };
},
clearclose: function () {
    window.onbeforeunload = function () {
        return true;
    };
}
}

function onBeforeAjax() {
    $('textarea:tinymce').each(function(){
        try {$(this).elrte('destroy');} catch(e) {}
    });
    $("#ui-datepicker-div").hide();
}

function onAfterAjax() {
    $('textarea:tinymce').each(function(){
      $(this).elrte({
              lang         : 'ru',   // set your language
              styleWithCSS : false,
              height       : 480,
              toolbar      : 'maxi',
              cssfiles     : ['/core/library/js/elrte-1.3/css/elrte-inner.css'],
              fmOpen : function(callback) {
                $('<div id="myelfinder" />').elfinder({
                   url : '/core/library/js/elfinder-1.2/connectors/php/connector.php',
                   lang : 'ru',
                   dialog : { width : 900, modal : true, title : 'Files' }, // open in dialog window
                   closeOnEditorCallback : true, // close after file select
                   editorCallback : callback     // pass callback to file manager
               })
            }
          });
    })
    GSMail.flash();
}

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'))
        }
    });
}

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

(function(){
var old = $.ui.dialog.prototype._create;
	$.ui.dialog.prototype._create = function(d){
		old.call(this, d);
		var self = this,
			options = self.options,
			oldHeight = options.height,
			oldWidth = options.width,
			uiDialogTitlebarFull = $('<a href="#"></a>')
				.addClass(
					'ui-dialog-titlebar-full ' +
					'ui-corner-all'
				)
				.attr('role', 'button')
				.hover(
					function() {
						uiDialogTitlebarFull.addClass('ui-state-hover');
					},
					function() {
						uiDialogTitlebarFull.removeClass('ui-state-hover');
					}
				)
				.toggle(
					function() {
						self._setOption('height', window.innerHeight - 10);
						self._setOption('width', window.innerWidth - 30);
						self._position('center');
						return false;
					},
					function() {
						self._setOption('height', oldHeight);
						self._setOption('width', oldWidth);
						self._position('center');
						return false;
					}
				)
				.focus(function() {
					uiDialogTitlebarFull.addClass('ui-state-focus');
				})
				.blur(function() {
					uiDialogTitlebarFull.removeClass('ui-state-focus');
				})
				.appendTo(self.uiDialogTitlebar),


			uiDialogTitlebarFullText = $('<span></span>')
				.addClass(
					'ui-icon ' +
					'ui-icon-newwin'
				)
				.text(options.fullText || 'Fullscreen')
				.appendTo(uiDialogTitlebarFull)


	}
})();

$(function(){
    $('[gstooltip]').live('mouseenter', function(){
                    var dv = $('<div />');
                    var of = $(this).offset();
                    var tid = Math.ceil(Math.random()*1000000);
					var toolleft = of.left+25;
					if((toolleft+250) > $(document).width()) {
						toolleft -= 300;
					}
                    $(this).attr('gstooltip_id', tid);
                    dv.attr('id', tid);
                    dv.html($(this).attr('gstooltip'));
                    dv.css({
                        position:'absolute',
                        left: toolleft+'px',
                        top:of.top-3+'px',
                        border:'1px solid #525252',
                        background:'#C5C5C5',
                        color:'#525252',
                        padding:'5px',
                        'font-size':'12px',
                        'display':'none',
                        'z-index':10000,
                        'width':'250px'
                    });
                    dv.appendTo('body');
                    dv.fadeIn('slow');
                });
    $('[gstooltip]').live('mouseleave', function(){
        $('#'+$(this).attr('gstooltip_id')).remove();
    });
});
