var formChecker = null;
var formUploading = false;

function swfUploadLoaded() {
	var btnSubmit = document.getElementById("btnSubmit");

	btnSubmit.onclick = doSubmit;
	btnSubmit.disabled = true;

	/*txtLastName.onchange = validateForm;
	txtFirstName.onchange = validateForm;
	txtEducation.onchange = validateForm;
	txtReferences.onchange = validateForm;
	*/
	formChecker = window.setInterval(validateForm, 1000);

	validateForm();
}

function validateForm() {
	var txtName = document.getElementById("name");
	var txtSubject = document.getElementById("subject");
	var txtPrice = document.getElementById("price");
	var txtPhone = document.getElementById("phone");
	var txtEmail = document.getElementById("email");
        var txtCity = document.getElementById("city");
        var txtBody = document.getElementById("body");

	var isValid = true;
	if (txtName.value === "") {
		isValid = false;
	}
	if (txtSubject.value === "") {
		isValid = false;
	}
	if (txtPhone.value === "") {
		isValid = false;
	}
	if (txtEmail.value === "") {
		isValid = false;
	}
	if (txtCity.value === "") {
		isValid = false;
	}
	if (txtBody.value === "") {
		isValid = false;
	}

        if(formUploading) {
                isValid = false;
                document.getElementById("btnSubmit").value = 'Skickar annons..';
        }

	document.getElementById("btnSubmit").disabled = !isValid;
}

// Called by the submit button to start the upload
function doSubmit(e) {
	if (formChecker != null) {
		clearInterval(formChecker);
		formChecker = null;
	}

	e = e || window.event;
	if (e.stopPropagation) {
		e.stopPropagation();
	}
	e.cancelBubble = true;

        if(document.getElementById(swfu1.customSettings.fileselected_target).value != "") {
            try {
                    formUploading = true;
                    swfu1.startUpload();
            } catch (ex) {

            }
            return false;
        } else {
            document.forms[0].submit();
            return false;
        }
	
}

 // Called by the queue complete handler to submit the form
function uploadDone() {
	try {
		document.forms[0].submit();
	} catch (ex) {
		alert("Error submitting form");
	}
}

function fileDialogStart() {
    
	var txtFileName = document.getElementById(this.customSettings.fileselected_target);
	txtFileName.value = "";

	this.cancelUpload();
}

function fileQueueError(file, errorCode, message)  {
	try {
		// Handle this error separately because we don't want to create a FileProgress element for it.
		switch (errorCode) {
		case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
			alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
			return;
		case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
			alert("The file you selected is too big.");
			this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
			alert("The file you selected is empty.  Please select another file.");
			this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
			alert("The file you choose is not an allowed file type.");
			this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		default:
			alert("An error occurred in the upload. Try again later.");
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		}
	} catch (e) {
	}
}

function fileQueued(file) {
	try {
		var txtFileName = document.getElementById(this.customSettings.fileselected_target);
		txtFileName.value = file.name;
	} catch (e) {
	}

}
function fileDialogComplete(numFilesSelected, numFilesQueued) {
	validateForm();
}

function uploadProgress(file, bytesLoaded, bytesTotal) {

	try {
		var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
              
		file.id = this.customSettings.upload_id;
		var progress = new FileProgress(file, this.customSettings.progress_target);
		//progress.setProgress(percent);
		//progress.setStatus("Uploading...");
                var MBLoaded = Math.round((bytesLoaded / 1024 / 1024) * 100) / 100 ;
                var MBTotal = Math.ceil((bytesTotal / 1024 / 1024) * 100) / 100 ;
                progress.setStatus('Uploading... ' + percent + '% (' + MBLoaded + ' of ' + MBTotal + ' MB done)');
	} catch (e) {
	}
}

