// On Error
function showError(responseText, statusText){
	alert("An internal error has occurred: 201"); //something broke in the CFM
}

// Show Update Success Message 
function showUpdateSuccess()  { 
	location.href="#";
	$("#frmEditSTEX").fadeOut();	
	$("#uiForms").html("<strong>Successfully Updated.</strong> It may take up to 10 minutes for your changes to appear.").fadeIn();
} 

// Show Save Success Message 
function showSaveSuccess()  { 
	location.href="#";
	$("#uploadform").fadeOut();
	$("#uiForms").html("<strong>Successfully Saved.</strong> It may take up to 10 minutes for your file to appear.").fadeIn();
} 


function fDeleteSTEX(jId){	
	// use the fnc.Global Confirm
	fConfirm("Are you sure you want to delete this file?",function(){
		$.ajax({
		  	type: 		"post",
		  	url: 		"fncDeleteSTEX.cfm?date="+Date(),
		  	data: 		{nSTEXId: jId},
		  	error: 		function(XMLHttpRequest, textStatus, errorThrown){
				fError(errorThrown);
			},
			beforeSend: function(){
				$.blockUI();
			},
		  	success: 	function(data){
				arrId = data.split('||');
				if (arrId[1] != '0'){
					$.unblockUI();
					//jQuery(document).trigger('close.facebox');
					dropSTEXdiv(jId)
				} else {
					fAlert("An error occurred");
				}
			}
		});
	}); 
	
}

function fDeleteSTEXFromDetails(jId){	
	$.ajax({
		type: 		"post",
		url: 		"fncDeleteSTEX.cfm?date="+Date(),
		data: 		{nSTEXId: jId},
		error: 		function(XMLHttpRequest, textStatus, errorThrown){
			fError(errorThrown);
		},
		beforeSend: function(){
			$.blockUI();
		},
		success: 	function(data){
			arrId = data.split('||');
			if (arrId[1] != '0'){
				$.unblockUI();
				//jQuery(document).trigger('close.facebox');
				dropSTEXdiv(jId)
			} else {
				fAlert("An error occurred");
			}
		}
	});	
}

function fTrackSTEX(oATag){
	var nLotId = oATag.rel;
	$.ajax({
		type: 		"post",
		url: 		"fncTrackSTEX.cfm?date="+Date(),
		data: 		{lotid: nLotId},
		error: 		function(XMLHttpRequest, textStatus, errorThrown){
			fError(errorThrown);
		},
		success: 	function(data){
			arrId = data.split('||');
			if (arrId[1] != '0'){
				oATag.title = "Untrack";
				$(oATag).html('<img src="/images/icons/track_on.png" align="top" hspace="2" border="0"/> Untrack this file.').fadeIn();
				$.unblockUI();
			} else {
				fAlert("An error occurred");
			}
		}
	});
}

function fUntrackSTEX(oATag){
	var nLotId = oATag.rel;
	$.ajax({
		type: 		"post",
		url: 		"fncUntrackSTEX.cfm?date="+Date(),
		data: 		{lotid: nLotId},
		error: 		function(XMLHttpRequest, textStatus, errorThrown){
			fError(errorThrown);
		},
		success: 	function(data){
			arrId = data.split('||');
			if (arrId[1] != '0'){
				oATag.title = "Track";
				$(oATag).html('<img src="/images/icons/track_off.png" align="top" hspace="2" border="0"/> Track this file.').fadeIn();
				$.unblockUI();
			} else {
				fAlert("An error occurred");
			}
		}
	});
}

function fUpdateStarRating(nSTEXID,nTotalRating){
	$.post("fncGetStarRating.cfm?date="+Date(), { Rating:nTotalRating, Readonly:1}, function(data){
		$('#STEXDiv' + nSTEXID + ' #stexstarratingcontainer').html(data);
		$.unblockUI();
	}, "html");	
}

function fUpdateDownloads(nSTEXID,nTotalDownloads){
	$('#STEXDiv' + nSTEXID + ' span.jqSTEXTotalDownloads').html(nTotalDownloads);
}

function fUpdateViews(nSTEXID,nTotalDownloads){
	$('#STEXDiv' + nSTEXID + ' span.jqSTEXTotalViews').html(nTotalDownloads);
}

