/**
 * @version    $Id$
 * @package    IT_Theme_Framework
 * @author     InnoThemes Team <support@innothemes.com>
 * @copyright  Copyright (C) 2012 InnoThemes.com. All Rights Reserved.
 * @license    GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
 *
 * Websites: http://www.innothemes.com
 */

(function($) {
	_IT_ = window._IT_ || {};

	// Define toggle utils
	_IT_.TogglePageLayout = function(elm, isFullWidth) {
		isFullWidth = isFullWidth || false;

		if (isFullWidth) {
			$(elm).parent().parent().parent().parent().parent().parent().next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none');
		} else {
			$(elm).parent().parent().parent().parent().parent().parent().next().css('display', '').next().css('display', '').next().css('display', '').next().css('display', '').next().css('display', '').next().css('display', '').next().css('display', '').next().css('display', '').next().css('display', '');

			// Toggle background type
			var bgType = $(elm).parent().parent().parent().parent().parent().parent().next().find('select');

			_IT_.ToggleBackgroundType(bgType, bgType.val());
		}

		_IT_.InitPageAdmin(true);
	};

	_IT_.ToggleBackgroundType = function(elm, type) {
		switch (type) {
			case 'none':
				$(elm).parent().parent().parent().next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none');
			break;

			case 'solid_color':
				$(elm).parent().parent().parent().next().css('display', '').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none');
			break;

			case 'gradient_color':
				$(elm).parent().parent().parent().next().css('display', 'none').next().css('display', '').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none');
			break;

			case 'pattern':
				$(elm).parent().parent().parent().next().css('display', 'none').next().css('display', 'none').next().css('display', '').next().css('display', '').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none');
			break;

			case 'image':
				$(elm).parent().parent().parent().next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', 'none').next().css('display', '').next().css('display', '').next().css('display', '').next().css('display', '');
			break;
		}

		_IT_.InitPageAdmin(true);
	};

	_IT_.ToggleMenuAttributes = function(elm, type) {
		switch (type) {
			case 'top_menu':
			/*case 'footer_menu':
			case '404_page_menu':*/
				if ($(elm).val() == '') {
					$(elm).parent().parent().parent().next().css('display', 'none');
				} else {
					$(elm).parent().parent().parent().next().css('display', '');
				}
			break;
	
			case 'main_menu':
				if ($(elm).val() == '') {
					$(elm).parent().parent().parent().next().css('display', 'none').next().css('display', 'none');
				} else {
					$(elm).parent().parent().parent().next().css('display', '').next().css('display', '');
				}
			break;
		}

		_IT_.InitPageAdmin(true);
	};

	_IT_.ToggleNextSibling = function(elm, show) {
		show = show || false;

		if (show) {
			$(elm).parent().parent().parent().parent().next().css('display', '');
		} else {
			$(elm).parent().parent().parent().parent().next().css('display', 'none');
		}

		_IT_.InitPageAdmin(true);
	};

	_IT_.SwitchPromoContent = function(elm) {
		var value = $(elm).val();

		switch (value) {
			case 'page_title':
				$(elm).parent().parent().parent().next().show().next().show().next().show().next().hide().next().hide();
				$(elm).parent().parent().parent().next().next().find('input:checked').trigger('click');
			break;

			case 'sidebars':
				$(elm).parent().parent().parent().next().hide().next().hide().next().hide().next().show().next().show();
				$(elm).parent().parent().parent().next().next().next().next().find('select').trigger('change');
			break;
		}

		_IT_.InitPageAdmin(true);
	};

	_IT_.ResetColumns = function(elm, type) {
		var target = $(elm).parent().parent().parent().next().find('ul'), it_column_settings = target.data('it_column_settings');

		if (it_column_settings) {
			// Re-sort columns
			it_column_settings.setColumns(type);
		}
	};

	// Do remaining initialization after window completely loaded
	_IT_.InitPageAdmin = function(reset_accordion) {
		reset_accordion = reset_accordion || false;

		if (!reset_accordion) {
			// Toggle options
			$('#it_page_options .it-form-field-select select').each(function(i, e) {
				if ($(e).attr('onchange')) {
					$(e).trigger('change');
				}
			});

			// Init tool tips
			$('#it_page_options label > .has-tips').tipsy({
				gravity: 'ne',
				fade: true
			});
		}

		// Set correct height for accordion
		$('div[id^="it-form-accordion-"]').each(function(i, e) {
			if ($(e).css('display') != 'none') {
				// Calculate height
				var height = 0;

				$(e).children().each(function(i, child) {
					if ($(child).css('display') != 'none') {
						height += $(child).outerHeight(true);
					}
				});

				// Set correct height for accordion
				$(e).css({
					overflow: 'visible'
				});
			}
		});
	}

	$(window).load(function() {
		if (!_IT_.initialized) {
			// Handle window resize event
			$(window).resize(function(event) {
				if (event.target == window) {
					_IT_.InitPageAdmin.timer && clearTimeout(_IT_.InitPageAdmin.timer);
					_IT_.InitPageAdmin.timer = setTimeout(_IT_.InitPageAdmin, 500);
				}
			}).trigger('resize');

			// Handle tab and accordion activate event
			$('.it-form-sections-tabs').on('tabsactivate', _IT_.InitPageAdmin);
			$('.it-form-accordion').on('accordionactivate', _IT_.InitPageAdmin);

			_IT_.initialized = true;
		}
	});
})(jQuery);
