var horarios = new Array();
horarios["iquique"] 				= {sem:"0830-2000" ,sab:"0830-1700" ,dom:"no"} ;
horarios["iquique- aeropuerto"]		= {sem:"0700-1500|1530-2330" ,sab:"0700-1500|1530-2330" ,dom:"0800-2100"};
horarios["calama"]				= {sem:"0830-1930" ,sab:"0830-1300" ,dom:"no"};
horarios["calama - aeropuerto"]        	= {sem:"0700-1500|1530-2300" ,sab:"0800-2200" ,dom:"0800-2100"};
horarios["antofagasta"]			= {sem:"0830-1840" ,sab:"0900-1300" ,dom:"no"};
horarios["antofagasta - aeropuerto"]	= {sem:"0700-1500|1530-2300" ,sab:"0830-1600" ,dom:"1530-2300"};
horarios["copiapo"]				= {sem:"0830-2000" ,sab:"0900-1300|1500-1800" ,dom:"no"};
horarios["copiapo - aeropuerto"]		= {sem:"0830-2230" ,sab:"0900-2000" ,dom:"0900-2100"};
horarios["la serena"]			= {sem:"0830-1330|1530-1840" ,sab:"0900-1300" ,dom:"no"};
horarios["la serena - aeropuerto"]		= {sem:"0930-2130" ,sab:"1000-2100" ,dom:"1000-2100"};
horarios["concepcion"]			= {sem:"0830-1840" ,sab:"0900-1300" ,dom:"no"};
horarios["concepcion - aeropuerto"]	= {sem:"0730-2130" ,sab:"0900-2030" ,dom:"0900-2030"};
horarios["temuco"]				= {sem:"0900-1830" ,sab:"0900-1300" ,dom:"no"};
horarios["temuco - aeropuerto"]		= {sem:"0900-2030" ,sab:"0800-2100" ,dom:"0800-2100"};
horarios["puerto montt"]			= {sem:"0830-1300|1500-1840" ,sab:"0900-1300" ,dom:"no"};
horarios["puerto montt - aeropuerto"]	= {sem:"0830-2230" ,sab:"0830-2130" ,dom:"0830-2130"};
horarios["santiago - vespucio"]		= {sem:"0800-2000" ,sab:"0800-1400" ,dom:"no"};
horarios["santiago - manquehue"]		= {sem:"0700-2200" ,sab:"0700-2200" ,dom:"0800-2200"};
horarios["santiago - aeropuerto"]		= {sem:"0000-2330" ,sab:"0000-2330" ,dom:"0000-2330"};
// feriados por mes enero=0 hasta diciembre=11
var feriados = new Array(12);
feriados[0]= "1";
feriados[1]= "";
feriados[2]= "";
feriados[3]= "6 7";
feriados[4]= "21";
feriados[5]= "";
feriados[6]= "2 16";
feriados[7]= "15";
feriados[8]= "17 18 19";
feriados[9]= "10 31";
feriados[10]= "1";
feriados[11]= "8";


