var forceIPhone = false;  				// set to true to simulate an iPhone
var forceStatusDisplay = false;    		// set to true to show status displays on startup
var testScreen = false;
var winCoords;
var docCoords;
var containerDims = [0, 0, 0, 0];
var slDims = [230, 200, 476, 450];
var bod;
var contestOver = true;
var urlFunc='';
var urlValue='';
var uploadId;
var uploadIdKey;
var disabledButtonOpacity = .4;
var sloganIntervalId;
var iPhone = false;
var statusDisplay = false;  // to show screen resolution & column widths
var useFlash = false;
var useQt = false;
var filterActive = false;

// var acLevel = 0;		 ac is access cookie,   0=none,
						// 1-email (not verified), 2-full reg (not verified), 3-full reg (verified),
						// 4-media company reg (not verified), 5-media company reg (verified), 7-admin1, 8-admin2, 9-full
// var userDefault = { 'id' : -1, 'access_level' : 0, 'email' : '', 'city_id' : '-1', 'language_id' : 0, 'remember' : false };

var defaultUser = {	id						: -1,
					city_id					: -1,
					language_id				: 0 ,
					email					: '',
					first_name				: '',
					last_name				: '',
					company_name			: '',
					company_type			: '',
					password				: '',
					access_level			: 0 ,
					needs_validation_email	: -1,
					sent_validation_email	: -1,
					validated				: -1,
					security_question		: -1,
					security_answer			: '',
					ip_created				: '',
					ip_last_signin			: '',
					d_created				: '',
					d_modified				: '',
					d_last_signin			: '',
					remember				: 0		};

var user = cloneObject(defaultUser);
var tmpUser = new Object;
var newAccessLevel = 0;
var oldAccessLevel = 0;
var bTryingToVote = false;
var signInRemember = false;
var currentSong = -1;
var lastSong = -1;
var contactMode = -1;
var currentPage = '';
var selectedCityId = -1;
var bannersObj;

var nowPlaying = new Object;
	nowPlaying.songPath  = '';
	nowPlaying.filename  = ''
	nowPlaying.mediaName = '';
	nowPlaying.media     = '';
	nowPlaying.versionId = -1;
	nowPlaying.songName  = '';
	nowPlaying.artist    = '';
	nowPlaying.cityId    = -1;
	nowPlaying.isCollab  = -1;
	nowPlaying.isStem    = -1;

var browserSettings = {	city_id			: -1,
						language_id		: 0			};

var aSloganText = new Array();
aSloganText[0] = ['YOUR CITY &bull; YOUR SONG'     , ''                        ];
aSloganText[1] = ['LISTEN &bull; WATCH &bull; VOTE'     , ''                        ];
aSloganText[2] = ['WRITE A SONG'              , '$10,000 US Cash Prize'    ];
aSloganText[3] = ['A CHANCE TO EARN ROYALTIES', 'and promote your career' ];
aSloganText[4] = ['MAKE A VIDEO'              , '$5,000 US Cash Prize'     ];
aSloganText[5] = ['NO ENTRY FEE'              , ''                        ];
sloganRotateTime = 7000;  // milliseconds
var currentSlogan = -1;
var currentSloganDiv = 1;
var sloganDiv1Fade;
var sloganDiv2Fade;

var aTcPopupNav = new Array();	// [0] for each will hold Navigation text, [1] for each will hold html file name
var currentTc;
var lastTc;

var ajaxResponse = '';

var playerType = 'a';
var popupTcSlide;
var popupOpen = false;
var bNewRegistration = false;
var modalSuccessFunction;
var modalFailureFunction;
var modalMsg = '';
var popupMsg = '';
//	var avoidRedraw = false;
var modalCaller;
var slLastPlayed = -1;
var mySlides = new Array ();
var mySlide;
var writeLinksSlide;
var videoLinksSlide;

var aSlSongs    = new Array ();
var aSlSongRows = new Array ();

var aMediaIcons = { 'a' : "assets/images/buttons/speaker_icon_black.gif",
					'v' : "assets/images/buttons/tv_icon_black.gif",
					's' : "assets/images/buttons/sequel2_icon_10x10.gif",
					'z' : "assets/images/buttons/zip.gif",
					'x' : "assets/images/icons/spacer_1x1.gif" };
					
var dlArrowSlowBlink = new Image(12, 12);
dlArrowSlowBlink.src = "assets/images/buttons/download_arrow_12x12_off_blink.gif";

var slSearchObj = { searchString    : '',
					homeCityOnTop   : '1',
					includeAudio    : '1',
					includeVideo    : '1',
					includeCollab   : '1',
					URLVersionToken : '',
					sortBy          : 'newest',
					selectedCityId  : -1 }

var slPagingObj = { totalSongs: 5,
					perPage : 20,
					pageNum : 1,
					totalPages: 1}

var aSearchFields = ['searchCountry_sel', 'searchGenre_sel', 'searchCity_sel', 'searchMood_sel', 'searchTitle_inp',
					 'searchBPM_inp', 'searchArtist_inp', 'searchWriter_inp', 'searchAudio_chk', 'searchVideo_chk'];

var aSearchFieldKeys = new Array();
aSearchFieldKeys ['searchCountry_sel'] = 'cities.country_id';
aSearchFieldKeys ['searchCity_sel'   ] = 'songs.city_id';
aSearchFieldKeys ['searchTitle_inp'  ] = 'songs.title';
aSearchFieldKeys ['searchArtist_inp' ] = 'songs.artist';
aSearchFieldKeys ['searchGenre_sel'  ] = 'genre_id';
aSearchFieldKeys ['searchMood_sel'   ] = 'mood_id';
aSearchFieldKeys ['searchBPM_inp'    ] = 'bpm';
aSearchFieldKeys ['searchWriter_inp' ] = 'songs.writers';

var spacer_img         = "assets/images/icons/spacer_1x1.gif";
var voteStatusIcon_img = "assets/images/buttons/vote_icon_on_12x12.gif";
var collabIcon_img     = "assets/images/banners_logos/cl_logo_12x12.gif";

