function isNoEmpty( Var ){
	
	if( typeof( Var ) == 'undefined' || Var == '' ){
		
		return null;
		
	}
	return true;
			
}

function numDias(d,m,a){
  m = (m + 9) % 12;
  a = a - Math.floor(m/10);
  return 365*a+Math.floor(a/4)-Math.floor(a/100)+Math.floor(a/400)
            +Math.floor((m*306+5)/10)+d-1 
}

function difDias(d1,m1,a1,d2,m2,a2){
   return numDias(d2,m2,a2) - numDias(d1,m1,a1)
}

function countdown(elementString, dateString, mode, name) {

if (mode == null) mode = 0;
if (name == null) name = '0';
	//var clock = document.getElementById(elementString);
	var monthsElement = document.getElementById('spanMonths');
    var	daysElement = document.getElementById('spanDays');
	var hoursElement = document.getElementById('spanHours');		
	var minutesElement = document.getElementById('spanMinutes');
	var secondsElement = document.getElementById('spanSeconds');	
	

    dateParts = dateString.split(' ');
	dateElements = dateParts[0].split('-');
	timeElements = dateParts[1].split(':');
	var eventdate = new Date(dateElements[0], dateElements[1]-1, dateElements[2], timeElements[0], timeElements[1], timeElements[2]);
	now = new Date();
	nowtime = now.getTime(); 
    //alert("now: " + now + " eventdate: "+ eventdate)
	eventtime = eventdate.getTime();
	
	
    if(nowtime>eventtime){
		todo = '<div class=\'complete\'><span>El torneo ya ha inici&oacute;</span></div>';
	}	
    else{
		var eventhour = eventdate.getHours();
		var eventminute = eventdate.getMinutes();
		var eventsecond = eventdate.getSeconds();
		var eventmonth = eventdate.getMonth()+1;
		var eventday = eventdate.getDate();
		var eventyear = eventdate.getFullYear();
		
		var nowmonth = now.getMonth()+1;
		var nowday = now.getDate();
		var nowyear = now.getFullYear();		

		timeleft = Math.round((eventtime-nowtime) / 1000); // timeleft in seconds
		
		var passed = 0;
		if (timeleft < 0) { // if event has passed
			timeleft = Math.abs(timeleft);
			passed = 1;
		}
		if (timeleft != 0) {
			years = Math.floor(timeleft/31556926);
			months = Math.floor((timeleft%31556926)/2629744);
			totalMonths = ((years*12)+months);
			days = Math.floor(((timeleft%31556926)%2629744)/86400);
			
			
			var oneMinute=60 //minute unit in seconds
			var oneHour=60*60 //hour unit in seconds
			var oneDay=60*60*24 //day unit in seconds
			
			var dayfield=Math.floor(timeleft/oneDay)
			var hourfield=Math.floor((timeleft-dayfield*oneDay)/oneHour)
			var minutefield=Math.floor((timeleft-dayfield*oneDay-hourfield*oneHour)/oneMinute)
			var secondfield=Math.floor((timeleft-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute))			
		}
		
		var togo = '';
	   // alert("Years: "+years + " MOnth: " + months + "Days: "+ days);
		if (timeleft != 0) {
			var expld = togo.split(', ');
			
			var exlast = expld.length-1;
			var todo = '';
			var i;
			
			for (i=0 ; i<expld.length ; i++) {
				value = expld[i];
				todo += value;
				if ((i != exlast) && (expld.length!=2)) todo += ', ';
				if ((expld.length == 2) && (i != exlast)) todo += ' ';
				if (i == (exlast-1)) todo += 'and ';
				if ((i == exlast) && (passed == 1)) todo += ' ago';
				if ((i == exlast) && (mode != 3)) todo += '.';
			}
		} else {
			var todo = togo + ' Now!';
		}
	monthsElement.innerHTML = totalMonths;
	daysElement.innerHTML = days;
	hoursElement.innerHTML = hourfield;		
	minutesElement.innerHTML = minutefield;
	secondsElement.innerHTML = secondfield;	 
	//clock.innerHTML = totalMonths + '-' + days + '-' + hours + '-'+ minutes + '-'+seconds;
	setTimeout('countdown(\'' + elementString + '\', \'' + dateString + '\', ' + '0' + ', "' + name + '");', 1000); // re-execute the function in 1 second

	}	
}




