
// getElementById - não gera erro de o elemento não existir
function _get(id) {
return typeof id == 'object' ? id : (document.getElementById(id) || null);
}

function addOption(sel, val, tex) {
sel = _get(sel);
var opt = document.createElement('option');
opt.value = val;
opt.text = tex ? tex : val;
	try { sel.add(opt, null); } 
	catch(e) { sel.add(opt); } 
}

function addOptionAt(selec, val, tex, idx, sel) {
var selec = _get(selec), opts = [], ind = /^\d+$/.test(idx) ? Number(idx) : 0;
	for(var i = 0; i < selec.options.length; i++) {
		if(i == ind) opts.push({'value': val, 'text': tex, 'selected': sel ? true : false});
	opts.push({'value': selec.options[i].value, 
						 'text': selec.options[i].innerHTML, 
						 'selected': selec.options[i].selected});
	}
	if(opts.length == 0) opts.push({'value': val, 'text': tex, 'selected': false});
	while(selec.firstChild) selec.removeChild(selec.firstChild);
	for(var i = 0; i < opts.length; i++) addOption(selec, opts[i].value, opts[i].text);
}

function unselectAll(sel) {
sel = _get(sel);
	for(var i = 0; i < sel.options.length; i++) sel.options[i].selected = false;
}

function selectAll(sel) {
sel = _get(sel);
	for(var i = 0; i < sel.options.length; i++) sel.options[i].selected = true;
}

_selectChildren_skip = true;
function selectChildren(sel) {
  if(_selectChildren_skip) return;
sel = _get(sel); 
var is = false;
	for(var i = 0; i < sel.options.length; i++) {
	  if(sel.options[i].selected && /^&nbsp;/.test(sel.options[i].innerHTML) == false) { is = true; continue; }
	  if(is) { 
		  if(/^&nbsp;/.test(sel.options[i].innerHTML)) sel.options[i].selected = true;
			else is = false;
		}
	}

}

function isset(varname) {
  try{ var ret = new Function('return (typeof '+varname+' != "undefined");')(); }
	catch(e) { var ret = false; }
return ret;
}


function selectByVal(sel, val) { 
	for(var i = 0; i < sel.options.length; i++) {
		if(sel.options[i].value == val) {
		sel.options[i].selected = true;
		return true;
		}
	}
return false;
}



function prepareCatDropdown(id, maxlines, first) {
maxlines = maxlines ? maxlines : 30;
var e = _get(id), n = e.options.length;
e.name = e.name+'[]';
e.multiple = true;
e.style.height = 'auto';
e.size = n > maxlines ? maxlines : n+(first ? 1 : 0);
unselectAll(e);
e.onchange = function() { 
	if(this.value == 'ALL_CATEGORIES_AVAILABLE') { 
		if(/^in/.test(this.id)) {
		selectAll(this); 
		this.options[0].selected = false;
		} else {
		unselectAll(this); 
		this.selectedIndex = 0;
		}
	return false;
	} 
selectChildren(this);
};
	if(first) {
	var firstop = document.createElement('option');
	firstop.value = 'ALL_CATEGORIES_AVAILABLE';
	firstop.innerHTML = first;
	e.insertBefore(firstop, e.getElementsByTagName('option')[0]);
	//firstop.selected = true;
	}
  if(isset('_catDropdown_selected')) {
	unselectAll(e);
		for(var i = 0; i < _catDropdown_selected.length; i++) {
		selectByVal(e, _catDropdown_selected[i]);
		}
	}
}

function removeImage(id, msg) {
  if(!confirm(msg)) return false;
location.href = '?page=widgetizeme&act=remove_image&img='+encodeURIComponent(id);
}

// color picker

function openCP(id) {
var ids = ['cp_bordercolor','cp_bgcolor','cp_txtcolor','cp_titcolor'];
  for(var i = 0; i < ids.length; i++) {
	
	var e = jQuery('#'+ids[i]);
	  if(id == ids[i]) {
		jQuery('#c'+ids[i]).show();
		e.slideDown('slow');
		} else if(e.get(0).offsetHeight) {
		jQuery('#c'+ids[i]).hide();
		e.slideUp('slow');
		}
	}
}

