var sort_in_progress = false;
var fade_in_progress = false;

$(function() { menu_builder_init(); });


function menu_builder_init() {

    $('#all_pages, #my_pages').sortable({
        connectWith: '.connected_menus',

        start: function(event, ui)
        {
        	sort_in_progress = true;
        	var item_id = $(ui.item).attr('id');
        	$('#'+item_id+'_rm').fadeOut(100);
        },
        receive: function(event, ui)
        {
            var item_id = $(ui.item).attr('id');

            //update selected menu part
            if (this.id == 'my_pages')
            {
                document.getElementById('mi_selected').value=item_id;
                var menu_name = document.getElementById(item_id+'_inp').value;

				set_selected_menu_item(item_id);

                blink_div('menu_control_wrap');
            }
        },
        stop: function(event, ui)
        {
        	clean_lists();
        	setTimeout("sort_in_progress=false", 60);
        }

    }).disableSelection();
}


function clean_lists() {

    var mi_selected = document.getElementById('mi_selected').value;
    var this_id = '';

	//all pages
    $('#all_pages').children().each( function() {

        this_id = $(this).attr('id');

        //if selected is dropped here, update the selected menu part
        if (this_id == mi_selected)
        {
            document.getElementById('menu_lable').value='';
            document.getElementById('page_select').value='';
            document.getElementById('menu_link').value='';
            document.getElementById('mi_selected').value='';
            unset_thumb('');

            blink_div('menu_control_wrap');
        }

        document.getElementById(this_id+'_name').setAttribute('class', 'menu_item_all_name');
        document.getElementById(this_id).setAttribute('class', 'menu_item_all');
        document.getElementById(this_id).setAttribute('onclick', 'activate_alert(this.id);');
        $('#'+this_id+'_rm').fadeOut(100);
    });


	//my pages
    $('#my_pages').children().each( function() {

        this_id = $(this).attr('id');

        if ($('#'+this_id).is('.menu_item_all'))
        {
            document.getElementById(this_id).setAttribute('class', 'menu_item_my mn_selected');
        }
        else if ($('#'+this_id).attr('id') == mi_selected)
        {
            document.getElementById(this_id).setAttribute('class', 'menu_item_my mn_selected');
        }
        else
        {
            document.getElementById(this_id).setAttribute('class', 'menu_item_my');
        }

        document.getElementById(this_id+'_name').setAttribute('class', 'menu_item_my_name');
        document.getElementById(this_id).setAttribute('onclick', 'select_menu_item(this.id);');
        $('#'+this_id+'_rm').fadeIn(100);
    });

    var active_pages_left = $('#my_pages').children().length;

    if (active_pages_left == 0)
    {
    	setTimeout("no_pages_now_what()", 60);
    }

    menu_options_toggle();
}


//_________________________________________________________________________//
//							main functions
//_________________________________________________________________________//


function select_menu_item(div_id) {

    var menu_name = document.getElementById(div_id+'_inp').value;
    document.getElementById('mi_selected').value=div_id;
    $('#my_pages').children().removeClass('mn_selected');
    $('#'+div_id).addClass('mn_selected');

    set_selected_menu_item(div_id);
    menu_options_toggle();
    blink_div('menu_control_wrap');
}


