var chk_imgs = {
	'ok' : '<img src="/skin/img/chk_ok.png" border=0 width=20 height=20>',
	'err' : '<img src="/skin/img/chk_err.png" border=0 width=20 height=20>',
	'quest' : '<img src="/skin/img/chk_quest.png" border=0 width=20 height=20>'
}

var dlTimer = null;
var wghtChk = '';
var chktype,fldname,fldval;
var required = new Array();
var minlength = new Array();

function doLinkCheck(){
	pelem = document.getElementById('fldcap_'+fldname);
	
	if(chktype == 'regpasskey' && fldval != '' && fldval.length < 8) {
		pelem.style.color = '#ff0000';
		document.getElementById('fldreq_'+fldname).innerHTML = chk_imgs['err'];
		fldval = '';
	}
	
	if(fldval != '') {
		var req = new JsHttpRequest();
		req.onreadystatechange = function (){
			if (req.readyState == 4){
				if (req.responseJS && req.responseJS.result != undefined) {
					if(req.responseJS.result == "ok") {
						pelem.style.color = '#000000';
						unique[fldname] = false;
					} else {
						pelem.style.color = '#ff0000';
						unique[fldname] = true;
					}
					document.getElementById('fldreq_'+fldname).innerHTML = chk_imgs[req.responseJS.result];
				}
			}
		}
		req.open(null, '/ajax.php', true);
		req.send({
			'chktype': chktype,
			'fldval': fldval
			});
	} else {
		pelem.style.color = '#ff0000';
		document.getElementById('fldreq_'+fldname).innerHTML = chk_imgs['err'];
	}
	removeLinkTimer();
}
	
function removeLinkTimer(){
	if (dlTimer) clearInterval(dlTimer);
	dlTimer = null;
}

function setLinkTimer(pchktype,pfldname,pfldval){
	chktype = pchktype;
	fldname = pfldname;
	fldval = pfldval;
	removeLinkTimer();
	dlTimer = setInterval(doLinkCheck, 1000);
	document.getElementById('fldreq_'+fldname).innerHTML = chk_imgs.quest;
}

function getField(formname,elname,i,subkey) {
	// get form element by name
	if(subkey >=0 && document.forms[formname].elements[elname+'['+i+']['+subkey+']']) {
		// for group of elements
		return document.forms[formname].elements[elname+'['+i+']['+subkey+']'];
	}
	if(subkey == 'none' && document.forms[formname].elements[elname+'['+i+'][]']) {
		// for group of elements
		return document.forms[formname].elements[elname+'['+i+'][]'];
	}
	if(document.forms[formname].elements[elname+'['+i+']']) {
		// for array-type element's name
		return document.forms[formname].elements[elname+'['+i+']'];
	} else if(document.forms[formname].elements[i]) {
		// for simple form element's name
		return document.forms[formname].elements[i];
	}
	return false;
}
	
function checkTextField(formname,elname,i) {
	// check text field
	el = getField(formname,elname,i,null);
	if(el && el.value != '') {
		// check for minimal length
		if(minlength[i] == undefined || (minlength[i] > 0 && el.value.length >= minlength[i] )) {
			return true;
		}
	}
	return false;
}

function checkSelectField(formname,elname,i) {
	// check select field
	el = getField(formname,elname,i,null);
	if(el && el.value != '') return true;
	return false;
}

function checkCheckboxField(formname,elname,i) {
	// check checkbox field
	el = getField(formname,elname,i,null);
	if(el && el.checked) return true;
	return false;
}

function checkRadioField(formname,elname,i) {
	// check radion-button field
	el = getField(formname,elname,i,null);
	if(el && el.length && el.length > 0) {
		for(var i = 0; i < el.length; i++)
			if(el[i].checked) {
				return true;
			}
	}
	return false;
}

function checkMultiselectField(formname,elname,i) {
	// check multiselect field
	el = getField(formname,elname,i,'none');
	if(el && el.length > 0) {
		for (var i = 0; i < el.length; i++) {
    	    if (el.options[i].selected) {
				return true;
			}
		}
	}
	return false;
}

function checkSelectsField(formname,elname,i) {
	// check several selects
	findres = false;
	for(var j=0; j<=10; j++) {
		el = getField(formname,elname,i,j);
		if(el && el.value != '') {
			findres = true;
			break;
		}
	}
	return findres;
}

