function sort(orderby, direction, page)
{
	$('sort').value = orderby;
	$('order').value = direction;
	$('page').value = page;
	
	$('filterForm').submit();
}

function previewNotification()
{
	if($('select-1').value != '' && $('select-2').value != '' && $('select-3').value != '')
	{
		var params;
		
		params  = 'model=' + $('select-1').value;
		params += '&product=' + $('select-2').value;
		params += '&release_id=' + $('select-3').value;
		params += '&release_info=' + $('release_info').value;
		params += '&comments=' + $('comments').value;
		
		if($('preview') === null)
		{
			new Insertion.After('mainContainer', '<div id="preview"></div>');
		}
	
		new Ajax.Updater(
				'preview', 
				'notification_preview',
				{
					method: 'post', 
					parameters: params
				}
			);
	}
}

function updateObject(action, target, targetType, trigger, hasChildren, object_id, path, hidePrivate)
{	
	var params = '';	
	switch(action)
	{
		case 'populate':
			var triggerValue = document.getElementById(trigger).value;
			
			if(trigger == 'select-2')
			{
				var parentTrigger = 'select-1';
				var parentTriggerValue = document.getElementById(parentTrigger).value;
			}
			
			if(triggerValue != '')
			{
				if(document.getElementById(target) == null)
				{
					new Insertion.After(trigger, '<span id="' + target + '"></span>');
				}
				
				hasChildren = (hasChildren) ? hasChildren : false;
				object_id   = (object_id) ? object_id : false;
				path        = (path) ? path : false;
				
				params = '?p=' + action;
				params += '&target=' + target;
				params += '&targetType=' + targetType;
				params += '&trigger=' + trigger;
				params += '&triggerValue=' + triggerValue;
				params += '&hasChildren=' + hasChildren;
				params += '&object_id=' + object_id;
				params += '&path=' + path;
				params += '&hidePrivate=' + hidePrivate;
				
				if( $('brand') && $('product') ){
					if( $('brand').value != '' && $('product').value != '' ){
						params += '&brand=' + $('brand').value;
						params += '&product=' + $('product').value;
					}
				}
				
				if(parentTrigger == 'select-1') {
					params += '&parentTrigger=' + parentTrigger + '&parentTriggerValue=' + parentTriggerValue;
				}
								
			}
		break;
		case 'update':
			var tester_id = document.getElementById('id').value;
			params = '?p=' + action + '&target=' + target + '&tester_id=' + tester_id + '&object_id=' + object_id;
		break;
		case 'delete':
			if(confirm("Are you sure you want to delete this " + targetType + "?"))
			{
				switch(targetType)
				{											
					case "tester":
						params = '?p=' + action + '&target=' + target + '&targetType=' + targetType + '&object_id=' + object_id;						
					break;
					case "release":
						params = '?p=' + action + '&target=' + target + '&targetType=' + targetType + '&object_id=' + object_id;						
					break;
					case "notification":
						params = '?p=' + action + '&target=' + target + '&targetType=' + targetType + '&object_id=' + object_id;						
					break;
					case "file":
						params = '?p=' + action + '&target=' + target + '&targetType=' + targetType + '&object_id=' + object_id;						
					break;
					default:
						var tester_id = document.getElementById('id').value;
						params = '?p=' + action + '&target=' + target + '&targetType=' + targetType + '&tester_id=' + tester_id + '&object_id=' + object_id;
					break;
				}
			}
		break;
		$(target).remove();
	}
		
	var targetPage = (path) ? path + 'inc/response.php' : '/beta/admin/inc/response.php';
			
	new Ajax.Request(
		targetPage,			
		{
			method: 'get', 
			parameters: params,
			onCreate: function(transport) {	
				$(target).innerHTML = ' <img style="vertical-align:middle;" src="' + '/img/spinner.gif" /> Loading file list... please be patient...';
			},
			onSuccess: function(transport) {
				$(target).innerHTML = transport.responseText;
			}
		}
	);
}

function validateReport(form)
{
	var formValid      = true;
	var returnElements = Form.getElements(form);

	if($('reporttype').value == "Bug Report") {
		var requiredFields = new Array('brand', 'releaseProduct', 'release', 'reporttype', 'summary', 'repro', 'expected', 'actual');
	} else {
		var requiredFields = new Array('brand', 'releaseProduct', 'release', 'reporttype', 'summary');
	}
	
	returnElements.each(function(value, index) {
		if(requiredFields.inArray(value.name)) {
			if(value.value == '' || value.selectedIndex == 0) {				
				if(value.id && !$(value.name + '-error')) {
					new Insertion.After(value, formError(value.name + '-error', formElementTitles[value.name] + ' is required!'));
					$(value.id).setStyle( { borderColor: "#ff0000" } );					
				}
				formValid = false;
			} else {
				if($(value.name + '-error')) {
					$(value.name + '-error').remove();
					$(value.id).setStyle( { borderColor: "#999" } );
				}
			}
		}	
	});
	return formValid;
}

function changeReportType()
{
	if($('reporttype').value == 'Bug Report') {
		$('platform-row').show();
		$('daw-row').show();
		$('repro-row').show();
		$('expected-row').show();
		$('actual-row').show();
	} else {
		$('platform-row').hide();
		$('daw-row').hide();
		$('repro-row').hide();
		$('expected-row').hide();
		$('actual-row').hide();
	}
}

function formError(id, msg)
{
	return '\n<span id="' + id + '" style="color: #f00;"><br />' + msg + '</span>\n';
}	
	
function showAttachmentLink(trigger, target)
{	
	if(!$(target)) {
		new Insertion.After(trigger, '<br /><a href="#" id="' + target + '" onclick="addAttachment();">Add Another Attachment</a>');
	} else {
		if($(trigger).value) {
			alert($(trigger).value);
		}
	}
}

function addAttachment()
{
	$('attachment-count').value = parseInt($('attachment-count').value) + 1;
	var id = "attachment-" + String($('attachment-count').value);
	new Insertion.Before('add-attachment', '<input type="file" id="' + id + '" name="' + id + '" /><a href="#" onclick="$(\'' + id + '\').remove(); $(this).remove();">remove</a><br />');
}

Array.prototype.inArray = function (value)
{
    var i;
    for (i=0; i < this.length; i++) {
        if (this[i] == value) {
            return true;
        }
    }
    return false;
};

var formElementTitles = new Array();

formElementTitles['brand']          = 'Brand';
formElementTitles['releaseProduct'] = 'Product';
formElementTitles['release']        = 'Release';
formElementTitles['platform']       = 'Platform';
formElementTitles['reporttype']     = 'Report Type';
formElementTitles['summary']        = 'Summary';
formElementTitles['repro']          = 'Steps to Repro';
formElementTitles['expected']       = 'Expected Results';
formElementTitles['actual']         = 'Actual Results';
