var base = "";

function SetBase(b) {
	base = b;
}
//===========================================
function check(content) {
//===========================================
//  Проверка заполненности полей формы
//===========================================
	check_fld = new Array ();
	if(content=="order") {
		check_fld=new Array ("person");
		check_hdr=new Array ("ФИО");
	}
	if(content=="price") {
		check_fld=new Array ("cname","cphone","cmail","сaddress");
		check_hdr=new Array ("Контактное лицо","Телефон","Email","Адрес");
	}
  // проверка заполнения полей формы 
	for ( i = 0; i <= check_fld.length-1; i++) {
		if (isEmpty(document.getElementById(check_fld[i]).value)) {
			alert('Не заполнено обязательное поле "'+check_hdr[i]+'".');
			document.getElementById(check_fld[i]).focus();
			return false;
		}
	}
	return true;
}

//===========================================
//  Подсветка поиска
//===========================================
function searchWithinNode(node, te, len){
//===========================================
	var pos, skip, spannode, middlebit, endbit, middleclone;
	skip=0;
	if( node.nodeType==3 ){
		pos=node.data.toUpperCase().indexOf(te);
		if(pos>=0){
			spannode=document.createElement("SPAN");
			//spannode.style.backgroundColor="#7AA1D0";
			spannode.style.backgroundColor="#8B605A";
			spannode.style.color="white";
			middlebit=node.splitText(pos);
			endbit=middlebit.splitText(len);
			middleclone=middlebit.cloneNode(true);
			spannode.appendChild(middleclone);
			middlebit.parentNode.replaceChild(spannode,middlebit);
			skip=1;
		}
	}else if( node.nodeType==1&& node.childNodes && node.tagName.toUpperCase()!="SCRIPT" && node.tagName.toUpperCase!="STYLE"){
		for (var child=0; child < node.childNodes.length; ++child){
			child=child+searchWithinNode(node.childNodes[child], te, len);
		}
	}
	return skip;
}

//===========================================
function ElementClick(id,folder,server,refresh){
//===========================================
// Установка Cookie для раскрытия подразделов {0,1}
// 0 - цепочка закрыта
// 1 - цепочка открыта
//===========================================
	var classFix = (document.all)?"className":"class";
	var oLink = document.getElementById("childs_"+id);	
	var oSign = document.getElementById("sign_"+id);	
	var str;
	var expiryDate = new Date();
	expiryDate.setTime(expiryDate.getTime() + 24*60*60*1000);
	setCookie("element", 1,0,folder,server);
	var curValue = 0;
	if (getCookie("element["+id+"]")) curValue=getCookie("element["+id+"]");
	setCookie("element["+id+"]", 1 - curValue,expiryDate.toGMTString(),folder,server);
	if (refresh) return true;
	var style = "";
	if (oLink) style = oLink.getAttribute(classFix);
	if(getCookie("element["+id+"]")==1){
		style = style.replace("hidden","in");
		if(oLink){oLink.setAttribute(classFix,style);}
		if(oSign){
			str=oSign.innerHTML;
			str=str.replace("+","-");
			str=str.replace("Раскрыть","Закрыть");
			oSign.innerHTML=str;
		}
	}else{
		style = style.replace("in","hidden");
		if(oLink){oLink.setAttribute(classFix,style);}
		if(oSign){
			str=oSign.innerHTML;
			str=str.replace("-","+");
			str=str.replace("Закрыть","Раскрыть");
			oSign.innerHTML=str;
		}
	}
	return false;
} 

/*
Функция установки значения cookie
name - имя cookie
value - значение cookie
expires - дата окончания действия cookie (по умолчанию - до конца сессии)
path - путь, для которого cookie действительно (по умолчанию - документ, в котором значение было установлено)
domain - домен, для которого cookie действительно (по умолчанию - домен, в котором значение было установлено)
secure - логическое значение, показывающее требуется ли защищенная передача значения cookie
*/
function setCookie (name, value, expires, path, domain, secure) {
      document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}