var bgPath = 'assets/images/backgrounds/';
var aBgImages = new Array();
aBgImages ['container_div'] = '';
aBgImages ['bigBanner_div']   = bgPath + 'bigBanner_bg_2560x200_a1.jpg';
aBgImages ['slogan_div'] = '';
aBgImages ['languageBar_div'] = bgPath + 'lb_bg_2560x26_a1.gif';
//		aBgImages ['leftButtons_div',  bgPath+'rr-8px-on_white-black_top-1400x1400_a4.gif');
aBgImages ['sl_div'] = bgPath+'rr-8px-on_white-black_top-1400x1400_a4.gif';
aBgImages ['player_div'] = bgPath+'rr-8px-on_white-black_top-1400x1400_a4.gif';
//		aBgImages ['player_div',       bgPath+'rr-8px-on_white-black_top-grey_bottom-1400x1400_a3.gif');

var aBgVertSizing = new Array();
aBgVertSizing ['container_div']   = true;
aBgVertSizing ['bigBanner_div']   = false;
aBgVertSizing ['slogan_div']      = false;
aBgVertSizing ['languageBar_div'] = false;;
//		aBgVertSizing ['leftButtons_div',  bgPath+'rr-8px-on_white-black_top-1400x1400_a4.gif');
aBgVertSizing ['sl_div']          = true;
aBgVertSizing ['player_div']      = true;
//		aBgVertSizing ['player_div',       bgPath+'rr-8px-on_white-black_top-grey_bottom-1400x1400_a3.gif');


var aSongOpen = new Array ();

var aHelpDivStates = new Array ();
aHelpDivStates ['slHelp_div'      ] = false;
// aHelpDivStates ['playerHelp_div'  ] = false;
aHelpDivStates ['leftSideHelp_div'] = false;

var aHiddenDivs = ['slHelp_div', 'voteDisabledHelp_div', 'contestOverVote_div', 'darken_div', 'popup_div', 'cs_div', 'si_div', 'tcPopup_div', 'contact_div'];

var bannerHeight        = 28;   // Also set in <td> declarations
var columnHeadersHeight = 19;   // Also set in CSS

var aSlColumnWidths = new Array();
aSlColumnWidths['slLeftPad'     ] = 3;
aSlColumnWidths['slArrow'       ] = 15;
aSlColumnWidths['slTitle'       ] = 0;
aSlColumnWidths['slDemoIcon'    ] = 25;
aSlColumnWidths['slArtist'      ] = 0;
//aSlColumnWidths['slDownloadIcon'] = 17;
aSlColumnWidths['slMediaIcon'   ] = 15;
aSlColumnWidths['slMediaName'   ] = 0;
aSlColumnWidths['slDownload'    ] = 60;
//aSlColumnWidths['slVoteIcon'    ] = 20;
//aSlColumnWidths['slPopularity'  ] = 0;
/* var fixedColumnWidthTotal = aSlColumnWidths['slLeftPad'] + aSlColumnWidths['slArrow'] +
							aSlColumnWidths['slDemoIcon'] +	aSlColumnWidths['slDownloadIcon'] +
							aSlColumnWidths['slMediaIcon'] + aSlColumnWidths['slVoteIcon']; */
							
var fixedColumnWidthTotal = aSlColumnWidths['slLeftPad'] + aSlColumnWidths['slArrow'] +
							aSlColumnWidths['slDemoIcon'] +	aSlColumnWidths['slMediaIcon'] +
							aSlColumnWidths['slDownload'];
							
var qtPlayer;
var flashAudioPlayerObj;
var flashYoutubePlayerObj;
		

function fnFocus(id) {
	setTimeout( function() {$(id).focus()}, 25 );
}


function fnSubmitSearchForm() {
	filterActive = false;
	var val;
	var checked;
	var comparitor = "";
	slSearchObj.searchString = "";
	for (i=0; i<aSearchFields.length; i++) {
		val = '';
		if (aSearchFields[i].indexOf('_chk') < 0) {  // not a checkbox
			val=addslashes($(aSearchFields[i]).get('value'));
			if ((val != '') && (val != 'all')) {
				filterActive = true;
				slSearchObj.searchString += " AND ";
				if (aSearchFields[i].match(/_sel/)) { comparitor = '='; } else {	comparitor = 'LIKE'; val = "%"+val+"%";}
				slSearchObj.searchString += "" + aSearchFieldKeys[aSearchFields[i]] + " " + comparitor + ' "' + val + '"';
			}
		}
	}
	
	slSearchObj.includeCollab = ($('slCollab_chk').checked) ? 1 : 0;
	slSearchObj.homeCityOnTop = ($('slHomeCityTop_chk'  ).checked) ? 1 : 0;
	slSearchObj.includeAudio  = ($('searchAudio_chk' ).checked) ? 1 : 0;
	slSearchObj.includeVideo  = ($('searchVideo_chk' ).checked) ? 1 : 0;
	slSearchObj.selectedCityId = selectedCityId;
	
	slSearchObj.sortBy = $('slSortBy_sel').get('value');

	if ((!slSearchObj.includeAudio) | (!slSearchObj.includeVideo)) filterActive = true;
	
	var notice = filterActive ? 'Filter Is On' : '&nbsp;';
	$('slFilterNotice_td').set('html', notice);
	
//	alert ('The query will be ' + slSearchObj.searchString + '.');
	if (statusDisplay) alertObject(slSearchObj);
	
	currentSong = -1;
	slLastPlayed = -1;
	slPagingObj.pageNum = 1;

	ajaxGetSongList(function() {});
}

function getSongDashRow(id) {
	var sdr = String(id.match (/[0-9]+-[0-9]+/));
	return sdr;
}

function getSongNum(id) {
	var sdr = getSongDashRow(id);
	var dashPos = sdr.indexOf('-');
	var songNum = sdr.substr(0,dashPos);
	return parseInt(songNum);
}

function getRowNum(id) {
	var sdr = getSongDashRow(id);
	var dashPos = sdr.indexOf('-');
	var rowNum = sdr.substr(dashPos+1);
	return parseInt(rowNum);
}

function isWriter()       { return ((user.access_level & 2) > 0) & (user.validated == 1); }

function isVideoMaker()   { return ((user.access_level & 4) > 0) & (user.validated == 1); }

function isMediaCompany() { return ((user.access_level & 8) > 0) & (user.validated == 1); }