function checkEmailField(formname,elname,i) {
	// check email field
	el = getField(formname,elname,i,null);
	if(el && el.value != '' && regulars.email.test(el.value)) return true;
	return false;
}

function gotoField(fld) {
	// go to element via #
	pure_href = document.location.href;
	if(pure_href.indexOf("#") >= 0) {
		pure_href = pure_href.substr(0,pure_href.indexOf("#"));
	}
	document.location.href = pure_href+'#fldname_'+fld;
}

function checkForm(formname,elname) {
	// uncomment to pass js-check
	// document.forms[formname].submit();
	// return true;
	
	// check required form fields
	var res = true;
	for(var i in required) {
		switch(required[i]) {
			case "text":
				res = checkTextField(formname,elname,i);
				break;
			case "select":
				res = checkSelectField(formname,elname,i);
				break;
			case "selects":
				res = checkSelectsField(formname,elname,i);
				break;
			case "email":
				res = checkEmailField(formname,elname,i);
				break;
			case "checkbox":
				res = checkCheckboxField(formname,elname,i);
				break;
			case "radio":
				res = checkRadioField(formname,elname,i);
				break;
			case "multiselect":
				res = checkMultiselectField(formname,elname,i);
				break;
		}
		pelem = document.getElementById('fldcap_'+i);
		if(!pelem) {
			alert('no field: fldcap_'+i); // for debug
			return false;
		}
		if(!res) {
			// highlight error 
			pelem.style.color = '#ff0000';
			gotoField(i);
			return false;
		} else {
			pelem.style.color = '#000000';
		}
	}
	
	// check unique fields
	var res = true;
	for(var i in unique) {
		pelem = document.getElementById('fldcap_'+i);
		if(!pelem) {
			alert('no field: fldcap_'+i); // for debug
			return false;
		}
		if(unique[i] == true) {
			pelem.style.color = '#ff0000';
			gotoField(i);
			return false;
		} else {
			pelem.style.color = '#000000';
		}
	}
	// all checks passed successfully, so submit form
	document.forms[formname].submit();
}

function do_linked_select(obj,formname,elname,linkedsel) {
	var tselect = document.forms[formname].elements[elname+'['+linkedsel+']'];
	for (i = tselect.options.length - 1; i>=0; i--) tselect.remove(i);
	
	if(linked_vals[linkedsel][obj.value]) {
		for(i in linked_vals[linkedsel][obj.value]) {
			var y = document.createElement('option');
			y.text = linked_vals[linkedsel][obj.value][i];
			y.value = i;
			try { tselect.add(y, null);} catch(ex) {tselect.add(y);}
		}
	}
}
	
var W3CDOM = (document.createElement && document.getElementsByTagName);

function initFileUploads() {
	if (!W3CDOM) return;
	var fakeFileUpload = document.createElement('div');
	fakeFileUpload.className = 'fakefile';
	fakeFileUpload.appendChild(document.createElement('input'));
	var image = document.createElement('img');
	image.src='/skin/img/file_input.gif';
	image.style.paddingLeft = "10px";
	fakeFileUpload.appendChild(image);
	var x = document.getElementsByTagName('input');
	for (var i=0;i<x.length;i++) {
		if (x[i].type != 'file') continue;
		if (x[i].parentNode.className != 'myfileinputs') continue;
		x[i].className = 'file';
		var clone = fakeFileUpload.cloneNode(true);
		x[i].parentNode.appendChild(clone);
		x[i].relatedElement = clone.getElementsByTagName('input')[0];
		x[i].onchange = x[i].onmouseout = function () {
			this.relatedElement.value = this.value;
		}
		if(document.getElementById('val_'+x[i].name)) {
			x[i].relatedElement.value = document.getElementById('val_'+x[i].name).innerHTML;
		}
	}
}

