var the_dot_isIE = (navigator.appVersion.indexOf("MSIE") != -1);	// is the current browser IE, true/false
var showSpeedCommon = 100;	// time in milliseconds, holds the time between each 2 appear routines executions (it's parameter for setTimeout)
var hideSpeedCommon = 200;	// time in milliseconds, holds the time between each 2 hide routines executions (it's parameter for setTimeout)
//var hideOpacityDeltaCommon = 0.1;		// delta opacity value, on each routine execution opacity is decreased on this value
var appearOpacityDeltaCommon = 0.2;	// delta opacity value, on each routine execution opacity is increased on this value
var the_dot_globalBannerOpacity = 1;	// holds original value of banner opacity, 1 - fully visible, 0 - fully transparent
var documentLoaded = false; // set to true when document loading complete
var maxLoadingSignShowTime = 20000; // MAXIMUM seconds to show loading sign
window.setTimeout(function(){if (documentLoaded==false) loadingComplete();},maxLoadingSignShowTime);

//var dotsNumber = 5;
//var loadingTimeout = 150;
//var icreasing = true;
//var timeoutRoutines = 0;
//var stopDots = false;
var loadingDiv = document.createElement("div");
var loadingPercentImagesLoadedPictureDiv = document.createElement("div");

window.onload = function(){waitUntilLoadingSignDivLoadedRoutine()};

function waitUntilBodyLoadedRoutine(){
	
	if (document.body==null)
		window.setTimeout("waitUntilBodyLoadedRoutine();",100);
	else{		
		loadingSignWhileLoading();		
	}
}

function waitUntilLoadingSignDivLoadedRoutine(){
	
	if (document.getElementById('loadingSign')==null)
		window.setTimeout("waitUntilLoadingSignDivLoadedRoutine();",100);
	else{		
		loadingComplete();
	}
}

waitUntilBodyLoadedRoutine();

function loadingSignWhileLoading(){
			
	
	loadingDiv.id = "loadingSign";	
	loadingDiv.style.color = "white";
	loadingDiv.style.width = "75px";
	if (the_dot_isIE){		
		loadingDiv.style.height = "28px";
	}
	else{
		loadingDiv.style.height = "32px";
	}
	loadingDiv.style.overflow = "hidden";
	loadingDiv.style.fontSize = "15pt";
	loadingDiv.style.left = "47%";	
	loadingDiv.style.top = "49%";
	
	loadingDiv.style.position = "absolute";
	//loadingDiv.style.position = "absolute";
		
	loadingDivDiv = document.createElement("div");
	loadingDivDiv.innerHTML = "Загрузка";
		
	/*loadingDotsDiv = document.createElement("span");
	loadingDotsDiv.style.fontSize = "14pt";
	loadingDotsDiv.id = "loadingDots";
	loadingDotsDiv.style.marginLeft = "0px";
	loadingDotsDiv.style.marginTop = "0px";
	
	loadingDotsClipperDiv = document.createElement("span");
	loadingDotsClipperDiv.style.width = "15px";
	loadingDotsClipperDiv.style.height = "18px";
	loadingDotsClipperDiv.style.overflow = "hidden";
	loadingDotsClipperDiv.style.marginLeft = "5px";
	//loadingDotsClipperDiv.style.marginTop = "-22px";
	loadingDotsClipperDiv.appendChild(loadingDotsDiv);*/
	
	loadingPercentImagesLoadedPictureDiv.id =  "percentImagesPictureLoaded";	
	loadingPercentImagesLoadedPictureDiv.style.marginTop = "5px";
	loadingPercentImagesLoadedPictureDiv.style.marginLeft = "-2px";
	loadingPercentImagesLoadedPictureDiv.style.height = "1px";	
	loadingPercentImagesLoadedPictureDiv.style.position = "absolute";
	loadingPercentImagesLoadedPictureDiv.style.backgroundColor = "rgb(138, 234, 140)";
	
	loadingDiv.appendChild(loadingDivDiv);
	//loadingDiv.appendChild(loadingDotsClipperDiv);	
	loadingDiv.appendChild(loadingPercentImagesLoadedPictureDiv);
			
	//window.setTimeout("document.body.appendChild(loadingDiv);startLoading();",100);	
	document.body.appendChild(loadingDiv);
	//startLoading();
		
}

