var cond = new Array('empty', 'required');
var visibility;

function check_form(obj) {
    errors=0;
	e=obj.elements;
	
		for (i=0; e.length>i; i++) {
			if (check_field(e[i]) === false) {
				errors++;
			}
		}
	
		if (errors>0) {
			return false;
		}
		return true;
}

function check_field(obj) {
	clear_error(obj);
	for (j=0; cond.length>j; j++) {
		if (obj.getAttribute(cond[j]) != null) {
			if (eval('check_'+cond[j]+'(obj)') == false) {
				return false;
			}
		}
	}
	return true;
}

function check_empty(elem) {
	if (elem.getAttribute('empty') == 'no') {
		if ((elem.type.indexOf('text') > -1) || (elem.type.indexOf('password') > -1) || (elem.type.indexOf('select') > -1) || (elem.type.indexOf('file') > -1)) {
			if (elem.value.length == 0) {
				output_error(elem, trans_err_empty_field);
				return false;
			}
		}
	}
}

function check_required(elem) {
	if (elem.getAttribute('required') == 'float') {
		if (parseFloat(elem.value) != elem.value) {
			output_error(elem, trans_err_numerical_field);
			return false;
		}
	} else if (elem.getAttribute('required') == 'integer') {
		if (parseInt(elem.value) != elem.value) {
			output_error(elem, trans_err_integer_field);
			return false;
		}
	} else if (elem.getAttribute('required') == 'email') {
		pattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (!pattern.test(elem.value)) {
			output_error(elem, trans_err_email_field);
			return false;
		}
	}
}

function output_error(elem, msg) {
	if (elem.name) {
		if (s=document.getElementById(elem.name+'_alert')) {
			s.innerHTML=msg;
		}
	}
}

function clear_error(elem) {
	if (elem.name) {
		if (s=document.getElementById(elem.name+'_alert')) {
			s.innerHTML='&nbsp;';
		}
	}
}

function check_date_element(form_name, var_name) {
    if (f=document.forms[form_name]) {
        clear_date_error(var_name);
        minute = false;
        hour = false;
        day = false;
        month = false;
        year = false;
        if (mie=f[var_name+'_minute']) {
            minute = mie.value;
        }
        if (he=f[var_name+'_hour']) {
            hour = he.value;
        }
        if (de=f[var_name+'_day']) {
            day = de.value;
        }
        if (me=f[var_name+'_month']) {
            month = me.value - 1;
        }
        if (ye=f[var_name+'_year']) {
            year = ye.value;
        }

        temp = new Date;
        temp.setHours(hour, minute, 0, 0);
        temp.setFullYear(year, month, day);

        if ((temp.getDate() != day) || (temp.getMonth() != month) || (temp.getFullYear() != year)) {
            output_date_error(var_name, trans_err_date_field);
            return false;
        }

        if ((minute == '') || (hour == '')) {
            output_date_error(var_name, trans_err_time_field);
            return false;
        }

        // check if selected date is in period from current moment to maximum allowed to booking
        if (eval('(temp.getTime() < min_'+var_name+')') || eval('(temp.getTime() > max_'+var_name+')')) {
            output_date_error(var_name, trans_err_renting_date_field);
            return false;
        }

        return temp.getTime();
    }
}

function clear_date_error(name) {
    if (s=document.getElementById(name+'_alert')) {
        s.innerHTML='&nbsp;';
    }
}

function output_date_error(name, msg) {
    if (s=document.getElementById(name+'_alert')) {
        s.innerHTML=msg;
    }
}

function set_date_field(form_name, field_name) {
    if (t = check_date_element(form_name, field_name)) {
        document.forms[form_name].elements[field_name].value = t;
        return true;
    };
    return false;
}

////////////////////////////////////////////////////////
//  calendar functions
////////////////////////////////////////////////////////

var NUM_CENTYEAR = 30;
var BUL_TIMECOMPONENT = false;
var BUL_YEARSCROLL = true;
var calendars = new Array();
var RE_NUM = /^\-?\d+$/;
var NUM_WEEKSTART = 1;

var cal = new calendar1();
var obj_caller = cal;

