
function Stage(name,pleft,pright,minwidth,maxwidth,elements){
  this.name			=name;
  this.elements	=elements;
  this.minwidth =minwidth;
  this.maxwidth =maxwidth;
  this.pleft   	=pleft;
  this.pright   =pright;
  this.width    =getStageWidth;
  return this;
}
function Picture(name,x,y,width,height,direction,percent){
  this.name=name;
  this.x   			=x;
  this.y   			=y;
  this.width		=width;
  this.height 	=height;
  this.direction=direction;
  this.percent	=percent;
  this.nx   		=0;
  this.ny   		=0;
  return this;
}

function getStageWidth(){
	try{
	  var maxWidth=0;
  	for(var i=0;i<this.elements.length;i++){
	    var element_div=getElement(this.elements[i].name)
	    var left=element_div.offsetLeft;
	    var width=element_div.offsetWidth;
	    if(maxWidth<(left+width)){
	      maxWidth=(left+width);
	    }
  	}
  	return maxWidth;
	}catch(e){
		alert("Error getStageWidth:"+e.message);
	}
}

function getNewStageWidth(){
	try{

	}catch(e){
		alert("Error getStageWidth:"+e.message);
	}
}

function getWindowWidth(){try{var wrap=getElement("wrap");return wrap.offsetWidth;}catch(e){alert("Error getStageWidth:"+e.message);}}

stages=Array();
stages[stages.length]=new Stage("about_main",267,20,730,983,
					new Array(
						new Picture("clock"		,503,282,104,212,"right",45),
						new Picture("flag"		,503,114,497,445,"right",10),
						new Picture("request"	,315,242,362,423,"left" ,35),
						new Picture("pencil"	,274,477,308,208,"left" ,35)
					));
stages[stages.length]=new Stage("about_anim",267,20,730,983,
					new Array(
						new Picture("clock"		,503,282,104,212,"right",45),
						new Picture("flag"		,503,114,497,445,"right",10),
						new Picture("request"	,315,242,362,423,"left" ,35),
						new Picture("pencil"	,274,477,308,208,"left" ,35)
					));

function imageContainerResizeInit(){
	try{
		addEvent(window,"resize",imageContainerResize);
		addEvent(window,"load",imageContainerResize);		
		addEvent(window,"load",initializeCity);		
		addEvent(window,"load",register_flags);		
	}catch(e){
		alert("Error imageContainerResizeInit:"+e.message);
	}
}


function imageContainerResize(){
	try{
	  placeFooter();	  
	  for(var i=0;i<stages.length;i++){
	    var stage=false;
	    //alert(stages);
	    if(stage_div=getElement(stages[i].name)){
	      stage=stages[i];	      	      
	      for(var c=0;c<stage.elements.length;c++){
	        if(element_div=getElement(stage.elements[c].name)){
	          element=stage.elements[c];
	          //element_div.style.display="none";
	          var left	=element_div.offsetLeft;
	          var width	=element_div.offsetWidth;
	          var ww		=getWindowWidth();
	          var debug ="";
	          debug+="Element: <br />";
	          debug+="  offsetLeft: "+left+"<br />";
	          debug+="  offsetWidth: "+width+"<br />";
	          debug+="  stageWidth: "+stage.width()+"<br />";
	          debug+="  windowWidth: "+getWindowWidth()+"<br />";

	          if(element.direction=="left"){
   	          var newPos=element.percent*(getWindowWidth()/100);
	          	//if(newPos+width>stage.maxwidth)newPos=stage.maxwidth;
	          	//if(newPos<stage.minwidth)newPos=stage.minwidth;
	          	//element_div.style.left=newPos+"px";
	          	debug+="---LEFT: "+(newPos)+"<br />";
	          }
	          if(element.direction=="right"){
   	          var newPos=element.percent*(ww/100);
	          	if((ww-newPos)>stage.maxwidth){
	          		debug+="---RIGHTM: "+(stage.maxwidth)+"<br />";
	          		//element_div.style.left=stage.maxwidth;
	          	}else{
	          	  //element_div.style.left=(ww-newPos-width)+"px";	          	
	          		debug+="---RIGHTN: "+(ww-newPos)+"<br />";
	          	}
          		debug+="---CONST: "+((ww-newPos))+"<br />";
	          	//if(newPos-width<stage.minwidth)newPos=stage.minwidth;
	          	
	          }
	          //element_div.innerHTML=debug;
	        }
	      }
	    }	  
	  }
	}catch(e){
		alert("Error imageContainerResize:"+e.message);
	}
}


function placeFooter(){
	try{
	  var footer 		=getElement("footer");
	  if(footer){
			var wrap   		=getElement("wrap");
			var wheight		=wrap.offsetHeight;
			var fheight		=footer.offsetHeight;
			if(footer.offsetTop!=(wheight-fheight)){
				footer.style.top=(wheight-fheight)+"px";		
				footer.style.visibility="visible";				
			}
			setTimeout("imageContainerResize();",1000);
		}
		
	}catch(e){
		alert("Error placeFooter:"+e.message);
	}
}

currentCity=false;

function initializeCity(){
	try{
    var path="";
    if(path=getElement("path")){
    	var location = new URL(new String(document.location));
    	var reference= new String(location.getReference());
    	if(reference){
    	  reference=reference.substring(6);
    	  if(city=getElement(reference)){
    	    selectCity(city);
    	  }
    	}
    }

	}catch(e){
		alert("Error initializeCity:"+e.message);
	}
}

