
function hasText(el){
	return el && isString(el.text()) && el.text().length > 0;
	
}

function isString(x){
	return typeof(x) == 'string';
}

function isInteger(s) {
	return s && typeof s!=='undefined' &&(s.toString().search(/^-?[0-9]+$/) == 0);
}
function isObject(s){
	return typeof s =='object';
}
function isNumber(s){
	return s && (typeof s== 'number' ||  (s.toString().search(/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/)==0));  
}
function isStringNumber(s){
	return typeof s=='string' && s.search(/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/)==0;  
}
function isPositiveNumber(s){
	return isNumber(s) && s>0;
}
function getEl(el){
	if(typeof el =='string')return $('#'+el);
	return el;
}
function getID(el){
	if(typeof el =='string')el;
	return el.attr('id');
}
function maxDate(){
	var max=arguments[0];
	for(var i =1;i<arguments.length;i++){
		if(!arguments[i])continue;
		if(dateCompare(max,arguments[i],['year','month']) < 0){
			max=arguments[i];
		}
	}
	return max;
}
	function dateCompare(d1, d2, keys){
		
		for(var i=0;i<keys.length;i++){
			if(!isNumber(d1[keys[i]])  || !isNumber(d2[keys[i]]) ){
				throw "dateCompare: illegal "+keys[i];
			}
			
			var cp=d1[keys[i]] - d2[keys[i]];
			if(cp!=0)return cp;
		}
		return 0;
	}
function method_exists (obj, method) {
    if (typeof obj === 'string') {
        return this.window[obj] && typeof this.window[obj][method] === 'function';
    }
 
    return typeof obj[method] === 'function';
}
  function mask(ct){
  	if(isString(ct)) ct = $('#'+ct);
  	ct.addClass('loading_mask');
	
  	var m = ct.data('mask');
	if (!m) {
		m = $('<div></div>');
		ct.data('mask', m);
	}
	if(ct.index(m) < 0 )m.prependTo(ct);
	m.css({
			position: 'absolute',
			top: ct.css('top'),
			left: ct.css('left'),
			width: ct.css('width'),
			height: ct.css('height')
	}).addClass('ajax_buzy');
	m.show();
  }
  function unmask(ct){
  	if(isString(ct)) ct = $('#'+ct);
  	var mask = ct.data('mask');
  	if(mask){
		mask.hide();
	}
  	ct.removeClass('loading_mask');
  }

	
