var Laggarbo = {
	Ajax: {
		request: function( page, callback, parameters ) {
			new Ajax.Request(page, {
				method: 'post',
				parameters: parameters,
				onSuccess: function( transport ) {
					if( callback ) {
						var data = {};
						try {
							data = JSON.parse(transport.responseText);
						} catch( e ) {
							data = {};
						}
						callback(data);
					}
				},
				onFailure: function() {
					alert('fail');
				}
			});
		}
	}
};
var laggarbo = {
	ajax: {
		request: function( page, parameters, callback ) {
			new Ajax.Request(page, {
				method: 'post',
				parameters: parameters,
				onSuccess: function( transport ) {
					if( callback ) {
						var data = {};
						try {
							data = JSON.parse(transport.responseText);
						} catch( e ) {
							data = {};
						}
						callback(data);
					}
				},
				onFailure: function() {
					alert('fail');
				}
			});
		}
	}
};
function SendAjaxRequest( page, parameters, callback ) {
	new Ajax.Request(page, {
		method: 'post',
		parameters: parameters,
		onSuccess: function( transport ) {
			if( callback ) {
				var data = {};
				try {
					data = JSON.parse(transport.responseText);
				} catch( e ) {
					data = {};
				}
				callback(data);
			}
		},
		onFailure: function() {
			alert('fail');
		}
	});
}
function SetupDragAndDropUpload( dropAreaName, uploadScript, maxFileSize, onFileToBig, onUploadError, onUploadStart, onUploadEnd, onUploadProgress ) {
	var dropArea = document.getElementById(dropAreaName);
	if( typeof window['FileReader'] === 'function' ) {
		
		dropArea.addEventListener('dragenter', function( event ) {
			event.stopPropagation();
			event.preventDefault();
		}, false);
		
		dropArea.addEventListener('dragover', function( event ) {
			event.stopPropagation();
			event.preventDefault();
		}, false);
		
		dropArea.addEventListener('drop', function( event ) {
			var files = event.dataTransfer.files;
			var count = files.length;
			
			event.stopPropagation();
			event.preventDefault();

			for( var i = 0; i < count; i++ ) {
				var file = files[i];
				if( maxFileSize == 0 || file.size <= maxFileSize ) {
					var reader = new FileReader();
					
					reader.name = file.name;
					reader.index = i;
					reader.file = file;
					
					reader.addEventListener('loadend', function( event ) {
						var request = new XMLHttpRequest();
						var getBinaryDataReader = new FileReader();

						request.upload.addEventListener('progress', function( event ) {
							if( event.lengthComputable ) {
								var percentage = Math.round((event.loaded * 100) / event.total);
								if( onUploadProgress ) {
									onUploadProgress(file.name, file.size, percentage);
								}
							}
						}, false);
						request.upload.addEventListener('load', function( event ) {
							if( onUploadEnd ) {
								onUploadEnd(file.name, file.size);
							}
						}, false);
						request.upload.addEventListener('error', function( event ) {
							if( onUploadError ) {
								onUploadError(file.name);
							}
						}, false);

						request.open('POST', uploadScript);
						request.overrideMimeType('text/plain; charset=x-user-defined-binary');

						getBinaryDataReader.addEventListener('loadend', function( event ) {
							request.sendAsBinary(event.target.result);
						}, false);

						if( onUploadStart ) {
							onUploadStart(file.name, file.size);
						}
						
						getBinaryDataReader.readAsBinaryString(file);
					}, false);
					
					reader.readAsDataURL(file);
				} else {
					if( onFileToBig ) {
						onFileToBig(file.name, file.size, maxFileSize);
					}
				}
			}
		}, false);
		
		
	} else {
		// TODO: Implement!
	}
}

