var slideCache = new Array();

function pop(file)
{
	window.open(file,null, "height=370,width=470,status=no,toolbar=no,menubar=no,location=no");
}

function go(destination)
{
	box = document.forms[0].drpAlbum;
	albumId = box.options[box.selectedIndex].value;
	albumName = box.options[box.selectedIndex].text;

	if (albumId)
		location.href = destination + "?albumid=" + albumId + "&name=" + albumName;
}

function ConfirmDeleteGig()
{
	var name = document.getElementById("band").innerHTML + " " + document.getElementById("timeDate").innerHTML;
	var gigId = document.getElementById("hiddenGigId").value;
	
	if(confirm("Delete gig " + name + "?"))
	{
		location.href = "gigsAdminDelete.php?gigid=" + gigId;
	}
	else
		return false;
}

function ConfirmDeleteAlbum(name,albumId)
{
	if(confirm("Delete album " + name + "?"))
	{	
		location.href = "albumDelete.php?albumid=" + albumId;
	}
	else
		return false;
}

function ConfirmDeleteImage(imageId,imageName)
{
	if(confirm("Delete image " + imageName + "?"))
	{
		location.href = "imageDelete.php?imageid=" + imageId;
	}
	else
		return false;
}

function RunSlideShowAndStop(pictureName,imageFiles,displaySecs)
{
    var imageSeparator = imageFiles.indexOf(";");
    var nextImage = imageFiles;

    if (imageSeparator > 0)
        nextImage = imageFiles.substring(0,imageSeparator);

    if (document.all)
    {
        document.getElementById(pictureName).style.filter = "blendTrans(duration=2)";
        document.getElementById(pictureName).filters.blendTrans.Apply();
    }

    document.getElementById(pictureName).src = nextImage;

    if (document.all)
    {
        document.getElementById(pictureName).filters.blendTrans.Play();
    }

    if (imageSeparator > 0)
    {
        var futureImages = imageFiles.substring(imageSeparator+1,imageFiles.length);
        setTimeout("RunSlideShowAndStop('"+pictureName+"','"+futureImages+"',"+displaySecs+")",displaySecs*1000);
        
        // Cache the next image to improve performance.
        imageSeparator = futureImages.indexOf(";");
        nextImage = futureImages.substring(0,imageSeparator);

        if (slideCache[nextImage] == null) 
        {
            slideCache[nextImage] = new Image;
            slideCache[nextImage].src = nextImage;
        }
    }
}

//===============================================
// YUS' CALENDAR
//===============================================
function ShowHideCalendar(txtBoxID,divID,imgDirPath,dateOrder,script)
{
	var divCalendar = document.getElementById(divID);
	
	if(divCalendar.style.display == 'block')
		divCalendar.style.display = 'none';
	else
	{	
		divCalendar.style.display = 'block';
		var today = new Date();
		var txtBox = document.getElementById(txtBoxID);		
		txtBox.value = trim(txtBox.value);
		
		if(!txtBox.value) //if empty default to today
			GenerateDays(today.getDate(),today.getMonth(),today.getFullYear(),txtBoxID,divID,imgDirPath,dateOrder,script);
		else //not empty
		{
			if(ValidateDate(txtBox.value,dateOrder))
			{
				//var ar = txtBox.value.split('/');
				var ar = GetDateParts(txtBox.value);
				var year = ar[2];
				var day,month;
				
				if(dateOrder == 'MDY')
				{
					day = ar[1];
					month = ar[0] - 1;
				}
				else //defaults to DMY
				{
					day = ar[0];
					month = ar[1] - 1;
				}
					
				GenerateDays(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script);
			}
			else //invalid date, default to today
				GenerateDays(today.getDate(),today.getMonth(),today.getFullYear(),txtBoxID,divID,imgDirPath,dateOrder,script);
		}	
	}
}

