
function showProps( obj, _addTo ) {
	var msg = obj;
	for(var key in obj ) msg += "\n" + key + "	=" + obj[key];
	if ( !_addTo ) {
		alert( msg );
		return;
	}
	addTo = document.getElementById( _addTo );
	if ( !addTo ) {
		addTo = document.createElement("div");
		addTo.id = _addTo;
		addTo.style.position = "absolute";
		addTo.style.background = "white";
		addTo.style.width = "80%";
		addTo.style.height = "30%";
		addTo.style.overflow = "scroll";
		addTo.style.left = "10%";
		addTo.style.top = "10%"
		document.appendChild( addTo );
	}

	addTo.innerHTML = "<pre>"+msg+"</pre>";
}	

var hasClass = (function () {
	var reCache = {};
	return function (element, className) {
		return (reCache[className] ? reCache[className]
			: (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
		};
})();


var colorPreviewAutoGenerated = false;
var lastColorDesc = "";
function updateColorDesc( sender ) {
	//showProps( sender );
	var colorDesc = document.getElementById( "colorDescription" );
	if ( !colorDesc ) return;
	if ( typeof sender == "string" ) {
		colorDesc.innerHTML = sender;
		return;
	}
	lastColorDesc = colorDesc.innerHTML;
	if ( typeof sender.title == "undefined" ) {
		e = Event.prep(sender);
		//showProps( e );
		t = e.target.alt;
		if ( typeof t == "undefined" ) {
			t = e.target.getElementsByTagName( "img" )[0];
			if ( t ) t = t.alt;
		}
	} else t = sender.title;
	colorDesc.innerHTML = t;
}
function clearColorDesc( sender ) { updateColorDesc( lastColorDesc ); }
function changeImgs( newImg ) {
	if ( !iH ) return;
	img = iH.getElementsByTagName( "img" )[0];
	if ( img.src == newImg.src ) return false;
	if ( iH.clientHeight > newImg.height ) {
		newImg.style.marginTop = Math.round( ( iH.clientHeight - newImg.height ) / 2 ) + "px";
	}
	else newImg.style.marginTop = "0px";
	//if ( iH.clientWidth > newImg.width ) { // better use text-align:center in css
	//	newImg.style.paddingLeft = Math.round( ( iH.clientWidth - newImg.width ) / 2 ) + "px";
	//}
	//else newImg.style.marginLeft = "0px";
	iH.removeChild( img );
	iH.appendChild( newImg );
	return true;
}
function createImage( src,w,h ) {
	img = document.createElement("img");
	img.src = src;
	img.style.width = w + "px";
	img.style.height = h + "px";
	return img;
}
var rbForJsImg;
var colorPreview;
var iH;
var jsImages = new Array();
function selectImg( sender,url,w,h ) {
	if ( activeImageInPreview = document.getElementById( "activeImageInPreview" ) ) activeImageInPreview.id = "";
	if ( !colorPreview ) colorPreview = document.getElementById( "colorPreview" );
	if ( !colorPreview ) {
		updateColorDesc( sender );
		return false;
	}
	var img = colorPreview.getElementsByTagName( "img" )[0];
	if ( !img ) return false;
	if ( 1 || !img.src || !wfSupportsAjax() ) {
		img.src = url;
		updateColorDesc( sender );
		pgb = sender;
		while ( pgb = pgb.parentNode ) if ( pgb.className == "gallerybox" ) break;
		if ( pgb && pgb.className == "gallerybox" ) pgb.id = "activeImageInPreview"; else sender.id = "activeImageInPreview";
		return false;
	}
	if ( !iH ) iH = img.parentNode;
	if ( iH.id != "ajaxImgHoder" ) {
		iH = document.createElement("div");
		iH.id = "ajaxImgHoder";
		img.parentNode.insertBefore( iH, img );
		iH.appendChild( img );
		iH.style.width = img.width + "px";
		iH.style.height = img.height + "px";
		iH.style.overflow = "hidden";
		iH.style.marginLeft = img.style.marginLeft;
		iH.style.marginRight = img.style.marginRight;
		img.style.marginLeft = "auto";
		img.style.marginRight = "auto";
	}
	for( var i = 0; i < jsImages.length; i++ ) {
		sImg=jsImages[i];
		if ( sImg._src == url ) {
			changeImgs( sImg );
			return false;
		}
	}
	if ( !rbForJsImg ) rbForJsImg = createImage( wgAjaxGallery.robber, wgAjaxGallery.robberW, wgAjaxGallery.robberH );
	changeImgs( rbForJsImg );
	if ( colorPreviewAutoGenerated ) {
		if ( w/h > iH.clientWidth/iH.clientHeight && w > iH.clientWidth ) {
			h = Math.round( iH.clientHeight * iH.clientWidth / w );
			w = iH.clientWidth;
		} else if ( h > iH.clientHeight ) {
			w = Math.round( w * iH.clientHeight / h );
			h = iH.clientHeight;
		}
	}
	sajax_do_call( "getAjaxImage", [url, w],//, Math.random()],
		function(request) {
			div = document.createElement("div");
			div.innerHTML = request.responseText;
			nImg = div.getElementsByTagName( "img" )[0];
			if ( !nImg ) {
				iH.innerHTML = request.responseText;
				return;
				}
			changeImgs( nImg );
			nImg._src = url;
			jsImages.push( nImg );
			updateColorDesc( sender );
		}
	);
	return false;
}
var ippu;
function Close() {
		if (ippu!=null) { ippu.hide(); }
		var objects = document.getElementsByTagName( 'object' );
		for ( var i = 0; i < objects.length; i++ ) DOM.removeClassName(objects[i], "hobject");
		return false;
};
function showImg( sender,url,w,h ) {
	if (ippu==null) {
		ippu = new IPPU();
		ippu.init('');
		ippu.setTitlebar(false);
		ippu.setFadeOut(true);
		ippu.setFadeIn(true);
		ippu.setFadeSpeed(2);
		ippu.addClass("ContextualPopup");
		ippu.setDimensions("auto", "auto");
		ippu.setAutoCenter(true, true);
	}
	var ele = ippu.getElement();
	DOM.addClassName(ele, "jspopup");
	//+"<span style='position: absolute; z-index: 5; margin: -17px auto auto -12px;'><img src='extensions/closebox.png'></span>"
	ele.innerHTML = ""
		+"<a class='popup' href='#' onClick='return Close()'>"
		+"<img src='"+url+"' width='"+w+"' height='"+h+"'>"
		+"</a>";
	var objects = document.getElementsByTagName( 'object' );
	//ele.innerHTML += "<div style='background:red'>" + objects.length + "</div>";
	for ( var i = 0; i < objects.length; i++ ) DOM.addClassName(objects[i], "hobject");
	ippu.show();
	return false;
}
function showComs(tid,lang) {
	showTopicSize(tid);
	if ( lang == null || lang == "" ) {
		lang = document.location + "xxx";
		lang = lang.split( "/" );
		if (lang = lang[3]) {
			if ( lang.length > 2 ) {
				lang = lang.split( "?" );
				lang = lang[0];
			}
		}
	}
	switch(lang) {
		case "ru": lang = "fru"; break;
		case "en": lang = "fen"; break;
		default: lang = 'fuk';
	}
	var found = DOM.getElementsByClassName( '', 'comments' )[0];
	found.innerHTML = '<img src="/extensions/throbber.gif">';
	DOM.addClassName(found, "pleasewait");
	var gotSearch = function (data) {
		DOM.removeClassName(found, "pleasewait");
		str = data.responseText;
		str = str.replace( /href=".\//g, 'href="/'+lang+'/' );
		str = str.replace( /src=".\//g, 'src="/'+lang+'/' );
		str = str.replace( /action=".\//g, 'action="/'+lang+'/' );
		found.innerHTML = str.replace( /style=\d{1,}&amp;*/g, '' );
	};
	url = "/"+lang+"/viewtopic.php";
	params = HTTPReq.formEncoded({ "t":tid, "style":4 });
	HTTPReq.getJSON({ "url":url, "method":"GET", "data":params, "onData":gotSearch, "onError":gotSearch });
	return false;
}

function showTopicSize(tid) {
	var TSfound = DOM.getElementsByClassName( '', 'topicsize' )[0];
	TSfound.innerHTML = '??';
	var gotTopicSize = function (data) { 
		TSfound.innerHTML = data.responseText;
	};
	url = wgScript + '/Special:TopicSize';
	time = new Date();
	time = time.getTime();
	params = HTTPReq.formEncoded({ "t":tid, "style":time });
	HTTPReq.getJSON({ "url":url, "method":"GET", "data":params, "onData":gotTopicSize, "onError":gotTopicSize });
	return false;
}

function moveItem( target, again ) {
	by = target.by;
	var nP = finiteInt( target.style.paddingLeft ) + by;
	if ( ((by == 1)&&(nP > 10)) || ((by == -1)&&(nP < 0)) ) {
		target.isMoving = false;
		window.clearTimeout( again );
		return;
	}
	target.isMoving = true;
	target.style.paddingLeft = nP + "px";
	if ( again ) return;
	var mI = function () {
		tID = window.setTimeout( mI, 50 );
		moveItem( target, tID );
	}
	mI();
}

function prepareMenuItems() {
	var menu = DOM.getElementsByClassName( '', 'menu' )[0];
	if ( !menu ) return;
	menu = menu.getElementsByTagName( "a" );
	for( var i = 0; i < menu.length; i++ ) {
		var element = menu[ i ];
		if( !element ) continue;
		element.onmouseover = function(e) {
			evt = Event.prep(e);
			var target = evt.target;
			if ( !target ) return;
			target.by = 1;
			moveItem( target );
		}
		element.onmouseout = function(e) {
			evt = Event.prep(e);
			var target = evt.target;
			if ( !target ) return;
			target.by = -1;
			moveItem( target );
		}
	}
}