/* function fnMouseEnterDownloadLink() {
	var sdr = getSongDashRow(this.id);
	var img = $('slDownloadIcon' + sdr + '_td').getChildren('img')[0];
	img.src = img.src.replace('_off', '_over');
}

function fnMouseLeaveDownloadLink() {
	var sdr = getSongDashRow(this.id);
	var img = $('slDownloadIcon' + sdr + '_td').getChildren('img')[0];
	img.src = img.src.replace('_over', '_off');
} */

/*function fnMouseClickRollOverCell() {
	var which = this.id;
	if (which.match(/download/)) alert ("This initiates a download.");
}*/
	
function setSongSummaries() {
	mySlides.length = 0;
	aSongOpen.length = 0;
	
//	$('slPaging_td').set('html', 'Displaying ' + aSlSongs.length + ' songs');
//	$('pagingPerPage_inp').set('value', aSlSongs.length);
//	$('pagingTotalPages_span').set('html', slPagingObj.totalPages);

	for (var songNum=0; songNum<aSlSongs.length; songNum++) {
		fnShowHideArrow(songNum);
		aSongOpen[songNum] = false;

		var detailsId     = "slSongDetails"+songNum+"_div";
		var totalVersions = aSlSongs[songNum].totalVersions;
		var is_collab     = aSlSongs[songNum].isCollab;
/*		if ((is_collab == 1) & (!isWriter() & !isVideoMaker() & !isMediaCompany())) {
			$('mediaIcon'+songNum+'-0_td').set('html', '<img src="' + spacer_img + '" />');
			$('mediaIcon'+songNum+'-1_td').set('html', '<img src="' + spacer_img + '" />');
			$('mediaName'+songNum+'-0_td').set('html', 'Stems Available');
			$('mediaName'+songNum+'-1_td').set('html', 'for Songwriters');			
			$('slSong' + songNum + '_div').addClass('closed');
		} else if ((totalVersions > 2) | (is_collab != 1) ) { */
		if (totalVersions > 2) {
			if ($(detailsId)) {
				mySlides[songNum] = new Fx.Slide(detailsId, {link: 'cancel'});
				mySlides[songNum].hide();
			}
			fnCloseSongDetails(songNum);
		}
		
		for (var rowNum=0; rowNum<totalVersions; rowNum++) {		// See if it's still being processed
			if (aSlSongRows[songNum][rowNum].isProcessing == '1') {
/*				if (aSongOpen[songNum]) {
					$('detail' + songNum + '-' + rowNum + '_div').removeClass('slPlayLink');
					$('detail' + songNum + '-' + rowNum + '_div').innerHTML += '<span class="processing"> (Processing)</span>';
				} */
				currentSong = songNum;
			}
			if (aSlSongRows[songNum][rowNum].token.substr(0,8) == slSearchObj.URLVersionToken) {
				currentSong = songNum;
				selectVersion('detail' + songNum + '-' + rowNum + '_div', false, true);
			}
		}

		$('slSong'+songNum+'_div').removeEvents('mouseenter', 'mouseleave');
		$('slSong'+songNum+'_div').addEvent('mouseenter', function() { this.addClass    ('slSongHover'); } );
		$('slSong'+songNum+'_div').addEvent('mouseleave', function() { this.removeClass ('slSongHover'); } );
		
//		if ((totalVersions > 2) & (!selectedSong)) fnCloseSongDetails(songNum);
		
		fnSetupSongLinks(songNum);
		fnShowHideDownload(songNum);
		fnShowHideVotes(songNum);
	}
	revealCurrentSong();
}

function fnSetupSongLinks(songNum) {
	var sl; var mn; var mi;
	sl = $('summary' + songNum + '-0_span');
	sl.addClass('slPlayLink');

	sl.removeEvents ('mouseenter', 'mouseleave', 'mousedown');
	sl.addEvent ('mouseenter', function() { this.addClass    ('slHighlight'); } );	// Hover on
	sl.addEvent ('mouseleave', function() { this.removeClass ('slHighlight'); } );	// Hover off
	sl.addEvent ('mousedown' , songLinkClicked);			// If they click on a song link
	sl.addEvent ('mousedown' , fnToggleSongDetails);
	
	var media;
	
	for (var rowNum=0; rowNum<aSlSongs[songNum].totalVersions; rowNum++) {
		media = aSlSongRows[songNum][rowNum].media;
		mn = $('mediaName'      + songNum + '-' + rowNum + '_td');
		if ((media == 'a') | (media == 'v')) {
			if (!($('slSong' + songNum + '_div').hasClass('closed'))) {		// If song is open
				mn.addClass ('slPlayLink');
				mn.removeEvents ('mouseenter', 'mouseleave', 'mousedown');
				mn.addEvent ('mouseenter', function() { this.addClass    ('slHighlight'); } );	// Hover on
				mn.addEvent ('mouseleave', function() { this.removeClass ('slHighlight'); } );	// Hover off
				mn.addEvent ('mousedown' , songLinkClicked);			// If they click on a song link
			} else {		// If song is closed
				mn.removeClass ('slPlayLink');
				mn.removeEvents ('mouseenter', 'mouseleave', 'mousedown');
			}
		}
	}
}

function fnMouseEnterRollOver() {
	this.getChildren('img')[0].src = this.getChildren('img')[0].src.replace('_off', '_over');
}

function fnMouseLeaveRollOver() {
	this.getChildren('img')[0].src = this.getChildren('img')[0].src.replace('_over', '_off');
}

function fnToggleSongDetails() {
	lastSong = currentSong;
	currentSong=parseInt(this.id.match (/[0-9]+/));

	aSongOpen[currentSong] = !aSongOpen[currentSong];
	if (aSongOpen[currentSong]) {
		revealCurrentSong();

		if ((currentSong != lastSong) & (lastSong != -1)) {
			aSongOpen[lastSong] = false;
			fnCloseSongDetails(lastSong);
			$('slSong' + lastSong + '_div').removeClass ('slSongSelected');
		}
	
	} else {
		fnCloseSongDetails(currentSong);
	}
}

function revealCurrentSong() {
	if (currentSong != -1) {
		if ((aSlSongs[currentSong].isCollab != 1) | (user.access_level > 1)) {
			if (aSlSongs[currentSong].totalVersions > 2) {
				aSongOpen[currentSong] = true;
				fnOpenSongDetails(currentSong);
			}
		}
		$('slSong' + currentSong + '_div').addClass ('slSongSelected');
	}
}

