﻿/**
 * количество загруженных фото
 * @type Number
 */
var loadingPhotos = 0;

/**
 * количество успешно загруженных фото
 * @type Number
 */
var succesAdd = 0;

/**
 * массив номеров всех форм, которые присутствуют на странице(и связанных только с загрузкой фото)
 * @type {Array}
 */
var array_of_loading_photos = [];
/**
 * максимальное количество загружаемых фото
 * @type Number
 */
var MAX_COUNT = 50;

/**
 * обработка ответа сервера
 * @param response ответ сервера - массив с данными о фото
 */
function handleResponse (response){
	try {
	loadingPhotos--;
	delete_element_from_mas(array_of_loading_photos,response.count1);
    removeFrame('ifr' + response.count1);
    removeForm(response.count1);    
    if (response.error){    	
    	alert(response.error);
	    succesAdd--;	    
    }else {	
    	var nm = number_of_elements('pCheckPhoto');
    	nm++;
	    var elem = document.createElement('div'); 	    
	    elem.className = 'upload-image';
	    elem.innerHTML = '<img src="http://images.avtomagazine.ua/'+response.url+'/data-t" class="uploadedImg" /><input type="checkbox" id="pCheckPhoto'+nm+'" name="pcheckphoto'+nm+'" checked="checked" value="http://images.avtomagazine.ua/'+response.url+'/data-t"/><span>'+response.filename+'</span>';    
	    window.parent.document.getElementById('res').appendChild(elem);
	    // создаем скрытый инпут для основной формы
	    var elem_span = document.createElement('span');
	    elem_span.innerHTML = '<input type="hidden" id="inCheckPhoto'+nm+'" name="checkphoto'+nm+'" value="http://images.avtomagazine.ua/'+response.url+'/data-t"/>';
	    window.parent.document.getElementById('send_photos').appendChild(elem_span);
    }} catch (e){}
}

/**
 * создание формы
 * @param init индикатор загрузки страницы(передается только один раз при 
 * загрузке страницы)
 */
function createForm(init){
	/**
	 * количество отправок формы
	 * @type Number
	 */
	 try {
	if (init != undefined){
		nm_submit_forms = number_of_elements('pCheckPhoto');
		nm_submit_forms++;
	}
	var elem = document.createElement('div');
	elem.id = 'form'+nm_submit_forms;	
	elem.className = 'form-div';
	var inner_form = '<form action="upload_files.php" method="post" enctype="multipart/form-data" id="submitPhotoForm'+nm_submit_forms+'">';      
    inner_form += '<input type="file" id="fPhoto'+nm_submit_forms+'" name="newPic" onchange="sendData(this);" />';
    inner_form +='<input type="hidden" name="count" value="'+nm_submit_forms+'" />';
    // хак для оперы - чистая история
    if (browserOpera()){
    	inner_form +='<input type="hidden" name="isOpera" value="true" />';
    }
    inner_form += '<img src="http://static.am.ua/r2221/html/workflow/am/images/ajax-loader.gif" style="display:none;" id="loadImg'+nm_submit_forms+'"/>';
    inner_form += '<a href="javascript:stopSubmitForm('+nm_submit_forms+');" class="break-btn" style="display:none;" id="breakSubmit'+nm_submit_forms+'">Прервать</a>';        
    inner_form += '</form>';     
	elem.innerHTML = inner_form;
	document.getElementById('photos').appendChild(elem);
	array_of_loading_photos.push(nm_submit_forms);
	} catch (e){}
}

/**
 * удаление формы
 * @param count номер формы
 */
function removeForm (count){
    document.getElementById('photos').removeChild(document.getElementById('form'+count));
}

/**
 * индикация загрузки формы
 * @param el объект
 * @param count1 номер формы
 */
function disableForm(el,count1){	
	// делаем невидимым input
	try {
	el.style.display = 'none';
	// показываем загрузку
	document.getElementById('loadImg'+count1).style.display = 'inline';
    document.getElementById('breakSubmit'+count1).style.display = 'inline';
	} catch (e){}
}

/**
 * "прерывание" отправки формы
 * @param count1 номер формы, отправку которой будем прерывать 
 */