var dt_prev_year;
var dt_current;
var dt_next_year;
var dt_prev_month;
var dt_next_month;
var dt_firstday;

function set_datetime(form_name, container, timestamp, min_date, popup_flag) {
    dt_current = timestamp ? new Date(parseInt(timestamp)) : new Date();
    dt_current.setHours(0,0,0,0);

    dt_prev_year = new Date(dt_current);
    dt_prev_year.setFullYear(dt_prev_year.getFullYear() - 1);
	// esto es mio
	ahora = new Date();
    if ((dt_prev_year.getFullYear()) < ahora.getFullYear())
	{
		dt_prev_year.setFullYear(ahora.getFullYear());
	}
	// -----------
	if (dt_prev_year.getDate() != dt_current.getDate()) dt_prev_year.setDate(0);
    
    dt_next_year = new Date(dt_current);
    dt_next_year.setFullYear(dt_next_year.getFullYear() + 1);
    if (dt_next_year.getDate() != dt_current.getDate()) dt_next_year.setDate(0);
	// esto es mio
	ahora = new Date();
    if ((dt_next_year.getFullYear()) > ahora.getFullYear() + 1)
	{
		dt_next_year.setFullYear(ahora.getFullYear() + 1);
	}
	// -----------
    dt_prev_month = new Date(dt_current);
    dt_prev_month.setMonth(dt_prev_month.getMonth() - 1);
    if (dt_prev_month.getDate() != dt_current.getDate()) dt_prev_month.setDate(0);
	// esto es mio
	ahora = new Date();
	if (dt_prev_month.getMonth() < ahora.getMonth())
	{
		if (dt_current.getFullYear() == ahora.getFullYear())
		{
			dt_prev_month.setMonth(ahora.getMonth());
		}
	}
	// -----------
    dt_next_month = new Date(dt_current);
    dt_next_month.setMonth(dt_next_month.getMonth() + 1);
    if (dt_next_month.getDate() != dt_current.getDate()) dt_next_month.setDate(0);
	// esto es mio
	ahora = new Date();
    if (dt_next_month.getMonth() > ahora.getMonth())
	{
		if (dt_current.getFullYear() == ahora.getFullYear() + 1)
		{
			dt_next_month.setMonth(ahora.getMonth());
		}
	}
	// -----------
    dt_firstday = new Date(dt_current);
    dt_firstday.setDate(1);
    dt_firstday.setDate(1 - (7 + dt_firstday.getDay() - NUM_WEEKSTART) % 7);
    create_calendar(form_name, container, min_date, popup_flag);
    set_input_element(form_name, container, popup_flag);
}

function set_input_element(form_name, container, popup_flag) {
    if (popup_flag) {
        wod = window.opener.document.forms[form_name].elements
        wod[container.replace('_calendar_container', '')].value = dt_current.getTime();
        wod[container.replace('_calendar_container', '_day')].value = dt_current.getDate();
        wod[container.replace('_calendar_container', '_month')].value = dt_current.getMonth()+1;
        wod[container.replace('_calendar_container', '_year')].value = dt_current.getFullYear();
    } else {
        document.forms[form_name].elements[container.replace('_calendar_container', '')].value = Math.round(dt_current.getTime()/1000);
    }
}

function in_array(array, value) {
    for (z=0; array.length > z; z++) {
        if (array[z] == value) {
            return true;
        }
    }
    return false;
}

