function test(string)
{
	alert(string);
}

//var c=0; //счётчик количества строк
function addfield()
{
	c++; // увеличиваем счётчик строк
	
	s=document.getElementById('form_fields').innerHTML; // получаем HTML-код таблицы
	bgcolor=document.getElementById('row').style.backgroundColor;
	if(bgcolor=='#44444b')
	{
		bgcolor=document.getElementById('row').style.backgroundColor='#55555b';
		bgcolor='#55555b';
	}
	else bgcolor='#44444b';
	//s=s.replace(/[\r\n]/g,''); // вырезаем все символы перевода строк
	s_new='<tr><td class="insert"><img src="\/engine/images/tr.gif" height="1" border="0"><\/td><\/tr><tr id="row" number="['+c+']" bgcolor="'+bgcolor+'"><td><input class="checkbox" type="checkbox" name="ID[]" value=""><\/td><td class="insert"><img src="\/engine\/images\/tr.gif" width="1" alt="" border="0"><\/td><td ><nobr></nobr><input type="hidden" name="FieldID[]" value=""><\/td><td class="insert"><img src="\/engine\/images\/tr.gif" width="1" alt="" border="0"><\/td><td ><input class="text" type="text" name="SID[]" size="3" maxlength="3" value=""><\/td><td class="insert" ><img src="\/engine\/images\/tr.gif" width="1" alt="" border="0"><\/td><td ><input class="text" type="text" name="VAR[]" size="16" maxlength="32" value=""><\/td><td class="insert" ><img src="\/engine\/images\/tr.gif" width="1" alt="" border="0"><\/td><td ><input class="text" type="text" name="FieldName[]" size="32" maxlength="128" value=""><\/td><td class="insert"><img src="\/engine\/images\/tr.gif" width="1" alt="" border="0"><\/td><td ><select class="opinion" name="Type[]" value=""><optgroup label="Выберете тип..."><option class="opinion">Text<\/option><option class="opinion">Password<\/option><option class="opinion">Text Area<\/option><option class="opinion">Radio<\/option><option class="opinion">Checkbox<\/option><option class="opinion">Button<\/option><option class="opinion">Submit<\/option><option class="opinion">Reset<\/option><option class="opinion">Image<\/option><option class="opinion">File<\/option><option class="opinion">Captcha<\/option><option class="opinion">E-mail<\/option><\/optgroup><\/select><\/td><td class="insert"><img src="\/engine\/images\/tr.gif" width="1" alt="" border="0"><\/td><td ><input class="text" type="text" name="Width[]" size="3" maxlength="3" value=""> </td><td class="insert"><img src="\/engine\/images\/tr.gif" width="1" alt="" border="0"><\/td><td ><input class="text" type="text" name="Height[]" size="3" maxlength="3" value=""><\/td><td class="insert"><img src="\/engine\/images\/tr.gif" width="1" alt="" border="0"><\/td><td ><input class="text" type="text" name="Length[]" size="3" maxlength="3" value=""><\/td><td class="insert"><img src="\/engine\/images\/tr.gif" width="1" alt="" border="0"><\/td><td ><input class="checkbox" type="checkbox" name="Req[]" value=""><\/td><td class="insert"><img src="\/engine/images\/tr.gif" width="1" alt="" border="0"><\/td><td id="menu" ><a href="#" onclick="return rmline(0);"><nobr>Удалить '+c+'<\/nobr><\/a><\/td><\/tr>';
	//s_new=s_new.replace(/[\r\n]/g,'');
	document.getElementById('form_fields').innerHTML=s+s_new;
	
				// возвращаем результат на место исходной таблицы
	//return false; // чтобы не происходил переход по ссылке
}
function rmfield(q)
{
	if (c==0) return false; else c--;
				// если раскомментировать предыдущую строчку, то последний (единственный) 
				// элемент удалить будет нельзя.
	s=document.getElementById('form_fields').innerHTML;
	s=s.replace(/[\r\n]/g,'');
	re=new RegExp('<tr id="?row"? number="?\\['+q+'.*?<\\/tr>','gi');
				// это регулярное выражение позволяет выделить строку таблицы с заданным номером
	s=s.replace(re,'');
				// заменяем её на пустое место
	document.getElementById('form_fields').innerHTML=s;
	return false;
}

//	Методы класса XMLHttpRequest
//	abort()	отменяет текущий запрос
//	getAllResponseHeaders()	возвращает полный список HTTP-заголовков в виде строки
//	getResponseHeader(headerName)	возвращает значение указанного заголовка
//	open(method, URL, async, userName, password)	определяет метод, URL и другие опциональные параметры запроса;
//	параметр async определяет, происходит ли работа в асинхронном режиме
//	send(content)	отправляет запрос на сервер
//	setRequestHeader(label, value)	добавляет HTTP-заголовок к запросу
//	overrideMimeType(mimeType)	позволяет указать mime-type документа, если сервер его не передал или передал неправильно.
//	Внимание: метод отсутствует в Internet Explorer!

