var hwr_v_cal = false;
var hwr_v_cal_infos = false;
var hwr_v_cal_a_ids = false;
var hwr_v_cal_infos_hover = false;
var hwr_v_cal_infos_alive = false;
var hwr_v_cal_infos_timeout = false;
var hwr_v_cal_pageevents = new Array();


/*
    Ajax Request - gets events for current calendar page
*/
function vcal_getMonthsEvents(year, month) {
	var vcal_Callback =
	{
	  success:vcal_handleSuccess,
	  failure:vcal_handleFailure,
	  argument: []
	};

	var params = "year="+year+"&month="+month;

	var request = YAHOO.util.Connect.asyncRequest('POST', 'cont/widgets/v_kalender/ajax/v_kalender.ajax.php', vcal_Callback, params);
}


function vcal_check_infos_alive() {
    if(!hwr_v_cal_infos_alive) {
        hwr_v_cal_infos.cfg.setProperty("visible", false);
        hwr_v_cal_infos_timeout = false;
    }
}

function vcal_check_infos_set_timeout() {
    if(hwr_v_cal_infos_timeout) {
        window.clearTimeout(hwr_v_cal_infos_timeout);
    }
    hwr_v_cal_infos_timeout = window.setTimeout('vcal_check_infos_alive()', 500);
}


function vcal_click(e) {
    var tmp_date = hwr_v_cal.getDateByCellId(this.id);

    top.location.href='?hwr4content=veranstaltungen&special_cont=true&vcal_date='+encodeURIComponent(tmp_date.getFullYear()+"-"+(tmp_date.getMonth()+1)+"-"+tmp_date.getDate());
}

function vcal_m_out(e) {
    hwr_v_cal_infos_alive = false;
    vcal_check_infos_set_timeout();
}

function vcal_m_move(e) {
    hwr_v_cal_infos_alive = true;
    hwr_v_cal_infos.moveTo(e.clientX+YAHOO.util.Dom.getDocumentScrollLeft()+10,e.clientY+YAHOO.util.Dom.getDocumentScrollTop()+10);
}

function vcal_hover(e) {
    tmp_index = this.id.replace('hwr_v_cal_cell', '');

    YAHOO.util.Dom.get('hwr_v_cal_info_container').innerHTML = hwr_v_cal_pageevents[tmp_index];
    hwr_v_cal_infos.cfg.setProperty("visible", true);
    vcal_m_move(e);
}



/*
    SUCCESS callback for vcal_getMonthsEvents()
*/
var vcal_handleSuccess = function(o) {
    var v_cal_xml = o.responseXML;

    hwr_v_cal_pageevents = new Array();

    var v_cal_childs = v_cal_xml.childNodes;
    var v_cal_num_childs = v_cal_childs.length;

    for(var v_cal_child=0; v_cal_child<v_cal_num_childs; v_cal_child++) {

        if("v_cal"==v_cal_childs[v_cal_child].nodeName) {

            var v_cal_events = v_cal_childs[v_cal_child].childNodes;
            var num_events = v_cal_events.length;

            for (var cur_event=0; cur_event<num_events; cur_event++) {
                var tmp_event = v_cal_events[cur_event];
                if("event"==tmp_event.nodeName) {
                    var tmp_date = tmp_event.getAttribute('date').split('-');
                    var tmp_a_id = tmp_event.getAttribute('id').split('-');
                    var tmp_title = "";
                    var tmp_js_date = new Date(tmp_date[0], tmp_date[1]-1, tmp_date[2]);
                    var tmp_index = hwr_v_cal.getCellIndex(tmp_js_date);
                    if(-1<tmp_index) {

                        tmp_event_childs = tmp_event.childNodes;
                        tmp_event_num_childs = tmp_event_childs.length;

                        for(var e_child = 0; e_child<tmp_event_num_childs; e_child++) {
                            if("title"==tmp_event_childs[e_child].nodeName) {
                                tmp_title = tmp_event_childs[e_child].firstChild.data;
                            }
                        }

                        if(!hwr_v_cal_pageevents[tmp_index]) {
                            with(YAHOO.util.Dom.get('hwr_v_cal_cell'+tmp_index)) {
                                if(-1<className.indexOf(' today ')) {
                                    className = className.replace(" today ", " today_vcal ");
                                    className+= " highlight3";
                                } else {
                                    className+= " highlight1";
                                }
                                style.cursor = "default";
                                YAHOO.util.Event.addListener(id, "mouseover", vcal_hover);
                                YAHOO.util.Event.addListener(id, "mousemove", vcal_m_move);
                                YAHOO.util.Event.addListener(id, "mouseout", vcal_m_out);
                                YAHOO.util.Event.addListener(id, "click", vcal_click);
                            }
                            hwr_v_cal_pageevents[tmp_index] = "<div class=\"\" style=\"background:transparent url(../img/main/widget_head_bg.png) repeat-x scroll 0 0;text-align:left;font-weight:bold;margin-bottom:0px;padding:2px;height:16px;#height:20px;color:#ffffff;\">"+tmp_date[2]+"."+tmp_date[1]+"."+tmp_date[0]+"</div>";
                        }

//                        hwr_v_cal_pageevents[tmp_index]+= "<div style=\"margin-bottom:5px;font-weight:bold;padding:2px;border-top:1px solid #D2E5E2\">"+tmp_title+"</div>";
                        hwr_v_cal_pageevents[tmp_index]+= "<div style=\"margin-bottom:5px;padding:2px;border-top:1px solid #D2E5E2;\"><a class=\"intern\"  href=\"?hwr4content=veranstaltungen&special_cont=true&a_id="+tmp_a_id+"&vcal_date="+tmp_event.getAttribute('date')+"\">"+tmp_title+"</a></div>";
                    }
                }
            }


        }
    }

}


