var activeFormName = "";

function getElemText(node){
    return node.text || node.textContent || (function(node){
        var _result = "";
        if (node == null) {
            return _result;
        }
        var childrens = node.childNodes;
        var i = 0;
        while (i < childrens.length) {
            var child = childrens.item(i);
            switch (child.nodeType) {
                case 1: // ELEMENT_NODE
                case 5: // ENTITY_REFERENCE_NODE
                    _result += arguments.callee(child);
                    break;
                case 3: // TEXT_NODE
                case 2: // ATTRIBUTE_NODE
                case 4: // CDATA_SECTION_NODE
                    _result += child.nodeValue;
                    break;
                case 6: // ENTITY_NODE
                case 7: // PROCESSING_INSTRUCTION_NODE
                case 8: // COMMENT_NODE
                case 9: // DOCUMENT_NODE
                case 10: // DOCUMENT_TYPE_NODE
                case 11: // DOCUMENT_FRAGMENT_NODE
                case 12: // NOTATION_NODE
                // skip
                break;
            }
            i++;
        }
        return _result;
    }(node));
}


	function doRequest(url) {
	    url = "http://" + getUrlPath() + "/" + url;
	    new Ajax.Request(url, {method:'post', encoding:'windows-1251', onComplete:doRequestCallBack, onCreate:doRequestInteract});
	}
	function doRequestCallBack(transport) {
		var xmlDoc = transport.responseXML;
		
		if (xmlDoc != null) {
			var resultArr = xmlDoc.getElementsByTagName("result_item");
			for (var i=0; i < resultArr.length; i++ ) {
				divName = resultArr[i].getAttribute("target_div");
				$(divName).innerHTML = getElemText(resultArr[i]);
				$("div_status_mes").innerHTML = "";
			}
		}
		// если это обработка формы, то разблок. кнопки
		if (activeFormName!=0) {
			enableActionButtons(activeFormName);
			activeFormName = "";
		}
		
		$("div_status_mes").innerHTML = "";
	
	}
	function doRequestInteract(transport) {
		$("div_status_mes").innerHTML = "<img src='img/ag_bar2_e0.gif'>";
	}
	
	function enableActionButtons(formName) {
		buttons = document.forms[formName].getElementsByClassName("actionButton");
		if (buttons==null) {
			return false;
		}
		for (i=0; i<buttons.length; i++ ) {
			buttons[i].enable();
		}
	}
	
	function disableActionButtons(formName) {
        buttons = document.forms[formName].getElementsByClassName("actionButton");
		if (buttons==null) {
			return false;
		}
		for (i=0; i<buttons.length; i++ ) {
			buttons[i].disable();
		}
	}
	
	function sendForm(formName) {
		activeFormName = formName;
		clearFormErrDivs(formName);
		var getParams = document.forms[formName].getAttribute("action");
    	var url = getParams + "&" + Form.serialize(document.forms[formName]);
    	// заблокируем кнопки
		if (activeFormName.length!=0) {
			// disableActionButtons(activeFormName);
		}
    	doRequest(url);
	}
	
	// Получает данные о районах по выбранному городу
	// Если anyItem = true, то будет дана команда выводить в списке элемент
	// 'ВСЕ'
	// Если вызвана для поиска (search=1) то будет вызов для другого урл,
	// компонент представлен чекбоксом
	function getLocationData(formName, anyItem, search) {
  	   var cityId = document.forms[formName].elements["city_id"].value;
	   if (anyItem == 1) {
	   	  anyItemParam = "&any_item=1";   
	   }  else {
	   	  anyItemParam = "";	
	   }
	  
	   var url;
	   if (search!=1) {
		   url = "uiaux.php?action=get_location_data&obj=district&city_id="+cityId+anyItemParam; 	   
	   } else {
		   url = "uiaux.php?action=get_location_data_search&obj=district&city_id="+cityId+anyItemParam;
	   }
	   
	   doRequest(url);
	}
	


	function checkFloorCombo(formName) {

	var comboName1Value = document.forms[formName].elements["num_floors"].value;
	var comboName2Value = document.forms[formName].elements["floor"].value;
	
	if (parseInt(comboName2Value) > parseInt(comboName1Value)) {
		$("div_err_floor").innerHTML="Значение не может превышать " + comboName1Value + "!";
		document.forms[formName].elements["floor"].value = comboName1Value; 
	} else {
		$("div_err_floor").innerHTML="";
	}
}



	/*
	 * Выполняет очистку дивов (дивы ошибок)
	 */
	function clearFormErrDivs(frmName) {
        controlPrefix = "div_err";
        divs = document.getElementsByTagName('div');
        for(var i=0; i<divs.length;i++) {
            if (divs[i].id.substr(0, 7) == controlPrefix) {
                divs[i].innerHTML="";
            }
        }        
	}
	

	/*
	 * В зависимости от выбранного типа жилья скрывает или показывется доп. поля
	 */
	function changeHousingTypeFields(formName) {
		var housingTypeId = document.forms[formName].elements["housing_type_id"].value;
		
		if ($("finished_state")==null) return false;
		
		if (housingTypeId==1) {
			$("finished_state").enable();	
			document.forms[formName].elements["finished_state"].value = "1";
			$("finish_quarter").disable();	
			$("finish_year").disable();
		}
		if (housingTypeId==2) {
			$("finished_state").disable();	
			$("finish_quarter").disable();	
			$("finish_year").disable();
			$("building_year").enable();
		}
	}
	
	
	function enableBuildFinishInput(formName) {
		if (document.forms[formName]==null) return null;
		
		var finishedState = document.forms[formName].elements["finished_state"].value;
		
		if (finishedState==1) {
			$("finish_quarter").disable();	
			$("finish_year").disable();
			$("building_year").enable();
		}
		if (finishedState==2) {
			$("finish_quarter").enable();	
			$("finish_year").enable();
			$("building_year").disable();
		}
	}

    function enableHouseAttr(formName) {
        if (document.forms[formName]==null) return null;
        
        var houseExists = document.forms[formName].elements["house_exists"].value;
        
        if (houseExists == 0) {
            $("house_area").disable();
            $("condition_id").disable();
            $("num_floors").disable();
            $("building_type_id").disable();
        }
        if (houseExists == 1) {
            $("house_area").enable();
            $("condition_id").enable();
            $("num_floors").enable();
            $("building_type_id").enable();
            
        }
    }


	function doWin(url, w, h) {
		url = "http://" + getUrlPath() + "/" + url;
		params = "toolbar=no, scrollbars=yes, directories=no, resizable=yes, status=no, location=no, width="+w+", height="+h+"";
		MyWindow=window.open(url, '',params);
		return true;
	}	


	// устанавливает цвет меню при наведениии мыши и выделении элмента
	


	function initMainPage() {
		doRequest('controller.php?action=try_auth_user');
		// если в урл встретилось 'article', то не надо показывать форму
		var url = document.URL;
		var result = url.match("article");
		if (result == null) {
			doRequest('controller.php?action=render_main_form');
		}
		
		// запустим обновление баннеров агентств по таймеру.
		showRandomAgency();
		var t = setInterval(showRandomAgency, 10000);
		
		return true;	
	}
	
	// удаляет ввыбранные карточки
	function deleteCards(formName) {
		// проверим, выбрано ли что то?
		var numEl = document.forms[formName].elements.length;
		var s="";
		for (i=0; i<numEl; i++) {
			var el = document.forms[formName].elements[i];
			if (el.type=="checkbox") {
				if (el.checked) {
					s+=el.value + ":" 
				}
			}
		}		
		if (s.length!=0) {
			var agree=confirm("Удалить выбранные объявления?");	
			if (agree) {
				// вызовем процесс удаления
				doRequest("controller.php?action=delete_cards&class=1&ids="+s);
			}
		} else {
			alert("Ничего не выбрано!");
		}
		return true;
	}



