
jQuery(document).ready(function() {

	// form: applay default settings
	jQuery('#frm-loading').addClass('hide');
	jQuery('#wgt-settings-toolbar').removeClass('hide');

	var defaultSettings = pokernews.widget.news.settings;
	for (var opt in defaultSettings) {
		var optID = '#opt-' + opt.toLowerCase();
		if (jQuery(optID)[0].type == 'checkbox') {
			jQuery(optID)[0].checked = defaultSettings[opt];
			if (opt == 'backgroundColor' && defaultSettings[opt] != 'transparent') {
				jQuery(optID)[0].checked = false;
			}
		}
		jQuery(optID).val(defaultSettings[opt]);
	}

	// toolbar: color picker
	jQuery.each([
			['#picker-1','#switch-1','#opt-linkcolor, #switch-1'],
			['#picker-2','#switch-2','#opt-textcolor, #switch-2'],
			['#picker-3','#switch-3','#opt-bordercolor, #switch-3']
	], function(){
		jQuery(this[0]).farbtastic(this[2]);
		jQuery(this[1]).click(function(){
			id = '#picker-' + this.id.substr(7)
			jQuery('.js-color-picker:not(' + id + ')').hide();
			jQuery(id).toggle();
		});
	});
	jQuery(document).click(function(e) {
		jQuerye=jQuery(e.target)
		if(!jQuerye.is('img') && (jQuerye.parents('.farbtastic').length==0 && !jQuerye.hasClass('farbtastic') && !jQuerye.hasClass('wheel'))){
			jQuery('#picker-1, #picker-2, #picker-3').hide();
		}
	});

	// toolbar: category
	jQuery('#opt-category').change(function(event){
			jQuery(this).attr('disabled', true);
			var selectedCategories = jQuery('#opt-category').val()
			if (!selectedCategories) {
				selectedCategories = [0];
			}


			if (selectedCategories.length == 1 && selectedCategories[0] == 0) {
				jQuery("#opt-category option[value=0]").attr("selected", "selected");
			}
			else {
				jQuery("#opt-category option[value=0]").attr("selected", "");
			}

			jQuery.post(
				document.location.href,
				{
					event: "widgets.news_rss#widget_category",
					category_id: selectedCategories.join(',')
				},
				function(response) {
					if (!response) {
						return;
					}
					eval(response);
					jQuery("#" + pokernews.widget.news.hash).html(html);
					jQuery(".bottom-text").html(STR['script_loading']);
					jQuery('#opt-category').attr('disabled', false);
			  	}
			);
		}
	)

	jQuery('#opt-flexible').change(function(event){
			if (this.checked) {
				jQuery('.w-measure').html('%');
				jQuery('#opt-width').val('100');
			}
			else {
				var defaultSettings = pokernews.widget.news.settings;
				jQuery('.w-measure, .h-measure').html('px');
				jQuery('#opt-width').val(defaultSettings['width']);
				jQuery('#opt-height').val(defaultSettings['height']);
			}
		}
	)

	// toolbar: generate code button
	jQuery('#wgt-frm').submit(function(event){
			var pnObject = pokernews.widget.news;
			var containerID = pnObject.hash;
			var srcJs = STR['widget_js_src'];
			var selectedCategories = jQuery('#opt-category').val()
			if (!selectedCategories) {
				selectedCategories = [0];
			}
			srcJs += '?c=' + selectedCategories.join(',');

			var width = jQuery('#opt-width').val();
			if (jQuery('#opt-flexible')[0].checked) {
				width = '100%';
			}

			var dst = '';
			dst += '<div id="' + containerID + '">\r\n';
			dst += '	' + STR['script_loading'] + '\r\n';
			dst += '</div>\r\n';
			dst += '\r\n';
			dst += '<scri' + 'pt src="' + srcJs + '" type="text/javascript" charset="UTF-8">' + '</sc' + 'ript>\r\n';
			dst += '<scri' + 'pt type="text/javascript">\r\n';
			dst += '	pokernews.widget.news.customSettings = {\r\n';
			dst += '		imageVisible: ' + jQuery('#opt-imagevisible').is(':checked') + ',\r\n';
			dst += '		dateVisible: ' + jQuery('#opt-datevisible').is(':checked') + ',\r\n';
			dst += '		linkTargetBlank: ' + jQuery('#opt-linktargetblank').is(':checked') + ',\r\n';
			dst += '		width: "' + width + '",\r\n';
			dst += '		height: "' + jQuery('#opt-height').val() + '",\r\n';
			dst += '		linkColor: "' + jQuery('#opt-linkcolor').val() + '",\r\n';
			dst += '		textColor: "' + jQuery('#opt-textcolor').val() + '",\r\n';
			dst += '		borderColor: "' + jQuery('#opt-bordercolor').val() + '"';
			if (jQuery('#opt-backgroundcolor').is(':checked')) {
				dst += ',\r\n		backgroundColor: "transparent"\r\n';
			}
			else {
				dst += '\r\n';
			}
			dst += '	}\r\n';
			dst += '\r\n';
			dst += '	pokernews.widget.news.output(\'' + containerID + '\');\r\n';
			dst += '</sc' + 'ript>\r\n';
			if (STR['noscript']) {
				dst += '<noscript>' + STR['noscript'] + '</noscript>';
			}

			jQuery('#wgt-code-dst').val(dst);
			jQuery('.wgt-code-view').removeClass('hide');

			return false;
		}
	);

	// toolbar: mark code button
	jQuery('#copy-code').click(function(){
		jQuery('#wgt-code-dst')[0].select();
		jQuery('#wgt-code-dst')[0].focus();
		if (window.clipboardData && window.clipboardData.setData) {
			window.clipboardData.setData("Text", jQuery('#wgt-code-dst').val());
		}
		return false;
	});
	if (!(window.clipboardData && window.clipboardData.setData)) {
		jQuery('#copy-code').val(STR['mark_code']);
	}


	var tmr1 = setInterval('applyCustomSettings()', 500);
	var tmr2 = setInterval('applyCustomSettings(true)', 3000);

});