/*
    FAILURE callback for vcal_getMonthsEvents()
*/
var vcal_handleFailure = function(o) {
}


/*
    initializes the calendar.
    sets handler and labels
*/
function initVCal() {

	if (false!==hwr_v_cal) return false;

	function handleSelect(type, args, obj) {
		var dates	= args[0];
		var date	= dates[0];
		var year	= date[0],
			month	= date[1],
			day		= date[2];

		alert(
		day + "." + month + "." + year
		);
	}


    function vcal_handleSelect(o) {

    }

    function vcal_changePage(o) {
        var tmp_cur_date = hwr_v_cal.cfg.getProperty('pagedate');
        vcal_getMonthsEvents(tmp_cur_date.getFullYear(), tmp_cur_date.getMonth()+1);
    }

	hwr_v_cal = new YAHOO.widget.Calendar("hwr_v_cal", "hwr_v_cal_container", {close: false, iframe: false} );


    var navConfig = {
        strings: {
        month:"Monat",
        year:"Jahr",
        submit: "OK",
        cancel: "Abbrechen",
        invalidYear: "Ungültige Angabe"
        },
        monthFormat: hwr_v_cal.SHORT,
        initialFocus: "month"
    }


	with(hwr_v_cal) {
		cfg.setProperty("START_WEEKDAY", 1);
		cfg.setProperty("DATE_FIELD_DELIMITER", ".");
		cfg.setProperty("MDY_DAY_POSITION", 1);
		cfg.setProperty("MDY_MONTH_POSITION", 2);
		cfg.setProperty("MDY_YEAR_POSITION", 3);
		cfg.setProperty("MD_DAY_POSITION", 1);
		cfg.setProperty("MD_MONTH_POSITION", 2);
		cfg.setProperty("MONTHS_SHORT",   ["Jan", "Feb", "M\u00E4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]);
		cfg.setProperty("MONTHS_LONG",    ["Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]);
		cfg.setProperty("WEEKDAYS_1CHAR", ["S", "M", "D", "M", "D", "F", "S"]);
		cfg.setProperty("WEEKDAYS_SHORT", ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]);
		cfg.setProperty("WEEKDAYS_MEDIUM",["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"]);
		cfg.setProperty("WEEKDAYS_LONG",  ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]);
		cfg.setProperty("navigator",  false);
//		cfg.setProperty("navigator",  navConfig);

		selectEvent.subscribe(vcal_handleSelect, hwr_v_cal, true);
		changePageEvent.subscribe(vcal_changePage, hwr_v_cal, true);

		render();
	}


	hwr_v_cal_infos = new YAHOO.widget.Overlay("hwr_v_cal_info_container",
        {
            visible:false,
            xy: [0,0],
            width:"300px",
            zIndex:50000
//            effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.1}
        }
    );

    hwr_v_cal_infos.render(document.body);
    YAHOO.util.Dom.setStyle('hwr_v_cal_info_container', 'backgroundColor', '#ffffff');
    YAHOO.util.Dom.setStyle('hwr_v_cal_info_container', 'border', '1px solid #000000');

    function info_container_hover(e) {
        hwr_v_cal_infos_alive = true;
    }

    function info_container_m_out(e) {
        hwr_v_cal_infos_alive = false;
        vcal_check_infos_set_timeout();
    }

    YAHOO.util.Event.addListener('hwr_v_cal_info_container', "mouseover", info_container_hover);
    YAHOO.util.Event.addListener('hwr_v_cal_info_container', "mouseout", info_container_m_out);

	hwr_v_cal.show();

	YAHOO.util.Dom.setStyle('hwr_v_cal_container', 'left', '9px');
//	YAHOO.util.Dom.setStyle('hwr_v_cal_container', 'top', '10px');

	return true;
}