// JavaScript Document


function createRequestObject() {
	var ro;
    var browser = navigator.appName;

	if( navigator.userAgent.indexOf('Opera') != -1 ) {
        ro = new XMLHttpRequest();
	} else if(browser == "Microsoft Internet Explorer") {
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        ro = new XMLHttpRequest();
    }
    return ro;
}

var ajaxConnect = createRequestObject();
var inputMask = '';
var SortOrder = 'asc';
var SortColumn = 'artist';
var OldSortColumn = 'artist';
var headerImages = Array( );
var Page = 1;
var SearchField = '';
var PerPage = 20;
var MaxRecords = 0;
var isBusy = false;

headerImages['artist'] = 'headerArtist';
headerImages['album'] = 'headerAlbum';
headerImages['release'] = 'headerRelease';
headerImages['genre'] = 'headerGenre';
headerImages['label'] = 'headerLabel';
headerImages['cat_no'] = 'headerCat';

function saveState() {
	var SearchField = document.getElementById( 'searchBy' );
	
	var exp = new Date( );
	var nowPlusOneWeek = exp.getTime( ) + (5 * 60 * 1000);
	exp.setTime(nowPlusOneWeek);
	
	catState = inputMask + "|" + SortOrder + "|" + OldSortColumn + "|" + Page + "|" + MaxRecords + "|" + SearchField.selectedIndex;

	document.cookie = "catState=" + catState + "; expires=" + exp.toGMTString( );	
}

function loadState() {
	var SearchField = document.getElementById( 'searchBy' );
	var inputField = document.getElementById( 'inputMask' );
	
	var catState = readCookie( 'catState' );
	if( catState != null ) {
		var stateVars = catState.split( '|' );

		SortOrder = stateVars[1];
		inputMask = stateVars[0];
		inputField.value =  deEntity(stateVars[0]);
		OldSortColumn = stateVars[2];
		Page = parseInt(stateVars[3]);
		MaxRecords = parseInt(stateVars[4]);
		SearchField.selectedIndex = stateVars[5];
		
	}
	
	pageTurn(null);
}

function doLoading() {
	var releaseField = document.getElementById( 'releaseResultsField' );
	var loadingOverlay = document.getElementById( 'loadingOverlay' );
	var loadingImage = document.getElementById( 'loadingImage' );

	loadingOverlay.style.left = findPosX(releaseField) + "px";
	loadingOverlay.style.top = findPosY(releaseField) + "px";
	loadingOverlay.style.height = releaseField.clientHeight + "px";
	loadingOverlay.style.width = releaseField.clientWidth + "px";

	loadingImage.style.marginTop =  ( ( releaseField.clientHeight / 2 ) - 9 ) + "px";
	
	if( releaseField.clientHeight > 20 ) {
		loadingOverlay.style.visibility = 'visible';
	}	
}

function completeLoading() {
	var loadingOverlay = document.getElementById( 'loadingOverlay' );

	loadingOverlay.style.visibility = 'hidden';

}

function pageTurn( direction ) {
	var nextPage = document.getElementById( 'NextPage' );
	var prevPage = document.getElementById( 'PrevPage' );
	var pageCount = document.getElementById( 'PageCount' );


	if( !isBusy ) {
		doLoading();

		if( direction == 'next' ) {
			Page = Page + 1;
		} else if ( direction == 'prev' ) {
			Page = Page - 1;
		}

		if( OldSortColumn == '' ) {
			OldSortColumn = 'artist';
		}
			
		sendCatSearch( OldSortColumn );
	
		if( Math.ceil( MaxRecords / PerPage ) == 1 ) {
			nextPage.innerHTML = '';
			prevPage.innerHTML = '';	
		} else if( Page == Math.ceil( MaxRecords / PerPage ) ) {
			nextPage.innerHTML = '';
			prevPage.innerHTML = '<img src="template/TrueNorthRecords/images/mainSite/catalouge/back.gif" alt="Next Page" width="56" height="18" onclick="pageTurn(\'prev\');" style="padding: 3px; cursor: pointer;" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage(\'prevPage\',\'\',\'template/TrueNorthRecords/images/mainSite/catalouge/back-r.gif\',1)" name="prevPage" />';			
		} else if( Page == 1 ) {
			prevPage.innerHTML = '';
		} else {
			nextPage.innerHTML = '<img src="template/TrueNorthRecords/images/mainSite/catalouge/next.gif" alt="Next Page" width="56" height="18" onclick="pageTurn(\'next\');" style="padding: 3px; cursor: pointer;" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage(\'nextPage\',\'\',\'template/TrueNorthRecords/images/mainSite/catalouge/next-r.gif\',1)" name="nextPage" />';
			prevPage.innerHTML = '<img src="template/TrueNorthRecords/images/mainSite/catalouge/back.gif" alt="Next Page" width="56" height="18" onclick="pageTurn(\'prev\');" style="padding: 3px; cursor: pointer;" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage(\'prevPage\',\'\',\'template/TrueNorthRecords/images/mainSite/catalouge/back-r.gif\',1)" name="prevPage" />';			
		}
		
		pageCount.innerHTML = Page + " / " + Math.ceil( MaxRecords / PerPage );
	}

}


