var bEdit = false;
var bNew = false;
var softwareTags = null;
var relatedSoftware = null;
var subscriptionForm = null;

function toggleEdit(input)
{
	if (bEdit == false) {
		enableForm(input.form,true);
		input.value='Save';
		bEdit = true;
		input.form.Name.focus();
	}
	else {
		saveSoftware(input.form);
	}
}

function enableForm(form,bEdit){
	form.Name.disabled = !bEdit;
	form.Platform.disabled = !bEdit;
	form.Description.disabled = !bEdit;
	form.Publisher.disabled = !bEdit;
	form.PublisherURL.disabled = !bEdit;
	form.RelNotesURL.disabled = !bEdit;
	if (form.URL)
		form.URL.disabled = !bEdit;
	if (form.Pattern)
		form.Pattern.disabled = !bEdit;
	if (form.Status.type == 'select-one')
		form.Status.disabled = !bEdit;
}

function onSaveSoftwareComplete(remote) {
	var form = document.forms['swInfo'];
	enableForm(form,false);
	form.Status.value=remote.getElement('Status');
	form.Version.value=remote.getElement('ScanText');
	form.ScanDate.value=remote.getElement('ScanDate');
	form.Edit.value='Edit';
	bEdit = false;
}

var saveSoftwareRemote = new Remote('saveSoftware.fnc.html',{onComplete:onSaveSoftwareComplete});

function saveSoftware(form) {
	if (form.Name.value.length == 0) {
		alert('The field \'Name\' cannot be empty.');
		return;
	}
	var args = [];
	if (softwareId != '') {
		args['SoftwareId'] = softwareId;
	}
	if (bNew) {
		if (confirm('Do you want to add this software to your personal list?')) {
			args['Add'] = '1';
		}
	}
	args['Name'] = form.Name.value;
	args['PlatformId'] = form.Platform.value;
	args['Publisher'] = form.Publisher.value;
	args['PublisherURL'] = form.PublisherURL.value;
	args['RelNotesURL'] = form.RelNotesURL.value;
	args['URL'] = form.URL.value;
	args['Pattern'] = form.Pattern.value;
	args['Description'] = form.Description.value;
	if (form.Status.type == 'select-one')
		args['Status'] = form.Status.selectedIndex;
	saveSoftwareRemote.call(args);
}


function onTestPatternComplete(remote) {
	var form = document.forms['swInfo'];
	form.Version.value=remote.getElement('ScanText');
	form.ScanDate.value=remote.getElement('ScanDate');
}

var testPatternRemote = new Remote('testPattern.fnc.html',{onComplete:onTestPatternComplete});

function testPattern() {
	if (!bEdit) {
		alert('Pattern can only be tested in edit mode!');
		return;
	}
	var form = document.forms['swInfo'];
	if (form.Pattern.value == '') {
		alert('Pattern is empty!');
		return;
	}
	if (form.URL.value == '') {
		alert('Scan URL is empty!');
		return;
	}
	var args = [];
	if (softwareId != '') {
		args['SoftwareId'] = softwareId;
	}
	args['URL'] = form.URL.value;
	args['Pattern'] = form.Pattern.value;
	testPatternRemote.call(args);
}

function onValidateUrlComplete(result)
{
	var	aValidUrl = result.getElement('ValidURL');
	if (aValidUrl == '') {
		alert('Not a valid URL!');
		return;
	}
	window.open(aValidUrl);
}

var validateUrlRemote = new Remote('validateUrl.fnc.html',{onComplete:onValidateUrlComplete});

function goScanUrl()
{
	var form = document.forms['swInfo'];
	if (form.URL.value == '') {
		alert('Scan URL is empty!');
		return;
	}
	var args = [];
	args['URL'] = form.URL.value;
	validateUrlRemote.call(args);
}

function goPublisherUrl()
{
	var form = document.forms['swInfo'];
	if (form.PublisherURL.value == '') {
		alert('Product URL is empty!');
		return;
	}
	var args = [];
	args['URL'] = form.PublisherURL.value;
	validateUrlRemote.call(args);
}

function goRelNotesUrl()
{
	var form = document.forms['swInfo'];
	if (form.RelNotesURL.value == '') {
		alert('Release Notes URL is empty!');
		return;
	}
	var args = [];
	args['URL'] = form.RelNotesURL.value;
	validateUrlRemote.call(args);
}

function goScanUrlProxy()
{
	var form = document.forms['swInfo'];
	window.open('showPage.php5?URL='+form.URL.value);
}

function reviewSoftComplete(result)
{
	var form = document.forms['swInfo'];
	var	aStatus = result.getElement('Status');
	if (aStatus != '') {
		if (form.Status.type == 'select-one') {
			form.Status.selectedIndex = aStatus;
		}
		else {
			var	aStatusText = result.getElement('StatusText');
			form.Status.value = aStatusText;
		}
		if (aStatus != '1') {
			var reviewForm = document.forms['swReview'];
			reviewForm.ReviewComment.disabled = true;
			reviewForm.ReviewButton.disabled = true;
			alert('The entry was submitted for review.');
		}
		return;
	}
}

var reviewSoftRemote = new Remote('reviewSoftware.fnc.html',{onComplete:reviewSoftComplete});

function reviewSoft(input)
{
	var	args = [];
	args['SoftwareId'] = softwareId;
	args['ReviewComment'] = input.form.ReviewComment.value;
	reviewSoftRemote.call(args);
}

function onTagComplete(){
		softwareTags.setUrl('swTags.html?SoftwareId='+softwareId);
		document.forms['swTag'].tagText.value = '';
		document.forms['swTag'].tagText.focus();
		relatedSoftware.setUrl('swRelated.html?SoftwareId='+softwareId);
}

var addTagRemote = new Remote('addSoftTag.fnc.html',{onComplete:onTagComplete});
var remTagRemote = new Remote('remSoftTag.fnc.html',{onComplete:onTagComplete});

function addTag(elm) {
	var args = [];
	args["SoftwareId"] = softwareId;
	args["Text"] = elm.form.tagText.value;
	addTagRemote.call(args);
}

function remTag(elm) {
	if (confirm('Do you really want to delete this tag?') == false)
		return;
	var args = [];
	args["SoftwareId"] = softwareId;
	args["TagId"] = elm.parentNode.parentNode.id;
	remTagRemote.call(args);
}

function onSoftComplete(){
	subscriptionForm.setUrl('subscriptionForm.html?SoftwareId='+softwareId);
}

var addSoftRemote = new Remote('addAccSoft.fnc.html',{onComplete:onSoftComplete});
var remSoftRemote = new Remote('remAccSoft.fnc.html',{onComplete:onSoftComplete});

function addSoft(elm) {
	var args = [];
	args["SoftwareId"] = softwareId;
	addSoftRemote.call(args);
}

function remSoft(elm) {
	if (confirm('Do you really want to remove this software from your personal list?') == false)
		return;
	var args = [];
	args["SoftwareId"] = softwareId;
	remSoftRemote.call(args);
}

function btnOvr(input)
{
	input.style.backgroundColor='#BBBBBB';
}

function btnOut(input)
{
	input.style.backgroundColor='#DDDDDD';
}