//returns an array of length 3 containing date parts
function GetDateParts(date)
{	
	var ar;
	var separator = '';
	
	if(MemberOf('/',date)) // '/' separated	
		separator = '/';
		
	else if(MemberOf('-',date)) // '-' separated	
		separator = '-';
		
	else if(MemberOf('.',date)) // '.' separated	
		separator = '.';
		
	else //find the separator manually (i.e. assume separator is the first non-integer character in date)
	{		
		var numbers = new Array(0,1,2,3,4,5,6,7,8,9);
	
		for(var i = 0 ; i < date.length ; i++)
		{
			if(!MemberOf(date.charAt(i),numbers))
			{
				separator =  date.charAt(i);
				break;
			}
		}
		
		if(separator == '') //set default separator
			separator = '/';
	}	
		
	return date.split(separator);
}

function GenerateDays(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script)
{
	var i = 0;
	var j = 0;
	var days = new Array(6);
	var dt = new Date(year,month,1);
	var offset = dt.getDay();	
	var IsLeap = !( year % 4 ) && ( ( year % 100 ) || !( year % 400 ) );
	var daysInMonths = new Array(31,(IsLeap?29:28),31,30,31,30,31,31,30,31,30,31);
			
	for(i = 0 ; i < days.length ; i++)
	{
		var temp = new Array(7);
		
		for(j = 0 ; j < temp.length ; j++)		
			temp[j] = '';
		
		days[i] = temp;		
	}
	
	i = 0;
	j = 0;
	
	for(j = 0 ; j < daysInMonths[month] ;j++)
	{
		var dt = new Date(year,month,j+1);
		var dayOfWeek = dt.getDay();
		i = Math.floor((j + offset) / 7);
		days[i][dayOfWeek] = j+1;
	}
	
	WriteHtmlCalendar(days,day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script);
}

function WriteHtmlCalendar(days,day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script)
{
	var html;	
	var months = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	var today = new Date();
	
	html = '<table cellpadding="0" cellspacing="0" class="bevelA3" width="178" bgcolor="white" style="Z-INDEX: 1; POSITION: Absolute">';
	html += '<tr><td><table cellpadding="0" cellspacing="0" border="0" width="100%" bgcolor="#cddcfe">';
	html += '<tr><td colspan="4" align="right">';
	html += '<a href="#" onclick="ShowHideCalendar(\'' + txtBoxID + '\',\'' + divID + '\',\'' + imgDirPath + '\',\'' + dateOrder + '\',\'' + script + '\');">';
	html += '<img style="height: 9; width: 10;" border="0" src="' + imgDirPath + 'closeblue.gif"></a></td></tr><tr>';
	
	html += '<!--left arrow-->';
	html += '<td align="center" width="30">';
	html += '<button class="calendarArrow" onclick="LessMonthRefresh(' + day + ',' + (month-1) + ',' + year + ',\'' + txtBoxID + '\',\'' + divID + '\',\'' + imgDirPath + '\',\'' + dateOrder + '\',\'' + script + '\');">';
	html += '<img src="' + imgDirPath + 'leftArrow.gif"></button></td>';
	html += '<!--month-->';
	html += '<td align="center">';	
	html += '<select class="calendarFont" onchange="GenerateDays(' + day + ',this.selectedIndex,' + year + ',\'' + txtBoxID + '\',\'' + divID + '\',\'' + imgDirPath + '\',\'' + dateOrder + '\',\'' + script + '\');">';
	
	for(var i = 0 ; i < months.length ; i++)
	{
		var selected = '';
		
		if(i == month)
			selected = 'selected=true';
		
		html += '<option value="' + month + '" ' + selected + '>' + months[i] + '</option>';
	}		
	html += '</select>';	
	html += '<!--year-->';
	html += '&nbsp;<input type="text" maxlength="4" class="calendarFont" style="width:30px" value="' + year + '" onkeydown="if(event.keyCode == 13)ChangeYearRefresh(' + day + ',' + month + ',this.value,\'' + txtBoxID + '\',\'' + divID + '\',\'' + imgDirPath + '\',\'' + dateOrder + '\',\'' + script + '\');">';
	html += '</td><td>';
	
	html += '<button class="calendarArrow2" onclick="AddYearRefresh(' + day + ',' + month + ',' + (year+1) + ',\'' + txtBoxID + '\',\'' + divID + '\',\'' + imgDirPath + '\',\'' + dateOrder + '\',\'' + script + '\');">';
	html += '<img src="' + imgDirPath + 'upArrow.gif"></button><br>';		
	
	html += '<button class="calendarArrow2" onclick="LessYearRefresh(' + day + ',' + month + ',' + (year-1) + ',\'' + txtBoxID + '\',\'' + divID + '\',\'' + imgDirPath + '\',\'' + dateOrder + '\',\'' + script + '\');">';
	html += '<img src="' + imgDirPath + 'downArrow.gif"></button></td>';
	
	html += '<!--right arrow-->';
	html += '<td align="center" width="30">';
	html += '<button class="calendarArrow" onclick="AddMonthRefresh(' + day + ',' + (month+1) + ',' + year + ',\'' + txtBoxID + '\',\'' + divID + '\',\'' + imgDirPath + '\',\'' + dateOrder + '\',\'' + script + '\');">';
	html += '<img src="' + imgDirPath + 'rightArrow.gif"></button>';
	
	html += '</td></tr><tr><td height="5" colspan="4"></td></tr></table></td></tr><tr><td>';
	html += '<table cellpadding="0" cellspacing="0" border="0" width="100%" bgcolor="white">';
	html += '<tr class="calendarFont">';
	html += '<td>Sun</td><td>Mon</td><td>Tue</td><td>Wed</td><td>Thu</td><td>Fri</td><td>Sat</td>';
	html += '</tr><tr><td colspan="7"><hr class="calendarBreak"></td></tr>';
	
	for(var i = 0 ; i < days.length ; i++)
	{		
		html += '<tr class="calendarFont">';
					
		for(var j = 0 ; j < days[0].length ; j++)
		{
			if(days[i][j] == day)		
				html += '<td bgcolor="yellow">';
			else
				html += '<td>'
			
			if(days[i][j] != '')
			{
				html += '<a class="calendarFont" href="#" onclick="PopulateDateTextBox(' + days[i][j] + ',' + month + ',' + year + ',\'' + txtBoxID + '\',\'' + divID + '\',\'' + dateOrder + '\',\'' + script + '\');">';
				html += days[i][j];
				html += '</a>';
			}
			
			html += '</td>';
		}			
		html += '</tr>';
	}	
	
	html += '<tr>';
	html += '<td colspan="7" align="center"><a class="calendarFont" href="#" onclick="PopulateDateTextBox(' + today.getDate() + ',' + today.getMonth() + ',' + today.getFullYear() + ',\'' + txtBoxID + '\',\'' + divID + '\',\'' + dateOrder + '\',\'' + script + '\');">';
	html += 'Today</a></td></tr></table></td></tr></table>';	
	
	document.getElementById(divID).innerHTML = html;
}

