function randomNum(iMin, iMax){
	return Math.round(Math.random()*(iMax - iMin) + iMin);
}

function fnIsNaN(iStr){
	return (isNaN(iStr) || iStr == Number.NaN || iStr=='NaN');
}

function CreateNodeWithText(sNodeName, sText){
	var oNode=document.createElement(sNodeName);
	var oText=document.createTextNode(sText);
	oNode.appendChild(oText);
	return oNode;
}

function getAttribute(oNode, sAttr){
	//return (oNode.attributes) ? oNode.attributes[sAttr].nodeValue : oNode.getAttribute(sAttr);
	return (oNode.attributes) ? getAttributeIE(oNode, sAttr) : oNode.getAttribute(sAttr);
}

function getAttributeIE(oNode, sAttr){
	for(var i=0; i<oNode.attributes.length; i++){
		if(oNode.attributes[i].nodeName == sAttr)
			return oNode.attributes[i].nodeValue;
	}
}

function getAbsolutePos(oElem){
	var _x=0;
	var _y=0;
	if(oElem){
		do{
			_x+=oElem.offsetLeft;
			_y+=oElem.offsetTop;
		}while( (oElem=oElem.offsetParent) )
	}

	return {x: _x, y: _y};
}

function GetCorrectWord(iNum, aWords, bSkipNum){
	var iLast=Number(String(iNum).substr(-1));
	var sResult;

	if(iNum.between(5,20))
		sResult=aWords[2];
	else{
		switch(iLast){
			case 1:  sResult=aWords[0]; break;
			case 2:
			case 3:
			case 4:  sResult=aWords[1]; break;
			default: sResult=aWords[2]; break;
		}
	}

	return (bSkipNum) ? sResult : iNum+' '+sResult;
}

function escape_win1251(sInput){
	var iByteOffset=848;
	var sResult='';
	var _charCode;
	for(var i=0; i<sInput.length; i++){
		_charCode=sInput.charCodeAt(i);
		if(_charCode < 128){
			sResult+=escape(sInput.charAt(i));
		}
		else if(_charCode > 1000){
			sResult+='%'+(_charCode - iByteOffset).toString(16).toUpperCase();
		}
		else{
			sResult+=sInput.charAt(i);
		}
	}

	return sResult;
}

/*****************************
**   Prototypes
******************************/

Array.prototype.push=function(){
	for(var i=0; i<arguments.length; i++){
		this[this.length]=arguments[i];
	}
}

Array.prototype.remove=function(sData){
	for(var i=0; i < this.length; i++){
		if(this[i] == sData){
			this.splice(i,1);
			break;
		}
	}
}

Array.prototype.contains=function(sData){
	var iFound=-1;
	for(var i=0; i<this.length; i++){
		if(this[i] == sData){
			iFound=i;
			break;
		}
	}
	return iFound;
}

Array.prototype.last=function(){
	return this[this.length-1];
}

Number.prototype.between=function(iStart, iEnd, bNoInclude){
	var iVal=this.valueOf();
	if(bNoInclude)
		return ( iVal > iStart && iVal < iEnd );
	else
		return ( iVal >= iStart && iVal <= iEnd );
}

Number.prototype.nice=function(iRoundBase){
	var re=/^(\d+)([\.,](\d+))?$/
	var iNum=Number(this);
	var sNum=String(iNum);
	var aMatches;
	var sDecPart='';
	var sTSeparator=' ';
	if((aMatches = sNum.match(re))){
		var sIntPart=aMatches[1];
		var iDecPart=(aMatches[3]) ? Number('0.'+aMatches[3]) : 0;
		if(iDecPart){
			var iRF=Math.pow(10, (iRoundBase) ? iRoundBase : 2);
			iDecPart=Math.round(iDecPart*iRF);
			sDecPart=(iDecPart) ? ','+iDecPart : '';
		}
		if(Number(sIntPart) < 10000)
			return sIntPart+sDecPart;
		else{
			var sNewNum='';
			var i;
			for(i=1; i*3<sIntPart.length; i++)
				sNewNum=sTSeparator+sIntPart.substring(sIntPart.length - i*3, sIntPart.length - (i-1)*3)+sNewNum;
			return sIntPart.substr(0, 3 - i*3 + sIntPart.length)+sNewNum+sDecPart;
		}
	}
	else{
		return sNum;
	}
}

String.prototype.toNumber=function(){
	return Number(this.replace(/[^\d\.]/g,''));
}

