(function($) {
	if($.ui == null || undefined){
		$.ui = $.extend({});
	}
	$.fn.uploader = function(options) {
			var defaults ={								
								width: '245',								
								path:'/library/javascript/clickthinking/jquery/fileuploader/',
								callback:null,
								preview: null,
								uploadDir:'/media/videos/video_entry',
								uploaderScript:'uploaderFrontEnd.php',
								appendUploadDir:null,
								initmsg:null,
								imgWidth: null,
								imgHeight: null,
								wmode: '',
								phpthumb:'/library/classes/3rdparty/phpthumb/phpthumb.php',								
								swfversion: '9,0,28,0',
								fileType:[{description:"Images",extensions:"jpg|gif|png"},
										  {description:"Video",extensions:"avi|mov|mpeg|mpg|flv"},
										  {description:"Documents",extensions:"pdf|xls|txt|doc"}
										  ]
								
			}		
			options = $.extend({},defaults, options);
			
			return this.each(function() {					
					new $.ui.uploader(this,options);
			});	
			
		}
	
	
	$.ui.uploader = function(el,objOptions){
					
					if(!objOptions) var objOptions = {};
					this.element = el;
					this.options = {};
					$.extend(this.options, objOptions);
					var fileName = $(this.element).val() || '';
					
					$(this.element).css('display','none');					
					$(this.element).after('<div id="uploader_'+this.element.id+'" name="uploader_'+this.element.id+'"></div>');	
					
										
					var flashVars = [{'filename':fileName},
									 {'field':this.element.id},
									 {'uploaddir':encodeURI(this.options.uploadDir)},
									 {'uploaderscript':encodeURI(this.options.path+this.options.uploaderScript)},
									 {'width':parseInt(this.options.width)},
									 {'filetypes':encodeURI(this.encodeJSON(this.options.fileType))}
									 ]
					
					
					if(this.options.preview!=null){
						flashVars.push({'preview':this.options.preview});	
						flashVars.push({'previewwidth':$(this.options.preview).width()});
						flashVars.push({'previewheight':$(this.options.preview).height()});
						
						
					}
					if(this.options.phpthumb!=null){
						flashVars.push({'phpthumb':encodeURI(this.options.phpthumb)});
					}
					
					if(this.options.callback!=null){
						flashVars.push({'callback': this.options.callback});
					}
					if(this.options.initmsg!=null){
						flashVars.push({'initmsg':encodeURI(this.options.initmsg)});
					}
					if(this.options.imgWidth!=null){
						flashVars.push({'imgwidth':parseInt(this.options.imgWidth)});
					}
					if(this.options.imgHeight!=null){
						flashVars.push({'imgheight':parseInt(this.options.imgHeight)});
					}	
					if(this.options.appendUploadDir!=null){
						flashVars.push({'appenduploaddir': encodeURI(this.options.appendUploadDir)});
					}	
					

					
					var flashvars = this.convertFlashVars(flashVars);
					
			
					var swfCreate = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+this.options.width+'" height="45" id="uploaderFrontEnd" align="middle" style="display:block" allowfullscreen="true" allowSciptAccess="always">';
					swfCreate+= '<param name="movie" value="'+this.options.path+'uploaderFrontEnd.swf" />';
					swfCreate+= '<param name="quality" value="high">';
					swfCreate+= '<param name="allowfullscreen" value="true" />';
					swfCreate+= '<param name="allowSciptAccess" value="sameDomain" />';
					swfCreate+= '<param name="wmode" value="'+this.options.wmode+'" />	';
					swfCreate+= '<param name="flashvars" value="'+flashvars+'" />';
					swfCreate+= '<!--[if !IE]>-->';
					swfCreate+= '<object data="'+this.options.path+'uploaderFrontEnd.swf" type="application/x-shockwave-flash"  width="'+this.options.width+'" height="45" id="uploaderFrontEnd" align="middle" style="display:block" allowfullscreen="true" allowSciptAccess="always">';
					swfCreate+= ' <param name="pluginurl" value="http://www.adobe.com/go/getflashplayer">';
					swfCreate+= '<param name="quality" value="high">';
					swfCreate+= '<param name="allowfullscreen" value="true" />';
					swfCreate+= '<param name="allowSciptAccess" value="sameDomain" />';
					swfCreate+= '<param name="wmode" value="'+this.options.wmode+'" />	';
					swfCreate+= '<param name="flashvars" value="'+flashvars+'" />';
					swfCreate+= '<!--<![endif]-->';
					swfCreate+= '<p><a href="http://www.adobe.com/go/EN_US-H-GET-FLASH"><img alt="Get Adobe Flash Player" src="http://www.adobe.com/images/shared/download_buttons/get_adobe_flash_player.png"/></a></p>';
					swfCreate+= ' <!--[if !IE]>-->';
					swfCreate+= '</object>';
					swfCreate+= '<!--<![endif]-->';
					swfCreate+= '</object>';					
					 $('#uploader_'+this.element.id).html(swfCreate);
	}
	$.extend($.ui.uploader.prototype, {
		encodeJSON: function(json){			
				var jsonEnc = new String();
				var jsnObj = new Array();
				if(json.length !=undefined) jsonEnc ='['; // if this is an array
				for(var i =0 ; i < json.length; i++){
					var jsn =json[i];
					var jsnOb = new Array();				
					
					for(var item in jsn){
						jsnOb.push('"'+item+'":"'+jsn[item]+'"');						
					}
					jsnObj.push("{"+jsnOb.join(",")+"}");
					
				}				
				jsonEnc += jsnObj.join(",");
				if(json.length !=undefined) jsonEnc +=']'; // if this is an array
				return jsonEnc;
		},
		convertFlashVars: function(params){
			var QueryParam = new Array();
			for(var i =0 ; i < params.length; i++){
				var par =params[i];

				 for (var key in par) {
					 if(typeof par[key] == 'object'){
						 for(var value in par[key]){
							QueryParam.push( key+'[]='+(par[key][value]) )
						 }
					 }else{
						QueryParam.push( key+'='+(par[key]) );
					 }
				 }

			}
			return QueryParam.join('&');
		}
	});
})(jQuery);

function changeField(field,fileName)
{
	
	$('#'+field).val(fileName);
}

function changePreview(field,fileName)
{
	
	$(field).attr('src',fileName);
}

function clearField(field,attrib)
{	
	$('#'+field).attr(attrib,'');	
}