		
		// ###############  Accordion  #################
			function init_accordion(obj){
				$(function() { 
				 	$(obj).accordion({
						collapsible: true,
						active: false,
						autoHeight: false
					});
				});
			}
			
		// ###############  DatePicker  #################	
			function init_datePicker(obj){
				$(obj).datepicker({
					changeMonth: true,
					changeYear: true,
					defaultDate: new Date()/*,
					minDate: new Date("2003/01/01"),
					maxDate: new Date("2008/12/31")*/
				});
			}
			
		
		// ###############  Tooltip  #################
			function show_tooltip(obj, msg){
				$(function() { 
					if($(obj).length>0) {
						$(obj).tooltip({
							track: true,
							fade: 250,
							delay: 0,
							showURL: false,
							left: 10,
							top: -25,
							bodyHandler: function(){
								return msg;
							}
						});
					}
					
				});
			}
		
		// ###############  simple Dialog  #################
			function simpleDialog(buttonOBJ, dialogOBJ){
				$(function(){
					$(buttonOBJ).click(function() {
						$(dialogOBJ).dialog("open");
					});
					$(dialogOBJ).dialog({
						autoOpen: false,
						draggable: true
					});
				})
			}
		
		
		
		// ###############  TableSorter  #################
			function set_tablesorter(obj, sortable_columns, filterable_columns, num_columns){
					
				var sortable_cols = sortable_columns.split(',');
				var filterable_columns = filterable_columns.split(',');
				
				var not_sortable_cols = '{';
				for(var n=0;n<num_columns;n++){
					var in_array = eval('$.inArray("'+n+'", sortable_cols)');
					if(in_array==-1){
						not_sortable_cols = not_sortable_cols + n +':{sorter:false},';
					}
				}
				not_sortable_cols = not_sortable_cols.slice(0,(not_sortable_cols.length-1)) + '}';
				eval("$.tablesorter.defaults.headers = " + not_sortable_cols + ";"); 
				
				$(obj).tablesorter({
					widgets: ['zebra']
				});	
				
				/*$(obj).tablesorterFilter({
					filterWaitTime: 100,
					filterContainer: "#filter-box",
					filterColumns: filterable_columns
				});*/
	
			}
			
			
			
		// ###############  Autocomplete  #################	
			var temp_list;
			
			function init_autocomplete(obj, list, type){
				$(function() {
					if(typeof(type)=='undefined' ) type='contains';
					if(type=='contains') var options = {matchContains: true, minChars: 0};
					else var options = {minChars: 0};
					$(obj).autocomplete(list, options);
				});
			}
				function simple_autocomplete(input_obj, list, type){
					init_autocomplete(input_obj, list, type);
				}
				
				function filtered_autocomplete(input_obj, filter_obj, multidim_list){
					var plain_list = new Array();
					for(var i in multidim_list){
						for(var j in multidim_list[i]){
							if(multidim_list[i][j]!='' && typeof(multidim_list[i][j])=='string'){
								plain_list.push(multidim_list[i][j]);
							}
						}
					}
					var filter_value = $(filter_obj).val();
					if(filter_value!=''){
						init_autocomplete(input_obj, multidim_list[filter_value]);
					} else {
						init_autocomplete(input_obj, plain_list);
					}
				}
			
			function connect_autocomplete(input_obj, toRefresh_obj, multidim_list){
				$(function() {
					$(input_obj).change(function(){
						temp_list = multidim_list;
						setTimeout('refresh_autocomplete("'+input_obj+'","'+toRefresh_obj+'")', 100);
				    });
				});	
			}
				function refresh_autocomplete(input_obj, toRefresh_obj){
					$(toRefresh_obj).unbind(".autocomplete");
					filtered_autocomplete(toRefresh_obj, input_obj, temp_list);
				}
		
		
		// ###############  AJAX Upload  #################	
			function initUpload(field_name){
				
				var uploadButton = field_name+'_uploadButton';
				var upload_obj = field_name+'_uploadFile';
				var msg_obj = field_name+'_msg';
				var fileLink = field_name+'_fileLink';
				var deleteButton = field_name+'_deleteButton';
				var delete_obj = field_name+'_deleteFile';
				
				new AjaxUpload(uploadButton,{
					action: uploadAjaxFile, 
					autoSubmit: true,
					responseType: 'json',
					data: {
						field_name: field_name
					},
					onSubmit : function(file, ext){
						$('#'+msg_obj).html(upload_msgs['uploading']);
					},
					onComplete: function(file, response){
						var url_file, link, msg = '';
						msg = html_entity_decode(response['msg']);
						if(response['url_file']) url_file = html_entity_decode(response['url_file']);
						if(response['link']) link = html_entity_decode(response['link']);
						$('#'+field_name).attr("value",url_file);
						$('#'+field_name).trigger('change');
						$('#'+fileLink).html(link);
						$('#'+msg_obj).html(msg);
						$('#'+delete_obj).css("display","inline");
						$('#'+upload_obj).css("display","none");
					}
				});
				
				$('#'+deleteButton).click(function(){
					$('#'+field_name).attr("value","");
					$('#'+field_name).trigger('change');
					$('#'+fileLink).html('');
					$('#'+msg_obj).html(upload_msgs['deleted']);
					$('#'+delete_obj).css("display","none");
					$('#'+upload_obj).css("display","inline");
				});
			}