function uploadSuccess(file, serverData) {
	try {
		file.id = this.customSettings.upload_id;
		var progress = new FileProgress(file, this.customSettings.progress_target);
		progress.setComplete();
		progress.setStatus("Complete.");
		progress.toggleCancel(false);

        	if (serverData === " ") {
			this.customSettings.upload_successful = false;
		} else {
			this.customSettings.upload_successful = true;
                        document.getElementById(this.customSettings.fileid_target).value = serverData;
			//document.getElementById("hidFileID").value = serverData;
		}

	} catch (e) {
	}
}

function uploadComplete(file) {
	try {

		if (this.customSettings.upload_successful) {
			this.setButtonDisabled(true);

                            try {
                                    // Check if we have more uploads to do,
                                    // Else we set uploadDone.
                                    switch (this.customSettings.upload_id) {
                                    case 1:
                                            if(document.getElementById(swfu2.customSettings.fileselected_target).value != "")
                                                swfu2.startUpload();
                                            else
                                                uploadDone();
                                            return;
                                    case 2:
                                            if(document.getElementById(swfu3.customSettings.fileselected_target).value != "")
                                                swfu3.startUpload();
                                            else
                                                uploadDone();
                                            return;
                                    case 3:
                                            uploadDone();
                                            return;
                                    default:
                                            uploadDone();
                                            return;
                                    }
                            } catch (e) {
                            }

		} else {
			file.id = "singlefile";	// This makes it so FileProgress only makes a single UI element, instead of one for each file
			var progress = new FileProgress(file, this.customSettings.progress_target);
			progress.setError();
			progress.setStatus("File rejected");
			progress.toggleCancel(false);

			var txtFileName = document.getElementById(this.customSettings.fileselected_target);
			txtFileName.value = "";
			validateForm();

			alert("There was a problem with the upload.\nThe server did not accept it.");
		}
	} catch (e) {
	}
}

function uploadError(file, errorCode, message) {
	try {

		if (errorCode === SWFUpload.UPLOAD_ERROR.FILE_CANCELLED) {
			// Don't show cancelled error boxes
			return;
		}

		var txtFileName = document.getElementById("txtFileName");
		txtFileName.value = "";
		validateForm();

		// Handle this error separately because we don't want to create a FileProgress element for it.
		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
			alert("There was a configuration error.  You will not be able to upload a resume at this time.");
			this.debug("Error Code: No backend file, File name: " + file.name + ", Message: " + message);
			return;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
			alert("You may only upload 1 file.");
			this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			break;
		default:
			alert("An error occurred in the upload. Try again later.");
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		}

		file.id = "singlefile";	// This makes it so FileProgress only makes a single UI element, instead of one for each file
		var progress = new FileProgress(file, this.customSettings.progress_target);
		progress.setError();
		progress.toggleCancel(false);

		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
			progress.setStatus("Upload Error");
			this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
			progress.setStatus("Upload Failed.");
			this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.IO_ERROR:
			progress.setStatus("Server (IO) Error");
			this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
			progress.setStatus("Security Error");
			this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
			progress.setStatus("Upload Cancelled");
			this.debug("Error Code: Upload Cancelled, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			progress.setStatus("Upload Stopped");
			this.debug("Error Code: Upload Stopped, File name: " + file.name + ", Message: " + message);
			break;
		}
	} catch (ex) {
	}
}



var swfu1;
var swfu2;
var swfu3;