//	Свойства класса XMLHttpRequest
//	onreadystatechange	обработчик события, которое происходит при каждой смене состояния объекта
//	readyState	возвращает текущее состояние объекта (0 — неинициализирован, 1 — открыт, 2 — отправка данных, 3 — получение данных и 4 — данные загружены)
//	responseText	текст ответа на запрос
//	responseXML	текст ответа на запрос в виде XML, который затем может быть распарсен посредством DOM
//	status	возвращает HTTP-статус в виде числа (404 — «Not Found», 200 — «OK» и т. д.)
//	statusText	возвращает статус в виде строки («Not Found», «OK» и т. д.)

//	Принцип работы следующий: 
//	скрипт состоит из двух частей
//	клиентская часть: исполняется на стороне клиента, пишется на JavaScript
//	серверная часть: исполняется на сервере, может быть написана на любом языке программирования, понимающем GET/POST запросы

//	Этапы написания клиентской части:
//	сбор и подготовка информации для отправки запроса на сервер;
//	создание экземпляра объекта XMLHttpRequest;
//	установка для него функции обработчика события onreadystatechange. 
//	Это событие наступает при каждой смене состояния объекта XMLHttpRequest (см. таблицу внизу).
//	Данная функция по сути является основной частью скрипта, поскольку именно в ней происходит обработка ответа сервера;
//	открытие соединения с указанием типа запроса (GET или POST), URL серверной части, флага асинхронного режима и имени и пароля пользователя (если необходимо);
//	непосредственно отправка запроса;
//	обработка ответа серверной части.

/*	Кодирование данных (простого ассоциативного массива вида { name : value, ...} в
	URL-escaped строку (кодировка UTF-8)
*/
/*function urlEncodeData(data)
{
    var query = [];
    if (data instanceof Object) {
        for (var k in data) {
            query.push(encodeURIComponent(k) + "=" + encodeURIComponent(data[k]));
        }
        return query.join('&');
    } else {
        return encodeURIComponent(data);
    }
}*/

function loadXMLDoc(url) 
{
	var req = false;
	var i=0;
	
	var send_post=''+document.Form.elements[i].name+'='+document.Form.elements[i].value;
	for(i=1; i<document.Form.elements.length; i++)
	{
		send_post += '&'+document.Form.elements[i].name+'='+document.Form.elements[i].value;
	}
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest && !(window.ActiveXObject)) 
    {
    	try 
    	{
			req = new XMLHttpRequest();
		} 
		catch(e) 
		{
			req = false;
		}
    // branch for IE/Windows ActiveX version
    } 
    else if(window.ActiveXObject) 
    {
       	try 
       	{
        	req = new ActiveXObject('Msxml2.XMLHTTP');
      	} 
      	catch(e) 
      	{
        	try 
        	{
          		req = new ActiveXObject('Microsoft.XMLHTTP');
        	} 
        	catch(e) 
        	{
          		req = false;
        	}
		}
    }
	if(req) 
	{
		req.open('POST', url, true);
		req.onreadystatechange = function()
		{
			if (req.readyState == 4)
			{
				if (req.status == 200)
				{
					//alert(req.statusText);
					//alert(req.responseText);
					//setBarWidth('Bar', 391, 0, 100, 0);
					//document.Form.name.value = 0;
					//alert("OK");
					//alert(send_post);
					for(i=0; i<=100; i+=1) 
					{
						setBarWidth('Bar', 391, 0, 100, i);
						//setTimeout(document.Form.name.value = i, 50);
					}
				}
				else 
				{
					alert('There was a problem retrieving the XML data:\n'+req.statusText);
				}
    		}
		};
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req.send(send_post);
		alert(send_post);
	}
	else alert("Браузер не поддерживает AJAX");
}

function jsUpload(upload_field)
{
    // this is just an example of checking file extensions
    // if you do not need extension checking, remove 
    // everything down to line
    // upload_field.form.submit();

    //	var re_text = /\.txt|\.xml|\.zip/i;
    var filename = upload_field.value;

    /* Checking file type */
    /*if (filename.search(re_text) == -1)
    {
        alert("File does not have text(txt, xml, zip) extension");
        upload_field.form.reset();
        return false;
    }*///

    upload_field.form.submit();
    document.getElementById('upload_status').value = "uploading file...";
    upload_field.disabled = true;
    return true;
}