function initFileUpload(id) {
	if (!W3CDOM) return;
	var fakeFileUpload = document.createElement('div');
	fakeFileUpload.className = 'fakefile';
	fakeFileUpload.appendChild(document.createElement('input'));
	var image = document.createElement('img');
	image.src='/skin/img/file_input.gif';
	image.style.paddingLeft = "10px";
	fakeFileUpload.appendChild(image);
	var x = document.getElementById(id);
	if (x.type == 'file') {
		if (x.parentNode.className == 'myfileinputs') {
			x.className = 'file';
			var clone = fakeFileUpload.cloneNode(true);
			x.parentNode.appendChild(clone);
			x.relatedElement = clone.getElementsByTagName('input')[0];
			x.onchange = x.onmouseout = function () {
				this.relatedElement.value = this.value;
			}
			if(document.getElementById('val_'+x.name)) {
				x.relatedElement.value = document.getElementById('val_'+x.name).innerHTML;
			}
		}
	}
}

/*
* ver 1.3
*
* History:
*	1.3	27.02.09.goshi	add need_comments - set to id of the comments block, if realy need!
*	1.2	26.02.09/krasnoukhov	default type case
*	1.1	12.02.09/goshi	need back main
*	1.1	12.02.09/goshi	need back main
*	
*/
function do_cs_link(id,type,need_back_main,dflt,need_comments) {

	if($_('srch_container')) {
		$_('srch_container').innerHTML = '<span class="loader"><img src="'+imgLoader.src+'" /></span>';
	}

	var add_url = '';
	if (need_back_main != "undefined" && need_back_main == 1){
		add_url = '/nbm/1';
	}

	var req = new JsHttpRequest();
	req.onreadystatechange = function (){
		if (req.readyState == 4) {
			if (req.responseJS && req.responseJS.result != undefined) {
				if($_('sort_prevsrch')) $_('sort_prevsrch').innerHTML = prevsrch;
				if($_('srch_container')) $_('srch_container').innerHTML = req.responseJS.result;
				// closures
				
				if (typeof need_comments != "undefined" && need_comments != null && need_comments){

					window["oComments_"+need_comments] = new oComments(need_comments, {'ajx_href' : dflt.replace('index.html','')+'ajax/'+id+add_url+'/comments/1/ajx/1/smphr/1/index.html'});
					window["oComments_"+need_comments].doLoad();
				}
			}
		}
	}
	
	
	switch(type) {
		case "businessdata":
			url = businessdata_url+'ajax/'+id+add_url+'/ajx/1/smphr/1/index.html';
		break;
		case "contactsdata":
			url = contactsdata_url+'ajax/'+id+add_url+'/ajx/1/smphr/1/index.html';
		break;
		case "blog_photo":   
			url = blog_photo_url+'ajax/'+id+add_url+'/combined/1/ajx/1/smphr/1/index.html';  
		break;
		case "photo":   
			url = photo_url+'ajax/'+id+add_url+'/ajx/1/smphr/1/index.html';  
		break;
		case "blog":   
			url = blog_url+'ajax/'+id+add_url+'/ajx/1/smphr/1/index.html';  
		break;
		case "companydata":
			url = companydata_url+'ajax/'+id+add_url+'/ajx/1/smphr/1/index.html';
		break;
		case "proposaldata":
			url = proposal_url+'ajax/'+id+add_url+'/ajx/1/smphr/1/index.html';
		break;
		case "ustat":
			url = ustat_url+'ajax/'+id+add_url+'/ajx/1/smphr/1/index.html';
		break;
		case "default":
			url = dflt.replace('index.html','')+'ajax/'+id+add_url+'/ajx/1/smphr/1/index.html';
		break;
	}
	
	req.open(null, url, true);
	req.send();
	
	// views stats
	if(id != au_id) {
		var req2 = new JsHttpRequest();
		req2.open(null, '/views.php?who='+au_id+'&whom='+id, true);
		req2.send();
	}
}

if(typeof(bsn)=="undefined") _b=bsn={};
if(typeof(_b.Autosuggest)=="undefined")
	_b.Autosuggest={};
else 
	alert("Autosuggest is already set!");