function sortColumn( sortby ) {

	if( !isBusy ) {
		doLoading();
	
		if( sortby == OldSortColumn ) {
			if( SortOrder == 'asc' ) {
				SortOrder = 'desc';
			} else {				
				SortOrder = 'asc';
			}
		} else {
			SortOrder = 'asc';
		}
		
		//OldSortColumn = sortby;
	Page = 1;
		sendCatSearch(sortby);
	}
	
}

function resetSearch( ) {
	var SearchField = document.getElementById( 'inputMask' );
	
	image = document.getElementById( OldSortColumn );
	image.src  = 'template/TrueNorthRecords/images/mainSite/releases/' + headerImages[OldSortColumn] + '.gif';
	image.oSrc = '';	

	SearchField.value = '';

	SortOrder = 'asc';
	inputMask = '';
	OldSortColumn = '';
	Page = 1;	

	pageTurn( null );

}

function sendNewSearch( ) {
	var SearchField = document.getElementById( 'inputMask' );

	if( !isBusy ) {
		doLoading();
		
		SortOrder = 'asc';
		inputMask = '';
		if( OldSortColumn == '' ) {
			OldSortColumn = 'artist';
		}
		Page = 1;	
		//SearchField.value = '';
		sendCatSearch('artist')
	}

	
}

function sendCatSearch(sortby) {
		var inputMaskVal = document.getElementById( 'inputMask' );
		var SearchField = document.getElementById( 'searchBy' );
		var inputMaskPopup = document.getElementById( 'inputMaskPopup' );
		var inputMaskContent = document.getElementById( 'inputMaskContent' );		
		
		if( inputMask == '' ) {
			inputMask = inputMaskVal.value;
		}

		ajaxConnect.open('get', '../../includes/ajax/getCatalougeResults.php?sort=' + sortby + '&order=' + SortOrder + '&page=' + Page + '&' + SearchField.value + '=' + inputMask );
		ajaxConnect.onreadystatechange = handleCatSearchRequest;
		ajaxConnect.send(null);

		if( OldSortColumn != sortby ) {
			image = document.getElementById( OldSortColumn );
			image.src  = 'template/TrueNorthRecords/images/mainSite/releases/' + headerImages[OldSortColumn] + '.gif';
			image.oSrc = '';
		}

		image = document.getElementById( sortby );
		image.src  = 'template/TrueNorthRecords/images/mainSite/releases/' + headerImages[sortby] + '-' + SortOrder + '.gif';
			image.oSrc = '';

		inputMaskPopup.style.visibility = 'hidden';
		inputMaskContent.innerHTML = '';		
		
		OldSortColumn = sortby;
}

function sendLimitSearch( input ) {
	SearchField = document.getElementById( 'searchBy' );

	if( input != '' ) {
		ajaxConnect.open('get', '../../includes/ajax/getCatalouge.php?field=' + SearchField.value + '&input=' + input );
		ajaxConnect.onreadystatechange = handleLimitSearchRequest;
		
		try {
			ajaxConnect.send(null);
		} catch(e) {
			1;	
		}
		
	} else {
		var inputMaskPopup = document.getElementById( 'inputMaskPopup' );
		var inputMaskContent = document.getElementById( 'inputMaskContent' );		

		inputMaskPopup.style.visibility = 'hidden';
		inputMaskContent.innerHTML = '';
		
		inputMask = '';
	}
		
}

function selectName( name, spot ) {
	var inputMaskPopup = document.getElementById( 'inputMaskPopup' );
	var inputMaskContent = document.getElementById( 'inputMaskContent' );		
	var inputMaskVal = document.getElementById( 'inputMask' );
	var spotHolder = document.getElementById( spot );

	inputMaskVal.value = deEntity( name.replace("\.\.\.", "") );

	inputMask = spotHolder.value;

	inputMaskPopup.style.visibility = 'hidden';
	inputMaskContent.innerHTML = '';
}


