function sel(container, tag, id)
{
	obj = document.getElementById(container);
	elements = obj.getElementsByTagName(tag);
	for (i = 0; i < elements.length; i++) {
	  if (elements[i].className == 'highlightedNodeItem')  {
	    elements[i].className = '';
	  }
	}
	document.getElementById(id).className = 'highlightedNodeItem';
	void(0);
}
function sel_(container, tag, id)
{
	obj = document.getElementById(container);
	elements = obj.getElementsByTagName(tag);
	for (i = 0; i < elements.length; i++) {
	  if (elements[i].className == 'item act')  {
	    elements[i].className = 'item';
	  }
	}
	document.getElementById(id).className = 'item act';
	void(0);
}
function sel1_(container, tag, id)
{
	obj = document.getElementById(container);
	elements = obj.getElementsByTagName(tag);
	for (i = 0; i < elements.length; i++) {
	  if (elements[i].className == 'nbutton')  {
	    elements[i].className = 'button';
	  }
	}
	document.getElementById(id).className = 'nbutton';
	void(0);
}
function loadtoiframe(site)
{
	document.getElementById('iframecontentmenu').src = 'lib/operators/index.php?site='+site;
}
function loadsection(url)
{
	document.getElementById('iframecontentmenu').src = 'lib/operators/index.php?'+url;
}
function sitemenu(id,site,layout)
{
	obj1 = document.getElementById('menu'+id);
	obj2 = document.getElementById('nav'+id);
	if(obj1.style.display=='none')
	{
		obj1.style.display='';
		obj2.src='../images/minus.gif';
		//query('menu.php?site='+site+'&type=build&parent='+id+'&layout='+layout,0,'menu'+id);
	}
	else
	{
		obj1.style.display='none';
		obj2.src='../images/plus.gif';
	}
}
function dropLoad()
{
	treeObj = new JSDragDropTree();
	treeObj.setTreeId('dhtmlgoodies_tree2');
	var depth = document.getElementById('depth').value;
	if(depth!=0) treeObj.setMaximumDepth(depth);
	else  treeObj.setMaximumDepth();
	treeObj.setMessageMaximumDepthReached('Maximum depth reached');
	treeObj.initTree();treeObj.expandAll();
}
function saveForm(url, formname, type, divs)
{
	vars = "";
	for(i=0;i<document.forms[formname].length;i++)
	{
		name=document.forms[formname].elements[i].name;
		val=document.forms[formname].elements[i].value;
		type=document.forms[formname].elements[i].type;
		if(name!="" && val!="" && type!='checkbox' && type!='radio')
		{
			vars+="&"+name+"="+val;
		}
		if(name!="" &&  type=='checkbox' && type!='radio' && (document.forms[formname].elements[i].checked==true))
		{
			vars+="&"+name+"="+document.forms[formname].elements[i].checked;
		}
		if(name!="" &&  type!='checkbox' && type=='radio' && (document.forms[formname].elements[i].checked==true))
		{
			vars+="&"+name+"="+document.forms[formname].elements[i].value;
		}
	}
	query(url+vars, type, divs);
}
function openImageBrowser(id)
{					  
	window.open('/volexsm/fckeditor/editor/filemanager/browser/default/browser.php?id='+id+'&Type=Image&Connector=/volexsm/fckeditor/editor/filemanager/connectors/php/connector.php','','width=800px, height=600px');
}
function openFlashBrowser(id)
{
	window.open('/volexsm/fckeditor/editor/filemanager/browser/default/browser.php?id='+id+'&Type=Flash&Connector=/volexsm/fckeditor/editor/filemanager/connectors/php/connector.php','','width=800px, height=600px');
}
function openFileBrowser(id)
{
	window.open('/volexsm/fckeditor/editor/filemanager/browser/default/browser.php?id='+id+'&Type=File&Connector=/volexsm/fckeditor/editor/filemanager/connectors/php/connector.php','','width=800px, height=600px');
}
function trim(s)
{
     ns = new String(s);
     while (ns.substring(0,1) == ' ') {
          ns = ns.substring(1,ns.length);
     }
     while (ns.substring(ns.length-1,ns.length) == ' ') {
          ns = ns.substring(0,ns.length-1);
     }
     return ns;
}
function formCheck(f) {

	var isNatPattern = "^[0-9]+$";
	var isNat = new RegExp(isNatPattern);
	var isIntPattern = "^(\-)?[0-9]+$";
	var isInt = new RegExp(isIntPattern);
	var isIdPattern = "^[1-9]([0-9]+)?$";
	var isId = new RegExp(isIdPattern);
	var isFloatPattern = "^[\-\+]?[0-9]+(\.[0-9]+)?$";
	var isFloat = new RegExp(isFloatPattern);

	var errors = '';

	var size = f.elements.length;
	for(i=0; i<size; i++) {
		var inpt = f.elements[i];
		var is_parseable = (inpt.getAttribute('v_parse') == 'yes') ? true : false;
		if (is_parseable) {
			var fieldname = inpt.getAttribute('v_title');
			var fieldId = inpt.getAttribute('id');
			var fieldreq = (inpt.getAttribute('required') == 'y') ? true : false;
			var fieldval = inpt.value;
			var fieldtype = inpt.getAttribute('v_type');
			var fieldmin = inpt.getAttribute('v_min');
			var fieldmax = inpt.getAttribute('v_max');

			switch(fieldtype) {

				/* парсим строки */
				case 'str':
					fieldmin = ( fieldmin && isNat.test(fieldmin) ) ? parseInt(fieldmin) : false;
					fieldmax = ( fieldmax && isNat.test(fieldmax) ) ? parseInt(fieldmax) : false;

					if ( fieldreq && fieldval == '' ) {
						errors += 'Поле "'+fieldname+'" обязательно для заполнения!\r\n'
					} else if ( fieldmin !== false && fieldval.length < fieldmin ) {
						errors += 'Значение поля "'+fieldname+'" должно содержать не менee '+fieldmin+' cимволов!\r\n';
					} else if ( fieldval !== false && fieldmax !== false && fieldval.length > fieldmax ) {
						errors += 'Значение поля "'+fieldname+'" должно содержать не более '+fieldmax+' cимволов!\r\n';
					}
					break;

				/* парсим целые числа */
				case 'int':
					fieldmin = ( fieldmin && isInt.test(fieldmin.substr(2)) ) ? parseInt(fieldmin.substr(2)) : false;
					var fieldminmode = ( fieldmin.length() > 1 ) ? fieldmin.substr(1,1) : 'e';
					fieldmax = ( fieldmax && isInt.test(fieldmax.substr(2)) ) ? parseInt(fieldmax.substr(2)) : false;
					var fieldmaxmode = ( fieldmax.length() > 1 ) ? fieldmax.substr(1,1) : 'e';

					if ( fieldreq && fieldval == '' ) {
						errors += 'Поле "'+fieldname+'" обязательно для заполнения!\r\n';
					} else if ( fieldval != '' && !isInt.test(fieldval) ) {
						errors += 'Некорректно заполнено поле "'+fieldname+'"!\r\n';
					} else if ( isInt.test(fieldval) && fieldmin !== false ) {
						if (fieldminmode == 't' && parseInt(fieldval) <= fieldmin ) {
							errors += 'Значение поля "'+fieldname+'" должно быть больше '+fieldmin+'!\r\n';
						} else if (fieldminmode == 'e' && parseInt(fieldval) < fieldmin ) {
							errors += 'Значение поля "'+fieldname+'" должно быть не меньше '+fieldmin+'!\r\n';
						}
					} else if ( isInt.test(fieldval) && fieldmax !== false && parseInt(fieldval) > fieldmax ) {
						if (fieldminmode == 't' && parseInt(fieldval) >= fieldmax ) {
							errors += 'Значение поля "'+fieldname+'" должно быть меньше '+fieldmax+'!\r\n';
						} else if (fieldminmode == 'e' && parseInt(fieldval) > fieldmax ) {
							errors += 'Значение поля "'+fieldname+'" должно быть не больше '+fieldmax+'!\r\n';
						}
					}
					break;

				/* парсим ID-шники числа */
				case 'id':
					fieldmin = ( fieldmin && isInt.test(fieldmin.substr(2)) ) ? parseInt(fieldmin.substr(2)) : 0;
					var fieldminmode = ( fieldmin.length() > 1 ) ? fieldmin.substr(1,1) : 't';
					fieldmax = ( fieldmax && isInt.test(fieldmax.substr(2)) ) ? parseInt(fieldmax.substr(2)) : false;
					var fieldmaxmode = ( fieldmax.length() > 1 ) ? fieldmax.substr(1,1) : 'e';

					if ( fieldreq && ( (fieldval == '') || (fieldval == '0') )) {
						errors += 'Поле "'+fieldname+'" обязательно для заполнения!\r\n';
					} else if ( fieldval != '' &&  !isId.test(fieldval) ) {
						errors += 'Некорректно заполнено поле "'+fieldname+'"!\r\n';
					} else if ( isId.test(fieldval) && fieldmin !== false ) {
						if (fieldminmode == 't' && parseInt(fieldval) <= fieldmin ) {
							errors += 'Значение поля "'+fieldname+'" должно быть больше '+fieldmin+'!\r\n';
						} else if (fieldminmode == 'e' && parseInt(fieldval) < fieldmin ) {
							errors += 'Значение поля "'+fieldname+'" должно быть не меньше '+fieldmin+'!\r\n';
						}
					} else if ( isId.test(fieldval) && fieldmax !== false ) {
						if (fieldminmode == 't' && parseInt(fieldval) >= fieldmax ) {
							errors += 'Значение поля "'+fieldname+'" должно быть меньше '+fieldmax+'!\r\n';
						} else if (fieldminmode == 'e' && parseInt(fieldval) > fieldmax ) {
							errors += 'Значение поля "'+fieldname+'" должно быть не больше '+fieldmax+'!\r\n';
						}
					}
					break;

				/* парсим дробные числа */
				case 'flt':
					fieldmin = ( fieldmin && isFloat.test(fieldmin.substr(2)) ) ? parseFloat(fieldmin.substr(2)) : false;
					var fieldminmode = ( fieldmin.length() > 1 ) ? fieldmin.substr(1,1) : 'e';
					fieldmax = ( fieldmax && isFloat.test(fieldmax.substr(2)) ) ? parseFloat(fieldmax.substr(2)) : false;
					var fieldmaxmode = ( fieldmax.length() > 1 ) ? fieldmax.substr(1,1) : 'e';

					if ( fieldreq && fieldval == '' ) {
						errors += 'Поле "'+fieldname+'" обязательно для заполнения!\r\n';
					} else if ( fieldval != '' &&  !isFloat.test(fieldval) ) {
						errors += 'Некорректно заполнено поле "'+fieldname+'"!\r\n';
					} else if ( isFloat.test(fieldval) && fieldmin !== false ) {
						if (fieldminmode == 't' && parseFloat(fieldval) <= fieldmin ) {
							errors += 'Значение поля "'+fieldname+'" должно быть больше '+fieldmin+'!\r\n';
						} else if (fieldminmode == 'e' && parseFloat(fieldval) < fieldmin ) {
							errors += 'Значение поля "'+fieldname+'" должно быть не меньше '+fieldmin+'!\r\n';
						}
					} else if ( isFloat.test(fieldval) && fieldmax !== false ) {
						if (fieldminmode == 't' && parseFloat(fieldval) >= fieldmax ) {
							errors += 'Значение поля "'+fieldname+'" должно быть меньше '+fieldmax+'!\r\n';
						} else if (fieldminmode == 'e' && parseFloat(fieldval) > fieldmax ) {
							errors += 'Значение поля "'+fieldname+'" должно быть не больше '+fieldmax+'!\r\n';
						}
					}
					break;
			}
		}
	}

	if (errors != '') {
		alert(errors);
		return false;
	} else {
		return true;
	}
}
function setChecked(id, flag)
{
	var elem = document.getElementById(id).getElementsByTagName('INPUT');
	var all = elem.length;
	for(i=0; i < all; i++) {
		if(elem[i].type == 'checkbox') elem[i].checked = flag;
	}
}
function generatePassword(length) {
     var chars = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","9");     
     var len = chars.length-1;     
     var str = '';
     for (var i=0; i<length; i++) {
          index = Math.floor(Math.random()*len);
          chr = new String(chars[index]);
          if ( Math.random() > 0.5 ) chr = chr.toUpperCase();
          str += chr;
     }     
     return str;
          
}