_b.AutoSuggest=function(b,c,d,add){
	if(!document.getElementById) return 0;
	this.fld=_b.DOM.gE(b);
	this.hidfld=_b.DOM.gE(d);
	this.add=_b.DOM.gE(add);
	if(!this.fld) return 0;
	this.sInp="";
	this.nInpC=0;
	this.aSug=[];
	this.iHigh=0;
	this.oP=c?c:{};
	var k,def={minchars:1,meth:"get",varname:"input",className:"autosuggest",timeout:2500,delay:0,offsety:-5,shownoresults:true,noresults:"No results!",maxheight:250,cache:true,maxentries:25};
	for(k in def){
		if(typeof(this.oP[k])!=typeof(def[k])) this.oP[k]=def[k]
	}
	var p=this;
	this.fld.onkeypress=function(a){return p.onKeyPress(a)};
	this.fld.onkeyup=function(a){return p.onKeyUp(a)};
	this.fld.setAttribute("autocomplete","off")
};

_b.AutoSuggest.prototype.onKeyPress=function(a){
	var b=(window.event)?window.event.keyCode:a.keyCode;
	var c=13;
	var d=9;
	var e=27;
	var f=1;
	switch(b){
		case c:
			this.setHighlightedValue();
			f=0;
			break;
		case e:
			this.clearSuggestions();
			break
	}
	return f
};

_b.AutoSuggest.prototype.onKeyUp=function(a){
	var b=(window.event)?window.event.keyCode:a.keyCode;
	var c=38;
	var d=40;
	var e=1;
	switch(b){
		case c:
			this.changeHighlight(b);
			e=0;
			break;
		case d:
			this.changeHighlight(b);
			e=0;
			break;
		default:
			this.getSuggestions(this.fld.value)
	}
	return e
};

_b.AutoSuggest.prototype.getSuggestions=function(a){
	if(a==this.sInp) return 0;
	_b.DOM.remE(this.idAs);
	this.sInp=a;
	if(a.length<this.oP.minchars) { 
		this.aSug=[];
		this.nInpC=a.length;
		return 0
	}
	var b=this.nInpC;
	this.nInpC=a.length?a.length:0;
	var l=this.aSug.length;
	if(this.nInpC>b && l && l<this.oP.maxentries && this.oP.cache){
		var c=[];
		for(var i=0;i<l;i++) { 
			if(this.aSug[i].value.substr(0,a.length).toLowerCase()==a.toLowerCase())
				c.push(this.aSug[i])
		}
		this.aSug=c;
		this.createList(this.aSug);
		return false
	} else { 
		var d=this;
		var e=this.sInp;
		clearTimeout(this.ajID);
		this.ajID=setTimeout(function(){ d.doAjaxRequest(e)	},this.oP.delay)
	}
	return false
};

_b.AutoSuggest.prototype.doAjaxRequest=function(b){
	if(b!=this.fld.value) return false;
	var c=this;
	if(typeof(this.oP.script)=="function")
		var d=this.oP.script(encodeURIComponent(this.sInp));
	else 
		var d=this.oP.script+this.oP.varname+"="+encodeURIComponent(this.sInp);
	if(!d) return false;
	
	d += '&addvar='+this.add.value+'&langid='+this.oP.langid;
	
	var e=this.oP.meth;
	var b=this.sInp;
	var f=function(a){ c.setSuggestions(a,b) };
	var g=function(a){ alert("AJAX error: "+a) };
	var h=new _b.Ajax();
	h.makeRequest(d,e,f,g)
};

_b.AutoSuggest.prototype.setSuggestions=function(a,b){
	if(b!=this.fld.value) return false;
	this.aSug=[];
	if(this.oP.json){
		var c=eval('('+a.responseText+')');
		for(var i=0;i<c.results.length;i++){ 
			this.aSug.push({'id':c.results[i].id,'value':c.results[i].value,'info':c.results[i].info})
		}
	} else { 
		var d=a.responseXML;
		var e=d.getElementsByTagName('results')[0].childNodes;
		for(var i=0;i<e.length;i++){
			if(e[i].hasChildNodes())
				this.aSug.push({'id':e[i].getAttribute('id'),'value':e[i].childNodes[0].nodeValue,'info':e[i].getAttribute('info')})
		}
	}
	this.idAs="as_"+this.fld.id;
	this.createList(this.aSug)
};

