﻿document.onmousemove = on_MouseMove
var mouse_x = null;
var mouse_y = null;
var show_tooltip = false;
var mouse_out = null;

function on_MouseMove(e) 
{
//    var element_tooltip = document.getElementById("tooltip")
//    if (!e) var e = window.event;
//    mouse_x = e.clientX;
//    mouse_y = e.clientY;
//    
//    if(element_tooltip)
//    {
//        if(show_tooltip)
//        {
//            $('tooltip').setStyles(
//            {
//                top: mouse_y + 7,
//                left: mouse_x + 7,
//                visibility:'visible'
//            });
//        }
//        else
//        {
//            $('tooltip').setStyles(
//            {
//                visibility:'hidden'
//            });
//        }
//    }
//    return false;
}

function toolTip(var_display,alias_id,str_language)
{
    if(var_display == 'show')
    {
        mouse_out = false;
        var myHTMLRequest = new Request.HTML({
            url: "ajax/result_tooltip_rooms.aspx?alias_id=" + alias_id + "&language=" + str_language,
            update: "tooltip",
            onComplete: function(){
                if(!mouse_out){
                    show_tooltip = true;
                    }
                
            }}).send();
    }
    else
    {
        mouse_out = true;
        show_tooltip = false;
    }
}

function controlliDate()
{
    var element_input_data_dal = document.getElementById("ctl00_body_data_dal");
    var element_input_data_al = document.getElementById("ctl00_body_data_al");
    var element_calendario_dal = document.getElementById("ctl00_body_img_calendar_dal");
    var element_calendario_al = document.getElementById("ctl00_body_img_calendar_al");
    var element_form = document.getElementById("aspnetForm")
    
    if((element_form) && (element_input_data_dal) && (element_input_data_al))
    {
        element_input_data_dal.onkeypress = function()
        {
            return false;
        }
        
        element_input_data_al.onkeypress = function()
        {
            return false;
        }
        
        element_form.onsubmit = function()
        {
            ary_dal = element_input_data_dal.value.split("/");
            ary_al = element_input_data_al.value.split("/");
            
            date_dal = new Date(ary_dal[2], ary_dal[1]-1, ary_dal[0]);
            date_al = new Date(ary_al[2], ary_al[1]-1, ary_al[0]);
            
            date_now = new Date();
            date_now.setHours(0);
            date_now.setMinutes(0)
            date_now.setSeconds(0);
            date_now.setMilliseconds(0);
            
            if((date_dal >= date_al) || (date_dal < date_now))
            {
                alert('il periodo impostato non è valido');
                return false;
            }
            else
            {
                return true;
            }
                    
        }
    }
}



function isDate(p_Expression){
	return !isNaN(new Date(p_Expression));		// <<--- this needs checking
}


function dateDiff(p_Interval, p_Date1, p_Date2, p_firstdayofweek, p_firstweekofyear){
	if(!isDate(p_Date1)){return "invalid date: '" + p_Date1 + "'";}
	if(!isDate(p_Date2)){return "invalid date: '" + p_Date2 + "'";}
	
//	    var dt1 = p_Date1;
//	    var dt2 = p_Date2;

        var dt1 = new Date();
        var arrdata= p_Date1.split("/");
                
        dt1.setDate(arrdata[0]);
        dt1.setMonth(arrdata[1]-1);
        dt1.setFullYear(arrdata[2]);
        
        
        var dt2 = new Date();
        var arrdata2= p_Date2.split("/");
                
        dt2.setDate(arrdata2[0]);
        dt2.setMonth(arrdata2[1]-1);
        dt2.setFullYear(arrdata2[2]);



//        alert(dt1);
//        alert(dt2);


	// get ms between dates (UTC) and make into "difference" date
	var iDiffMS = dt2.valueOf() - dt1.valueOf();
	var dtDiff = new Date(iDiffMS);

	// calc various diffs
	var nYears  = dt2.getUTCFullYear() - dt1.getUTCFullYear();
	var nMonths = dt2.getUTCMonth() - dt1.getUTCMonth() + (nYears!=0 ? nYears*12 : 0);
	var nQuarters = parseInt(nMonths/3);	//<<-- different than VBScript, which watches rollover not completion
	
	var nMilliseconds = iDiffMS;
	var nSeconds = parseInt(iDiffMS/1000);
	var nMinutes = parseInt(nSeconds/60);
	var nHours = parseInt(nMinutes/60);
	var nDays  = parseInt(nHours/24);
	var nWeeks = parseInt(nDays/7);


	// return requested difference
	var iDiff = 0;		
	switch(p_Interval.toLowerCase()){
		case "yyyy": return nYears;
		case "q": return nQuarters;
		case "m": return nMonths;
		case "y": 		// day of year
		case "d": return nDays;
		case "w": return nDays;
		case "ww":return nWeeks;		// week of year	// <-- inaccurate, WW should count calendar weeks (# of sundays) between
		case "h": return nHours;
		case "n": return nMinutes;
		case "s": return nSeconds;
		case "ms":return nMilliseconds;	// millisecond	// <-- extension for JS, NOT available in VBScript
		default: return "invalid interval: '" + p_Interval + "'";
	}
}


function dateAdd(p_Interval, p_Number, p_Date){
	if(!isDate(p_Date)){return "invalid date: '" + p_Date + "'";}
	if(isNaN(p_Number)){return "invalid number: '" + p_Number + "'";}	

	//alert(p_Date);
	p_Number = new Number(p_Number);
	
	//var dt = new Date(p_Date);
	
    var arrdata=p_Date.split('/'); 
	
	var dt = new Date(arrdata[2],arrdata[1]-1,arrdata[0]); 
	
	//alert(dt);
   
	switch(p_Interval.toLowerCase()){
		case "yyyy": {// year
			dt.setFullYear(dt.getFullYear() + p_Number);
			break;
		}
		case "q": {		// quarter
			dt.setMonth(dt.getMonth() + (p_Number*3));
			break;
		}
		case "m": {		// month
			dt.setMonth(dt.getMonth() + p_Number);
			break;
		}
		case "y":		// day of year
		case "d":		// day
		case "w": {		// weekday
			//alert(dt);
			dt.setDate(dt.getDate() + p_Number);
			//alert(dt);
			break;
		}
		case "ww": {	// week of year
			dt.setDate(dt.getDate() + (p_Number*7));
			break;
		}
		case "h": {		// hour
			dt.setHours(dt.getHours() + p_Number);
			break;
		}
		case "n": {		// minute
			dt.setMinutes(dt.getMinutes() + p_Number);
			break;
		}
		case "s": {		// second
			dt.setSeconds(dt.getSeconds() + p_Number);
			break;
		}
		case "ms": {		// second
			dt.setMilliseconds(dt.getMilliseconds() + p_Number);
			break;
		}
		default: {
			return "invalid interval: '" + p_Interval + "'";
		}
	}
	
	//alert(dt.getDate());
	
	
	var new_day=dt.getDate();
	if (new_day<10){
	    new_day='0'+new_day
	}
	
	var new_month=parseInt(dt.getMonth()+1);
	if (new_month<10){
	    new_month='0'+new_month
	}
	
	
	var new_date=new_day + '/' + new_month + '/' + dt.getFullYear();
		
	return new_date;
}
