﻿// JScript File
var Website = new Admin();

//Event.observe(window, 'load', Website.startUp);

function Admin() {


    this.Warning = function(message) {
        this.lightsOff();
        $('alert_title').innerHTML = 'Warning';
        $('alert_message').innerHTML = message;
        Effect.Appear('alert', { from: 0, to: 1, duration: 0.2 });
    };

    this.Message = function(message) {
        this.lightsOff();
        $('alert_title').innerHTML = 'Information';
        $('alert_message').innerHTML = message;
        Effect.Appear('alert', { from: 0, to: 1, duration: 0.2 });
    };

    this.dismiss = function() {
        Effect.Fade('alert', { duration: 0.2 });
        this.lightsOn();
    };

    this.lightsOff = function() {
        Effect.Appear('blackout', { from: 0, to: 0.5, duration: 0.2 });
    };

    this.lightsOn = function() {
        Effect.Fade('blackout', { from: 0.5, to: 0, duration: 0.2 });
    };

    this.wait = function() {
        this.lightsOff();
        $('wait').show();
    };

    this.HideFormElements = function() {
        if ((navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) && (navigator.userAgent.toLowerCase().indexOf('msie 7') == -1)) {
            var f = $$('select');

            for (var i = 0; i < f.length; i++) {
                f[i].style.visibility = 'hidden';
            }

            var f = $$('input');

            for (var i = 0; i < f.length; i++) {
                f[i].style.visibility = 'hidden';
            }
        }
    };

    this.ShowFormElements = function() {
        var f = $$('select');

        for (var i = 0; i < f.length; i++) {
            f[i].style.visibility = 'visible';
        }

        var f = $$('input');

        for (var i = 0; i < f.length; i++) {
            f[i].style.visibility = 'visible';
        }
    };
    
    //displaydate, highlightdate, elementid to hold response, elementid to hold calendar
    this.DrawCalendar = function(dd, hd, container, target) {
        this.HideFormElements();
        $(container).show();

        var mn = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
        var dim = [31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

        var displayDate = new Date(dd);
        var dy = displayDate.getFullYear();
        var dm = displayDate.getMonth();

        var selectedDate = new Date(hd);
        var sd = selectedDate.getDate();
        var sm = selectedDate.getMonth();
        var sy = selectedDate.getFullYear();

        var oD = new Date(dy, dm, 1); //DD replaced line to fix date bug when current day is 31st
        oD.od = oD.getDay() + 1; //DD replaced line to fix date bug when current day is 31st

        var todaydate = new Date() //DD added

        dim[1] = (((oD.getFullYear() % 100 != 0) && (oD.getFullYear() % 4 == 0)) || (oD.getFullYear() % 400 == 0)) ? 29 : 28;

        var t = '<table cellpadding="0" cellspacing="1" border="0" class="Calendar" cols="7">';

        dy = parseInt(dy);
        dm = parseInt(dm);

        var nm = dm + 1;
        var pm = dm - 1;
        var ny = dy;
        var py = dy;

        if (dm == 11) {
            nm = 0;
            pm = 10;
            ny = dy + 1;
        }

        if (dm == 0) {
            pm = 11;
            nm = 1;
            py = dy - 1;
        }

        t += '<tr><th colspan="1">';
        t += '<a href="javascript: Website.DrawCalendar(\'1 ' + mn[pm] + ' ' + py + '\',\'' + hd + '\',\'' + container + '\',\'' + target + '\');"><img src="/graphics/resultset_previous.png" border="0"/></a>';
        t += '</th><th colspan="5">' + mn[dm] + '</th>';
        t += '<th colspan="1">';
        t += '<a href="javascript: Website.DrawCalendar(\'1 ' + mn[nm] + ' ' + ny + '\',\'' + hd + '\',\'' + container + '\',\'' + target + '\');"><img src="/graphics/resultset_next.png" border="0"/></a>';
        t += '</th></tr>';

        t += '<tr><th colspan="1">';
        t += '<a href="javascript: Website.DrawCalendar(\'1 ' + mn[dm] + ' ' + (dy - 1) + '\',\'' + hd + '\',\'' + container + '\',\'' + target + '\');"><img src="/graphics/resultset_previous.png" border="0"/></a>';
        t += '</th><th colspan="5">' + dy + '</th>';
        t += '<th colspan="1">';
        t += '<a href="javascript: Website.DrawCalendar(\'1 ' + mn[dm] + ' ' + (dy + 1) + '\',\'' + hd + '\',\'' + container + '\',\'' + target + '\');"><img src="/graphics/resultset_next.png" border="0"/></a>';
        t += '</th></tr><tr>';

        for (s = 0; s < 7; s++) t += '<th>' + "SMTWTFS".substr(s, 1) + '</th>';

        t += '</tr><tr>';

        for (i = 1; i <= 42; i++) {
            if ((i - oD.od >= 0) && (i - oD.od < dim[dm])) {
                t += '<td ';

                if ((i - oD.od + 1) == sd && dm == sm && dy == sy) {
                    t += ' class="SELECTED" ';
                }

                t += ' onClick="$(\'' + target + '\').value=\'' + (i - oD.od + 1) + ' ' + mn[dm] + ' ' + dy + '\';$(\'' + container + '\').hide();Website.ShowFormElements();">';

                t += (i - oD.od + 1);

                t += '</td>';
            }
            else {
                t += '<td>&nbsp;</td>';
            }

            if (((i) % 7 == 0) && (i < 36)) {
                t += '</tr><tr>';
            }
        }

        t += '</tr><tr><th colspan="7"  onClick="$(\'' + container + '\').hide();Website.ShowFormElements();" style="cursor: pointer;">Close</th></tr>';

        t += '</table>';

        $(container).innerHTML = t;
    };
};

//PAGING===================================================
var currentpage=1;

function ShowPage(page, totalpages)
{

    document.body.scrollIntoView(true);
    
    currentpage=page;
    
    for(var i=1; i<=totalpages; i++)
    {
        $('page_' + i).style.display='none';
    }
    
    $('page_' + page).style.display='';
    BuildPaging(totalpages);
}

function NextPage(totalpages)
{
    if(currentpage<totalpages)
    {
        currentpage++;
    }
    
    ShowPage(currentpage, totalpages);
    BuildPaging(totalpages);
}

function PreviousPage(totalpages)
{
    if(currentpage>1)
    {
        currentpage--;
    }
    
    ShowPage(currentpage, totalpages);
    BuildPaging(totalpages);
}
                
function BuildPaging(totalpages)
{
    var first=1;
    var last=totalpages;
    
    if(totalpages>5)
    {
        if(currentpage>3)
        {
            first=currentpage-2;            
        }
                
        last=currentpage+2;
        
        if(last>totalpages)
        {
            last=totalpages;
        }
        
        if(totalpages>5)
        {
            if(last<5)
            {
                last=5;
            }
        }
    }
    
    var s='page ';
    
    s += '<a href="javascript:ShowPage(1,' + totalpages + ');">..</a> ';
         
    for(var i=first; i<=last; i++)
    {
        if(i==currentpage)
        {
            s+= '<span class="bold">' + i + '</span>  ';
        }
        else
        {
            s+= '<a href="javascript:ShowPage(' + i + ',' + totalpages + ');">' + i + '</a> ';
        }
    }
        
    s += '<a href="javascript:ShowPage(' + totalpages + ',' + totalpages + ');">..</a> ';
        
    s += '&nbsp;&nbsp;&nbsp;';
    
    if(currentpage>1)
    {
        s += '<a href="javascript:PreviousPage(' + totalpages + ')">&lt; Previous</a>';
    }
    else
    {
        s += '&lt; Previous';
    }
    
    s += ' | ';
    
    if(currentpage<totalpages)
    {
        s += '<a href="javascript:NextPage(' + totalpages + ')">Next &gt;</a>';
    }
    else
    {
        s += 'Next &gt;';
    }
        
    $('pager').innerHTML=s;
}                
               

//================================================================
function getCal(m, y, ds, ms, ys, container, fn)
{
	var mn=['January','February','March','April','May','June','July','August','September','October','November','December'];
	var dim=[31,0,31,30,31,30,31,31,30,31,30,31];
	
	var oD = new Date(y, m-1, 1); //DD replaced line to fix date bug when current day is 31st
	oD.od=oD.getDay()+1; //DD replaced line to fix date bug when current day is 31st
	
	var todaydate=new Date() //DD added
	
	dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;
	
	var t='<table cellpadding="0" cellspacing="1" border="0" class="calendar" cols="7"><tr>';
	
	var nm=m+1;
	var pm=m-1;
	var ny=y;
	var py=y;
	
	if(m==12) 
	{
		nm=1;
		pm=11;
		ny=y+1;
	}
	
	if(m==1) 
	{
		pm=12;	
		nm=2;
		py=y-1;
	}
	
	if(!fn)
	{
		fn='setDay';
	}
	
	t+='<td colspan="1" class="calhead">';
	t+='<a href="javascript: getCal(' + pm + ',' +  py + ',' +  ds + ',' +  ms + ',' +  ys + ' ,\'' + container + '\' ,\'' + fn + '\');"><img src="graphics/icons/resultset_previous.png" border="0"/></a>';
	t+='<td colspan="5" class="calhead">' + mn[m-1]+ '</td>';
	t+='<td colspan="1" class="calhead">';	
	t+='<a href="javascript: getCal(' + nm + ',' +  ny + ',' +  ds + ',' +  ms + ',' +  ys + ' ,\'' + container + '\' ,\'' + fn + '\');"><img src="graphics/icons/resultset_next.png" border="0"/></a>';	
	t+='</td></tr><tr>';
	
	t+='<td colspan="1" class="calhead">';
	t+='<a href="javascript: getCal(' + m + ',' +  (y-1) + ',' +  ds + ',' +  ms + ',' +  ys + ' ,\'' + container + '\' ,\'' + fn + '\');"><img src="graphics/icons/resultset_previous.png" border="0"/></a>';
	t+='<td colspan="5" class="calhead">' + y + '</td>';
	t+='<td colspan="1" class="calhead">';	
	t+='<a href="javascript: getCal(' + m + ',' +  (y+1) + ',' +  ds + ',' +  ms + ',' +  ys + ' ,\'' + container + '\' ,\'' + fn + '\');"><img src="graphics/icons/resultset_next.png" border="0"/></a>';	
	t+='</td></tr><tr>';
		
	for(s=0;s<7;s++)
	{
		t+='<td class="calhead">'+"SMTWTFS".substr(s,1)+'</td>';
	}
	
	t+='</tr><tr>';
	
	for(i=1;i<=42;i++)
	{
		if((i-oD.od>=0)&&(i-oD.od<dim[m-1]))
		{
			t+='<td class="';
			
			if((i-oD.od+1)==ds && m==ms && y==ys)
			{
				t+='calsel';
			}
			else
			{
				t+='calday';
			}
			
			t+='" onClick="' + fn + '(' + y + ',' + m + ',' + (i-oD.od+1) + ', \'' + container + '\' ,\'' + fn + '\');">';
			

			t+=(i-oD.od+1);


			t+='</td>';
		}
		else
		{
			t+='<td class="calday">&nbsp;</td>';
		}
		
		if(((i)%7==0)&&(i<36))
		{
			t+='</tr><tr>';
		}
	}
	
	t+='</tr></table>';
	
	$(container).innerHTML=t;
}

function setDay(y,m,d,c)
{
	getCal(m,y,d,m,y,c);
	if(document.getElementById(c + '_displaydate'))
	{
		document.getElementById(c + '_displaydate').value=(d+'/'+m+'/'+y);
		document.getElementById(c).style.display='none';
	}
	
	document.getElementById(c + '_selecteddate').value=(y+'-'+m+'-'+d);
}


function wait(title, message)
{
    Website.lightsOff();
    
    title = title || 'Searching';
    message = message || 'Please wait a moment whilst we search for holidays that match your requirements.';
        
    document.body.scrollIntoView(true);
    
  
    $('layout_wait_title').innerHTML=title;
    $('layout_wait_message').innerHTML=message;
   
    $('layout_wait').show();
    return true;
}


function RestrictInput(evt)
{	
	var charCode = (evt.which) ? evt.which : window.event.keyCode;

	if (charCode <= 13)
	{
		return true;
	}
	else
	{
		var keyChar = String.fromCharCode(charCode);
		var re = /[\sa-zA-Z0-9.,_@'-]/;
		return re.test(keyChar);			
	}	
}

var SelectedCacheID='';

function AddToBasket(CacheID, Adults, Children, Infants, What)
{
    if(CacheID.length>0)
    {
        wait('Adding','Please wait while we add your ' + What + ' to your basket');    
    
        document.location.href='AddToBasket.aspx?CacheID=' + CacheID + '&Adults=' + Adults + '&Children=' + Children + '&Infants=' + Infants;
    }
}

function RemoveFromBasket(CacheID, What)
{
    if(CacheID.length>0)
    {
        if(confirm('Remove ' + What + '.\nAre You Sure?'))
        {
            wait('Removing','Please wait while we remove your ' + What + ' from the basket');    

            document.location.href='RemoveFromBasket.aspx?CacheID=' + CacheID;
        }
    }
}

function FitToContent(iframe)
{
    if(!window.opera && !document.mimeType && document.all && document.getElementById)
    {
        iframe.style.height=this.document.body.offsetHeight+"px";
    }
    else if(document.getElementById) 
    {
        iframe.style.height=this.document.body.scrollHeight+"px"
    }
} 

function EnterPrint()
{
    if($('layout_upper'))
    {
        hide('layout_upper');
    }
    
    if($('layout_head'))
    {
        hide('layout_head');
    }
    
    if($('layout_trail'))
    {    
        hide('layout_trail');
    }
    
    if($('layout_menu2'))
    {    
        hide('layout_menu2');
    }    
    
    hide('layout_menu');        
    hide('layout_foot');
    show('layout_print');
    
    window.print();            
}

function ExitPrint()
{
    if($('layout_upper'))
    {
        show('layout_upper');
    }
    
    if($('layout_head'))
    {
        show('layout_head');
    }
    
    if($('layout_trail'))
    {    
        show('layout_trail');
    }
    
    if($('layout_menu2'))
    {    
        show('layout_menu2');
    }    
    
    show('layout_menu');        
    show('layout_foot');
    hide('layout_print');        
}
    
    
function warning(m)
{
    document.body.scrollIntoView(true);
    show('blackout');
    show('warning');
    $('warningtext').innerHTML=m;
}

function message(m)
{
    document.body.scrollIntoView(true);
    show('blackout');
    show('message');
    $('messagetext').innerHTML=m;
}

function dateDiff(d1, d2) {
    var one_day = 1000 * 60 * 60 * 24;
    return Math.ceil((d1.getTime() - d2.getTime()) / (one_day));
};