function dropSTEXdiv(jId){
	//$("#JournalDiv"+jId).fadeOut("slow");
	$("#STEXDiv"+jId).animate({opacity: "0"},"slow").slideUp("slow");
}

function fChangeBadge(data){
	fSetBlockUIDefaults();
	$.unblockUI();
	if (data.ID != 0){
		$('#frmBadge div.stxbadge img').attr('src',data.IMAGE);
	} else {
		fError("An error occurred while uploading your badge image. Please try again.");
	}
}
function fEditButtonClick(){
	location.href = 'index.cfm?p=editstex&id=' + $(this).attr('rel');
	return false;
}

$(document).ready(function() { 
	//STEX Specific Rounded Corners		
	$(".roundedcorner").corner("6px");
	$('#stxDetailTabs li a').corner("6px top");

	jQuery.validator.addMethod("filename", function(value, element) { 
		var arrFile = value.split('\\');
		var sFilename = arrFile[arrFile.length-1];
		var sExtension = sFilename.split('.')[sFilename.split('.').length-1];
		var bValid = true;
		if (value != ''){
			var arrIllegalChars = "?[]/\\=+<>:;\",*|";
			for (nCount=0;nCount<sFilename.length && bValid==true;nCount++){ 
				cChar = sFilename.charAt(nCount); 
				if (arrIllegalChars.indexOf(cChar) != -1){
					bValid = false;
				}
			}
			switch(element.name){
				case "ScreenShot1":
				case "ScreenShot2":
					if (sExtension.toLowerCase() != 'jpg') bValid = false;
				break;
				case "MainFile":			
					if (sExtension.toLowerCase() != 'jpg' && sExtension.toLowerCase() != 'zip') bValid = false;
				break;
			}
		}
   		return bValid;
	}, "The filename you have given contains illegal characters. Please rename it before selecting it for upload.");


	var sPage = $.query.get('p');
	//Only for files page
	//Category Drop-down
	$('div#sideMenu #selCategories').change(function(oEvent){
		var sQuerystring = $.query.SET('p', 'files').SET('cat', $(this).val()).REMOVE('id').SET('page','1');
		location.href = sQuerystring;
	});
	//File Type Filters
	$('div#sideMenu a.jqSTEXTypeFilter').click(function(){
		if ($(this).attr('title') == ''){
			var sQuerystring = $.query.SET('p', 'files').REMOVE('type');
		} else {
			var sQuerystring = $.query.SET('p', 'files').SET('type', $(this).attr('title')).REMOVE('id').SET('page','1');
		}
		location.href = sQuerystring;
		return false;																	
	});
	//Sort Buttons
	$('span.jqSTEXSort a').click(function(oEvent){
		if ($(this).attr('title') == ''){
			var sQuerystring = $.query.SET('p', 'files').REMOVE('display').REMOVE('id');
		} else {
			var sQuerystring = $.query.SET('p', 'files').SET('display', $(this).attr('title')).REMOVE('id');
		}
		location.href = sQuerystring;
		return false;
	});
	//Designer Name 
	$('div.stxRecord div.stxauthor a').click(function(oEvent){
		var sQuerystring = $.query.SET('p', 'files').REMOVE('id').set('keyword', $(this).html()).set('view','all').toString();
		location.href = sQuerystring;
		return false;
	});
	// INSERT STEX prepare Options Form Object 	
	$("#uploadform #Type, #frmEditSTEX #Type").change(function(oEvent){
		if (this.options[this.selectedIndex].value == "Map"){
			$("#filetypetoggle").animate({opacity: "0"},"slow").slideUp("normal");
		} else {
			$("#filetypetoggle").animate({opacity: "100"},"slow").slideDown("normal");
		}
	});
	
	//Update FCK instance on submit button click.
	$("#frmEditSTEX #btnSubmit").click(function(){
		fUpdateFCKInstance('Description');							  
	});
	$("#uploadform #btnSubmit").click(function(){
		fUpdateFCKInstance('Description');							  
	});
	
	var oUploadOptions = { 
		url:			"fncSaveSTEX.cfm?date="+Date(), 
		dataType:		"script",
		resetForm: 		true,
		iframe:			true,
		error:			showError
	};
	$("#uploadform").validate({										 
		submitHandler: function(form) {
			$.blockUI({
				message: '<img src="/images/ajax-loader-bar.gif" align="absmiddle"><br><strong style="font-size:12px;">Uploading...</strong><br> Please wait.'
			});
			$(form).ajaxSubmit(oUploadOptions);
			return false; 
		},
		rules: {
			GameType: "required",
			Type: "required",
			Category: "required",
			Title: "required",
			Designer: "required",
			ScreenShot1: {
				required:true,
				filename:true
			},
			ScreenShot2: "filename",
			MainFile: {
				required:true,
				filename:true
			},
			fldAgree: "required"
		}
	});
	
	// UPDATE STEX prepare Options Form Object 	
	var oEditOptions = { 
		url:			"fncUpdateSTEX.cfm?date="+Date(), 
		dataType:		"script",
		resetForm: 		true,
		iframe:			true,
		error:			showError
	};
	$("#frmEditSTEX").validate({										 
		submitHandler: function(form) {
			$.blockUI({
				message:'<img src="/images/ajax-loader-bar.gif" align="absmiddle"><br><strong style="font-size:12px;">Saving...</strong><br> Please wait.'  
			});
			$(form).ajaxSubmit(oEditOptions);
			return false; 
		},
		rules: {
			GameType: "required",
			Type: "required",
			Category: "required",
			Title: "required",
			ScreenShot1: "filename",
			ScreenShot2: "filename",
			MainFile: "filename",
			Designer: "required"
		}
	});
	
	
	$('a.jqEditButton').click(fEditButtonClick);

	// UPDATE STEX BADGE prepare Options Form Object 	
	var oBadgeOptions = { 
		url:			"fncSaveSTEXBadge.cfm?date="+Date(), 
		dataType:		"json",
		success:		fChangeBadge,
		resetForm: 		false,
		iframe:			true,
		error:			showError
	};
	$("#frmBadge").validate({										 
		submitHandler: function(form) {
			$.blockUI({
				message:'<img src="/images/ajax-loader-bar.gif" align="absmiddle"><br><strong style="font-size:12px;">Uploading...</strong><br> Please wait.'
			});
			jQuery(form).ajaxSubmit(oBadgeOptions);
			return false; 
		},
		rules: {
			ProfilePic: "required"
		}
	});

	// Bind click to jqDeleteButton Class to delete the STEX
	$("a.jqDeleteButton").click(function(oEvent){
		fDeleteSTEX(this.rel);
		return false;
	});

	// Bind click to jqTerms, to display Terms of Use Agreement
	$("a.jqAgreeTerms").click(function(oEvent){
		$.blockUI({ message: $('.jqTerms') }); 
		$("#jqOKTerms").click(function() { 
			// remove the block message and check the Agreement checkbox
			$.unblockUI();
			$("#fldAgree").attr('checked', true);
			return false;
		});
		$("#jqNoTerms").click(function() { 
			$.unblockUI();
			$("#fldAgree").attr('checked', false);
			return false; 						
		});		
		return false;
	});

	$('a.jqViewDetails').click(function(oEvent){
		//$.blockUI();
		var sHREF = $(this).attr('href');
		var nId = $(this).attr('rel');
		var sFacebox = 	'<iframe name="stexdetailsframe" id="stexdetailsframe" frameborder="0" height="600" width="550" src="'+sHREF+'"></iframe>'
		jQuery.facebox(sFacebox);
		return false;										
	});

	$("#adv_criteria").autocomplete(
		"fncLookUpSTEX.cfm",
		{
			minChars:1,
			delay:200,
			autoFill:false,
			matchSubset:false,
			matchContains:1,
			maxItemsToShow:20,
			cacheLength:10,
			selectOnly:1
		}
	);

	$("#criteria").autocomplete(
		"fncLookUpSTEX.cfm",
		{
			minChars:1,
			delay:200,
			autoFill:false,
			matchSubset:false,
			matchContains:1,
			maxItemsToShow:10,
			cacheLength:10,
			selectOnly:1
		}
	);
	
	// I put this here for the Trixies user autocomplete cuz was super lazy!!!
	$("#criteriax").autocomplete(
		"fncLookupUser.cfm",
		{
			minChars:1,
			delay:200,
			autoFill:false,
			matchSubset:false,
			matchContains:1,
			maxItemsToShow:10,
			cacheLength:10,
			selectOnly:1
		}
	);	
	

/*	$(document).bind('reveal.facebox', function() {
		$('#stexdetailsframe').ready(function(){
			$.unblockUI();
		});
	});*/
}); 