function makePrevQuery() {
var query = ['action=widget'], selcats = _get('cats'), himg = _get('header_image'), 
    els = ['domain', 'widget_width', 'widget_height', 'title_max', 'text_max', 'max_items', 'header_image', 
					 'tit_font_face', 'font_face', 'titcolor', 'txtcolor', 'bgcolor', 'bordercolor', 'js_on'];
	for(var i = 0; i < selcats.options.length; i++) {
	  if(selcats.options[i].selected) query.push('cats[]='+encodeURIComponent(selcats.options[i].value));
	}
	for(var i = 0; i < els.length; i++) {
	var rad = _get(els[i]);
		if(rad.tagName.toLowerCase() == 'input' && /^(radio|checkbox)$/.test(rad.type) && !rad.checked) continue;
	query.push(els[i]+'='+encodeURIComponent(_get(els[i]).value));
	}
return query.join('&');
}


function makeWidget(parent, query) {
var e = _get('wme_widget_iframe');
  if(!e) {
	var e = document.createElement('iframe');
	e.name = 'wme_widget_iframe';
	e.id = 'wme_widget_iframe';
	e.frameborder = 0;
	e.hspace = 0;
	e.vspace = 0;
	e.marginheight = 0;
	e.marginwidth = 0;
	e.scrolling = "no";
	  if(/width=([^&]+)/.test(query)) e.style.width = (parseInt(RegExp.$1) + 2)+'px';
	  else e.style.width = '90%';
	  if(/height=([^&]+)/.test(query)) e.style.height = (parseInt(RegExp.$1) + 2)+'px';
	  else e.style.height = '400px';
	e.style.borderWidth = '0pt';
	_get(parent).appendChild(e);
	}
  if(!query) query = makePrevQuery();
e.src = wme_url+'/widget.php?'+query;
}

function checkup() {
var els = {'domain': _e('Please inform your domain'), 
           'cats': _e('You must define at least one category'), 
           'widget_width': _e('You must define the width (in pixels)'), 
					 'widget_height': _e('You must define the height (in pixels)'), 
					 'title_max': _e('You can avoid line breaks in titles defining a maximum number of characters'), 
					 'max_items': _e('How many posts you want to show in your widget?')};
	for(var i in els) { 
	var rad = _get(i);
		if((/^(radio|checkbox)$/.test(rad.type) && !rad.checked) || /^[\s0]*$/.test(rad.value)) {
		alert(els[i]);
		rad.focus();
		return false;
		}
	}
return true;
}

function _e(str) {
	try { var ret = wme_l10n[str]; }
	catch(e) { var ret = str; }
return ret;
}

//function showCode(eid, errmsg) {
//var e = _get(eid), ret = '', props = [], sc = _get('cats'), cats = [],
//    els = ['custom_css', 'domain', 'widget_width', 'widget_height', 'title_max', 'text_max', 'max_items', 
//					 'header_image', 'tit_font_face', 'font_face', 'titcolor', 'txtcolor', 'bgcolor', 'bordercolor', 'js_on'];
//	
//	for(var i = 0; i < els.length; i++) { 
//	var rad = _get(els[i]);
//		if(rad.tagName.toLowerCase() == 'input' && /^(radio|checkbox)$/.test(rad.type) && !rad.checked) continue;
//	props.push("  '"+els[i]+"': '"+_get(els[i]).value+"',\n");
//	}
//var obj = props.join('');//.replace(/,\n$/, '\n');
// 
//
//	for(var i = 0; i < sc.options.length; i++) if(sc.options[i].selected) cats.push(sc.options[i].value);
//	if(cats.length == 0) {
//	alert(errmsg ? errmsg : 'No categories selected!');
//	return false;
//	}
//obj += "  'cats': ["+cats.join(',')+"]\n";
//
//
//ret += '<script type="text/javascript">\n';
//ret += 'var wme_url = "'+wme_url+'";\n';
//ret += 'var wme_widget = {\n'+obj+'}\n';
//ret += '</sc ript>\n';
//ret += '<script type="text/javascript" src="'+wme_url+'/widget.js"></sc ript>\n';
//e.value = ret;
//e.focus();
//e.select();
//}

function showCode(eid, errmsg) {
var e = _get(eid), ret = '';
ret += '<script type="text/javascript" src="'+wme_url+'/widget-js.php?'+makePrevQuery()+'"></script>\n';
e.value = ret;
e.focus();
e.select();
}


// ajax (dhteumeuleu)
var AJAX = (function(AJAX) {
  return function(url) {
    var ajax = AJAX();
    ajax.open("GET", url, false);
    ajax.send("");
    return ajax;
  };
})(this.XMLHttpRequest ? function() { return new XMLHttpRequest; } 
                       : function() { return new ActiveXObject("Microsoft.XMLHTTP"); });


function styleSelect(sel) {
sel.style.cssText = sel.options[sel.selectedIndex].style.cssText;
}

