// Date and calandar functions by Imagos Consulting 2008
// Copyright (C) Imagos Consulting 2008
// Version 0.5

var g_noYoungerThan = 56;
var over_cal = false;
var cal;

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

var getCalDate = function(type,args,obj) {
			var dates = args[0]; 
			var date = dates[0];
			var year = date[0], month = date[1], day = date[2];
			
			var txtDate1 = document.getElementById(this.title);
			//txtDate1.value = month + "/" + day + "/" + year;	
			
			if (txtDate1 != undefined)
				txtDate1.value = day + "/" + month + "/" + year;	

			if (this.age_combo != undefined) {
				var age_combo = document.getElementById(this.age_combo);
				if (age_combo == undefined) alert( 'Age combo is not correctly defined' );
				var today = new Date();
				var offset = (today.getFullYear() - year) + 1;
				//alert( offset );
				age_combo.selectedIndex = offset;				
			}
			//this.hide();
      over_cal = false; 
      hideCal();			
	};

function showCal(type,args,obj)  {
	var cal = args;
		if (cal.tab_focus == false) return;
//function showCal() { 
    var xy = YAHOO.util.Dom.getXY(cal.text_name); 
    var date = YAHOO.util.Dom.get(cal.text_name).value; 
    if (date) { 
    		var date_array=date.split("/");
    		if (date_array.length > 2) {
    			var usDate = date_array[1] + '/' + date_array[0] + '/' + date_array[2];
	        cal.cfg.setProperty('selected', usDate); 
        	cal.cfg.setProperty('pagedate', new Date(usDate), true); 	
        }
        cal.render(); 
    } 
    YAHOO.util.Dom.setStyle(cal.cal_name, 'display', 'block'); 
    xy[1] = xy[1] + 20; 
    YAHOO.util.Dom.setXY(cal.cal_name, xy); 
}; 

function quick_cal( cal_name, text_name ) {
    // Enable navigator with a custom configuration
    
    over_cal = false;
    
    var navConfig = {
        strings : {
            month: "Choose Month",
            year: "Enter Year",
            submit: "OK",
            cancel: "Cancel",
            invalidYear: "Please enter a valid year"
        },
        monthFormat: YAHOO.widget.Calendar.SHORT,
        initialFocus: "year"
    };
    cal = new YAHOO.widget.Calendar( cal_name, {navigator: navConfig});
    cal.cal_name = cal_name;
    cal.text_name = text_name;
    cal.title = text_name;  
    cal.tab_focus = false;       
    cal.selectEvent.subscribe(getCalDate, cal, true); 
    cal.renderEvent.subscribe(setupListeners, cal, true);
    YAHOO.util.Event.addListener( text_name, 'focus', showCal, cal); 
		YAHOO.util.Event.addListener( text_name, 'blur', hideCal, cal);    
    cal.render();
    
		// Listener to show the 1-up Calendar when the button is clicked
		//YAHOO.util.Event.addListener(text_name, "focus", cal.show, cal, true);    
}

function setupListeners() { 
    YAHOO.util.Event.addListener( cal.cal_name, 'mouseover', overCal); 
    YAHOO.util.Event.addListener( cal.cal_name, 'mouseout', outCal); 
} 
 
function hideCal() { 
    if (!over_cal) { 
        YAHOO.util.Dom.setStyle( cal.cal_name, 'display', 'none'); 
        cal.tab_focus = false;
    }
    var text_name = YAHOO.util.Dom.get(cal.text_name);
    var age_combo = YAHOO.util.Dom.get(cal.age_combo);
    
    if (cal == undefined || cal.tab_focus == false) {
    	dob_change( text_name, age_combo  );
    }
}

function overCal() { 
	over_cal = true; 
} 
	 
function outCal() { 
	over_cal = false; 
}