function handleCatSearchRequest() {
	var nextPage = document.getElementById( 'NextPage' );
	var pageCount = document.getElementById( 'PageCount' );
	
	isBusy = true;
	
    if(ajaxConnect.readyState == 4){
        var response = ajaxConnect.responseText;
		var releaseField = document.getElementById( 'releaseResultsField' );

		isBusy = false;

		if( response == '' ) {
			alert( 'The search returned 0 results' );
		} else {
			releaseField.innerHTML = response;
	
			if( Page == 1 ) {
				var maxRecords = document.getElementById( 'maxRecords' );
				MaxRecords = maxRecords.value;
				
				pageCount.innerHTML = Page + " / " + Math.ceil( MaxRecords / PerPage );
			}
			
			if( Math.ceil( MaxRecords / PerPage ) > 1 && Page == 1 ) {
				nextPage.innerHTML = '<img src="template/TrueNorthRecords/images/mainSite/catalouge/next.gif" alt="Next Page" width="56" height="18" onclick="pageTurn(\'next\');" style="padding: 3px; cursor: pointer;" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage(\'nextPage\',\'\',\'template/TrueNorthRecords/images/mainSite/catalouge/next-r.gif\',1)" name="nextPage" />';
			} else if( Math.ceil( MaxRecords / PerPage ) == 1 && Page == 1 ) {
				nextPage.innerHTML= '';
			}
		}
		
		completeLoading();
	}
	
}

function closePopUp() {
	var inputMaskPopup = document.getElementById( 'inputMaskPopup' );
	var inputMaskContent = document.getElementById( 'inputMaskContent' );		
	var inputMaskText = document.getElementById( 'inputMask' );		
	
	inputMaskPopup.style.visibility = 'hidden';
	inputMaskContent.innerHTML = '';
	inputMaskText.value='';
	inputMask = '';	
	
	return;
}

function handleLimitSearchRequest() {

	isBusy = true;

    if(ajaxConnect.readyState == 4){
        var response = ajaxConnect.responseText;

		isBusy = false;

		if( response != 'no results' && response != '' ) {
		
			var spots = '';
			var newHTML = '';
			var names = response.split("|");
			var inputMaskPopup = document.getElementById( 'inputMaskPopup' );
			var inputMaskContent = document.getElementById( 'inputMaskContent' );		
			var inputMaskVal = document.getElementById( 'inputMask' );

				newHTML = newHTML + "<div style=\"cursor: pointer; width: 183px; height: 19px; background-color: #251600;border-bottom:solid 1px #fff;color: #fff;\"  onclick=\"closePopUp();\"><img src='/template/TrueNorthRecords/images/mainSite/catalouge/closetip.gif'></div>";


			for( i = 0; i < names.length; i++ ) {
				var bgcolor = "#cfcab7";
				var art_id = names[i].split( "%" );

				if( i % 2 == 0 ) {
					bgcolor = "#b9b3a3";
				} 

				newHTML = newHTML + "<div style=\"cursor: pointer; width: 183px; height: 19px; background-color: " + bgcolor + ";border-bottom:solid 1px #fff;\"><div style=\"padding: 3px;width:177px;\" onclick=\"selectName( this.innerHTML, 'spotAl" + i + "' );sendNewSearch();\" onmouseover=\"this.style.backgroundColor = '#66cc00';this.style.color = '#fff';\" onmouseout=\"this.style.backgroundColor = '" + bgcolor + "';this.style.color = '#000'\" >" + art_id[0] + "</div></div>";
				newHTML = newHTML + "<input type='hidden' id='spotAl" + i + "' value='" + art_id[1] + "'>\n";

			}

			in_posx = findPosX( inputMaskVal );
			in_posy = findPosY( inputMaskVal );

			inputMaskPopup.style.top = ( in_posy + 25 ) + "px";
			inputMaskPopup.style.left = ( in_posx ) + "px" ;

			inputMaskContent.innerHTML = newHTML;
			inputMaskPopup.style.visibility = 'visible';

			
		} else {
			var inputMaskPopup = document.getElementById( 'inputMaskPopup' );
			var inputMaskContent = document.getElementById( 'inputMaskContent' );		

			inputMaskPopup.style.visibility = 'hidden';
			inputMaskContent.innerHTML = '';
			
			inputMask = '';
		}
		


    }
}


function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}