function PopulateDateTextBox(day,month,year,txtBoxID,divID,dateOrder,script)
{	
	if(dateOrder == 'MDY')
		document.getElementById(txtBoxID).value = (month+1) + '.' + day + '.' + year;
	else
		document.getElementById(txtBoxID).value = day + '.' + (month+1) + '.' + year;
	
	document.getElementById(divID).style.display = 'none';
	
	if(script)
	    eval(script);
}

function FormatDate(fullDateTime,dateOrder)
{
	var day,month,year;
	var ar = fullDateTime.split(" ");
	var dateOnly = ar[0];
	//ar = dateOnly.split("/");
	ar = GetDateParts(dateOnly);
	
	if(ar.length == 3)
	{
		if(dateOrder == 'MDY')
		{	
			day = ar[1];
			month = ar[0];
			year = ar[2];
		}
		else
		{
			day = ar[0];
			month = ar[1];
			year = ar[2];
		}
		
		if(dateOrder == 'MDY')
			return month + '/' + day + '/' + year;
		else
			return day + '/' + month + '/' + year;
	}
	else
		return '';
}

function ChangeYearRefresh(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script)
{
	if(!ValidateYear(year))
	{
		today = new Date();
		year = today.getFullYear();
	}
	
	GenerateDays(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script);
}

function AddYearRefresh(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script)
{ 
    if ((year+"").length > 4)
    {
        year = parseInt((year+"").substring(0,4));
        year = year+1;
    }
	if(year > 9999)
		year = 9999;
	
	GenerateDays(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script);
}