function selectCity(cityObject){
	try{	  
	  if(description_div=getElement(cityObject.id+"_description")){

	    var emts=getElementsByClass("city_description");for(var i=0;i<emts.length;i++){emts[i].style.display="none";}
	    description_div.style.display="block";
	    if(currentCity){currentCity.className="";}
	    cityObject.className="current_"+cityObject.id;
	    currentCity=cityObject;
	    document.location.hash="city_"+currentCity.id;
	  }else{
	    alert(cityObject.id+"_description"+" not found");
	  }
	  return false;
	}catch(e){
		alert("Error selectCity:"+e.message);
	}
}

function viewPhoto(current){
	try{	  
	  
	  /// Контейнер 
	  var photo_container=getElement("photo_container");
	      /// Добавляем анимацию затенения
	  	  photo_container.anim_fade=new Animator().addSubject(new NumericalStyleSubject(photo_container, 'opacity', 1, 0));
	  	  if(photo_container.style.display=="block"){	  	    
	  	    photo_container.anim_fade.play();
	  	  }

	  var photo_fader=getElement("photo_fader");
	  photo_fader.style.display="block";
 		aGet(current+"/in_popup/","viewPhotoLoaded");
 		return false;
	}catch(e){
		alert("Error viewPhoto:"+e.message);
	}
}

/*
	 photo_container.anim_fade=new Animator().addSubject(new NumericalStyleSubject(photo_container, 'opacity', 1, 0));
	 photo_container.anim_show=new Animator().addSubject(new NumericalStyleSubject(photo_container, 'opacity', 0, 1));
	 photo_container.anim_fade.play();
*/

/*Загружен HTML*/
function viewPhotoLoaded(content,xml){
	try{	  
	  var photo_container=getElement("photo_container");
	  photo_container.style.display="none";
	  photo_container.innerHTML=xml.responseText;
	  var photo_path=getElement("photo_path");  	
    var img=new Image();
    img.src=photo_path.innerHTML;
    addEvent(img,"load",imageLoaded);		
    imageObject=img;
	}catch(e){
		alert("Error viewPhotoLoaded:"+e.message);
	}
}
/*Загружена сама картинка*/
function imageLoaded(){
	try{	  
	  var wrap=getElement("wrap");
	  var photo_photo=getElement("photo_photo");
	  var photo_container=getElement("photo_container");
	  /// Изменяем размеры контейнеров 
	  var iw=imageObject.width;
	  var ih=imageObject.height;
	  photo_photo.style.width=iw+"px";
	  photo_photo.style.height=ih+"px";
	  photo_container.style.width=iw+60+"px";
	  photo_container.style.height=ih+75+"px";
	  /// Изменяем позицию контейнера
	  var nl=Math.round(wrap.offsetWidth/2-(iw+60)/2)+"px";
	  var nt=Math.round(wrap.offsetHeight/2-(ih+75)/2)+"px";
	  photo_container.style.top=nt;
	  photo_container.style.left=nl;
	  photo_container.style.display="block";
	  /// Добавляем анимацию проявления
 	 	photo_container.anim_show=new Animator().addSubject(new NumericalStyleSubject(photo_container, 'opacity', 0, 1));
 	 	/// Запускаем анимацию
 	 	photo_container.anim_show.play();
	}catch(e){
		alert("Error imageLoaded:"+e.message);
	}
}

function photoClose(){
	try{	  
	  var photo_container=getElement("photo_container");
	  var photo_fader=getElement("photo_fader");
	  photo_container.innerHTML="";
	  photo_container.style.display="none";
	  photo_fader.style.display="none";
	  return false;
	}catch(e){
		alert("Error photoClose:"+e.message);
	}
}


function register_flags(){
	try{	  
	  var elements=getElementsByClass("submenuitem_link");
	  for(var i=0;i<elements.length;i++){
	    element=elements[i];
	    if(element.className.indexOf("current") == -1){
   			addEvent(element,"mouseover",runShowFlag);		
   			addEvent(element,"mouseout",runHideFlag);		
   			element.flagPos=20;
   			element.flagAction="show";
   		}
	  }
	}catch(e){
		alert("Error register_flags:"+e.message);
	}
}

function runShowFlag(event){
	try{	  
    	  event   = event || window.event;
  	var object  = event.target || event.srcElement;
  	object.flagPos=20;
  	setTimeout("showFlag('"+object.id+"')",20);
	}catch(e){
		alert("Error runShowFlag:"+e.message);
	}
}
function runHideFlag(event){
	try{	  
    	  event   = event || window.event;
  	var object  = event.target || event.srcElement;
  	object.flagPos=4;
  	setTimeout("hideFlag('"+object.id+"')",10);
	}catch(e){
		alert("Error runHideFlag:"+e.message);
	}
}

function showFlag(id){
	try{
	  var object=getElement(id);
   	object.style.backgroundPosition="left "+object.flagPos+"px";
  	if(object.flagPos>4){
	    object.flagPos--;
	    setTimeout("showFlag('"+object.id+"')",10);
		}
	}catch(e){
		alert("Error showFlag:"+e.message);
	}
}

function hideFlag(id,pos){
	try{	  
	  var object=getElement(id);
   	object.style.backgroundPosition="left "+object.flagPos+"px";
  	if(object.flagPos<20){
	    object.flagPos++;
	    setTimeout("hideFlag('"+object.id+"')",10);
	  }
	}catch(e){
		alert("Error hideFlag:"+e.message);
	}
}
imageContainerResizeInit();