_b.AutoSuggest.prototype.createList=function(b){
	var c=this;
	_b.DOM.remE(this.idAs);
	this.killTimeout();
	if(b.length==0&&!this.oP.shownoresults) return false;
	var d=_b.DOM.cE("div",{id:this.idAs,className:this.oP.className});
	var e=_b.DOM.cE("div",{className:"as_corner"});
	var f=_b.DOM.cE("div",{className:"as_bar"});
	var g=_b.DOM.cE("div",{className:"as_header"});
	g.appendChild(e);
	g.appendChild(f);
	d.appendChild(g);
	var h=_b.DOM.cE("ul",{id:"as_ul"});
	for(var i=0;i<b.length;i++){
		var j=b[i].value;
		var k=j.toLowerCase().indexOf(this.sInp.toLowerCase());
		var l=j.substring(0,k)+"<em>"+j.substring(k,k+this.sInp.length)+"</em>"+j.substring(k+this.sInp.length);
		var m=_b.DOM.cE("span",{},l,true);
		if(b[i].info!=""){
			var n=_b.DOM.cE("br",{});
			m.appendChild(n);
			var o=_b.DOM.cE("small",{},b[i].info);
			m.appendChild(o)
		}
		var a=_b.DOM.cE("a",{href:"javascript:void(0);"});
		var p=_b.DOM.cE("span",{className:"tl"}," ");
		var q=_b.DOM.cE("span",{className:"tr"}," ");
		a.appendChild(p);
		a.appendChild(q);
		a.appendChild(m);
		a.name=i+1;
		a.onclick=function(){ c.setHighlightedValue(); return false};
		a.onmouseover=function(){ c.setHighlight(this.name) };
		var r=_b.DOM.cE("li",{},a);
		h.appendChild(r)
	}
	if(b.length==0&&this.oP.shownoresults){
		var r=_b.DOM.cE("li",{className:"as_warning"},this.oP.noresults);
		h.appendChild(r)
	}
	d.appendChild(h);
	var s=_b.DOM.cE("div",{className:"as_corner"});
	var t=_b.DOM.cE("div",{className:"as_bar"});
	var u=_b.DOM.cE("div",{className:"as_footer"});
	u.appendChild(s);
	u.appendChild(t);
	d.appendChild(u);
	var v=_b.DOM.getPos(this.fld);
	d.style.left=v.x+"px";
	d.style.top=(v.y+this.fld.offsetHeight+this.oP.offsety)+"px";
	d.style.width=this.fld.offsetWidth+"px";
	d.onmouseover=function(){c.killTimeout()};
	d.onmouseout=function(){c.resetTimeout()};
	document.getElementsByTagName("body")[0].appendChild(d);
	this.iHigh=0;
	var c=this;
	this.toID=setTimeout(function(){c.clearSuggestions()},this.oP.timeout)
};

_b.AutoSuggest.prototype.changeHighlight=function(a){
	var b=_b.DOM.gE("as_ul");
	if(!b)return false;
	var n;
	if(a==40)
		n=this.iHigh+1;
	else if(a==38)
		n=this.iHigh-1;
	if(n>b.childNodes.length)
		n=b.childNodes.length;
	if(n<1)
		n=1;
	this.setHighlight(n)
};

_b.AutoSuggest.prototype.setHighlight=function(n){
	var a=_b.DOM.gE("as_ul");
	if(!a)return false;
	if(this.iHigh>0)this.clearHighlight();
	this.iHigh=Number(n);
	a.childNodes[this.iHigh-1].className="as_highlight";
	this.killTimeout()
};

_b.AutoSuggest.prototype.clearHighlight=function(){
	var a=_b.DOM.gE("as_ul");
	if(!a)return false;
	if(this.iHigh>0) {
		a.childNodes[this.iHigh-1].className="";
		this.iHigh=0
	}
};

_b.AutoSuggest.prototype.setHighlightedValue=function(){
	
	if(this.iHigh){
		this.sInp=this.fld.value=this.aSug[this.iHigh-1].value;
		
		// Ash's change
		this.hidfld.value = this.aSug[this.iHigh-1].id;
		
		this.fld.focus();
		if(this.fld.selectionStart)
			this.fld.setSelectionRange(this.sInp.length,this.sInp.length);
		this.clearSuggestions();
		if(typeof(this.oP.callback)=="function")
			this.oP.callback(this.aSug[this.iHigh-1])
	}
};

_b.AutoSuggest.prototype.killTimeout=function(){clearTimeout(this.toID)};

