/* 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(){
	if (window.external){ 
		window.external.AddFavorite(document.location,document.title); 
	} 
}
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 ddlOther(obj){
    document.getElementById(obj.id + '_other').style.display=(obj.value.toLowerCase()=='other')?'inline':'none';
}

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{
        document.write("<a href="+ "'mai" + "lto:" + Login + "@" + Server + "'>" + Display + "</a>"); 
    }
}

function CharacterCount(e, el, displayChar, displaySMS) {
    if (!e) var e = window.event;

    SMSPageLength = 160;
    SMSLength = 1;
	if (e.keyCode >= 37 && e.keyCode <= 40)
	{
		//cursor keys should be ignored
		return;
	}
	Obj = document.getElementById(el);
	Length = Obj.value.length;

	if (displayChar.toLowerCase()=="nodisplay") {alert("here!");return;} // suppress display  
	    
    oDisplaySMS = document.getElementById(displaySMS);
    if (Length%SMSPageLength == 0)
        {
            oDisplaySMS.innerHTML = Math.floor(Length / SMSPageLength);
        }
    else
        {
            oDisplaySMS.innerHTML = (1 + Math.floor(Length / SMSPageLength));
        }
    if (oDisplaySMS.innerHTML < 0)
    {
        oDisplaySMS.innerHTML = 0;
    }
    
    oDisplayChar = document.getElementById(displayChar);
    oDisplayChar.innerHTML = oDisplaySMS.innerHTML*SMSPageLength-Length;
    if (oDisplayChar.innerHTML ==0)
    {
        oDisplayChar.innerHTML = SMSPageLength;
    }
}