function loadingComplete(){
	documentLoaded = true;
	if (imageLoaded!=null) imageLoaded();

	document.getElementById('loadingSign').style.opacity = 1;	
	document.getElementById('loadingSign').style.filter = "alpha(opacity=100)";	
	// now _smoothLoadingHideRoutine() calls itself _smoothContentAppearRoutine() for "content" div
	_smoothLoadingHideRoutine('loadingSign', function(){window.setTimeout(contentAppear,100);document.body.removeChild(loadingDiv);}, 0.1);
	
}
/*
function startLoading(){
	window.setTimeout("loadingDotsRoutine();",50);
}

var timeoutRoutines;
function loadingDotsRoutine(){
	var loadingDots = document.getElementById("loadingDots").innerHTML;
	if (icreasing){
		document.getElementById("loadingDots").innerHTML += ".";
	}
	else{	
		var marginLeft = document.getElementById("loadingDots").style.marginLeft;
		
		marginLeft = marginLeft.substr(0,marginLeft.length-2);
		marginLeft = parseInt(marginLeft,10) + 5;
		
		document.getElementById("loadingDots").style.marginLeft = marginLeft + "px";
		
		document.getElementById("loadingDots").innerHTML = document.getElementById("loadingDots").innerHTML.substr(0,document.getElementById("loadingDots").innerHTML.length-1);
	}
	if (document.getElementById("loadingDots").innerHTML.length >= dotsNumber) {		
		icreasing =  false;
	}
	if (document.getElementById("loadingDots").innerHTML.length == 0 ) {
		document.getElementById("loadingDots").style.marginLeft = "0px";
		icreasing =  true;
	}
	
	//timeoutRandomAddition = loadingTimeout/2 - Math.floor(Math.random()*loadingTimeout);
	if (!stopDots)
		timeoutRoutines = window.setTimeout("loadingDotsRoutine();",loadingTimeout);//+timeoutRandomAddition);
}
*/


/*
 routine function for smooth (not instant) banner hide
 actually change banner opacity style from step to step
 */
function _smoothLoadingHideRoutine(elementId, hideEndEvent, hideOpacityDeltaCommon){
	var element = document.getElementById(elementId);
	//alert(element.style.opacity);
	element.style.opacity = parseFloat(element.style.opacity) - hideOpacityDeltaCommon;
	//alert(element.style.opacity);
	var newOpacity;
	
	if (the_dot_isIE){
		IEFilterOpacity = element.style.filter;	// string, like "alpha(opacity=75)"
		IEFilterOpacityInt = parseFloat(IEFilterOpacity.substring(IEFilterOpacity.indexOf("=")+1,IEFilterOpacity.indexOf(")"))); // opacity number view, like 75
		IEFilterOpacityIntNew = IEFilterOpacityInt - (hideOpacityDeltaCommon*100);
		element.style.filter = "alpha(opacity=" + IEFilterOpacityIntNew + ")";
		newOpacity = IEFilterOpacityIntNew;		
	}
	else{
		newOpacity = parseFloat(element.style.opacity);	
	}
	
	if (newOpacity <= 0){
		hideEndEvent();		
		return;
	}
	else{			
		window.setTimeout(function(){_smoothLoadingHideRoutine(elementId, hideEndEvent, hideOpacityDeltaCommon);}, hideSpeedCommon);
	}
}

function contentAppear(){
	
	hiderDiv = document.createElement("div");
	hiderDiv.id = "hiderDiv";
	hiderDiv.style.position = "absolute";
	hiderDiv.style.height = "1280px";
	hiderDiv.style.width = "100%";
	hiderDiv.style.top = "0";
	hiderDiv.style.left = "0";
	hiderDiv.style.zIndex = 50000;
	hiderDiv.style.opacity = 1;
	hiderDiv.style["-moz-opacity"] = 1;
	hiderDiv.style.filter = "alpha(opacity=100)";
	hiderDiv.style.backgroundColor = "rgb(51,51,51)";
	document.body.appendChild(hiderDiv);
	document.getElementById('content').style.display='';
		
	_smoothLoadingHideRoutine('hiderDiv', function(){document.body.removeChild(hiderDiv);}, 0.2);
}

/*
 routine function for smooth (not instant) banner appearance
 actually change banner opacity style from step to step
 */
function _smoothContentAppearRoutine(elementId){	
	var element = document.getElementById(elementId);
	
	element.style.opacity = parseFloat(element.style.opacity) + parseFloat(appearOpacityDeltaCommon);
	
	if (the_dot_isIE){
		IEFilterOpacity = element.style.filter;	// string, like "alpha(opacity=75)"		
		IEFilterOpacityInt = parseFloat(IEFilterOpacity.substring(IEFilterOpacity.indexOf("=")+1,IEFilterOpacity.indexOf(")"))); // opacity number view, like 75
		IEFilterOpacityIntNew = IEFilterOpacityInt + (parseFloat(appearOpacityDeltaCommon)*100);
		element.style.filter = "alpha(opacity=" + IEFilterOpacityIntNew + ")";
		
		if (IEFilterOpacityIntNew >= parseFloat(the_dot_globalBannerOpacity)*100){			
			return;
		}
		else{
			window.setTimeout(function(){_smoothContentAppearRoutine(elementId);}, showSpeedCommon);
		}
	}else{
		if (parseFloat(element.style.opacity) >= parseFloat(the_dot_globalBannerOpacity)){			
			return;
		}
		else{
			window.setTimeout(function(){_smoothContentAppearRoutine(elementId);}, showSpeedCommon);
		}
	}
}