function checkTimeDigits()
{
	window.event.returnValue = !((event.keyCode < 48) || (event.keyCode > 57));
}

function checkTime(obj, max)
{
	var val = obj.value;
	if (parseInt(val, 10) > max) {
		obj.value = obj.oldvalue;
	} else {
		var nval = "";
		var i = 0;
		for (i=0; i < val.length; i++) {
			if (val.charAt(i) == '0') {
				nval = val.substr(1);
			} else {
				break;
			}
		}
		if (nval == "") nval = val;
		if (nval.length == 1) nval = '0' + nval;

		if (nval != val) {
			obj.oldvalue = nval;
			obj.value = nval;
		}
	}
}

function CreateDateTimeField(field_name, isDate, isTime, value)
{
	var doc = document;
	var dn = new Date();
	var y = dn.getYear();
	if (y < 1900) y+=1900;

	if (isDate == 'yes') {
		var cdate = value.substr(0, value.indexOf(" ")).split(".");
		if (cdate.length == 3) {
			dn.setDate(cdate[0]);
			dn.setMonth(cdate[1] - 1);
			y = cdate[2];
		}

		CreateDateField(field_name, dn.getDate(), dn.getMonth() + 1, y)
	}

	if (isTime == 'yes') {
		var ctime = value.substr(value.indexOf(" "), value.length).split(":");
		if (ctime.length == 3) {
			dn.setHours(ctime[0]);
			dn.setMinutes(ctime[1]);
			dn.setSeconds(ctime[2]);
		}

		doc.write('&nbsp;&nbsp;<nowrap>');
		doc.write('<input type="text" oldvalue="'  + dn.getHours() + '" onkeyup="checkTime(this, 23)" onkeypress="checkTimeDigits()" style="width: 30px; text-align: center;" name="' + field_name + '_hrs" id="' + field_name + '_hrs" size="2" maxlength="3" value="' + dn.getHours() + '" />:');
		doc.write('<input type="text" oldvalue="'  + dn.getMinutes() + '" onkeyup="checkTime(this, 59)" onkeypress="checkTimeDigits()" style="width: 30px; text-align: center;" name="' + field_name + '_min" id="' + field_name + '_min" size="2" maxlength="3" value="' + dn.getMinutes() + '" />:');
		doc.write('<input type="text" oldvalue="'  + dn.getSeconds() + '" onkeyup="checkTime(this, 59)" onkeypress="checkTimeDigits()" style="width: 30px; text-align: center;" name="' + field_name + '_sec" id="' + field_name + '_sec" size="2" maxlength="3" value="' + dn.getSeconds() + '" /></nowrap>');

		checkTime(document.getElementById(field_name + '_hrs', 23));
		checkTime(document.getElementById(field_name + '_min', 59));
		checkTime(document.getElementById(field_name + '_sec', 59));
	}
}


function CreateDateField(field_name, d, m, y)
{
	var doc, i, months, today;

	doc = document;

	today = new Date();
	if (d == 0)	d = today.getDate();
	if (m == 0)	m = today.getMonth() + 1;
	if (y == 0)	y = today.getYear();
	if (y < 1900) y+=1900;


	months = Array("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");

	doc.write("<select name='" + field_name + "_d'>");
	for (i=1; i<=31; i++)
	{
		doc.write("<option value='" + i + "'" + ((i==d)?" selected":"") + ">" + i + "</option>");
	}
	doc.write("</select>\n");

	doc.write("<select name='" + field_name + "_m'>");
	for (i=1; i<=12; i++)
	{
		doc.write("<option value='" + i + "'" + ((i==m)?" selected":"") + ">" + months[i-1] + "</option>");
	}
	doc.write("</select>\n");

	doc.write("<input type='text' class='pole' name='" + field_name + "_y' size='5' maxlength='4' style='width:55px; text-align: center;' value='" + ((y > 0) ? y : "") + "' />\n");

}

function SetSelectedValue(field_name, field_value, default_value) {
	var F, i, n, field;

	F = document.forms.element;

	field = F.elements[field_name].options;
	n = field.length;
	for (i=0; i<n; i++) {
		if (field[i].value == field_value) {
			field[i].selected = true;
			return;
		}
	}

	for (i=0; i<n; i++) {
		if (field[i].value == default_value) {
			field[i].selected = true;
			return;
		}
	}
}