function create_calendar(form_name, container, min_date, popup_flag) {
    if (d=document.getElementById(container)) {
		/*str ='<table cellspacing="0" cellpadding="0" border="0" width="100%">'+"\n"+'<tr id="calendar_month">'+"\n"+'<td>'+"\n"+'<a href="javascript:set_datetime(\''+form_name+'\', \''+container+'\', '+dt_prev_year.valueOf()+', \''+min_date+'\', '+popup_flag+')"><img src="'+STR_ICONPATH+'prev_year.gif" width="16" height="16" border="0" alt="aņo anterior"></a>&nbsp;<a href="javascript:set_datetime(\''+form_name+'\', \''+container+'\', '+dt_prev_month.valueOf()+', \''+min_date+'\', '+popup_flag+')"><img src="'+STR_ICONPATH+'prev.gif" width="16" height="16" border="0" alt="mes anterior"></a>'+"\n"+'</td>'+"\n"+'<td width="100%"><nobr>'+ARR_MONTHS[dt_current.getMonth()]+' '+dt_current.getFullYear() + '</nobr></font></td>'+"\n"+'<td>'+"\n"+'<a href="javascript:set_datetime(\''+form_name+'\', \''+container+'\', '+dt_next_month.valueOf()+', \''+min_date+'\', '+popup_flag+')"><img src="'+STR_ICONPATH+'next.gif" width="16" height="16" border="0" alt="siguiente mes"></a>&nbsp;<a href="javascript:set_datetime(\''+form_name+'\', \''+container+'\', '+dt_next_year.valueOf()+', \''+min_date+'\', '+popup_flag+')"><img src="'+STR_ICONPATH+'next_year.gif" width="16" height="16" border="0" alt="siguiente aņo"></a></td>'+"\n"+'</tr>'+"\n"+'</table>'+"\n";*/
		str = '<table width="92%" cellpading="0" cellspacing="0" style="border: 1px #ffffff solid;"><tr><td align="left" width="40"><a href="javascript:set_datetime(\''+form_name+'\', \''+container+'\', '+dt_prev_year.valueOf()+', \''+min_date+'\', '+popup_flag+')"><img src="'+STR_ICONPATH+'prev_year.gif" width="16" height="16" border="0" alt="aņo anterior"></a>&nbsp;<a href="javascript:set_datetime(\''+form_name+'\', \''+container+'\', '+dt_prev_month.valueOf()+', \''+min_date+'\', '+popup_flag+')"><img src="'+STR_ICONPATH+'prev.gif" width="16" height="16" border="0" alt="mes anterior"></a></td><td align="center"><nobr>'+ARR_MONTHS[dt_current.getMonth()]+' '+dt_current.getFullYear() + '</nobr></td><td align="right" width="40"><a href="javascript:set_datetime(\''+form_name+'\', \''+container+'\', '+dt_next_month.valueOf()+', \''+min_date+'\', '+popup_flag+')"><img src="'+STR_ICONPATH+'next.gif" width="16" height="16" border="0" alt="siguiente mes"></a>&nbsp;<a href="javascript:set_datetime(\''+form_name+'\', \''+container+'\', '+dt_next_year.valueOf()+', \''+min_date+'\', '+popup_flag+')"><img src="'+STR_ICONPATH+'next_year.gif" width="16" height="16" border="0" alt="aņo siguiente"></a></td></tr></table>';
        str += '<table cellspacing="1" cellpadding="3" border="0" width="200" id="calendar_container">'+"\n"+'<tr id="calendar_week_days">'+"\n";
        str += '<tr id="calendar_week_days">'+"\n";
        for (var n=0; n<7; n++) str += '<td>'+ARR_WEEKDAYS[(NUM_WEEKSTART+n)%7]+'</td>'+"\n";
        str += '</tr>'+"\n";

        var dt_current_day = new Date(dt_firstday);
        dt_current_day.setHours(0,0,0,0)
        current_date = new Date();
        while (dt_current_day.getMonth() == dt_current.getMonth() || dt_current_day.getMonth() == dt_firstday.getMonth()) {
            str += '<tr class="common">'+"\n";
            for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
                if (dt_current_day.getMonth() == dt_current.getMonth()) {
                    if (dt_current_day.getDate() == dt_current.getDate()) {
                        str += '<td class="current">'+dt_current_day.getDate()+'</td>'+"\n";
                    } else if (dt_current_day.getDay() == 0) {
                        if (min_date && (dt_current_day.valueOf() < min_date)) {
                            str += '<td class="weekend">'+dt_current_day.getDate()+'</td>'+"\n";
                        } else {
                            str += '<td class="enlaceWeek" onClick="javascript:set_datetime(\''+form_name+'\', \''+container+'\', '+dt_current_day.valueOf() +', \''+min_date+'\', '+popup_flag+');">'+dt_current_day.getDate()+'</td>'+"\n";
                        }
                    } else {
                        if (min_date && (dt_current_day.valueOf() < min_date)) {
                            str += '<td>'+dt_current_day.getDate()+'</td>'+"\n";
                        } else {
                            str += '<td class="enlace" onClick="javascript:set_datetime(\''+form_name+'\', \''+container+'\', '+dt_current_day.valueOf() +', \''+min_date+'\', '+popup_flag+');">'+dt_current_day.getDate()+'</td>'+"\n";
                        }
                    }
                } else {
                    if (dt_current_day.getDay() == 0) {
                        str += '<td class="weekend">&nbsp;</td>';
                    } else {
                        str += '<td>&nbsp;</td>';
                    }
                }
                dt_current_day.setDate(dt_current_day.getDate()+1);
            }
            str += '</tr>'+"\n";
        }
        
        str += '</table>'+"\n";
        d.innerHTML = str;
    }
}

