upload.js 4.39 KB

upload_img = function(name,main_url){
	if ( !o.$(name) ) {
		alert('');
		return false;
	}
		
	this.prnt = o.$(name);
	this.max_size=0;
	this.server = main_url+'/?p_name=admin_images';
	this.max_files = 1;
	this.main_url = main_url;
	//this.files=0;
	
		//	содержит массив объектов изображений
	this.elements = new Array();
	this.FLAG_CROP = false;
	this.image = false;
	this.path = false;
	this.base = false;
	
		//	имя контейнера, внутри которого будет происходить работа скрипта
	this.output = false;
	
}

upload_img.prototype.set_max_width = function(w){
	this.FLAG_RESIZE = true;
	this.max_w = w;
}

upload_img.prototype.set_max_height = function(h){
	this.FLAG_RESIZE = true;
	this.max_h = h;
}

	//	нужно обрезать изображение до размеров w,d
upload_img.prototype.set_crop = function(w,h){
	this.FLAG_CROP = true;
	this.w = w;
	this.h = h;
}

	//	ссылка на изображение предлагающее загрузить изображение
upload_img.prototype.set_id = function(s){
	this.image= o.$(s);
}



	//	открываем новое окно для загрузки изображения
upload_img.prototype.load_image = function(){
		//	ставим обратную ссылку, чтобы скрипт потом мог вернуть результаты работы
	window.upload_img_class = this;
	window.open(
	this.server+"&act=load_form&max_size="+this.max_size+
		"&path="+this.path+'&crop_width='+this.w+'&crop_height='+this.h+'&max_width='+this.max_w+'&max_height='+this.max_h
		,500,570) ;
}

	//	отображаем уже загруженный файл
upload_img.prototype.set_file = function(url){
				//	создаём изображение
	control = o.create_element('IMG',{
										'title':'Закрыть',
										'back_func':this,
										'id':'upl_img_'+ this.elements.length,
										'src':this.base+'/'+url+'?resize=2&width=100',
										'url_name':url,
										'onclick':function(e){ this.back_func.del(this)},
									}
	);
	control.style.cursor='pointer';
	control.style.display='block';
	this.elements[ this.elements.length ] = control;
		//	для быстрого удаления снабдим изображение порядковым номером в нашем массиве
	control._number = this.elements.length-1;

}

	//	удаляем изображение o
upload_img.prototype.del = function(o){
	
	this.elements[o._number] = false;
		
		//	перепишем список изображений
	this.show();
	
}


	//	управляем изображением для загрузки изображений
upload_img.prototype.show = function(){
	value = new Array();
	
		//	очищаем контейнер для вывода изображений
	this.prnt.innerHTML = '';
	
		//	перебираем список изображений
	for( e in this.elements){
	
			//	отсееваем удалённые
		if ( this.elements[e]==false ){
			continue;
		}
			//	файлов больше, чем разрешено
		if ( value.length==this.max_files ){
			continue;
		}
		
			//	заносим файл в массив
		value[value.length]=this.elements[e].url_name;
		
			//	выводим изображение в контейнере
		this.prnt.appendChild(this.elements[e]);
	}
		//	обновляем контрол хранящий результаты загрузки отправляемые на сервер
	output = o.create_element('input',{
								'type':'hidden',
								'name':this.output
								}
	);
	this.prnt.appendChild(output);	
	output.value = value.join('|');
	
	
	
	
		//	если загружать ещё можно, то выводим контрол загрузки новых изображений
	if ( value.length<this.max_files ){
		this.add_def_image();
	}
	
}

	//	добавляем изображение 
upload_img.prototype.add_image = function(url){
	

}

upload_img.prototype.add_def_image = function(){
	r = 'img_'+Math.random();
	control = o.create_element('img',{

										'title':'Добавить',
										'back_func':this,
										'id':r,
										'src':this.main_url+'/source/tmpl/default/img/upload.gif',
										'onclick':function(e){ this.back_func.load_image()},
									}
	);
	control.style.cursor='pointer';
	control.style.display='block';
	this.prnt.appendChild(control);
}