/**
 *	@author Sanjar Akhmedov (eSector solutions)
 */

var agt = navigator.userAgent.toLowerCase();
var isIE = (agt.indexOf("msie")!=-1) && !(agt.indexOf("opera") != -1) && !(agt.indexOf("mac") != -1);
var isMoz = (agt.indexOf("gecko")!=-1) && !(agt.indexOf("safari") != -1);

function ImagePreloader() {
	this.images=new Array();
}

ImagePreloader.prototype.add = function add(uri) {
	this.images[this.images.length] = new Image;
	this.images[this.images.length - 1].src = uri;
}

function hoverImage(img) {
	if(!img.srcOn) {
		var lastDot;
		lastDot = img.src.lastIndexOf('.');
		img.srcOn = img.src.substr(0, lastDot) + "_" + img.src.substr(lastDot);
		img.srcOff = img.src;
	}
	img.src = img.srcOn;
	if(!img.onmouseout)
		img.onmouseout = function() { this.src = this.srcOff;}
}
function ullist (v) {
	res = "";
	for (var i=0; i<v.length; i++)
		res = res + "<li>" + v[i] + " </li>";
	return res;	
}

function redirect (url, width, height) {
	window.location.href = url;
	if (width != null && height != null) {
		window.resizeTo (width, height);	
	}
}
function clearAuthCookie () {
	Cookie.erase ('wcsUserLogin');
	Cookie.erase ('wcsUserName');
	window.location.reload ();	
}



tools = {
	
	strip_html : function (str) { 
		var re = /<\S[^>]*>/g; 
		return str.replace (re, ""); 
	},
	
	sprintf : function ()
	{
		if (!arguments || arguments.length < 1 || !RegExp)
		{
			return;
		}
		var str = arguments[0];
		var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
		var a = b = [], numSubstitutions = 0, numMatches = 0;
		while (a = re.exec(str))
		{
			var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
			var pPrecision = a[5], pType = a[6], rightPart = a[7];
	
			numMatches++;
			if (pType == '%')
			{
				subst = '%';
			}
			else
			{
				numSubstitutions++;
				if (numSubstitutions >= arguments.length)
				{
					alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
				}
				var param = arguments[numSubstitutions];
				var pad = '';
					   if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
				  else if (pPad) pad = pPad;
				var justifyRight = true;
					   if (pJustify && pJustify === "-") justifyRight = false;
				var minLength = -1;
					   if (pMinLength) minLength = parseInt(pMinLength);
				var precision = -1;
					   if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
				var subst = param;
					   if (pType == 'b') subst = parseInt(param).toString(2);
				  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
				  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
				  else if (pType == 'u') subst = Math.abs(param);
				  else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
				  else if (pType == 'o') subst = parseInt(param).toString(8);
				  else if (pType == 's') subst = param;
				  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
				  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
			}
			str = leftpart + subst + rightPart;
		}
		return str;
	}	
}