function fnCloseSongDetails(songNum) {
	var totalVersions = aSlSongRows[songNum].length;
//	var is_collab     = aSlSongs[songNum].isCollab;
	if (totalVersions > 2) {
/*		var is_collab = aSlSongs[songNum].isCollab;
		if ((is_collab == 1) & !(isWriter() | isVideoMaker() | isMediaCompany()) ) {	// Is it a collaboration song?
			$('mediaIcon'+songNum+'-0_td').set('html', '<img src="' + spacer_img + '" />');
			$('mediaIcon'+songNum+'-1_td').set('html', '<img src="' + spacer_img + '" />');
			$('mediaName'+songNum+'-0_td').set('html', 'Stems Available');
			$('mediaName'+songNum+'-1_td').set('html', 'for Songwriters');			
		} else {					// It's not a collaboration song. */
			$('mediaIcon'+songNum+'-0_td').set('html', '<img src="assets/images/buttons/speaker_icon_black.gif" />');
			$('mediaIcon'+songNum+'-1_td').set('html', '<img src="assets/images/buttons/tv_icon_black.gif" />');
			$('mediaName'+songNum+'-0_td').set('html', aSlSongs[songNum].aVersions);
			$('mediaName'+songNum+'-1_td').set('html', aSlSongs[songNum].vVersions);
/*		} */
		$('slSong' + songNum + '_div').addClass('closed');
//		if (totalVersions > 2) {
			var arrow = "slArrow"+songNum+"-0_td";
			$(arrow).getChildren('img')[0].src=$(arrow).getChildren('img')[0].src.replace('down', 'right');
			fnSetupSongLinks(songNum);
			fnShowHideDownload(songNum);
			fnShowHideVotes(songNum);
			mySlides[songNum].slideOut()
//		}
	}
}

function fnOpenSongDetails(songNum) {
	var totalVersions = aSlSongRows[songNum].length;
	if (totalVersions > 2) {
		
		$('mediaIcon'+songNum+'-0_td').set('html', '<img src="' + aMediaIcons[aSlSongRows[songNum][0].media] + '" />');
		$('mediaIcon'+songNum+'-1_td').set('html', '<img src="' + aMediaIcons[aSlSongRows[songNum][1].media] + '" />');
		$('mediaName'+songNum+'-0_td').set('html', aSlSongRows[songNum][0].mediaNameHTML);
		$('mediaName'+songNum+'-1_td').set('html', aSlSongRows[songNum][1].mediaNameHTML);

		$('slSong' + songNum + '_div').removeClass('closed');
		var arrow = "slArrow"+songNum+"-0_td";
		$(arrow).getChildren('img')[0].src=$(arrow).getChildren('img')[0].src.replace('right', 'down');
		mySlides[songNum].slideIn().chain (function() {
												fnSetupSongLinks(songNum);
												fnShowHideDownload(songNum);
												fnShowHideVotes(songNum);
											} );
	}
}
		
function fnToggleStatusDisplay(e) {
	if (e.alt & e.shift) {
		statusDisplay = !statusDisplay;
		if (statusDisplay) {
			$('status_div').setStyle('color', '#444');
			$('debug_div') .setStyle('display', 'inline');
			
			$$('.slLeftPad'     ).setStyle('background-color', '#BFB');
			$$('.slArrow'       ).setStyle('background-color', '#FBB');
			$$('.slTitle'       ).setStyle('background-color', '#BBF');
			$$('.slDemoIcon'    ).setStyle('background-color', '#BFB');
			$$('.slArtist'      ).setStyle('background-color', '#FBB');
			$$('.slMediaIcon'   ).setStyle('background-color', '#BBF');
			$$('.slMediaName'   ).setStyle('background-color', '#FBB');
	//		$$('.slVoteIcon'    ).setStyle('background-color', '#BFB');
	//		$$('.slPopularity'  ).setStyle('background-color', '#BBF');
			$$('.slDownload'    ).setStyle('background-color', '#BFB');
		} else {
			$('status_div').setStyle('color', '#FFF');
			$('debug_div') .setStyle('display', 'none');
	
			$$('.slLeftPad'     ).setStyle('background-color', 'transparent');
			$$('.slArrow'       ).setStyle('background-color', 'transparent');
			$$('.slTitle'       ).setStyle('background-color', 'transparent');
			$$('.slDemoIcon'    ).setStyle('background-color', 'transparent');
			$$('.slArtist'      ).setStyle('background-color', 'transparent');
			$$('.slMediaIcon'   ).setStyle('background-color', 'transparent');
			$$('.slMediaName'   ).setStyle('background-color', 'transparent');
	//		$$('.slVoteIcon'    ).setStyle('background-color', 'transparent');
	//		$$('.slPopularity'  ).setStyle('background-color', 'transparent');
			$$('.slDownload'    ).setStyle('background-color', 'transparent');
		}
	}
}

function fnToggleHelp(event) {
	var x = event.page.x - 450;
	var y = event.page.y + 25;
	var which=this.id.replace('Icon', '');   // Div to fade doesn't have 'Icon' in the name
	if (!aHelpDivStates[which]) {
		fnShowHelp (which, x, y);
	} else {
		fnHideHelp (which);
	}
}

function fnShowHelp (helpDiv, x, y) {
	aHelpDivStates [helpDiv] = true;
	var icon=helpDiv.replace('_div', 'Icon_div');
	$(icon).getChildren('img')[0].src = "assets/images/buttons/help_icon_grey.gif";
	$(helpDiv).setStyles({'left' : x, 'top' : y});
	$(helpDiv).fade('in');
}

function fnHideHelp (helpDiv) {
	aHelpDivStates [helpDiv] = false;
	var icon=helpDiv.replace('_div', 'Icon_div');
	$(icon).getChildren('img')[0].src = "assets/images/buttons/help_icon_red.gif";
	$(helpDiv).fade('out');
}

function fnMouseEnterHelp(event) {
	var x = event.page.x - 450;
	var y = event.page.y + 25;
	this.getChildren('img')[0].src = "assets/images/buttons/help_icon_grey.gif";
	var which=this.id.replace('Icon', '');   // Div to fade doesn't have 'Icon' in the name
	$(which).setStyles({'left' : x, 'top' : y});
	$(which).fade('in');
}