function counter(elementString, afterOrBefore, draftStartDate, draftEndDate, draftStatus ,draftTime){
	nowDate = new Date();
	var clock = document.getElementById(elementString);
	nowTime = nowDate.getTime();
	year = nowDate.getFullYear();
	month = nowDate.getMonth()+1;
	day = nowDate.getDate();
	
	
	var timeElements = draftTime.split(':')
	var startDateElements = draftStartDate.split('/');
	var endDateElements = draftEndDate.split('/');

	var nowDraftDate = new Date(year, month-1, day, timeElements[0], timeElements[1], '00');
	var todayDate = new Date(year, month-1, day, '00', '00', '00');
	var startDate = new Date(startDateElements[2], startDateElements[1]-1, startDateElements[0], '00', '00', '00');
	var endDate =new Date(endDateElements[2], endDateElements[1]-1, endDateElements[0], '00', '00', '00');
	
	var auxDate = new Date(year, month-1, day)
	//var eventDraftDate = new Date(dateElements[2], dateElements[1]-1, dateElements[0]);
	
	/*Si la fecha de hoy es igual la fecha del draft, activar los contadores*/

	todayDate = (todayDate/ 1000);
	startDate = (startDate/ 1000);
	endDate = (endDate/ 1000);
	if(todayDate >= startDate && todayDate <= endDate){
		if( draftStatus.toUpperCase() == 'EN CURSO'){
			eventTime = nowDraftDate.getTime();
			timeleft = Math.round((eventTime-nowTime) / 1000); // timeleft in seconds
			//alert("timeleft: "+timeleft)
			var passed = 0;
				
			if (timeleft < 0) { // if event has passed
				timeleft = Math.abs(timeleft);
				passed = 1;
			}	
			if (timeleft != 0) {
					hours = Math.floor((((timeleft%31556926)%2629744)%86400)/3600);
					minutes = Math.floor(((((timeleft%31556926)%2629744)%86400)%3600)/60);
					seconds = Math.floor(((((timeleft%31556926)%2629744)%86400)%3600)%60);
			}	
		   clock.innerHTML = hours + "h, " + minutes + 'm, ' + seconds + 's';
		   var setTimeOut = 'counter(\'' + elementString  + '\', \'' + afterOrBefore +  '\',  \'' + draftStartDate +  '\',  \'' + draftEndDate +  '\',  \'' + draftStatus +  '\', \'' + draftTime + '\');';
		   setTimeout(setTimeOut, 1000); // re-execute the function in 1 second   
		} else{
			/*si la fecha actual no es la fecha del draft, poner en ceros*/
			clock.innerHTML = '00h, 00m, 00s';	
		}
	}else{
		clock.innerHTML = '-- -- --';
		document.getElementById('spanDraftStart').innerHTML = '-- -- --';
		document.getElementById('spanDraftEnd').innerHTML = '-- -- --';
		document.getElementById('spanDraftStatus').innerHTML = '-- -- --';
	}
}

String.prototype.mysqlToDateFormat = function(mask) {
	
	var monthNames = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"];

	 
	  var tmDate 	= this.replace('-/ / /','-');
	  var tmDate 	= tmDate.split('-');	  
	  var MontCheck =  tmDate[1].split(''); 
	 
	  var Year  = tmDate[0];
	  var month = MontCheck[0] == 0 ?  MontCheck[1] : tmDate[1];
	  var day   = tmDate[2];
	  
	
	
	  var dateFormat = day + ' ' + monthNames[ month - 1] + ' ' + Year;
	  
	 return dateFormat;
	 
};

var LibraryOnDemand = Class.create({
								   
	 initialize: function( instanceName) {
			
			this.instanceName = instanceName;			
			
			
	 },
	 noCacheJs : function(){
		
		var ODate 	 = new Date() 
		var OHour 	 = ODate.getHours();
		var OMinutes = ODate.getMinutes();
		
		return String(OHour +''+ OMinutes);
		 
	 },
	 
	 load : function (component,id,options){
		
		this.SWTime 		= this.noCacheJs();
			
		this.HandonComplete = this.onComplete.bindAsEventListener(this);			
		var fileType 		= component.substring(component.lastIndexOf('.'));
		var head     		= document.getElementsByTagName("head")[0];
		this.options 		= options;	
		this.remove			= typeof(this.options.remove) != 'undefined' ? this.options.remove : null;
		
		done         		= false;
		
			if (fileType === ".js") {
				
				if( this.remove ){
						
						if( $(id) ){
							
							$(id).remove();
						
						}
				}
				
				var file = component +'?'+this.SWTime;
				
				var fileRef = document.createElement('script');
				fileRef.setAttribute("type", "text/javascript");
				fileRef.setAttribute("src",  file);
				fileRef.setAttribute("id", id);
				
				fileRef.onload = fileRef.onreadystatechange = this.HandonComplete;

			}
			
			if (typeof fileRef != "undefined") {
				head.appendChild(fileRef);
			}
			
			idBferoeLoader = id;
	},
	
	onComplete : function ( request ){
		if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") ) {
			
			done = true;									
			window.setTimeout( this.instanceName + ".notify('onCompletedLoad',this )",100);
			
		}
		
	},
	
	notify :function( event_name ,event ){
		
		try{
			if(this.options[event_name])
				return [this.options[event_name].apply(this.options[event_name],$A(arguments).slice(1),event)];
		}catch(e){
			if(e != $break)
				throw e;
			else
				return false;
		}
	 }
  
	
});