function SetCheckedValue(field_name, field_value, default_value) {
	var F, i, n, field;

	F = document.forms.element;

	field = F.elements[field_name];
	if (field.length) {
		n = field.length;
		for (i=0; i<n; i++) {
			if (field[i].value == field_value) {
				field[i].checked = true;
				return;
			}
		}

		for (i=0; i<n; i++) {
			if (field[i].value == default_value) {
				field[i].checked = true;
				return;
			}
		}
	}
	else
	{
		if (field.value == field_value)	{
			field.checked = true;
			return;
		}

		if (field.value == default_value) {
			field.checked = true;
			return;
		}
	}
}


function OpenEditorWindow(objField)	{
	WindowOpen("html_field_edit.asp?field_name=" + objField.name + "&rnd=" + Math.round(Math.random()*10000), "_blank", 600, 600);
}



// Fields of type "LINKS"
function AddDivs(name, div_id, sSelectID) {
	var args = new Array();
	var oSelect = document.getElementById(sSelectID);

	var w = 500;
	var h = 500;
	var left = (screen.width/2)-(w/2);
	var top = (screen.height/2)-(h/2);
	if(top < 0) top = 0;
	if(left < 0) left = 0;
	args = window.showModalDialog("/adm/catalog/select_tree.asp?" + name + "id=" + div_id + "&rnd=" + Math.round(Math.random()*10000), args, "dialogWidth: " + w + "px; dialogHeight: " + h + "px; dialogLeft: " + left + "px; dialogTop: " + top + "px;");

	if (args) {	// в версии IE8 это не работает
		for (var j = 0; j < args.length; j++) {
			var o = document.createElement("option");
			o.selected = true;
			o.value=name + "_" + args[j++];
			o.text = args[j];
			oSelect.options.add(o);
		}
	}

	for (var i=0; i < oSelect.options.length; i++) {
		oSelect.options[i].selected = true;
	}

	return false;
}

function DelDivs(sSelectID)
{

	var i, j;
	var iCount = 0;
	var oSelect = document.getElementById(sSelectID);

	for (i = 0; i < oSelect.options.length; i++)
		if (oSelect.options[i].selected == true)
			iCount++;

	for (i = 0; i < iCount; i++)
		for (j = 0; j < oSelect.options.length; j++)
			if (oSelect.options[j].selected == true)
				oSelect.removeChild(oSelect.options[j]);

	return false;
}



// Для Оперы и ФФ, они не поддерживают метод selectNode и selectSingleNode

if( document.implementation.hasFeature("XPath", "3.0") ) // check for XPath implementation
{
   // prototying the XMLDocument
   XMLDocument.prototype.selectNodes = function(cXPathString, xNode)
   {
      if( !xNode ) { xNode = this; }
      var oNSResolver = this.createNSResolver(this.documentElement)
      var aItems = this.evaluate(cXPathString, xNode, oNSResolver,
                   XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
      var aResult = [];
      for( var i = 0; i < aItems.snapshotLength; i++)
      {
         aResult[i] =  aItems.snapshotItem(i);
      }
      return aResult;
   }

   // prototying the Element
   Element.prototype.selectNodes = function(cXPathString)
   {
      if(this.ownerDocument.selectNodes)
      {
         return this.ownerDocument.selectNodes(cXPathString, this);
      }
      else{throw "For XML Elements Only";}
   }

   // prototying the XMLDocument
   XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode)
   {
      if( !xNode ) { xNode = this; }
      var xItems = this.selectNodes(cXPathString, xNode);
      if( xItems.length > 0 )
      {
         return xItems[0];
      }
      else
      {
         return null;
      }
   }

   // prototying the Element
   Element.prototype.selectSingleNode = function(cXPathString)
   {
      if(this.ownerDocument.selectSingleNode)
      {
         return this.ownerDocument.selectSingleNode(cXPathString, this);
      }
      else{throw "For XML Elements Only";}
   }


	// Emulates IE's xml property. Gives an XML serialization of the DOM Object
    XMLDocument.prototype.__defineGetter__("xml", function ()
	{
		return (new XMLSerializer()).serializeToString(this);
	});
	// Emulates IE's xml property. Gives an XML serialization of the DOM Object
    Node.prototype.__defineGetter__("xml", function ()
	{
		return (new XMLSerializer()).serializeToString(this);
	});


}