function fnMouseLeaveHelp() {
this.getChildren('img')[0].src = "assets/images/buttons/help_icon_red.gif";
	var which=this.id.replace('Icon', '');   // Div to fade doesn't have 'Icon' in the name
	$(which).fade('out');
}

function showLeftSideHelp() {
	alert ('This should not be seen.  Please report.');
/*		aHelpDivStates ['leftSideHelp_div'] = true;
	$('leftSideHelp_div').fade('in');
*/	}

function hideLeftSideHelp() {
	alert ('This should not be seen.  Please report.');
/*		aHelpDivStates ['leftSideHelp_div'] = false;
	$('leftSideHelp_div').fade('out');
*/	}

function fnShowHideArrow(songNum) {
	var ar = $('slArrow' + songNum + '-0_td');
	ar.removeEvents ('mouseenter', 'mouseleave', 'mousedown');
	if (aSlSongs[songNum].totalVersions > 2) {
		if (aSlSongs[songNum].isCollab == 1) {		// If it's a collaboration song
			if (isWriter() | isVideoMaker() | isMediaCompany()) {
				ar.getChildren('img')[0].src = "assets/images/buttons/arrow_right_off.gif";
				ar.addEvent('mouseenter', fnMouseEnterRollOver);
				ar.addEvent('mouseleave', fnMouseLeaveRollOver);
				ar.addEvent('mousedown' , fnToggleSongDetails);
			} else {
				ar.getChildren('img')[0].src = spacer_img;
			}
		} else {		// If not a collaboration song
			ar.getChildren('img')[0].src = "assets/images/buttons/arrow_right_off.gif";
			ar.addEvent('mouseenter', fnMouseEnterRollOver);
			ar.addEvent('mouseleave', fnMouseLeaveRollOver);
			ar.addEvent('mousedown' , fnToggleSongDetails);
		}
	} else {		// If 2 or fewer versions
		ar.getChildren('img')[0].src = spacer_img;
	}
}

function setDownloadable (sdr) {
	var songNum   = getSongNum(sdr);
	var rowNum    = getRowNum(sdr);
	var file_size = aSlSongRows[songNum][rowNum].fileSize;
	var sl = $('slDownload' + sdr + '_td');
	
	if (!(sl.hasClass('slDownloadLink'))) {
		$('detail' + sdr + '_div').innerHTML += '<span id="filesize' + sdr +
												'" class="slFileSize"> (' +	num_bytes_as_text(file_size) + ')</span>';
		sl.addClass('slDownloadLink');
		sl.removeEvents('mouseenter', 'mouseleave', 'mousedown');
		sl.innerHTML = '<img src="assets/images/icons/down42.gif" /> Download';
		sl.addEvent ('mouseenter', function() { this.addClass    ('slDownloadHighlight'); } );	// Hover on
		sl.addEvent ('mouseleave', function() { this.removeClass ('slDownloadHighlight'); } );	// Hover off
		sl.addEvent ('mousedown', songLinkClicked);
	}
}

function clearDownloadable (sdr) {
	var songNum   = getSongNum(sdr);
	var rowNum    = getRowNum(sdr);
	var file_size = aSlSongRows[songNum][rowNum].fileSize;
	var sl = $('slDownload' + sdr + '_td');
	
	if ($('filesize' + sdr)) $('filesize' + sdr).dispose();
//	$('slDownloadIcon' + sdr + '_td').getChildren('img')[0].src = spacer_img;
	sl.removeEvents('mouseenter', 'mouseleave', 'mousedown');
	sl.removeClass('slDownloadLink');
	sl.innerHTML = '';
}

function fnShowHideDownload(songNum) {
//	for (var songNum=0; songNum<aSlSongs.length; songNum++) {
	for (var rowNum=0; rowNum<aSlSongs[songNum].totalVersions; rowNum++) {
		var is_collab = aSlSongs[songNum].isCollab;
		var is_stem   = aSlSongRows[songNum][rowNum].isStem;
		var media     = aSlSongRows[songNum][rowNum].media;
		var sdr       = songNum + '-' + rowNum;	//	alert ('songNum: ' + songNum + ', is_stem: ' + is_stem);
	//			var it        = $('slDownloadIcon' + sdr + '_td');

		if (!($('slSong' + songNum + '_div').hasClass('closed'))) {		// Don't show downloads if song is closed
			if (media == 'a') {				//		If it's an audio file
				if ( ((isWriter())  & (is_collab == 1)) |							// Songwriters can download aollab songs
					((isVideoMaker()) | (isMediaCompany()) & (is_stem != 1)) )   {	// Vidmakers & Media Co's can't dl  stems
						setDownloadable(sdr);
				} else {												// Everyone else can't download
					clearDownloadable(sdr);
				}

			} else if ((media == 's') | (media == 'z')) {	// If it's a zip or a Sequel pack,
				if (isWriter()) {							// Only songwriters can download them
						setDownloadable(sdr);
				} else {
					clearDownloadable(sdr);
				}
			} else {										// If it's not audio, Sequel, or .zip
				clearDownloadable(sdr);
			}

		} else {	// If song is closed
			clearDownloadable(sdr);
		}
	} // End for versionNum
//	} // End for songNum
}

function fnShowHideVotes(songNum) {
	var songVote = false;
	var vote;
//	alert ('its ' + songNum + ' out of ' + aSlSongs.length + ' and iscollab is ' + aSlSongs[songNum]);
//	if (aSlSongs[songNum].isCollab != 1) {		// No voting for collaboration songs
		for (var rowNum=0; rowNum<aSlSongs[songNum].totalVersions; rowNum++) {
			vote = aSlSongRows[songNum][rowNum].vote;
			if (vote == 1) songVote = true;		// Do we need a vote icon for the whole song?
//			if (songNum == 5) alert ('In fnshow, songNum = ' + songNum + ', rowNum = ' + rowNum + ', vote: ' + vote);
			if (!($('slSong' + songNum + '_div').hasClass('closed'))) {		// Don't show votes if song is closed
				detailId = 'detail' + songNum + '-' + rowNum + '_div';
				if (vote == 1) {
					$(detailId).addClass ('slDetailVote');
				} else {
					$(detailId).removeClass ('slDetailVote');
				}
			}
		}

//	}
		if (aSlSongs[songNum].isCollab != 1) {
			$('slDemoIcon'+ songNum + '-0_td').getChildren('img')[0].src = songVote ? voteStatusIcon_img : spacer_img;
		} else {
			$('slDemoIcon'+ songNum + '-0_td').getChildren('img')[0].src = songVote ? voteStatusIcon_img : collabIcon_img;
		}
}