/*
Функция чтения значения cookie
Возвращает установленное значение или пустую строку, если cookie не существует
name - имя считываемого cookie
*/
function getCookie(name) {
        var prefix = name + "="
        var cookieStartIndex = document.cookie.indexOf(prefix)
        if (cookieStartIndex == -1)
                return null
        var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
        if (cookieEndIndex == -1)
                cookieEndIndex = document.cookie.length
        return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}

/*
Функция удаления значения cookie
Принцип работы этой функции заключается в том, что cookie устанавливается с заведомо устаревшим параметром expires, в данном случае 1 января 1970 года.
name - имя cookie
path - путь, для которого cookie действительно
domain - домен, для которого cookie действительно
*/
function deleteCookie(name, path, domain) {
        if (getCookie(name)) {
                document.cookie = name + "=" +
                ((path) ? "; path=" + path : "") +
                ((domain) ? "; domain=" + domain : "") +
                "; expires=Thu, 01-Jan-70 00:00:01 GMT"
        }
}


function CheckForm(form) {
    var Message = "Необходимо заполнить поля \n\n";
    var focus = null;
    var result = true;
    for (var i = 0; i < form.elements.length; i++) {
        if (form.elements[i].getAttribute("require") == "true") {
            var doc = document.getElementById(form.elements[i].name);
            var match = "";
            if(null != form.elements[i].getAttribute("match")) {
                match = form.elements[i].getAttribute("match");
            }
            if(!CheckValue(form.elements[i].value, match)) {
                if(focus == null) {
                      form.elements[i].focus();
                      focus = true;
                }
                Message += form.elements[i].getAttribute("info") + "\n";
                result = false;
           }
       }
    }
    if(!result) {
        alert(Message);
    }
    return result;
}


function CheckValue(Value, Match) {
    switch(Match) {
        case "email":
            if(!(Value.length>0&&Value.match(new RegExp("^[a-z0-9_]+@([a-z0-9_]+\.)+[a-z]+$","i")))){
                return false;
            }
            return true;
        break;

        case "kpp":
          if(Value.length!=9) return false;
          if(!Value.match(new RegExp("^[0-9]+$","i"))) {
              return false;
          }
          return true;
        break;

        case "zip":
          if(Value.length!=6) return false;
          if(!Value.match(new RegExp("^[0-9]+$","i"))) {
              return false;
          }
          return true;
        break;

        case "rs":
            if(Value.length < 20) {
                if(Value.match(new RegExp("^[0-9]+$", "i"))) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        break;

        case "phone":
            if(!Value.match(new RegExp("^[0-9 \(\)\+\-]+$","i"))) {
                return false;
            }
        return true
        break;

        case "digit":
            if(!Value.match(new RegExp("^[0-9]+$","i"))) {
                return false;
            } else {
                return true;
            }
        break;

        case "inn":
            var checkValueArray = Value.split("");
            if(checkValueArray.length==10) {
                cn = chekSum(checkValueArray, [2,4,10,3,5,9,4,6,8,0]);
                if(cn!=checkValueArray[9]){
                    return false;
                }
            } else if(checkValueArray.length==12) {
                cn1 = chekSum(checkValueArray, [7,2,4,10,3,5,9,4,6,8,0]);
                cn2 = chekSum(checkValueArray, [3,7,2,4,10,3,5,9,4,6,8,0]);
                if(cn1!=checkValueArray[10]&&cn2!=checkValueArray[11]){
                    return false;
                }
            } else {
              return false;
            }
            return true;
        break;

        default:
            if(Value == "") {
                return false;
            } else {
                return true;
            }
        break;
    }
}

function chekSum(checkValue,map){
  out = 0;
  for(c=0;c<map.length;c++){out+=map[c]*checkValue[c];}
  return ((cn=out%11)>9)?cn%10:cn;
}