function quick_cal_plus( cal_name, text_name, age_combo ) {
    // Enable navigator with a custom configuration
    
    var navConfig = {
        strings : {
            month: "Choose Month",
            year: "Enter Year",
            submit: "OK",
            cancel: "Cancel",
            invalidYear: "Please enter a valid year"
        },
        monthFormat: YAHOO.widget.Calendar.SHORT,
        initialFocus: "year"
    };
    var cal = new YAHOO.widget.Calendar( cal_name, {navigator: navConfig});
    cal.age_combo = age_combo;
    cal.cal_name = cal_name;
    cal.text_name = text_name;
    cal.title = text_name; 
    cal.tab_focus = false;        
    cal.selectEvent.subscribe(getCalDate, cal, true); 
    cal.renderEvent.subscribe(setupListeners, cal, true);
    YAHOO.util.Event.addListener( text_name, 'focus', showCal, cal); 
		YAHOO.util.Event.addListener( text_name, 'blur', hideCal, cal);    
    cal.render();
    
		// Listener to show the 1-up Calendar when the button is clicked
		//YAHOO.util.Event.addListener(text_name, "focus", cal.show, cal, true);    
}

function date_click(type,args,obj) {
	var cal = args;
	cal.tab_focus = true;
	var text_name = YAHOO.util.Dom.get(cal.text_name);
 	text_name.focus();
}

function quick_cal_button( cal_name, text_name, age_combo, cal_button ) {
    // Enable navigator with a custom configuration
    
    var navConfig = {
        strings : {
            month: "Choose Month",
            year: "Enter Year",
            submit: "OK",
            cancel: "Cancel",
            invalidYear: "Please enter a valid year"
        },
        monthFormat: YAHOO.widget.Calendar.SHORT,
        initialFocus: "year"
    };
    cal = new YAHOO.widget.Calendar( cal_name, {navigator: navConfig});
    if (age_combo != null) cal.age_combo = age_combo;    
    cal.cal_name = cal_name;
    cal.text_name = text_name;
    cal.title = text_name;
    cal.tab_focus = false;    
    cal.selectEvent.subscribe(getCalDate, cal, true); 
    cal.renderEvent.subscribe(setupListeners, cal, true);
    YAHOO.util.Event.addListener( text_name, 'focus', showCal, cal); 
		YAHOO.util.Event.addListener( text_name, 'blur', hideCal, cal);    
    cal.render();
    
		// Listener to show the 1-up Calendar when the button is clicked
		YAHOO.util.Event.addListener(cal_button, "click", date_click, cal, true);    
}

function dob_validate( date_field  ) {

	if (date_field != undefined) {
		
			magicDate(date_field);
		
			var youngest_date = new Date();
			youngest_date.setDate(youngest_date.getDate()-g_noYoungerThan);

			var date_array=date_field.value.split("/");
			var pet_birthday = new Date();
			pet_birthday.setDate( date_array[0] );			
			pet_birthday.setMonth( date_array[1] );
			pet_birthday.setFullYear( date_array[2] );
						
			if ( pet_birthday > youngest_date) {
				return false;
			}
			return true;
	}
	return true;
}


function dob_change( date_field, age_combo  ) {
	
	if (age_combo == undefined || date_field == undefined) return;	
	
	if (date_field.value.length == 0) return;
	
	magicDate(date_field);
	
	var date_array=date_field.value.split("/");
	
	if (date_array[0]) {
		var today = new Date();
		var offset = (today.getFullYear() - date_array[2]) + 1;
		//alert( offset + " " + today.getYear() + " " + date_array[2] );
		age_combo.selectedIndex = offset;
	}
}

/**
 * Get the date N years ago
 */
function getPreviousYear( yearsAgo ) {
	
		var today = new Date();
		
		var day = today.getDate();
		if (day == 0) day = 1;		
		var month = today.getMonth();		
		if (yearsAgo == 0) yearsAgo = 1;
		if (day > 30) day = 30;
		var year = today.getFullYear();
			year -= yearsAgo;
		today.setFullYear(year,today.getMonth(),today.getDate());	
		var newDate = day + "/" + month + "/" + today.getFullYear();
		return 	newDate;
}

function age_change( age_combo, date_field ) {
	
	if (age_combo == undefined || date_field == undefined) return;
	
	var pIndex = age_combo.selectedIndex;
	
	if (pIndex > 0) {
		var pValue = age_combo.options[pIndex].value;
		date_field.value = getPreviousYear( pValue );
	}
	else {
		date_field.value = '';
	}
}