function songLinkClicked(e) {
	var isDownload = (this.id.indexOf('slDownload') == 0);
	selectVersion(this.id, isDownload, true);
}

function selectVersion(linkId, isDownload, autoPlay) {
	var songNum = getSongNum (linkId);
	var rowNum  = getRowNum  (linkId);
	
	nowPlaying.linkId       = linkId;
	nowPlaying.token        = aSlSongRows[songNum][rowNum].token;
	nowPlaying.origFilename = aSlSongRows[songNum][rowNum].origFilename;
	nowPlaying.mediaName    = aSlSongRows[songNum][rowNum].mediaName;
	nowPlaying.vote         = aSlSongRows[songNum][rowNum].vote;
	nowPlaying.media        = aSlSongRows[songNum][rowNum].media;
	nowPlaying.versionId    = aSlSongRows[songNum][rowNum].versionId;
	nowPlaying.isStem       = aSlSongRows[songNum][rowNum].isStem;
	nowPlaying.songName     = aSlSongs[songNum].songName;
	nowPlaying.artist       = aSlSongs[songNum].artist;
	nowPlaying.cityId       = aSlSongs[songNum].cityId;
	nowPlaying.isCollab     = aSlSongs[songNum].isCollab;
	nowPlaying.autoPlay     = autoPlay;
	
	if (nowPlaying.isCollab == 1) {
		topdir = 'collab';
		bitrate = 320;
		suffix = '.mp3';
	} else {
		topdir = 'public';
		bitrate = 192;
		suffix = '.mp3';
	}
	
	if (nowPlaying.media == 'z') {
		bitrate = 441;
		suffix = '.zip';
	}
	
	ajaxGetCityInfo(nowPlaying.cityId, function(response) {
		var cty = JSON.decode(response);
//			alert ('Country code is ' + ctry.code);
		
		nowPlaying.songPath = 'media/' + topdir + '/audio/' + cty.country_code + '/' + nowPlaying.cityId + '/';
		nowPlaying.filename = padZeros(nowPlaying.versionId, 8) + '-' + nowPlaying.token + '-' + bitrate + suffix;
		
		if (isDownload) {	// If it's a download
			if (nowPlaying.media == 'a') {
//				alert (nowPlaying.isStem);
				
				if (nowPlaying.isStem != 1) {
					target = nowPlaying.songName + ' (' + cty.city_name + ') (CityLove feat. ' +
							nowPlaying.artist + ').mp3'
				} else {
					target = nowPlaying.origFilename;
				}
				
				window.location.href = "ajaxsvr.php?downloadSrc=" + escape(nowPlaying.songPath + nowPlaying.filename) +
			   "&downloadTarget=" + escape(target);
									   
			} else if (nowPlaying.media == 's') {					// If it's a Sequel file
				var path = 'media/software/';  //alert (nowPlaying.origFilename);
				window.location.href = "ajaxsvr.php?downloadSrc=" + escape(path + nowPlaying.origFilename) +
									   "&downloadTarget=" + escape(nowPlaying.origFilename);
									   
			} else if (nowPlaying.media == 'z') {					// If it's a .zip file
				window.location.href = "ajaxsvr.php?downloadSrc=" +
										escape(nowPlaying.songPath + nowPlaying.filename) +
										"&downloadTarget=" + escape(nowPlaying.origFilename);
				
			} else {
				alert ('Bad song file.');
			}
			ajaxLogActivity ('download', nowPlaying.versionId, user.id);
		} else {			// If it's not a download
			if ((nowPlaying.media == 'a') | (nowPlaying.media == 'v')) {		// If it's an audio file
			
				if (slLastPlayed != -1) $('slSong'+slLastPlayed+'_div').removeClass ('slSongSelected');		
				slLastPlayed = songNum;
				currentSong = songNum;
				revealCurrentSong();
//				alertObject(nowPlaying);
				playSong();
				ajaxLogActivity ('play', nowPlaying.versionId, user.id);
			} else {
				alert ('Bad song file.');
			}
		}
	});
}

function setupBannerLinks() {
	$('topBanner1_div').addEvent('mousedown', function(event) {
//		alert ('Resetting Player Width');
//		$('flashAudioPlayer').setStyles( {'width' : '231px', 'height' : '68px' });
		ajaxGetSongList(function() {});
	});

	$('topBanner2_div').addEvent('mousedown', function(event) {
		var req = new Request.HTML({
			method: 'get',
			url: 'ajaxsvr.php',
			data: { 'whichFunction' : 'statLog' },
			onRequest: function() { },
			update: $('debug_div'),
			onComplete: function(response) { }
		}).send();
	});
}

function resetSearchWindow() {
/*	$('searchCountry_sel').set('value', 'all');
	$('searchCity_sel'   ).set('value', 'all');
	$('searchGenre_sel'  ).set('value', 'all');
	$('searchMood_sel'   ).set('value', 'all');
*/	
	ajaxBuildCountryCitySelectors('search');
	
	ajaxFillHTML ({'whichFunction' : 'buildSelector',			// Build the genre selector in the search
				   'table'         : 'genres',
				   'firstOption'   : 'all',
				   'currentSel'    : 'all',
				   'id'            : 'searchGenre_sel',
				   'parentId'      : 'searchGenre_td'},
				   function() { $('searchGenre_sel').onchange = fnSubmitSearchForm; });
	
	ajaxFillHTML ({'whichFunction' : 'buildSelector',			// Build the mood selector in the search
				   'table'         : 'moods',
				   'firstOption'   : 'all',
				   'currentSel'    : 'all',
				   'id'            : 'searchMood_sel',
				   'parentId'      : 'searchMood_td'},
				   function() { $('searchMood_sel').onchange = fnSubmitSearchForm; });
	
	for (var i=0; i<aSearchFields.length; i++) {	// Set up search checkboxes to auto-submit
		if (aSearchFields[i].indexOf('_inp') > -1) $(aSearchFields[i]).set('value', '');
		if (aSearchFields[i].indexOf('_chk') > -1) $(aSearchFields[i]).set('checked', true);
	}
	
	slSearchObj.selectedCityId = selectedCityId;
			
}