function update_menu_text() {

    var cur_selected_menu = get_cur_selected_menu();

    if (cur_selected_menu.length == 0)
    {
        alert('Start by selecting menu!');
        blink_div('my_pages');
    }
    else
    {
        var cur_menu_val = document.getElementById('menu_lable').value;

        //little cleanup
        var temp_clean = cur_menu_val.replace(/([^0-9A-Za-z\s\'\/\.\,\?\!\-])/g,"");

        if (cur_menu_val != temp_clean)
	    {
	        document.getElementById('menu_lable').value=temp_clean;
	    }

        document.getElementById(cur_selected_menu+'_inp').value=temp_clean;
        document.getElementById(cur_selected_menu+'_name').innerHTML=temp_clean;


        //check and update menu link if menu link is not set
        var custom_menu_q = $('#'+cur_selected_menu+'_custom_menu').size();

        if (custom_menu_q == 1)
        {
            var custom_menu_v = document.getElementById(cur_selected_menu+'_custom_menu').value;
            var cur_menu_link = document.getElementById(cur_selected_menu+'_inp_url').value;

            if (custom_menu_v == '1')
            {
                var new_menu_link = cur_menu_val.replace(/([^0-9A-Za-z\s\_])/g,'').replace(/ /g,'_');

                document.getElementById(cur_selected_menu+'_inp_url').value=new_menu_link;
                document.getElementById('menu_link').value=new_menu_link;
            }
        }

    }
}


function apply_to(from_id, to_id) {

	if (from_id == 'page_descr')
	{
		var page_descr = document.getElementById('page_descr').value;

		document.getElementById(to_id).innerHTML=page_descr;
		document.getElementById('menu_descr_text').innerHTML=page_descr;
	}
	else
	{
		document.getElementById(to_id).value=document.getElementById(from_id).value;
	}
}


function get_cur_selected_menu() {

	var cur_selected_menu = document.getElementById('mi_selected').value;

	return cur_selected_menu;
}


function set_page(page_val) {

	var cur_selected_menu = get_cur_selected_menu();

	if (cur_selected_menu.length == 0)
	{
		document.getElementById('page_select').value='';
		alert('Start by selecting menu!');
        blink_div('my_pages');
    }
    else
    {
		document.getElementById('menu_link').value='';
		document.getElementById(cur_selected_menu+'_inp_url').value='';
		document.getElementById(cur_selected_menu+'_inp_pg').value=page_val;
	}
}


function set_url(url_val) {

	var cur_selected_menu = get_cur_selected_menu();

	if (cur_selected_menu.length == 0)
	{
		document.getElementById('menu_link').value='';
		alert('Start by selecting menu!');
        blink_div('my_pages');
    }
    else
    {
        var temp_clean = url_val.replace(/([^0-9A-Za-z\s\_])/g,'').replace(/ /g,'_').toLowerCase();

		if (url_val != temp_clean)
		{
	    	document.getElementById('menu_link').value=temp_clean;
		}

		document.getElementById('page_select').value='';
		document.getElementById(cur_selected_menu+'_inp_pg').value='';
		document.getElementById(cur_selected_menu+'_inp_url').value=url_val;


		//check and update custom-menu updater switch
        var custom_menu_q = $('#'+cur_selected_menu+'_custom_menu').size();

        if (custom_menu_q == 1)
        {
            document.getElementById(cur_selected_menu+'_custom_menu').value='2';
        }
	}
}


function set_thumb(thumb_id) {

	var cur_selected_menu = get_cur_selected_menu();

	if (cur_selected_menu.length == 0)
	{
		alert('Start by selecting menu!');
        blink_div('my_pages');
    }
    else
    {
		document.getElementById(cur_selected_menu+'_inp_th').value=thumb_id;
		$('.tpl_thumb').removeClass('template_preview_wrap template_preview_wrap_selected').addClass('template_preview_wrap');
		$('.tpl_thumb').attr('onclick', 'set_thumb(this.id);');

		$('#'+thumb_id).attr('onclick', 'unset_thumb(\''+cur_selected_menu+'\');');
		$('#'+thumb_id).removeClass('template_preview_wrap').addClass('template_preview_wrap_selected');
	}
}


function unset_thumb(selected_id) {

	$('.tpl_thumb').removeClass('template_preview_wrap template_preview_wrap_selected').addClass('template_preview_wrap');
	$('.tpl_thumb').attr('onclick', 'set_thumb(this.id);');

	if (selected_id.length != 0)
	{
		document.getElementById(selected_id+'_inp_th').value='';
	}
}


function set_selected_menu_item(selected_id) {

	var menu_name = document.getElementById(selected_id+'_inp').value;
	var menu_url = document.getElementById(selected_id+'_inp_url').value;
	var menu_page = document.getElementById(selected_id+'_inp_pg').value;
	var menu_thumb = document.getElementById(selected_id+'_inp_th').value;
	var page_title = document.getElementById(selected_id+'_inp_title').value;
	var page_keywords = document.getElementById(selected_id+'_inp_keyw').value;
	var page_descr = document.getElementById(selected_id+'_inp_descr').innerHTML;

	document.getElementById('menu_lable').value=menu_name;
	document.getElementById('menu_link').value=menu_url;
	document.getElementById('page_select').value=menu_page;

    document.getElementById('page_title').value=page_title;
    document.getElementById('page_keywords').value=page_keywords;
    document.getElementById('page_descr').value=page_descr;
    document.getElementById('advanced_options_menu_label').innerHTML=menu_name;


    if (page_descr.length==0)
    {
        document.getElementById('menu_descr_text').innerHTML='<i>'+menu_name+'</i> does not have a description available.<div class="marg_left_20">Tap <i><b>advanced</b></i> to set it up.</div>';
    }
    else
    {
        document.getElementById('menu_descr_text').innerHTML=document.getElementById(selected_id+'_inp_descr').innerHTML;
    }

	if (menu_thumb.length != 0)
	{
		set_thumb(menu_thumb);
	}
	else
	{
		unset_thumb(selected_id);
	}
}


function rm_menu_item(item_id) {

    var element = document.getElementById(item_id);
    var all_pages_div = document.getElementById('all_pages');

    document.getElementById(item_id+'_rm').style.display='none';        //start by hiding the rm_div
    element.parentNode.removeChild(element);
    all_pages_div.insertBefore(element, all_pages_div.childNodes[0]);
    document.getElementById('menu_descr_text').innerHTML='Select an item from My Active Pasges';

    sort_in_progress = true;
    clean_lists();
    setTimeout("sort_in_progress=false", 60);
}


function menu_delete() {

    var cur_selected_menu = get_cur_selected_menu();

	if (cur_selected_menu.length == 0)
	{
		alert('Start by selecting menu!');
        blink_div('my_pages');
    }
    else
    {
        rm_menu_item(cur_selected_menu);
    }
}


function menu_options_toggle() {

    var cur_selected_menu = get_cur_selected_menu();

    if (cur_selected_menu.length == 0)
	{
	    setTimeout("menu_options('off');", 560);
    }
    else
    {
        setTimeout("menu_options('on');", 600);
    }
}


function menu_options(opt_switch) {

	if (opt_switch == 'on')
	{
	    var cur_mi = document.getElementById('mi_selected').value;

	    document.getElementById('menu_advanced').setAttribute('onclick', 'advanced_options(\'on\');');

        document.getElementById('menu_control').setAttribute('class', 'menu_control');
        document.getElementById('menu_advanced').setAttribute('class', 'menu_bottom_opt');
        document.getElementById('page_title').setAttribute('onkeyup', 'apply_to(this.id, \''+cur_mi+'_inp_title\');');
    	document.getElementById('page_keywords').setAttribute('onkeyup', 'apply_to(this.id, \''+cur_mi+'_inp_keyw\');');
    	document.getElementById('page_descr').setAttribute('onkeyup', 'apply_to(this.id, \''+cur_mi+'_inp_descr\');');
        $('.menu_control_key').removeClass('menu_control_key_disabled').addClass('menu_control_key_enabled');
        $('.menu_control_key_sub').removeClass('menu_control_key_disabled').addClass('menu_control_key_enabled');
    }
    else if (opt_switch == 'off')
    {
        document.getElementById('menu_advanced').removeAttribute('onclick');

	    document.getElementById('menu_control').setAttribute('class', 'menu_control_disabled');
        document.getElementById('menu_advanced').setAttribute('class', 'menu_bottom_opt_disabled');
        $('.menu_control_key').removeClass('menu_control_key_enabled').addClass('menu_control_key_disabled');
        $('.menu_control_key_sub').removeClass('menu_control_key_enabled').addClass('menu_control_key_disabled');
    }
}


function advanced_options(opt_switch) {

	if (opt_switch == 'on')
	{
		var box_height = $('#menu_builder').outerHeight();
		var box_width = $('#menu_builder').outerWidth();

		document.getElementById('menu_light_box').style.height=box_height+'px';
		document.getElementById('menu_light_box').style.width=box_width+'px';

		$('#menu_advanced_options_wrap').show(300);
		$('#menu_light_box').fadeIn(300);
	}
	else if (opt_switch == 'off')
	{
		$('#menu_light_box').fadeOut(300);
		$('#menu_advanced_options_wrap').hide(600);
	}
}


function add_menu_button() {

    var max_id_my_menu_items = get_max_id('my_pages');
    var max_id_all_menu_items = get_max_id('all_pages');
    var max_id = max_id_my_menu_items > max_id_all_menu_items ? max_id_my_menu_items + 1 : max_id_all_menu_items + 1;


    var new_menu_html = '<div class="menu_item_my" id="mi_'+max_id+'" onclick="select_menu_item(this.id);">' +
                        '   <div class="rm_item" id="mi_'+max_id+'_rm" onclick="rm_menu_item(this.parentNode.id);">' +
                        '       <img src="js/s101_admin/menu_manager/img/delete.png" class="rm_item_img" alt="">' +
                        '   </div>' +
                        '   <div class="menu_item_my_name" id="mi_'+max_id+'_name">Custom Page</div>' +
                        '   <input type="hidden" name="mn_item_ids[]" id="mi_'+max_id+'_mn_item_ids" value="'+max_id+'" />' +
                        '   <input type="hidden" name="mi_'+max_id+'" id="mi_'+max_id+'_inp" value="Custom Page" />' +
                        '   <input type="hidden" name="mi_'+max_id+'_url" id="mi_'+max_id+'_inp_url" value="" />' +
                        '   <input type="hidden" name="mi_'+max_id+'_pg" id="mi_'+max_id+'_inp_pg" value="" />' +
                        '   <input type="hidden" name="mi_'+max_id+'_th" id="mi_'+max_id+'_inp_th" value="" />' +
                        '   <input type="hidden" name="mi_'+max_id+'_title" id="mi_'+max_id+'_inp_title" value="" />' +
                        '   <input type="hidden" name="mi_'+max_id+'_keyw" id="mi_'+max_id+'_inp_keyw" value="" />' +
                        '   <input type="hidden" name="mi_'+max_id+'_custom_menu" id="mi_'+max_id+'_custom_menu" value="1" />' +
                        '   <textarea cols="10" rows="2" name="mi_'+max_id+'_descr" id="mi_'+max_id+'_inp_descr" style="display:none;"></textarea>' +
                        '</div>';

    $('#my_pages').prepend(new_menu_html);
    select_menu_item('mi_'+max_id);
    document.getElementById('menu_link').value='custom_page';
}

function get_max_id(parent_div_id) {

    var max_id = 0;

    $('#'+parent_div_id).children().each(function(){

        var id_numb = parseInt($(this).attr('id').substr(3));
        if (id_numb > max_id)
        {
            max_id = id_numb;
        }
    });
    return max_id;
}


//_________________________________________________________________________//
//							popup version
//_________________________________________________________________________//


function menu_builder_popup(action) {

    if (action == 'show')
    {
        $('#menu_builder_popup_div').fadeIn(600);

        $('#menu_builder_popup_builder').load('/?page=admin_site_menus #menu_builder', function()
        {
            $('.rm_item_img').css('display', 'none');
            $('#menu_builder_popup_builder').slideDown(600);
            $('.rm_item_img').fadeIn(600);
            $('#close_menu_builder_popup').fadeIn(600);

            $('#menu_builder_popup_loading').slideUp(300);
            $('#mi_in_popup').val('1');
            menu_builder_init();
        });
    }
    else if (action == 'hide')
    {
        $('.rm_item_img').fadeOut(300);
        $('#close_menu_builder_popup').fadeOut(300);
        $('#menu_builder_popup_builder').slideUp(600, function()
        {
            document.getElementById('menu_builder_popup_div').style.display='none';
            document.getElementById('menu_builder_popup_builder').innerHTML='';
            document.getElementById('menu_builder_popup_loading').style.display='block';
        });
    }
    else
    {
        return;
    }
}


//_________________________________________________________________________//
//								alerts
//_________________________________________________________________________//


function blink_div(div_id) {

    if (fade_in_progress == false)
    {
        fade_in_progress = true;
        $('#'+div_id).fadeOut(600);
        $('#'+div_id).fadeIn(140);
        setTimeout("fade_in_progress=false", 200);
    }
}


function activate_alert(div_id) {

    if (sort_in_progress == false)
    {
    	cur_div_value = document.getElementById(div_id+'_inp').value;
    	alert('Drag "'+cur_div_value+'" to "My Active Pages" to activate it.');
    	blink_div('my_pages');
    }
}


function no_pages_now_what() {

    alert("You just removed all pages from your website!\n\nNow what??");
}


//_________________________________________________________________________//
//							save function
//_________________________________________________________________________//


function save_form() {

    	$('#menu_bot_buttons').fadeOut(30);
        $('#loading_gif').fadeIn(300);

        $.post('/?page=admin_site_menus', $('#menu_form').serialize(), function(data) {

    	    $('#menu_saved_message').fadeIn(30, function() {
	            $('#loading_gif').css('display', 'none');

	            if (document.getElementById('mi_in_popup').value=='1')
        	    {
        	        window.location.href=window.location.href;
        	    }
        	    else
        	    {
            	    $('#menu_saved_message').delay(900).fadeOut(600);
        	        $('#menu_bot_buttons').fadeIn(300);
        	    }
    	    });
	    }).error(function() { alert('Oops something went wrong... Please refresh the page and try again...'); });
}