/*****************************
**   Event listeners
******************************/

/**
 * @param {Event} oEvt
 * @return {Event}
 */
function checkEvent(oEvt){
	oEvt=(oEvt) ? oEvt : ( (window.event) ? window.event : null );
	if(oEvt && oEvt.srcElement && !window.opera)
		oEvt.target=oEvt.srcElement;

	//Handle mouse wheel event
	if(oEvt){
		if(oEvt.wheelDelta){
			oEvt.mouse_wheel_delta=oEvt.wheelDelta/120;
			if(window.opera)
	        	oEvt.mouse_wheel_delta*=-1;
		}
		else if(oEvt.detail){
	    	oEvt.mouse_wheel_delta = -oEvt.detail/3;
		}
	}

	return oEvt;
}

/**
 * @param {Event} evt
 */
function cancelEvent(evt){
	if((evt=checkEvent(evt))){
		evt.cancelBubble=true;
		if(evt.cancelable){
			evt.preventDefault();
			evt.stopPropagation();
		}
	}
	return false;
}

function addEvent(objElement, strEventType, ptrEventFunc) {
	if (objElement.addEventListener)
		objElement.addEventListener(strEventType, ptrEventFunc, false);
	else if (objElement.attachEvent)
		objElement.attachEvent('on' + strEventType, ptrEventFunc);
}

function removeEvent(objElement, strEventType, ptrEventFunc) {
	if (objElement.removeEventListener) objElement.removeEventListener(strEventType, ptrEventFunc, false);
		else if (objElement.detachEvent) objElement.detachEvent('on' + strEventType, ptrEventFunc);
}

/*****************************
**   Common cookie methods
******************************/

// Functions from Netscape's JavaScript Guide
// http://developer.netscape.com/docs/manuals/js/client/jsguide/

function setCookie(name, value, expire, path) {
	document.cookie = name + '=' + escape(value)
		+ ((expire == null)? '' : ('; expires=' + expire.toUTCString()))
		+ ((path == null)? '' : ('; path=' + path));
}

function getCookie(Name) {
	var search = Name + '='
	if (document.cookie.length > 0) { // if there are any cookies
		offset = document.cookie.indexOf(search)
		if (offset != -1) { // if cookie exists
			offset += search.length
			// set index of beginning of value
			end = document.cookie.indexOf(';', offset)
			// set index of end of cookie value
			if (end == -1)
				end = document.cookie.length
			return unescape(document.cookie.substring(offset, end))
		}
	}
	return '';
}


/*****************************
**   Common class methods
******************************/

function switchClass( objNode, strCurrClass, strNewClass ) {
	if ( matchClass( objNode, strNewClass ) ) replaceClass( objNode, strCurrClass, strNewClass );
		else replaceClass( objNode, strNewClass, strCurrClass );
}

function removeClass( objNode, strCurrClass ) {
	replaceClass( objNode, '', strCurrClass );
}

function addClass( objNode, strNewClass ) {
	replaceClass( objNode, strNewClass, '' );
}

function replaceClass( objNode, strNewClass, strCurrClass ) {
	var strOldClass = strNewClass;
	if ( strCurrClass && strCurrClass.length ){
		strCurrClass = strCurrClass.replace( /\s+(\S)/g, '|$1' );
		if ( strOldClass.length ) strOldClass += '|';
		strOldClass += strCurrClass;
	}
	objNode.className = objNode.className.replace( new RegExp('(^|\\s+)(' + strOldClass + ')($|\\s+)', 'g'), '$1' );
	objNode.className += ( (objNode.className.length)? ' ' : '' ) + strNewClass;
}

function matchClass( objNode, strCurrClass ) {
	return ( objNode && objNode.className.length && objNode.className.match( new RegExp('(^|\\s+)(' + strCurrClass + ')($|\\s+)') ) );
}


function dalert(str){
	if(document.getElementById('debug'))
		document.getElementById('debug').innerHTML+=str+'<br />';
}


function get_pic(id,type,v) {
   var pic = document.getElementById('pic');
   var empty = document.getElementById('empty');

   var all_pic = document.getElementById('Photo');
   var get_all = all_pic.getElementsByTagName('a');
   for (i=0; i <get_all.length; i++) {get_all[i].className="";}
   v.className="nocur";


   var photo="/photo/imgbig"+id+"."+type;
   var img = document.createElement("img");
   img.setAttribute("src",photo);
   img.setAttribute('id','empty');
   pic.replaceChild(img,empty);
}