function checkForURLPlay() {
	if (bod.getAttribute('urlFunc'  )) urlFunc   = bod.getAttribute('urlFunc');
	if (bod.getAttribute('urlValue' )) urlValue  = bod.getAttribute('urlValue');

	if (urlFunc == 'play') slSearchObj.URLVersionToken = urlValue;
}

function processUrlFunc() {
	if (bod.getAttribute('urlFunc'    )) urlFunc     = bod.getAttribute('urlFunc');
	if (bod.getAttribute('urlValue'   )) urlValue    = bod.getAttribute('urlValue');
	if (bod.getAttribute('uploadMsg'  )) uploadMsg   = bod.getAttribute('uploadMsg');
	if (bod.getAttribute('uploadId'   )) uploadId    = bod.getAttribute('uploadId');
	if (bod.getAttribute('uploadIdKey')) uploadIdKey = bod.getAttribute('uploadIdKey');
	
	if (bod.getAttribute('contestOver')) contestOver = bod.getAttribute('contestOver');
	if (contestOver == 'true') contestOver = true;
	if (contestOver == 'false') contestOver = false;
	
//	alert (bod.getAttribute('uploadHandler'));
	
	if ((urlFunc!='')) {
		switch (urlFunc) {
			case 'test':
				ajaxProcessAudioFile('test.mp3', function(response) {
						  alert ('ajaxProcessAudioFile returned ' + response);
					  });
			break;
			
			case 've':
				fnValidateEmail(urlValue);
			break;
			
			case 'uploadSong':
				var uploadedSong = JSON.decode(stripslashes(urlValue));
				uploadedSong.id = -1;
//	alertObject(uploadedSong);
				
				if ((uploadedSong.songStatus == 1) | (uploadedSong.lyricStatus == 1))
					ajaxUploadAudio (uploadedSong, function(response) {	// alert (response);
						var needsProcessing = false;
						var output='';
						uploadedSong = JSON.decode(response);
						if (uploadedSong.songInDB == 1) {
							if (uploadedSong.collabType == 'collab5') {		// If they said they're uploading a new version
								if (uploadedSong.refSong != -1) {
									output += 'Uploaded ' + uploadedSong.name + ' which is a new version of song #' +
											uploadedSong.refSong + '\n\n';
									output += 'Audio files will be temporarily unavailable\nwhile being processed.\n\n';
									needsProcessing = true;
								} else {
									output += 'No reference song id supplied.  Uploading of ' + uploadedSong.name +
											' was cancelled.' + '\n';
								}
							} else {
								output += 'Uploaded song: ' + uploadedSong.songName + '\n';
								if (uploadedSong.versionName != '')
									output +='Version Name: ' + uploadedSong.versionName + '\n'
								output += '\nAudio files will be temporarily unavailable\nwhile being processed.\n\n';
								needsProcessing = true;
							}
						} else {
							output += 'No song uploaded.\n';
						}
						
						if (uploadedSong.lyricInDB == 1) {
							output += 'Uploaded lyrics: ' + uploadedSong.lyricName + '\n';
						} else {
							output += 'No lyrics uploaded.\n';
						}
						
						ajaxGetSongList(function() {});
						
						alert (output);
						
						if (needsProcessing) {
							ajaxProcessAudio (uploadedSong, function (response) {
									// alert ('Processing returned ' + response);
									var processingResponse = JSON.decode(response);
									var vId = processingResponse.version_id;
									window.location.href = "index.php?play=" + (processingResponse.filenameToken.substr(0,8));

									ajaxGetSongList(function() {});
//									$('slStatus_div').setStyle('visibility', 'hidden');
/*									var aProcessing = $$('.processing');
									aProcessing.each( function (item) {
											if (item.getParent().get('version_id') == vId) {
												item.getParent().addClass('slPlayLink');
												item.getParent().getChildren('span')[0].dispose();
											}
									});
*/

								});     // End of ajaxProcessAudio
						}
					} );    // End of ajaxUploadAudio

			break;
			
			default:
//				alert ('urlFunc is ' + urlFunc + ' and urlValue is ' + urlValue + '.');
			break;
		}
	}
}


window.addEvent('domready', fnDomReady);