function open_calendar_popup(form_name, container, min_date) {
    tms = document.forms[form_name].elements[container].value;
    nw = window.open('', 'calendar', "width=220,height=200,top=50,left=600");
    nw.document.open();
    path = location.href.replace(location.pathname.substring(location.pathname.lastIndexOf('/')), '/');
    str = "<head>\n";
    str += "<script src='"+path+"js/resources_"+current_lang+".js' language='JavaScript'></script>\n";
    str += "<script src='"+path+"js/calendar.js' language='JavaScript'></script>\n";
    str += "<script src='"+path+"js/js.js' language='JavaScript'></script>\n";
    str += "<script>\n";
    str += "var STR_ICONPATH = 'images/calendar/';\n";
    str += "</script>\n";
    str += "<link href='"+path+"templates/default/css.css' rel='stylesheet' type='text/css'>\n";
	//str += "<link href='"+path+"css/template_css.css' rel='stylesheet' type='text/css'>\n";
    str += "</head>\n";
    str += "<body onLoad=\"set_datetime('"+form_name+"', '"+container+"_calendar_container', '"+tms+"', '"+min_date+"', true);\">\n";
    str += "<div id='"+container+"_calendar_container' style='padding: 10px;'></div>\n";
    str += "<div style='text-align: center;'><input type='submit' class='submit' name='button' id='button' value='"+trans_close_window+"' onClick='javascript: window.close()'></div>\n";
    str += "</body>\n";    
    nw.document.write(str);
    nw.document.close();
    nw.focus();
}

function record(value, title, selector_id) {
    this.value          = value;
    this.title          = title;
    this.selector_id    = selector_id;
}

function display_depending_html_select(obj, full_array, depended_field_id) {
    eval('full_array = '+full_array);
    if ((df = document.getElementById(depended_field_id))) {
        df_value = df.value;
        key = (obj.value) ? obj.value : false;
        temp_array = new Array();
        for (i = 0; full_array.length > i; i++) {
            if (full_array[i].selector_id == key) {
                j = temp_array.length;
                temp_array[j] = full_array[i];
            }
        }
        set_inner_html_select(df, temp_array, df_value)
    }
}

function clear_inner_html(e) {
    if (e) {
        if (e.options) {
            for (i=e.options.length-1;  0 <= i; i--) {
                e.remove(i);
            }
        }
    }
}

function set_inner_html_select(e, array, value) {
    if (e) {
        clear_inner_html(e);
        e.options[0] = new Option('', '');
        for (i = 0; array.length > i; i++) {
            e.options[i+1] = new Option(array[i].title, array[i].value);
            if (array[i].value == value) {
                e.options[i+1].selected = true;
            }
        }
    }
}

function copy_value(copy_from_obj, copy_to_obj_name) {
    if (copy_from_obj && (copy_to_obj = document.getElementById(copy_to_obj_name))) {
        if (visibility == 'hidden') {
            copy_to_obj.value = copy_from_obj.value;
            if (copy_to_obj_name.indexOf('country') != -1) {
                display_depending_html_select(copy_to_obj, 'loc_cities', 'finish_loc_city_id')
            }
        }
    }
}