//Javascript document

window.onLoadListeners= new Array();
window.addOnLoadListener= function(listener) {
	window.onLoadListeners[window.onLoadListeners.length]= listener;
}

var documentObj= document.documentElement || document.body;

window.onload= function () {
	for (var ii= 0; ii < window.onLoadListeners.length; ii++) {
		var func= window.onLoadListeners[ii];
		//alert(func );
		func.call();
	} // end for 
}

function hex_escape (str) {
			
        str = escape(str);
		  
		  str = str.replace(/%u2116/g, '%B9');
		  str = str.replace(/%u0456/g, '%B3');
		  str = str.replace(/%u0406/g, '%B2');
		  str = str.replace(/%u0454/g, '%BA');
		  str = str.replace(/%u0404/g, '%AA');
		  str = str.replace(/%u0457/g, '%BF');
		  str = str.replace(/%u0407/g, '%AF');
		  
		  
        str = str.replace(/%u041/g, '%C');
        str = str.replace(/%u042/g, '%D');
        str = str.replace(/%u043/g, '%E');
        str = str.replace(/%u044/g, '%F');
        str = str.replace(/%u0401/g, '%A8');
        str = str.replace(/%u0451/g, '%B8');
        str = str.replace(/\+/g, '%2B');
        return str;

}


function getBounds(element)
{
  var left = element.offsetLeft;
  var top = element.offsetTop;
  for (var parent = element.offsetParent; parent; parent = parent.offsetParent)
  {
  	
	//alert()
	
    left += parent.offsetLeft - parent.scrollLeft;
    top += parent.offsetTop - parent.scrollTop
  }
  return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
}


function getBoundsLeft( element ) {
	var left= 0;
	left += parseFloat( element.offsetLeft ) - parseFloat ( element.scrollLeft );
	element= element.parentNode;
	
	
  while ( typeof (element) != "undefined" &&  element && typeof (element.offsetLeft) != "undefined" && typeof (element.scrollLeft) != "undefined" ) {
  		
		//alert( "element: " + element + "\n\noffsetLeft: " + element.offsetLeft + "\n\nscrollLeft:" + element.scrollLeft  );
		
		left += parseFloat( element.offsetLeft ) - parseFloat ( element.scrollLeft );
		element= ( element.offsetParent != null ) ? element.offsetParent : false;
	
  } // end while
/*  
  for (var parent = element.parentNode; parent; parent = parent.parentNode)  {
  	
	
	
  	alert( parent+ " and his coord: " + parent.parentNode.offsetLeft );
   
	 left += parseFloat(parent.offsetLeft-parent.scrollLeft);
  }*/
  
//  alert( "end of funct" );
  return parseFloat(left);
}


function getBoundsTop( element ) {
	var top= 0;
	
	top += parseFloat( element.offsetTop ) - parseFloat ( element.scrollTop );
	element= element.parentNode;
	
  while ( typeof (element) != "undefined" && element && typeof (element.offsetTop) != "undefined" && typeof (element.scrollTop) != "undefined" ) {
  		
		//alert( "element: " + element + "\n\noffsetTop: " + element.offsetTop + "\n\nscrollTop:" + element.scrollTop  );
		
		top += parseFloat( element.offsetTop ) - parseFloat ( element.scrollTop );
		element= ( element.offsetParent != null ) ? element.offsetParent : false;
	
  } // end while

  return parseFloat(top);
}

/*
function getBoundsTop(element) {
  var top = parseFloat(element.offsetTop);
  for (var parent = element.parentNode; parent; parent = parent.parentNode)  {
    top += parseFloat(parent.offsetTop-parent.scrollTop);
  }
  return top;
}*/

/**********************************************************************
				AJAX OBJ
***********************************************************************/
function createAjaxObject() {
	var newXml= false;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	try {
	  newXml = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	  try {
	    newXml = new ActiveXObject("Microsoft.XMLHTTP");
	  } catch (e2) {
	    newXml = false;
	  }
	}
	@end @*/
	
	if (!newXml && typeof XMLHttpRequest != 'undefined') {
	  newXml = new XMLHttpRequest();
	}
	
	return newXml;
}



//*************************************************     CLASSSSSSSSSSSSSSS   FieldsContainer *************
function fieldsContainer(str) {
	this.fullStr= str;
	this.fields= new Array();
	this.name= "";
}

fieldsContainer.prototype.unpackAndFill= function() {
	var parts= this.fullStr.split("+--+");
	
	//filename+--+$FName*--*"filesize+--+$FSize*--*nowWidth+--+$existWidth*--*nowHeight+--+$existHeight*--*havePreview+--+$previewPresent
  for (var p= 0; p < parts.length; p++) {
		keyValue= parts[p].split("*--*");
		this.fields[keyValue[0]]= keyValue[1];
		
  } // end for
}
  
fieldsContainer.prototype.clearMe= function() {
  	this.fields= new Array();
}

//*************************************************     CLASSSSSSSSSSSSSSS   ajaxRequester *************
//*************************************************     CLASSSSSSSSSSSSSSS   ajaxRequester *************
//*************************************************     CLASSSSSSSSSSSSSSS   ajaxRequester *************
//*************************************************     CLASSSSSSSSSSSSSSS   ajaxRequester *************
//*************************************************     CLASSSSSSSSSSSSSSS   ajaxRequester *************


function ajaxRequester(func) {
	this.func= func;
	this.ajaxHttp= false;
	this.responseParts= new Array("");
	this.shortContainer= "";
}

ajaxRequester.prototype.unpackRequest= function() {
	if (this.ajaxHttp.readyState == 4) {
		
		var response = this.ajaxHttp.responseText;
		
		if (response == "" || typeof(response) == 'undefined') {
			//alert("Операция произошла с ошибками");
			return;
		}
		
		this.responseParts= response.split("-|||-");
		
		if (this.responseParts[0] != "ok") {
			//alert("Ошибка: \n\n"+response);
			//operationActivated--;
			return;
		}

		this.responseParts.shift();
		this.func.call(1, this);
	}
}


ajaxRequester.prototype.sendParams= function(params) {
	this.ajaxHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   this.ajaxHttp.send(params);
}
	
ajaxRequester.prototype.ajaxInit= function(url) {
	if (!this.ajaxHttp) {
		this.ajaxHttp= createAjaxObject();
		
		if (!this.ajaxHttp) return false;
	}
	
	this.ajaxHttp.open("POST", url, true);
	return true;
}

//********************************************************


var inloadedId= "";

function inloadedShow_progressive() {
	var obj= document.getElementById(inloadedfilename+"_div");
	if (!obj) return;
	
	var widthOffset= parseFloat(documentObj.scrollWidth || documentObj.scrollWidth);
	
	var newDivLeft= inloadMouseX;
	var nowDivWidth= obj.scrollWidth;
	if ( parseFloat(newDivLeft)+parseFloat(nowDivWidth) > parseFloat(widthOffset) ) {
		newDivLeft= parseFloat(widthOffset)-parseFloat(nowDivWidth)-10;
	}
	
	
	obj.style.left= newDivLeft+"px";
	obj.style.top= parseFloat(inloadMouseY)+"px";
	obj.style.visibility= "visible";
}

function inloadedClose_progressive() {
	operationActivated--;

	var obj= document.getElementById(inloadedfilename+"_div");
	if (!obj) return;
	
	obj.style.left= "-1000px";
	obj.style.top= "-1000px";
	obj.style.visibility= "hidden";
}