function getUrlPath() {
   var res = "";
   res = location.host + location.pathname;
   res = res.substr(0, res.lastIndexOf("/"));   
   return res;
}


// Выбирает рандомно num_req элементов из массива input
function arrayRand (input, num_req) {	
	    // * example 1: array_rand( ['Kevin'], 1 );
	    // * returns 1: 0
	    var indexes = [];
	    var ticks = num_req || 1;
	    var checkDuplicate = function ( input, value ) {
	        var exist = false, index = 0;
	        while ( index < input.length ) {
	            if ( input [ index ] === value ) {
	                exist = true;
	                break;
	            }
	            index++;
	        }
	        return exist;
	    };

	    if ( input instanceof Array && ticks <= input.length ) {
	        while ( true ) {
	            var rand = Math.floor( ( Math.random( ) * input.length ) );
	            if ( indexes.length === ticks ) { break; }
	            if ( !checkDuplicate( indexes, rand ) ) { indexes.push( rand ); }
	        }
	    } else {
	        indexes = null;
	    }

	    return ( ( ticks == 1 ) ? indexes.join( ) : indexes );
	}


	
/**
 * Выбирает поочередно N агентств из списка и показывает ссылки на них в
 * указанных местах сайта В левой и правой панелях
 */
function showRandomAgency() {
	
	// получим массив кодов агентств из списка кодов div_ag_ids
	var agIdsString = $("div_ag_ids").innerHTML;
	var agIds = agIdsString.split(",");
	
	// Получим количество отображаемых агентств слева
	var numLeftShowAgency = parseInt($("div_ag_left").innerHTML);
	
	// Выберем numShowAgency произвольных элементов и сформируем ссылки и пр.
	var randomAgencies = arrayRand(agIds, numLeftShowAgency);
	for (i=0; i<randomAgencies.length; i++) {
		var divName = "div_ag" + (i + 1);
		var agId = agIds[randomAgencies[i]];
		var link = "<a href='javascript:;' onClick='doWin(^controller.php?action=view_agency_card&id="+agId+"^, 600, 700)'><img src='agency_logo/"+agId+".jpg'></a>";
		link = link.replace(/'/g,"\"");
		link = link.replace(/\^/g,"'");
		$(divName).innerHTML = link;
		// $(divName).fade({ duration: 4.0, from: 0, to: 1 });

	}
	return true;
	
	
}


function startImgUpload(imgNum) {
	$("div_progress_img_upload"+imgNum).innerHTML = "<img src='img/img-loader.gif'>";
}

function stopImgUpload(file, imgNum, errMes) {
	document.images["usr_img"+imgNum].src = '/img/nophoto.gif';
	$("div_progress_img_upload"+imgNum).innerHTML = "";
	$("div_err_img_upload"+imgNum).innerHTML = errMes;
	document.images["usr_img"+imgNum].src = file;
}

/**
 * Удаляет файл связанный с карточкой
 * 
 * @param realtyId
 * @param imgNum -
 *            порядковый номер файла фотки
 */
function deleteImage(realtyId, imgNum) {
	// По порядковому номеру найдем имя файла как src соответствующего img
	fileName = document.images["usr_img"+imgNum].src;
	fileName = fileName.substr(fileName.lastIndexOf("/")+5);
	
	if (fileName.length == 0) {
		return false;
	}
	
	var agree=confirm("Удалить фото?");	
	if (agree) {
		// вызовем процесс удаления
		$("div_progress_img_upload"+imgNum).innerHTML = "<img src='img/img-loader.gif'>";
		document.images["usr_img"+imgNum].src = '/img/nophoto.gif';
		doRequest("controller.php?action=delete_img&realty_id="+realtyId+"&file="+fileName);
	}
	
	$("div_progress_img_upload"+imgNum).innerHTML = "";
	return true;
	
}








