reference - http://github.com/hayageek/jquery-upload-file
seems that any error occured at event
	
	
	
		
auto handled by library and shown at user when the showError=true (by default)
when raising errors by your php script the only way to catch it is by
	
	
	
		
index.html
	
	
	
		
upload.php
	
	
	
		
	
	
	
		
		
		
			
		
		
	
	
		
	
//catch the done button, using jQuery dynamic event
	
	
	
		
			
			seems that any error occured at event
		JavaScript:
	
	onError: function(files,status,errMsg,pd)
	when raising errors by your php script the only way to catch it is by
		JavaScript:
	
	onSuccess:function(files,data,xhr,pd)
	index.html
		JavaScript:
	
	<!--JQUERY-->
<script src="//code.jquery.com/jquery-1.11.0.min.js">
</script>
<!--BOOTSTRAP-->
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js" type="text/javascript">
</script>
<!--UPLOADER-->
<link href="//hayageek.com/docs/uploadfile.min.css" rel="stylesheet" type="text/css" />
<script src="//hayageek.com/docs/jquery.uploadfile.min.js" type="text/javascript">
</script>
<script>
	var uploadObj;
	$(function()
		{
			//when modal closed, hide the warning messages + reset
			$('#modalOFFERS2').on('hidden.bs.modal', function()
				{
					//when close - clear elements
					$('#formOFFERS2').trigger("reset");
					//remove any status groupboxes from jQ-uploader via class!
					$(".ajax-file-upload-statusbar").remove();
				});
			$('#btn_lead_proposals_new').on('click', function(e)
				{
					e.preventDefault();
					$('#modalOFFERS2').modal('toggle');
				})
			uploadObj = $("#file_prop_approval").uploadFile(
				{
					url:"upload.php",
					showProgress : true,
					fileName:"myfile",
					autoSubmit:true,
					maxFileCount:1,
					maxFileSize:31457280, //30mb
					dynamicFormData: function()
					{
					   //send JSON variables with $FILE
					   var data ={ client_id : <?= $_GET['id'] ?>, offer_id: $("#OFFERS2FORM_updateID").val() };
					   return data;        
					},
					onSubmit:function(files)
					{//callback to be invoked before the file upload.
						//reset jQ-uploader counters!
						console.log("refresh")
						uploadObj.fileCounter = 0;
						uploadObj.selectedFiles = 0;
						uploadObj.fCounter = 0; //failed uploads
						uploadObj.sCounter = 0; //success uploads
						uploadObj.tCounter = 0; //total uploads
						if (!files)
						return;
					},
					onSuccess:function(files,data,xhr,pd)
					{
						//custom error handling
						var info = JSON.parse(data);
						if (info["jquery-upload-file-error"]!=null)
						{	
                                                    //show the error thrown by upload PHP
                                                    alert(info["jquery-upload-file-error"]);
                                                    //remove any status groupboxes from jQ-uploader via class!
                                                    $(".ajax-file-upload-statusbar").remove();
                                                    //reset jQ-uploader counters!
                                                    console.log("refresh")
                                                    uploadObj.fileCounter = 0;
                                                    uploadObj.selectedFiles = 0;
                                                    uploadObj.fCounter = 0; //failed uploads
                                                    uploadObj.sCounter = 0; //success uploads
                                                    uploadObj.tCounter = 0; //total uploads
						}
					},
					afterUploadAll:function(obj)
					{
						//callback after upload
					}
				});
		}); //jQuery ends
</script>
<button id="btn_lead_proposals_new" class="btn btn-success" type="submit" name="submit">
	New
</button>
<!-- NEW OFFER approval attachment MODAL [START] -->
<div class="modal fade" id="modalOFFERS2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
	<div class="modal-dialog">
		<div class="modal-content">
			<div class="modal-header">
				<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
					×
				</button>
				<h4 class="modal-title" id='lblTitle_OFFERS2']
					New
				</h4>
			</div>
			<div class="modal-body">
				<form id="formOFFERS2" role="form">
					<button id="btn_dn_file_prop_approval" type="button" class="btn btn-primary">
						Download
					</button>
					<div id="file_prop_approval">
						Upload
					</div>
					<input name="OFFERS2FORM_updateID" id="OFFERS2FORM_updateID" class="form-control" style="display:none;">
					<div class="modal-footer">
						<button id="bntCancel_OFFERS2" type="button" class="btn btn-default" data-dismiss="modal">
							back
						</button>
					</div>
				</form>
			</div><!-- End of Modal body -->
		</div><!-- End of Modal content -->
	</div><!-- End of Modal dialog -->
</div><!-- End of Modal -->
<!-- NEW OFFER approval attachment MODAL [END] -->
	upload.php
		JavaScript:
	
	<?php
session_start();
if (!isset($_SESSION["u"]) || empty($_POST['offer_id']) || empty($_POST['client_id'])) {
    //drives to library onError event (aka shows the error automatically at groupbox)
    header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
    exit ;
}
$company_id = $_POST['client_id'];
$output_dir="./destdir/$company_id/";
$fileName = $_POST['offer_id']."_test.tiff";
//raise custom error
if (file_exists($output_dir.$fileName))
{
//custom error, we catch it at **onSuccess** event
		$ret= array();
		$ret['jquery-upload-file-error']='Approval file already exists!';
		echo json_encode($ret);
		exit;
}
if(isset($_FILES["myfile"]))
{
	$ret = array();
	$error =$_FILES["myfile"]["error"];
	//You need to handle  both cases
	//If Any browser does not support serializing of multiple files using FormData() 
	if(!is_array($_FILES["myfile"]["name"])) //single file
	{
 		move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$fileName);
    	$ret[]= $fileName;
	}
	else  //Multiple files, file[]
	{
//	  $fileCount = count($_FILES["myfile"]["name"]);
//	  for($i=0; $i < $fileCount; $i++)
//	  {
//	  	$fileName = $_FILES["myfile"]["name"][$i];
//		move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$fileName);
//	  	$ret[]= $fileName;
//	  }
	
	}
    echo json_encode($ret);
 }
 ?>
	
	//catch the done button, using jQuery dynamic event
		JavaScript:
	
	$(document).on("click", ".ajax-file-upload-green", function(e) {
	if (upload_form=="modalOFFERS2")
		$('#modalOFFER').modal('toggle');
	})