function getHorarios(_name, _date, _toModify)
{
	// alert(horarios[_name].sem +' => '+ _date +' => '+_toModify.id);
	if (_name != "ciudad" && _date != "")
	{
		var _enableInput;
		// Vemos que dia de la semana se selecciono
		var weekDay;
		var DD,MM,YY,DMY,DMYin,minutos,minutos_fin,fueradehorario=0,minutos_ini;
		var es_hoy='no',es_ma='no',minutos_per=240,hora_tope="1950",hora_abre="1000"; //minutos_per: minutos previos hasta la reserva (4 horas), hota_tope de atencion call center 
		var mes;                                                                //hora_abre: hora inicio atencion call center
		var esferiado = false;
		var tDD = _date.substr(0,2);
		var tMM = _date.substr(3,2);
		var tYY = _date.substr(6,4);
		var __date = new Date(tYY,Number(tMM)-1,tDD);
		var hoy = new Date();
		weekDay = __date.getDay();
		mes = __date.getMonth();
		DD = hoy.getDate();
		MM = Number(hoy.getMonth())+1; 
	 	YY = hoy.getFullYear();
	 	minutos=Number(hoy.getMinutes())+60*Number(hoy.getHours());
	 	DMY = DD+'-'+MM+'-'+YY;
        DMYma = (DD+1)+'-'+MM+'-'+YY;
	 	DMYin = Number(tDD)+'-'+Number(tMM)+'-'+YY;
	 	
		if (DMY==DMYin) es_hoy='si';
		else es_hoy='no';
        _min_tope = Number(hora_tope.substr(0,2))*60+ Number(hora_tope.substr(2,4));
        if (DMYma==DMYin && minutos>_min_tope){
          es_ma='si'; //comprueba que sean pasadas las 20:00 horas (1200 minutos) y que la solicitud sea para mañana
        } 
		else es_ma='no';
		//alert(minutos+' '+hoy.getMinutes()+' '+hoy.getHours());	
		//revisa si es feriado
		var arrayTxt = feriados[mes];                                                    
		var re = new RegExp(""+tDD, "i");        
		var m = arrayTxt.search(re);                                           
		if (m >= 0){
			esferiado = true;
		}
		
   
		// Objeto donde guardamos las horas disponibles
		var horas;
		if (weekDay == 0)
		{
			horas = horarios[_name].dom;
		}
		else if(weekDay == 6)
		{
			horas = horarios[_name].sab;
		}
		else
		{
			horas = horarios[_name].sem;
		}
		if (esferiado)
		{
			horas = horarios[_name].dom;
		}
		
		// Horarios especiales
		if (_name == "santiago - manquehue" ){
			if(_date == "24-12-2010"){
				 //alert("prueba");
				 horas = "0700-2030";
				}
			else if(_date == "25-12-2010"){
				 horas = "0800-2200";
				}
			else if(_date == "31-12-2010"){
				 horas = "0700-2030";
				}
			else if(_date == "01-01-2011"){
				 horas = "0900-2200";
				}
		}
		if (_name == "santiago - aeropuerto" ){
			if(_date == "24-12-2010"){
				 //alert("prueba");
				 horas = "0000-2030";
				}
			else if(_date == "25-12-2010"){
				 horas = "0800-2330";
				}
			else if(_date == "31-12-2010"){
				 horas = "0000-2030";
				}
			else if(_date == "01-01-2011"){
				 horas = "0900-2330";
				}
		}
		// seteamos horas
		var _horas_reales = new Array();
		var horasCortadas;
		if(_toModify.name == 'hora_entrega') {
			horas = horas.replace(/^devoluciones\|/, '');
		} else {
			horas = horas.replace(/^devoluciones.*$/, 'devoluciones');
		}
		if (horas == 'no')
		{
			_horas_reales[0] = 'No atiende';
			_enableInput = false;
		}
		else if (horas == 'devoluciones')
		{
			_horas_reales[0] = 'S\xf3lo devoluciones';
			_enableInput = false;
		}
		else if (horas.search(/\|/) > 0)
		{		
			_horas = horas.split('|');
			_hora_manana = _horas[0];
			_hora_tarde = _horas[1];
		
			//inicio y fin de cada jornada
			var j;
			j = _hora_manana.split('-');
			_manana_ini = Number(j[0]);
			_manana_fin = Number(j[1]);
            if (es_ma=='si'){
              _min_ini = Number(j[0].substr(0,2))*60+ Number(j[0].substr(2,4));
              _min_abre = Number(hora_abre.substr(0,2))*60+ Number(hora_abre.substr(2,4));
              if (_min_ini < _min_abre) _manana_ini = Number(hora_abre);
            }

			j = _hora_tarde.split('-');
			_tarde_ini = Number(j[0]);
			_tarde_fin = Number(j[1]);
			
			fueradehorario=0;
			if (es_hoy=='si'){
				 minutos_fin = Number(j[1].substr(0,2))*60+ Number(j[1].substr(2,4));
				 if (minutos_fin < (minutos+minutos_per)){
				 	 fueradehorario=1;
				 	 _horas_reales[0] = '- Fuera de horario -';
				 	 _enableInput = false;
				 	 alert('Esta fuera del limite de horario de hoy en esta Sucursal. Reserve en otra fecha.');
				 }
				}
			if(fueradehorario==0){
				_horas_reales[0] = '- Hora -';
				horasCortadas = true;
				_enableInput = true;
	
				var k = 1;
				var i = _manana_ini;
				var l = 0;
				var h = 0;
				while(i < _manana_fin)
				{
					if (k==1)
					{
						if (es_hoy=='si'){
								if (i<10) h='000'+i; else if (i<100) h='00'+i; else if (i<1000) h='0'+i; else h=''+i;
								minutos_ini = Number(h.substr(0,2))*60+ Number(h.substr(2,4));
								if (minutos_ini > (minutos+minutos_per)) _horas_reales[k] = i;
								else _horas_reales[k] = -1;
								//alert(h+'if minutos_ini:'+minutos_ini+' > tope:'+(minutos+minutos_per));
						}
						else _horas_reales[k] = i;
					}
					else
					{
						//var _mins = Number(String(i).substr(-2,2));
						//_mins += 30;
						i += 30;
						var _newMin = Number(String(i).substr(String(i).length-2,2));
						if (_newMin > 60)
						{
							i -= 60;
							i += 100;
						}
						else if (_newMin == 60)
						{
							i -= 60;
							i += 100;
						}
						if (i <= _manana_fin)
						{
							if (es_hoy=='si'){
								if (i<10) h='000'+i; else if (i<100) h='00'+i; else if (i<1000) h='0'+i; else h=''+i;
								minutos_ini = Number(h.substr(0,2))*60+ Number(h.substr(2,4));
								if (minutos_ini > (minutos+minutos_per)) _horas_reales[k] = i;
								else _horas_reales[k] = -1;
								//alert(h+'if minutos_ini:'+minutos_ini+' > tope:'+(minutos+minutos_per));
							}
							else _horas_reales[k] = i;
						}
					}
					k += 1;
				}
				//k = 1;
				i = _tarde_ini;
				l = 0;
				while(i < _tarde_fin)
				{
					if (k==1)
					{
							if (es_hoy=='si'){
								if (i<10) h='000'+i; else if (i<100) h='00'+i; else if (i<1000) h='0'+i; else h=''+i;
								minutos_ini = Number(h.substr(0,2))*60+ Number(h.substr(2,4));
								if (minutos_ini > (minutos+minutos_per)) _horas_reales[k] = i;
								else _horas_reales[k] = -1;
								//alert(h+'if minutos_ini:'+minutos_ini+' > tope:'+(minutos+minutos_per));
							}
							else _horas_reales[k] = i;
					}
					else
					{
						//var _mins = Number(String(i).substr(-2,2));
						//_mins += 30;
						i += 30;
						var _newMin = Number(String(i).substr(String(i).length-2,2));
						if (_newMin > 60)
						{
							i -= 60;
							i += 100;
						}
						else if (_newMin == 60)
						{
							i -= 60;
							i += 100;
						}
						if (i <= _tarde_fin)
						{
							if (es_hoy=='si'){
								if (i<10) h='000'+i; else if (i<100) h='00'+i; else if (i<1000) h='0'+i; else h=''+i;
								minutos_ini = Number(h.substr(0,2))*60+ Number(h.substr(2,4));
								if (minutos_ini > (minutos+minutos_per)) _horas_reales[k] = i;
								else _horas_reales[k] = -1;
								//alert(h+'if minutos_ini:'+minutos_ini+' > tope:'+(minutos+minutos_per));
							}
							else _horas_reales[k] = i;
						}
					}
					k += 1;
				}
			}
		}
		else
		{
			_enableInput = true;
			_horas_reales[0] = '- Hora -';
			horasCortadas = false;
			var j;
			j = horas.split('-');
			_hora_ini = Number(j[0]);
			_hora_fin = Number(j[1]);
            if (es_ma=='si'){
              _min_ini = Number(j[0].substr(0,2))*60+ Number(j[0].substr(2,4));
              _min_abre = Number(hora_abre.substr(0,2))*60+ Number(hora_abre.substr(2,4));
              if (_min_ini < _min_abre) _hora_ini = Number(hora_abre);
            }

			fueradehorario=0;
			if (es_hoy=='si'){
				 minutos_fin = Number(j[1].substr(0,2))*60+ Number(j[1].substr(2,4));
				 if (minutos_fin < (minutos+minutos_per)){
				 	 fueradehorario=1;
				 	 _horas_reales[0] = '- Fuera de horario -';
				 	 _enableInput = false;
				 	 alert('Esta fuera del limite de horario de hoy en esta Sucursal. Reserve en otra fecha.');
				 }
			}
			if(fueradehorario==0){
				var k = 1;
				var i = _hora_ini;
				var h=0;
				var l = 0;
				while(i < _hora_fin)
				{
					if (k==1)
					{
							if (es_hoy=='si'){
								if (i<10) h='000'+i; else if (i<100) h='00'+i; else if (i<1000) h='0'+i; else h=''+i;
								minutos_ini = Number(h.substr(0,2))*60+ Number(h.substr(2,4));
								if (minutos_ini > (minutos+minutos_per)) _horas_reales[k] = i;
								else _horas_reales[k] = -1;
								//alert(h+'if minutos_ini:'+minutos_ini+' > tope:'+(minutos+minutos_per));
							}
							else _horas_reales[k] = i;
					}
					else
					{
						//var _mins = Number(String(i).substr(-2,2));
						//_mins += 30;
						i += 30;
						var _newMin = Number(String(i).substr(String(i).length-2,2));
						if (_newMin > 60)
						{
							i -= 60;
							i += 100;
						}
						else if (_newMin == 60)
						{
							i -= 60;
							i += 100;
						}
						if (i <= _hora_fin)
						{
							if (es_hoy=='si'){
								if (i<10) h='000'+i; else if (i<100) h='00'+i; else if (i<1000) h='0'+i; else h=''+i;
								minutos_ini = Number(h.substr(0,2))*60+ Number(h.substr(2,4));
								if (minutos_ini > (minutos+minutos_per)) _horas_reales[k] = i;
								else _horas_reales[k] = -1;
								//alert(h+'if minutos_ini:'+minutos_ini+' > tope:'+(minutos+minutos_per));
							}
							else _horas_reales[k] = i;
						}
					}
					k += 1;
				}
			}
		}

		//$(_toModify).innerHTML = "";
		var _tHora;
		var _th;
		var _tm;
		var optionList;
		var combobox = _toModify;
		combobox.length = 0;
		for (i=0;i<_horas_reales.length;i++)
		{
			if (_horas_reales[i]==-1) continue;
			_tHora = String(_horas_reales[i]);
			if (_tHora.length > 4)
			{
				_la_hora = _tHora;
			}
			else if (_tHora.length == 1)
			{
				_la_hora = '00:0'+_tHora;
			}
			else if (_tHora.length == 2)
			{
				_la_hora = '00:'+_tHora;
			}
			else if (_tHora.length == 3)
			{
				_th = _tHora.substr(0,1);
				_tm = _tHora.substr(String(_tHora).length-2,2);
				_la_hora = '0'+_th+':'+_tm;
			}
			else if(_tHora.length == 4)
			{
				_th = _tHora.substr(0,2);
				_tm = _tHora.substr(String(_tHora).length-2,2);
				_la_hora = _th+':'+_tm;
			}
				
			//nodo = "<option value=\""+_la_hora+"\">"+_la_hora+"</option>";

			combobox.length = combobox.length+1;
			combobox[ combobox.length -1 ].text = _la_hora;
			combobox[ combobox.length -1 ].value = _la_hora;
		}
		if (_enableInput)
		{
			_toModify.disabled = false;
		}
		else
		{
			_toModify.disabled = true;
		}
	}
}