var draftApi = Class.create({
 
 initialize: function( target, options ) {
   	
	//Check for options
	this.oinit = typeof(arguments[0]) == 'object' ? arguments[0] : arguments[1];	
   
    this.Key 			  = null;    
	this.DataReservation  = null;
   	this.HandshowLoad 	  = this.showLoad.bindAsEventListener(this);
	this.HandshowResponse = this.showResponse.bindAsEventListener(this);
	this.Handfalla 		  = this.showFail.bindAsEventListener(this);
	this.Title			  = ''; 
	this.Target			  = null;
	this.Server			  = null; 
	this.ORequest		  = null;
	
	IndexLoader	 		 = typeof(IndexLoader) != 'undefined' ? IndexLoader :  0;
	
	this.init( this.oinit );
	
	
  },
  
  // Just for use in child classes
  init : function(){
	
  },


 trace : function ( str ) {
	
	if( this.Mode = 'Debug') {
	
     if( typeof(console) != 'undefined' ){
			
			console.debug( str );
		
		}else{
		
			alert( str );
		
		}
		
	}
},

  msg : function( msg ){
		
		this.trace( msg );
  },
  
  
   noCacheJs : function(){
		
		var ODate 	 = new Date() 
		var OHour 	 = ODate.getHours();
		var OMinutes = ODate.getMinutes();
		
		return String(OHour +''+ OMinutes);
		 
	 },
	 
	 
	 /*
	*  function : loadJs 
	*  description: carga un js desde otro servicio
	*
	*/
	loadJs : function ( ){
		IndexLoader++;
		this.iter++;
		this.HandExecuter = this.executer.bindAsEventListener(this);
		this.HandLoader   = this.createLoader.bindAsEventListener(this);
		this.TUrl = this.Url + '?' + this.noCacheJs();
		
		new Ajax.Request(this.TUrl,{
			onComplete : this.HandExecuter,
			onCreate : this.HandLoader
		});
	},
	
	
  
  initEvent : function(){
	  
	  Event.observe(arguments[0],arguments[1],arguments[2]); 
	  
  },
  
   notify :function( event_name ,event ){
		
		try{
			if(this.options[event_name])
				return [this.options[event_name].apply(this.options[event_name],$A(arguments).slice(1),event)];
		}catch(e){
			if(e != $break)
				throw e;
			else
				return false;
		}
	 },
  
  /* ---------- Ajax Section ------------*/
  
  	showLoad : function(){
		
	},
		
	 showResponse : function(t){
	
	},
			
	showFail : function (){
		
	
	},
  
    request : function(){
		new Ajax.Request(this.Url,this.ORequest);
			
	},
	
	updater : function(){
	  
		new Ajax.Updater(this.Target,this.Url,this.ORequest);
			
	},
	
	///////////////////////////////////////////////////////////////////
	
	
	createLoader : function(){
		
			//document.body.style.position = 'relative';		
			this.divLoaderContainer = document.createElement('div');					
			Element.extend(this.divLoaderContainer);
			this.divLoaderContainer.id = 'Loader_'+ IndexLoader;
			document.body.appendChild(this.divLoaderContainer);
			this.divLoaderContainer.hide();
			
			var Scroll = document.viewport.getScrollOffsets();
			
			this.divLoaderContainer.setStyle({
								  
								  top:Scroll.top,
								  right:0,
								  position:'absolute',
								  zIndex:'15000',
								  backgroundColor:'#000',
								  color:'#fff',
								  padding:'5px',
								  font:'11px Arial'
								  
								 });
			
			var str  = ' <img src="http://i2.esmas.com/deportes30/img/loadinfo.net.gif" width="13" height="13">';
				str += ' Actualizando..';
			this.divLoaderContainer.update(str)
		
		
		this.divLoaderContainer.show();
	
		
	},
	
	
	removeLoader : function(){
		
		setTimeout(this.removeClearDiv.bind(this),40);
	},
	
	removeClearDiv : function(){
		
		this.divLoaderContainer.fade({
									 
				afterFinish :function(effect){   
					
					//effect.element.remove();
					
				 }
				
				
		});
		this.divLoaderContainer.remove();
		
	},
	
	//////////////////////////////////////////////////////////////////////
	
	DefineData : function( request ){
		    if( typeof(request) != 'undefined') {
			if( window.eval ){
				return window.eval(request.responseText.evalJSON());
			}else{
				
				return eval(request.responseText.evalJSON()); 
			}
		}
	}
 })