function stopSubmitForm(count1){         
        removeFrame('ifr'+count1);
        removeForm(count1);
        if (succesAdd == MAX_COUNT){
    		  createForm();
    	  }
        succesAdd--; 
        loadingPhotos--;
        delete_element_from_mas(array_of_loading_photos,count1);
}

/**
 * удаление iframe
 * @param id id ифрэйма
 */
function removeFrame(id){
    var ifr = document.getElementById(id);   
    ifr.parentNode.parentNode.removeChild(ifr.parentNode);
}

/**
 * отправка формы
 * @param el элемент, на котором срабатывает функция
 */
function sendData(el){		 	
	// "отрезаем" номер формы
	try {
	var form_id = parseInt(el.id.substr(6));
	// n - уникальный идентификатор для каждого iframe
	var n = 'ifr' + form_id;
	var d = document.createElement('div');
	  d.innerHTML = '<iframe style="width:0px;height:0px;border:0px;" id="'+n+'" name="'+n+'"></iframe>';
	  document.body.appendChild(d);
	  // добавляем форме атрибут target со значением id ифрэйма
	  document.getElementById('submitPhotoForm'+form_id).target =  n;
	  // отправляем форму
	  document.getElementById('submitPhotoForm'+form_id).submit();
	  // делаем текущую форму невидимой и появляются индикаторы загрузки
	  disableForm(el,form_id);
	  nm_submit_forms++;
	  succesAdd++; 
	  loadingPhotos++;	  
	  // можно загружать только определенное количество фото
	  if (succesAdd < MAX_COUNT){
		  createForm();
	  }
	} catch (e){}
}

 /**
  * количество элементов с id вида part_idi, где i=0,1,...
  * @param part_id часть id (до цифры) 
  */
 
function number_of_elements (part_id){
	var i = 0;
	try {
	while (document.getElementById(part_id+(i+1))){
		i++;
	}} catch (e){};
	return i;
}
/**
 * проверяем браузер opera или нет
 */
function browserOpera (){
		var ua = navigator.userAgent.toLowerCase();
		return (ua.indexOf("opera") != -1);
	}

 /**
  * отправка формы
  */
function sendMainForm (){
	try {			
		if (checkForm(document.getElementById('sNewob'))){
			if (loadingPhotos == 0){
			var nm = number_of_elements('pCheckPhoto');
			var nm2 = number_of_elements('inCheckPhoto');
			if (nm != 0 && nm === nm2){
				for (var i = 1; i <= nm; i++){
					if (document.getElementById('pCheckPhoto'+i).checked == false){
						document.getElementById('inCheckPhoto'+i).value = '';
					}
				}
			}
			document.getElementById('sNewob').submit();
			}else {alert('Подождите, пока загрузятся фото или прервите загрузку')}
		}
	} catch (e){}
}
 /**
  * удаление элемента из массива
  * @param mass массив
  * @param elem элемент, который нужно удалить
  */ 
function delete_element_from_mas (mass,elem) {
	for (var ii = 0; ii < mass.length; ii++){		
    if (mass[ii] == elem) {    	 	
    	// удаляем с индекса ii один элемент
    	 mass.splice(ii,1);
    	
    	    }
	}
}

/**
 * включение функции "стандартное добавление фото"
 */
function standartAddPhotos(){	
	// показываем форму стандартной добавки фото
	try {
		document.getElementById('standartAddPhoto').style.display = '';
		// прячем форму асинхронной загрузки фото
		document.getElementById('photoHeader').style.display = 'none';
		document.getElementById('helpInAddPhoto').style.display = 'none';	
		// нужно прервать всю текущую загрузку
		// в этом нам поможет массив номеров форм загрузки фото		
		for (var jj = 0; jj < array_of_loading_photos.length; jj++) {
			if (document.getElementById('ifr'+array_of_loading_photos[jj])){
				removeFrame('ifr'+array_of_loading_photos[jj]);	
				succesAdd--; 
		        loadingPhotos--;
			}		
	        removeForm(array_of_loading_photos[jj]);	                               
		}	
		array_of_loading_photos = [];
	}catch(e) {}
}