function applyCustomSettings(delayed) {
	var defaultSettings = pokernews.widget.news.settings;
	var recommendedSetings = pokernews.widget.news.recommendedSettings;
	for (var opt in defaultSettings) {
		var optID = '#opt-' + opt.toLowerCase();
		var optVal = jQuery(optID).val();

		switch (opt) {
			case 'backgroundColor':
				optVal = '#FFFFFF';
				if (jQuery(optID)[0].checked) {
					optVal = 'transparent';
				}
				jQuery('.pn-wgt-bg').css('background', optVal);
				break;
			case 'borderColor':
				//optVal = validateColor(jQuery(optID), defaultSettings[opt]);
				jQuery('.pn-wgt-bg').css('border-color', optVal);
				jQuery('.pn-wgt-top').css('background', optVal);
				break;
			case 'linkColor':
				//optVal = validateColor(jQuery(optID), defaultSettings[opt]);
				jQuery('.pn-wgt-wrap a').css('color', optVal);
				break;
			case 'textColor':
				//optVal = validateColor(jQuery(optID), defaultSettings[opt]);
				var tmp = jQuery('.pn-wgt-wrap a').css('color');
				jQuery('.pn-wgt-wrap *').css('color', optVal);
				jQuery('.pn-wgt-wrap a').css('color', tmp);
				break;
			case 'width':
				if (!delayed) {
					continue;
				}
				if (jQuery('#opt-flexible')[0].checked) {
					optVal = validateDimensions(jQuery(optID), 10, 100);
					jQuery('.pn-wgt-bg, .pn-wgt-widget').css('width', optVal + '%');
					jQuery('.pn-wgt-widget').each(function(i){
						if (i == 0) {
							jQuery(this).css('width', optVal + '%');
						}
						else {
							jQuery(this).css('width', '100%');
						}
					});
					continue;
				}
				optVal = validateDimensions(jQuery(optID), recommendedSetings['minWidth']);
				optVal = (optVal > 520 ? 520 : optVal);
				jQuery('.pn-wgt-bg, .pn-wgt-widget').css('width', optVal + 'px');
				break;
			case 'height':
				if (!delayed) {
					continue;
				}
				optVal = validateDimensions(jQuery(optID), recommendedSetings['minHeight']);
				optVal -= 86;
				optVal = (optVal > 520 ? 520 : optVal);
				jQuery('.pn-wgt-wrap .scroll').css('height', optVal + 'px');
				break;
			case 'dateVisible':
				if (jQuery(optID)[0].checked) {
					jQuery('.pn-wgt-news-date').show();
				}
				else {
					jQuery('.pn-wgt-news-date').hide();
				}
				break;
			case 'imageVisible':
				if (jQuery(optID)[0].checked) {
					jQuery('.pn-wgt-news-image').show();
				}
				else {
					jQuery('.pn-wgt-news-image').hide();
				}
				break;
		}
	}
}

function validateDimensions(el, min, max) {
	var v = parseInt(el.val());
	if (!el.val().match(new RegExp('^[0-9]{2,4}$'))) {
		v = min;
		el.addClass('wgt-error');
	}
	else if (v < min) {
		v = min;
		el.addClass('wgt-error');
	}
	else if (max && v > max) {
		v = max;
		el.addClass('wgt-error');
	}
	else {
	 	el.removeClass('wgt-error');
	}
	return v;
}

function validateColor(el, deflt) {
	var v = deflt;
	if (!el.val().match(new RegExp('^#[0-9a-f]{6}$','i'))) {
		el.addClass('wgt-error');
	}
	else {
		v = el.val();
		el.removeClass('wgt-error');
	}
	return v;
}