_b.AutoSuggest.prototype.resetTimeout=function(){
	clearTimeout(this.toID);
	var a=this;
	this.toID=setTimeout(function(){a.clearSuggestions()},1000)
};

_b.AutoSuggest.prototype.clearSuggestions=function(){
	this.killTimeout();
	var a=_b.DOM.gE(this.idAs);
	var b=this;
	if(a){
		var c=new _b.Fader(a,1,0,250,function(){_b.DOM.remE(b.idAs)})
	}
};

if(typeof(_b.Ajax)=="undefined") _b.Ajax={};

_b.Ajax=function(){
	this.req={};
	this.isIE=false
};

_b.Ajax.prototype.makeRequest=function(a,b,c,d){
	if(b!="POST") b="GET";
	this.onComplete=c;
	this.onError=d;
	var e=this;
	if(window.XMLHttpRequest){
		this.req=new XMLHttpRequest();
		this.req.onreadystatechange=function(){e.processReqChange()};
		this.req.open("GET",a,true);
		this.req.send(null)
	} else if(window.ActiveXObject){
		this.req=new ActiveXObject("Microsoft.XMLHTTP");
		if(this.req){
			this.req.onreadystatechange=function(){e.processReqChange()};
			this.req.open(b,a,true);
			this.req.send()
		}
	}
};

_b.Ajax.prototype.processReqChange=function(){
	if(this.req.readyState==4){
		if(this.req.status==200){
			this.onComplete(this.req)
		} else {
			this.onError(this.req.status)
		}
	}
};

if(typeof(_b.DOM)=="undefined") _b.DOM={};

_b.DOM.cE=function(b,c,d,e){
	var f=document.createElement(b);
	if(!f)return 0;
	for(var a in c) f[a]=c[a];
	var t=typeof(d);
	if(t=="string"&&!e) 
		f.appendChild(document.createTextNode(d));
	else if(t=="string"&&e)
		f.innerHTML=d;
	else if(t=="object")
		f.appendChild(d);
	return f
};

_b.DOM.gE=function(e){
	var t=typeof(e);
	if(t=="undefined")
		return 0;
	else if(t=="string"){ 
		var a=document.getElementById(e);
		if(!a) 
			return 0;
		else if(typeof(a.appendChild)!="undefined")
			return a;
		else 
			return 0
	} else if(typeof(e.appendChild)!="undefined")
		return e;
	else 
		return 0
};

_b.DOM.remE=function(a){
	var e=this.gE(a);
	if(!e)
		return 0;
	else if(e.parentNode.removeChild(e))
		return true;
	else 
		return 0
};

_b.DOM.getPos=function(e){
	var e=this.gE(e);
	var a=e;
	var b=0;
	if(a.offsetParent){
		while(a.offsetParent){
			b+=a.offsetLeft;
			a=a.offsetParent
		}
	} else if(a.x)
		b+=a.x;
	var a=e;
	var c=0;
	if(a.offsetParent){
		while(a.offsetParent){
			c+=a.offsetTop;
			a=a.offsetParent
		}
	} else if(a.y)
		c+=a.y;
	return{x:b,y:c}
};

if(typeof(_b.Fader)=="undefined") _b.Fader={};

_b.Fader=function(a,b,c,d,e){
	if(!a) return 0;
	this.e=a;
	this.from=b;
	this.to=c;
	this.cb=e;
	this.nDur=d;
	this.nInt=50;
	this.nTime=0;
	var p=this;
	this.nID=setInterval(function(){p._fade()},this.nInt)
};

_b.Fader.prototype._fade=function(){
	this.nTime+=this.nInt;
	var a=Math.round(this._tween(this.nTime,this.from,this.to,this.nDur)*100);
	var b=a/100;
	if(this.e.filters){
		try{
			this.e.filters.item("DXImageTransform.Microsoft.Alpha").opacity=a
		} catch(e) {
			this.e.style.filter='progid:DXImageTransform.Microsoft.Alpha(opacity='+a+')'
		}
	} else {
		this.e.style.opacity=b
	}
	if(this.nTime==this.nDur){
		clearInterval(this.nID);
		if(this.cb!=undefined) this.cb()
	}
};

_b.Fader.prototype._tween=function(t,b,c,d){
	return b+((c-b)*(t/d))
};
