/* Shows an alternate image if the src image is missing, should be called from an onerror event on an img tag.*/
function showalternate(obj,image){
	if (obj.src!=image){
	    obj.src=image
	}
}

function bookmark(){
	title = document.title;
	url = document.location;  
    if (window.sidebar) { // Mozilla Firefox Bookmark
	    window.sidebar.addPanel(title, url,"");	
	} 
	else if( window.external ) { // IE Favorite
	    window.external.AddFavorite( url, title); 
	}	
	else if(window.opera && window.print) { // Opera Hotlist		
	    return true; 
	} 
}

function printpage(){
	var pr = (window.print)?1:0;
	//NS4,IE5
  	if(pr){
    	window.print();
    }else{
		alert("Sorry, your browser doesn't support this feature.");
	}
}

function toggleElementsByClass(searchClass,node,tag)
{
	var classElements = getElementsByClass(searchClass,node,tag);
	for(i = 0; i < classElements.length; i ++)
	{
		classElements[i].style.display = (classElements[i].style.display == 'none')?'inline':'none';
	}
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function setcalendar(cal)
{
	var date = cal.date;
	var time = date.getTime()
	var fieldname = cal.params.inputField.name;
	var oDate = document.getElementById(fieldname);
	var oDay = document.getElementById(fieldname.replace('_Date','_Day'));
	var oMonth = document.getElementById(fieldname.replace('_Date','_Month'));
	var oYear = document.getElementById(fieldname.replace('_Date','_Year'));
	
	oYear.value = date.getFullYear();
	oMonth.value = Right('0' + (date.getMonth() + 1),2);
	createdays(oDate,oDay,oMonth,oYear)
	oDay.value = Right('0' + date.getDate(),2);
	resetdatefield(oDate,oDay,oMonth,oYear);
}

function createdays(aoDateField,aoDay,aoMonth,aoYear)
{
	var i = 1;
	var ldToday = new Date();
	var liYear = (aoYear.value.length > 0)?aoYear.value:ldToday.getFullYear();
	var liMonth = (aoMonth.value.length > 0)?aoMonth.value:ldToday.getMonth();
	var ldLastDay = new Date(liYear,aoMonth.value,0);
	var liLastDay = ldLastDay.getDate();
	var liSelected = aoDay.selectedIndex
	aoDay.length = 0;
	aoDay.options[0] = new Option('Day','');
	for(k = 1;k < liLastDay + 1;k++){
		aoDay.options[i] = new Option(Right('0' + k,2),Right('0' + k,2));
		i++;
	}
	aoDay.selectedIndex = (liSelected > aoDay.length)?aoDay.length - 1:liSelected;
	resetdatefield(aoDateField,aoDay,aoMonth,aoYear);
}

function resetdatefield(aoDateField,aoDay,aoMonth,aoYear)
{
	var ldToday = new Date();
	var liYear = (aoYear.value.length > 0)?aoYear.value:ldToday.getFullYear();
	var liMonth = (aoMonth.value.length > 0)?aoMonth.value:ldToday.getMonth() + 1;
	var liDay = (aoDay.value.length > 0)?aoDay.value:ldToday.getDate();
	aoDateField.value = Right('0' + liDay,2) + '/' + Right('0' + liMonth,2) + '/' + liYear;
}

function dateGreaterThan(date, y, m, d) {
	ldToday = new Date();
	return (date >= ldToday)?'':'shaded';
}

function dateGreaterThanEqual(date, y, m, d) {
	ldToday = new Date();
	return (date >= ldToday)?'':'shaded';
}

function dateLessThan(date, y, m, d) {
	ldToday = new Date();
	return (date < ldToday)?'':'shaded';
}

function dateLessThanEqual(date, y, m, d) {
	ldToday = new Date();
	return (date <= ldToday)?'':'shaded';
}



function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function selectWebLink(url) {
	location.href = url;
}

/* Booking Calendar functions*/
// global object that remembers date ranges for this calendar
var startDate = null;
var stopDate = null;
var prevDate = null;
var negDow = null;
var validDateRanges = new Array();

function onSelect(cal, date){
    if (cal.dateClicked){
	    output.value = date;
	    prevDate.setTime(cal.date.getTime());
	    cal.hide();
    }
}
function onClose(cal){
    cal.date.setTime(prevDate.getTime());
    cal.hide();
}

function isDateInRange(inDate, inStartDate, inStopDate){
    if ((inDate < inStartDate) || (inDate > inStopDate)){
	    return true;
    }else{
	    return false;
	}
}

function disallowDate(date){
    var day = date.getDay();
    
    if (day == 0)
        day = 7;
    
    if (negDow && negDow.indexOf(day) >= 0){
        return(true);
    }
        
    if (validDateRanges.length == 0){
	   return isDateInRange(date, startDate, stopDate);
    }
    else{   
    	var i;
    	// Iterate through the given date ranges	
    	for (i = 0; i < validDateRanges.length; i++){
    	    var firstDate = new Date(validDateRanges[i][0]);
    	    var endDate   = new Date(validDateRanges[i][1]);
    	    // Ensure the most restrictive range
        	if (firstDate < startDate){
        		firstDate = startDate;
        	}
      	    if (endDate > stopDate){
        		endDate = stopDate;
    	    }
    	    if (!isDateInRange(date, firstDate, endDate)){
    		    return false;
    		}
    	}
        return true;	
    }

}

function convertDate(inDate){
    var day   = inDate.substr(0, 2);
    var month = inDate.substr(2, 3);
    var year  = inDate.substr(5, 2);

    // Trust that month is a valid 3 character short month name reference
    var i;
    
    for (i = 0; i < Calendar._SMN.length; i++)
	if (Calendar._SMN[i] == month)
	   break;
    
    // increment i to get month number
    i++;
    
    var monthNum = i > 10 ? i : '0' + i;

    var date = monthNum + '/' + day + '/20' + year;

    return(date);
}

function displayCalendar(inHTMLElement, inDate, inMax, inOffsetDates)
{
    output = document.getElementById(inHTMLElement);
    // Nullify negDow so it doesn't get used
    negDow = null;
    if (!startDate){
        if (inDate){
            startDate = new Date(inDate);
        }else{
            startDate = new Date();
        }
    }
    if (!stopDate){
        if (inMax){
            stopDate = new Date(inMax);
        }else{
            stopDate = new Date();
    	    stopDate.setFullYear(stopDate.getFullYear() + inMax);
    	    // Offset end day by one day
	        var endday = stopDate.getDate() - 1;
	        stopDate.setDate(endday);
        }
	    if (inDate){
	        var date = new Date(inDate);
	        date.setFullYear(stopDate.getFullYear() + 1);
	        if (stopDate > date){
		        stopDate = date;
		    }
	    }
    }
    if (window.calendar != null){
	    window.calendar.hide();
    }else{
	    prevDate = inDate ? new Date(inDate) : new Date();
	    // Open calendar to the first valid date
	    window.calendar = new Calendar(false, startDate, onSelect, onClose);
	    window.calendar.weekNumbers = false;		    
	    window.calendar.setRange(startDate.getFullYear(), stopDate.getFullYear());	    
	    window.calendar.setDateFormat("%d%b%y");	    
	    window.calendar.setDateStatusHandler(disallowDate); 
	    window.calendar.create();			    
    }
    window.calendar.refresh();
    window.calendar.showAtElement(output, "Br");
}

function DisplayMail(Server, Login, Display)
{
    if ((Display.length == 0)) 
    {
        document.write("<a href=" + "'mai" + "lto:" + Login + "@" + Server + "'>" + Login + "@" + Server + "</a>"); 
    }
    else 
    {
        //Display = Display.replace('@', '&#64;');
        document.write("<a href="+ "'mai" + "lto:" + Login + "@" + Server + "'>" + Display + "</a>"); 
    }
}


function chooseAges(aEvent){
    document.getElementById('HeadingAges').innerText = (aEvent.target.value > 0)?'Ages':'';
    for(i = 1; i <= 3;i++){
        if(aEvent.target.value >= i){
            $("#iddlChildAge" + i).css('display','inline');
            
        }else{
            $("#iddlChildAge" + i).css('display','none');
        }
    }
}

function setAges()
{
    for(i = 1; i <= 3;i++){
        if(document.getElementById('iddlChildren').value >= i){
            $("#iddlChildAge" + i).css('display','inline');
            document.getElementById('HeadingAges').innerText = 'Ages'
        }else{
            $("#iddlChildAge" + i).css('display','none');
        }
    }
}