window.onload = function () {

    swfu1 = new SWFUpload({
        upload_url : "http://www.easyinfo.se/salj/php/functions/upload.php",
        // Flash Settings
        flash_url : "http://www.easyinfo.se/salj/layout/flash/swfupload.swf",

        // Flash file settings
        file_size_limit : "10 MB",
        file_types : "*.jpg;*.gif;*.png",   // or you could use something like: "*.doc;*.wpd;*.pdf",
        file_types_description : "Image Files",
        file_upload_limit : "10",
        file_queue_limit : "5",

        // Event handler settings
        swfupload_loaded_handler : swfUploadLoaded,

        file_dialog_start_handler: fileDialogStart,
        file_queued_handler : fileQueued,
        file_queue_error_handler : fileQueueError,
        file_dialog_complete_handler : fileDialogComplete,

        //upload_start_handler : uploadStart,	// I could do some client/JavaScript validation here, but I don't need to.
        upload_progress_handler : uploadProgress,
        upload_error_handler : uploadError,
        upload_success_handler : uploadSuccess,
        upload_complete_handler : uploadComplete,

        // Button Settings
        button_image_url : "http://www.easyinfo.se/salj/layout/flash/XPButtonUploadText_61x22.png",
        button_placeholder_id : "spanButtonPlaceholder1",
        button_width: 61,
        button_height: 22,

        custom_settings : {
                progress_target : "fsUploadProgress1",
                fileselected_target: "txtFileName1",
                fileid_target: "hidFileID1",
                upload_id: 1,
                upload_successful : false
        },

        // Debug settings
        debug: false
    });

    swfu2 = new SWFUpload({
        upload_url : "http://www.easyinfo.se/salj/php/functions/upload.php",
        // Flash Settings
        flash_url : "http://www.easyinfo.se/salj/layout/flash/swfupload.swf",

        // Flash file settings
        file_size_limit : "10 MB",
        file_types : "*.jpg;*.gif;*.png",   // or you could use something like: "*.doc;*.wpd;*.pdf",
        file_types_description : "Image Files",
        file_upload_limit : "10",
        file_queue_limit : "5",

        // Event handler settings
        swfupload_loaded_handler : swfUploadLoaded,

        file_dialog_start_handler: fileDialogStart,
        file_queued_handler : fileQueued,
        file_queue_error_handler : fileQueueError,
        file_dialog_complete_handler : fileDialogComplete,

        //upload_start_handler : uploadStart,	// I could do some client/JavaScript validation here, but I don't need to.
        upload_progress_handler : uploadProgress,
        upload_error_handler : uploadError,
        upload_success_handler : uploadSuccess,
        upload_complete_handler : uploadComplete,

        // Button Settings
        button_image_url : "http://www.easyinfo.se/salj/layout/flash/XPButtonUploadText_61x22.png",
        button_placeholder_id : "spanButtonPlaceholder2",
        button_width: 61,
        button_height: 22,

        custom_settings : {
                progress_target : "fsUploadProgress2",
                fileselected_target: "txtFileName2",
                fileid_target: "hidFileID2",
                upload_id: 2,
                upload_successful : false
        },

        // Debug settings
        debug: false
    });

    swfu3 = new SWFUpload({
        upload_url : "http://www.easyinfo.se/salj/php/functions/upload.php",
        // Flash Settings
        flash_url : "http://www.easyinfo.se/salj/layout/flash/swfupload.swf",

        // Flash file settings
        file_size_limit : "10 MB",
        file_types : "*.jpg;*.gif;*.png",   // or you could use something like: "*.doc;*.wpd;*.pdf",
        file_types_description : "Image Files",
        file_upload_limit : "10",
        file_queue_limit : "5",

        // Event handler settings
        swfupload_loaded_handler : swfUploadLoaded,

        file_dialog_start_handler: fileDialogStart,
        file_queued_handler : fileQueued,
        file_queue_error_handler : fileQueueError,
        file_dialog_complete_handler : fileDialogComplete,

        //upload_start_handler : uploadStart,	// I could do some client/JavaScript validation here, but I don't need to.
        upload_progress_handler : uploadProgress,
        upload_error_handler : uploadError,
        upload_success_handler : uploadSuccess,
        upload_complete_handler : uploadComplete,

        // Button Settings
        button_image_url : "http://www.easyinfo.se/salj/layout/flash/XPButtonUploadText_61x22.png",
        button_placeholder_id : "spanButtonPlaceholder3",
        button_width: 61,
        button_height: 22,

        custom_settings : {
                progress_target : "fsUploadProgress3",
                fileselected_target: "txtFileName3",
                fileid_target: "hidFileID3",
                upload_id: 3,
                upload_successful : false
        },

        // Debug settings
        debug: false
    });

};
