// ie5.0 compartible
function getElementsByTagAndClass(src, tagName, className) {
	var res = new Object();
	res.length = 0;
	var els = src.getElementsByTagName(tagName);
	for(var i=0; i<els.length; i++) {
		var classes = els[i].className.split(" ");
		for(var j=0; j<classes.length; j++)
			if(classes[j]==className)
				res[res.length++] = els[i];
	}
	return res;
}

// ie5.0 compartible
function add(str,value){
    var a=str.split(' ');
	for(var i=0; i<a.length; i++) if(a[i]==value) return str;
	return str+' '+value;
}
// ie5.0 compartible
function del(str,value){
	var a=str.split(' ');
	for(var i=0; i<a.length; i++) if(a[i]==value) a[i]='';
	return a.join(' ');
}

// ie5.0 compartible
function doOverNew() {
	this.className=add(this.className, 'over');
}
// ie5.0 compartible
function doOutNew() {
	this.className=del(this.className, 'over');
}




Array.prototype.containsValue = function(e) {
	for(var i=this.length-1; i>=0; i--)
		if (e==this[i]) return true;
	return false;
}
Function.prototype.bind = function() {
    var __method = this, args = arguments, object = args[0];
    return function() {
        return __method.apply(object, args);
    }
}
function filter(fn, arr) {
    var res = [];
    for(var i=0, length=arr.length; i<length; i++)
        if(fn(arr[i])) res.push(arr[i]);
    return res;
}
function map(fn, arr) {
    var res = [];
    for(var i=0, length=arr.length; i<length; i++)
        res.push(fn(arr[i]));
    return res;
}

function cmSelectFirstInput(){
	for(var i=0; i<document.forms.length; i++){
		var form=document.forms[i];
		for(var j=0; j<form.elements.length; j++){
			var el=form.elements[j];
			var type=el.getAttribute('type');
			if((type=='text')||(type=='password')){
				el.focus();
				return;
			}
		}
	}
}
addOnLoad(cmSelectFirstInput);

function doGo(obj){
	while(obj&&!obj.getAttribute('href')) {obj=obj.parentNode;}
	if(obj) document.location=obj.getAttribute('href');
	return;
}
function doOver(obj) { obj.className=add(obj.className,'over')   }
function doOut(obj)  { obj.className=del(obj.className,'over')   }
function hide(obj)   { obj.className=add(obj.className,'hidden') }
function show(obj)   { obj.className=del(obj.className,'hidden') }

selObj=null;
function doSelect(obj){
    if(selObj!=null) selObj.className=del(selObj.className,'selected');
    obj.className=add(obj.className,'selected');
    selObj=obj;
}

function doTimer(delta, onDisplay, onExpired){
    if(delta<=0) onExpired(); else{
        onDisplay(delta);
        if(delta>60) setTimeout("doTimer("+(delta-10)+","+onDisplay+","+onExpired+")",10000);
                else setTimeout("doTimer("+(delta-01)+","+onDisplay+","+onExpired+")",1000);
    }
}
function displayTimeout(delta){
    var sec=delta%60;
    var min=(delta-sec)/60;
    if(sec<10) sec='0'+sec;
    window.status="До окончания сессии осталось: "+min+':'+sec;
}
function kill()        { document.location='index.php?action=exit'; }
function runTimer(sec) { if(sec!=0) doTimer(sec,displayTimeout,kill); }

function trim(s){
    var res='';
    for(var i=0;i<s.length;i++) if(s.charAt(i)!=' ') res+=s.charAt(i);
    return res;
}

function checkInt(s, minValue, maxValue){
    for(var i=0;i<s.length;i++)
        if((s.charAt(i)<'0')||(s.charAt(i)>'9')) return false;
    var v=parseInt(s,10);
    if(isNaN(v)) return false;
    if((minValue!=null)&&(v<minValue)) return false;
    if((maxValue!=null)&&(v>maxValue)) return false;
    return true;
}

function checkCurrency(s){
	s=s.split(' ').join(''); // Выкидываем пробелы
    var a=s.split('.');
    return (a.length>0)&&(a.length<=2)&&checkInt(a[0])&&
        ((a.length==1)||(a[1].length<=2)&&checkInt(a[1])&&(parseInt(a[1])<=99));
}

function checkDate(s){
    var a=s.split('.');
    return (a.length==3)&&
        (a[0].length==2)&&(a[1].length==2)&&((a[2].length==2)||(a[2].length==4))&&
        checkInt(a[0],1,31)&&checkInt(a[1],1,12)&&checkInt(a[2],1,3000);
}

function checkForm(form){
    var s1='', s2='', firstBad=false;
    for(var i=0;i<form.elements.length;i++){
        var e=form.elements[i];
        var name=e.getAttribute("displayName");
        if(!name) name=e.name;
        if(trim(e.value)==''){
        	if(e.getAttribute("required")==1){
        		s1+='  '+name+'\n';
        		if(firstBad==false) firstBad=e;
        	}
        }
        else if((e.valueType=="int")&&!checkInt(e.value,e.getAttribute("minValue"),e.getAttribute("maxValue"))
            ||(e.valueType=="currency")&&!checkCurrency(e.value)
            ||(e.valueType=="date")&&!checkDate(e.value)){
            	s2+='  '+name+'\n';
            	if(firstBad==false) firstBad=e;
        }
    }
    if(s1!='') s1='Не заполнены поля:\n'+s1;
    if(s2!='') s2='Не корректно заполнены поля:\n'+s2;
    if(s1+s2!=''){
    	alert(s1+'\n'+s2);
    	firstBad.focus();
    	return false;
    } else return true;
}

function submitAction(action){
    var form=document.forms["actionForm"];
    form.elements["action"].value=action;
    form.submit();
}
function submitIndex(action,index){
    var form=document.forms["indexForm"];
    form.elements["action"].value=action;
    form.elements["index"].value=index;
    form.submit();
}

function updateBinom(s) {while(s.length<6)s='0'+s; return s;}

function init() {}