function fnDomReady() {
	bod = document.getElement('body');
	winCoords = window.getCoordinates();
	docCoords = bod.getCoordinates();
			
	if (forceIPhone || (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {
		iPhone = true;
		$('iPhone_div').setStyle('visibility', 'visible');
		slPagingObj.perPage = 10;
	} else {
		window.onresize = resized;
	}
	
	var flashAudioVars = {};
	var flashAudioParams = { play             : "true",
							 wmode            : "transparent",
							 scale            : "noborder",
							 allowFullScreen  : "true",
							 allowScriptAccess: "always" };
	var flashAudioAttributes = { id : "flashAudioPlayer"};
	swfobject.embedSWF("assets/flash/clm_fl_player_a7.swf",
					   "noFlashAudio_div", "100%", "100%", "9.0.0",
					   "assets/flash/expressInstall.swf", flashAudioVars, flashAudioParams, flashAudioAttributes);
	
	var flashYoutubeParams = { wmode             : "transparent",
							   allowScriptAccess : "always" };
	var flashYoutubeAttributes = { id: "flashYoutubePlayer" };
	swfobject.embedSWF("http://www.youtube.com/v/oYeyqDKJBv8?enablejsapi=1&playerapiid=flashAudioPlayer", 
                       "noFlashYoutube_div", "100%", "100%", "8",
					   null, null, flashYoutubeParams, flashYoutubeAttributes); // was 425 x 356
	
	hidePlayer();	// Gives them a dimension of 0x0
	$('flashAudioPlayer_div'  ).setStyle('visibility', 'visible');
	$('flashYoutubePlayer_div').setStyle('visibility', 'visible');

	fnReadAccessCookies();	// alert ('cookies read');
	fnHideDivs();			// alertObject (browserSettings); alertObject (user);
//	alert (browserSettings.city_id);
	ajaxBuildCountryCitySelectors('cs');			// Build Country & City Selectors for cs_div

	if (browserSettings.city_id != -1) {
		ajaxGetCityInfo(browserSettings.city_id, function(response) {
			$('landingCityName_td').set('html', JSON.decode(response).city_name);
			showPage('main');
		});
	} else {
		$('landingCityName_td').set('html', 'Choose...');
		$('lbCityName_td').set('html', 'Choose...');
		showPage('landing');
	}
}

function showPage(whichPage) {
	switch (whichPage) {
		case 'landing':
			currentPage = 'landing';
			resized();
			$('container_div').setStyle('display', 'none');
			hidePlayer();
			document.getElement('body').setStyle('background-image', 'url(assets/images/backgrounds/music_notes_a5.jpg)');
			$('landing_div').setStyle('display', 'block');
			
			$('landingCityName_td').addEvent('mousedown', function() {
														   showModal('cs_div', 'landingCity', null, null);
														   });

			$('landingClick_span').addEvent('mousedown', function() {	// Clicked 'here' to enter the site
				  if (browserSettings.city_id != -1) {		// If they've chosen a home city
						if ($('container_divWrapper')) {	// If the page was previously displayed
							document.getElement('body').setStyle('background-image', 'url(assets/images/backgrounds/music_notes_a2.jpg)');
							$('container_div'        ).setStyle('display', 'block');
							$('container_divWrapper' ).setStyle('display', 'block');
							$('bigBanner_divWrapper' ).setStyle('display', 'block');
							showPlayer();
							$('landing_div').setStyle('display', 'none');			
						} else {					// If it's our first time to the page
							showPage('main');
						}
						currentPage = 'main';
						resized();
				  } else {							// If they haven't chosen a home city
					  alert ('Please choose the city nearest to your home');
				  }
				});
//			$('landing_div').setStyle('display', 'block');
		break;
		
		case 'main':
			currentPage = 'main';
			
			document.getElement('body').setStyle('background-image', 'url(assets/images/backgrounds/music_notes_a2.jpg)');

			$('landing_div').setStyle('display', 'none');			
			$('container_div').setStyle('display', 'block');
			$('container_div').setStyle('visibility', 'hidden');
			hidePlayer();
//			$('flashAudioPlayer_div'  ).setStyle('visibility', 'hidden');
//			$('flashYoutubePlayer_div').setStyle('visibility', 'hidden');
			
			ajaxGetCityInfo(browserSettings.city_id, function(response) {
				$('lbCityName_td').set('html', JSON.decode(response).city_name);
			});
			
			$('lbCityName_td').addEvent('mousedown', function() { showModal('cs_div', 'lbCity', null, null); });
			
			if (useQt) {
				setupQt();
				$('noFlashAudio_div').innerHTML = '';
			}
			
			for (var i=0; i<aSearchFields.length; i++) {	// Set up search checkboxes to auto-submit
				if (aSearchFields[i].indexOf('_chk') > -1) $(aSearchFields[i]+'_lbl').addEvent('mouseup', function() {
															setTimeout( function() { fnSubmitSearchForm (); }, 500 );
																											});
			}
			
			$('slCollab_chk_lbl').addEvent('mouseup', function() {
				setTimeout( function() {
					browserSettings.includeCollab = ($('slCollab_chk').checked) ? 1 : 0;
					fnWriteAccessCookie('ac0');
					fnSubmitSearchForm ();
				}, 500 );
			});
			
			$('slHomeCityTop_chk_lbl').addEvent('mouseup', function() {
				setTimeout( function() {
					browserSettings.homeCityOnTop = ($('slHomeCityTop_chk'  ).checked) ? 1 : 0;
					fnWriteAccessCookie('ac0');
					fnSubmitSearchForm ();
				}, 500 );
			});

			$('slSortBy_sel').onchange = fnSubmitSearchForm;
			
			$('pagingPerPage_inp').onchange = function() {
				browserSettings.perPage = $('pagingPerPage_inp').get('value');
				fnWriteAccessCookie ('ac0');
				currentSong = -1;
				slPagingObj.pageNum = 1;
				ajaxGetSongList(function() {});
			};
			$('pagingPerPage_inp').set('value', slPagingObj.perPage);

			if (forceStatusDisplay) fnToggleStatusDisplay();
			
			createDivBg ('container_div');
			createDivBg ('bigBanner_div');
			createDivBg ('slogan_div');
			createDivBg ('languageBar_div');
			createDivBg ('sl_div');
			createDivBg ('player_div');
			
			resized();
			
			mySlide = new Fx.Slide('slSearch_div', {link: 'cancel'});
			mySlide.hide();
		
			writeLinksSlide = new Fx.Slide('writeLinks_div', {link: 'cancel'});
			writeLinksSlide.hide();
		
			videoLinksSlide = new Fx.Slide('videoLinks_div', {link: 'cancel'});
			videoLinksSlide.hide();
			
			$('share_td').set('opacity', disabledButtonOpacity);
		
			var cWidth;		// Set initial songlist column widths
			for (column in aSlColumnWidths) {
				if (column.substr(0,2) == 'sl') {
					cWidth = aSlColumnWidths[column]
					changeSlColumnWidth (column, cWidth);
				}
			}
		
			$('status_div').addEvent('click', fnToggleStatusDisplay);
			
			var aHelpIconDivs = $$('.helpIcon_div');
			aHelpIconDivs.each( function(item){
										 if (!iPhone) {
											 item.addEvent('mouseenter', fnMouseEnterHelp);
											 item.addEvent('mouseleave', fnMouseLeaveHelp);
										 } else {
											 item.addEvent('mousedown',  fnToggleHelp);
										 }
								});
			
			$('slHelp_div'    ).addEvent ('mousedown', function () {fnHideHelp ('slHelp_div')});

			setupBannerLinks();
			setupButtons();
			updateSignIn();
		
			resetSearchWindow();

//			setTimeout("$('loading_div').fade('out');", 1000);
			
			sloganDiv1Fade = new Fx.Tween ('sloganDiv1_div', { duration : 3000 } );
			sloganDiv2Fade = new Fx.Tween ('sloganDiv2_div', { duration : 3000 } );
			sloganDiv2Fade.set ('opacity', 0);
			
			sloganIntervalId = setInterval ('fnRotateSlogan()', sloganRotateTime);
			fnRotateSlogan();
			
			checkForURLPlay();
			
			$('container_div').setStyle('visibility', 'visible');
			showPlayer();
			ajaxGetSongList(function() {
	//							$('container_div').setStyle('display', 'block');
							 });
		processUrlFunc();
		break;
	}
}