function LessYearRefresh(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script)
{
	if(year < 0)
		year = 0;	
	
	GenerateDays(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script);
}

function AddMonthRefresh(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script)
{
	if(month > 11)
	{	
		month = 0;
		year += 1;	
	}
	
	GenerateDays(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script);
}

function LessMonthRefresh(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script)
{
	if(month < 0)
	{	
		if(year == 0)		
			month = 0;
					
		else
		{
			month = 11;
			year -= 1;
		}
	}
	
	GenerateDays(day,month,year,txtBoxID,divID,imgDirPath,dateOrder,script);
}

function ValidateDate(d,dateOrder)
{
	//var ar = d.split('/'); //get the parts
	var ar = GetDateParts(d);
	var day,month,year;
	
	if(ar.length != 3)
		return false;
	
	if(dateOrder == 'MDY')
	{	
		day = ar[1];
		month = ar[0];
		year = ar[2];
	}
	else
	{
		day = ar[0];
		month = ar[1];
		year = ar[2];
	}
	
	return ValidateMonth(month) && ValidateYear(year) && ValidateDay(day,month,year);
}

function ValidateDay(day,month,year)
{
	if(day.length > 2)
		return false;
	
	if(!ValidateNumberOnly(day))
		return false;
		
	var IsLeap = !( year % 4 ) && ( ( year % 100 ) || !( year % 400 ) );
	var daysInMonths = new Array(31,(IsLeap?29:28),31,30,31,30,31,31,30,31,30,31);
	
	if(day > daysInMonths[month-1])
		return false;
		
	return true;
}

function ValidateMonth(month)
{
	var months = new Array(1,2,3,4,5,6,7,8,9,10,11,12);
	return MemberOf(month,months);
}

function ValidateYear(year)
{
	var numbers = new Array(0,1,2,3,4,5,6,7,8,9);
	
	if(year.length != 4)
		return false;
	
	return ValidateNumberOnly(year);
}

function ValidateNumberOnly(s)
{
	var numbers = new Array(0,1,2,3,4,5,6,7,8,9);
	
	for(var i = 0 ; i < s.length ; i++)
	{
		if(!MemberOf(s.charAt(i),numbers))
			return false;
	}
	
	return true;
}

function ValidateDouble(s)
{
	var numbers = new Array(',','.',0,1,2,3,4,5,6,7,8,9);
	
	for(var i = 0 ; i < s.length ; i++)
	{
		if(!MemberOf(s.charAt(i),numbers))
			return false;
	}
	
	return true;
}

//returns true if c is in ar
function MemberOf(c,ar)
{
	for(var i = 0 ; i < ar.length ; i++)
	{
		if(ar[i] == c)
			return true;
	}
	
	return false;
}

function trim(s)
{
   //   /            open search
   //     ^            beginning of string
   //     \s           find White Space, space, TAB and Carriage Returns
   //     +            one or more
   //   |            logical OR
   //     \s           find White Space, space, TAB and Carriage Returns
   //     $            at end of string
   //   /            close search
   //   g            global search

   return s.replace(/^\s+|\s+$/g,'');
}

//function to find a html element object in a given html element
//returns the first object specified by tag in the given html element
function FindHtmlELement(n,tag)
	{   		
		if (n.tagName == tag)// Check if n is a textbox
			return n;		
		else
		{
			var children = n.childNodes;
			
			for(var i=0; i < children.length; i++) 
			{
				var node = FindHtmlELement(children[i],tag);
				
				if(node)
					return node;
			}
			
			return false;
		}
	}

function ShowHide(divID)
{
	var div = document.getElementById(divID);
	
	if(div.style.display == 'block')
		div.style.display = 'none';
	else	
		div.style.display = 'block';
}

function ShowDiv(divID)
{
	var div = document.getElementById(divID);
	div.style.display = 'block';
}

function HideDiv(divID)
{
	var div = document.getElementById(divID);
	div.style.display = 'none';
}

function ShowPleaseWait()
{
    ShowDiv('divPleaseWait');
    HideDiv('divText');
}

function HidePleaseWait()
{
    HideDiv('divPleaseWait');
    ShowDiv('divText');
}