// Basket
var basket = new Array();
var basketSize = 0;

// Catalog
var path = new String();
var elBody;
var mousePosition = new Object();

// Actions filters
var models = new Object();
var owners = new Object();
var smodels = new Object();
var styles = new Object();
var curentFilter, curentStyleFilter;

// CONFIGURE
var DEFAULT_FLOOR = '2';

// variables
var currentGroup = '';
var currentImageInd = 0;
var ImageViewIndex = new Array();
var infoMenuOtherNodes = new Array();
var infoMenuOtherNodesId = new Array();

var floorButtonPrefix = '/images/floor-btn-';
var floorButtonExt = '.gif';
var floorElementId = new Array();
var floorCurrent='';

// Basket functions (common)
preloadImages();
loadBasket();

function preloadImages() { 
  var Images = new Array();
  // Buttons mouse over
  Images.push("/images/bar-info-o.jpg");
  Images.push("/images/bar-information-o.jpg");
  Images.push("/images/sch-info-bg-s.jpg");
  Images.push("/images/bar-catalog-o.jpg");
  Images.push("/images/bar-search-o.jpg");
  Images.push("/images/sch-catalog-bg-s.jpg");
  Images.push("/images/bar-projects-o.jpg");
  Images.push("/images/bar-projects3-o.jpg");
  // Complex scheme
  Images.push("/images/floor-0.gif");
  Images.push("/images/floor-1.gif");
  Images.push("/images/floor-2.gif");
  Images.push("/images/floor-3.gif");
  // Preload  
  for(var i=0; i<Images.length; i++){
	  var img = new Image();
	  img.src = Images[i];
  }
} 

function loadBasket(){
  var tmp = readCookie('basket');
  var ar = tmp.split(',');
  for(var i=0; i<ar.length; i++){
    if(ar[i]!=''){basket.push(ar[i])}
  }
  basketSize = basket.length;
}

function showBasketState(){
  var elState = getObj('basket-state');
  var elSize = getObj('basket-state-size');
  if(elSize){elSize.innerHTML = basketSize}
  if(elState){
    if(basketSize){elState.className=''}else{elState.className='hide'}
  }
  var localState = getObj('basket-local-state');
  if(localState){
    if(basketSize){ localState.innerHTML = '<a href="/catalog/basket/?">Вы запомнили ('+basketSize+')</a>' }
	else{ localState.innerHTML = 'Вы запомнили (0)' }
  }
}

function goToBasket(){
  var fake = getCahefake();
  document.location = '/catalog/basket/cachekiller='+fake;
}

// COMPLEX scheme

function setFloor(fl, room, x, y, img){
  floorCurrent = fl;	
  
  elDescript = getObj('floor-'+fl+'-Room-'+room+'-txt');
  if((elDescript!=null)&&(elDescript.innerHTML!='')){
	  isDescript=1;
	  getObj('roomDescriptionText').className='';
  }else{
	  isDescript=0;
	  getObj('roomDescriptionText').className='hide';
  }
  elHaveImages = getObj('haveImages-'+fl+'-'+room);
  if(elHaveImages!=null){
	  isHaveImages=1;
      getObj('roomDescriptionGalery').className='';
  }else{
	  isHaveImages=0;
      getObj('roomDescriptionGalery').className='hide';
  }
  if((isDescript)||(isHaveImages)){ 
    getObj('roomDescription').className='';
  }else{ 
    getObj('roomDescription').className='hide';
  }
  
  for(i=0; i<floorElementId.length; i++ ){ getObj(floorElementId[i]).className = 'sch-item'  }
  if(room==0){
    getObj('roomDescription').className='hide';
    getObj('roomCanvas').className='hide';
  }else{
    getObj('roomCanvas').src='/images/spacer.gif';
	if(img !=''){
      getObj('roomCanvas').className='';
	  getObj('roomCanvas').style.marginLeft = x+'px';
	  getObj('roomCanvas').style.marginTop = y+'px';
	  getObj('roomCanvas').src='/dbfs/floor'+fl+'/img'+room+'.'+img;
	}else{
      getObj('roomCanvas').className='hide';
	}
  }
  for(i=0; i<4; i++){
	if(i == fl){
      getObj('floorButton'+i).src = '/images/floor-btn-'+i+'-s.gif';
	  getObj('floorCanvas').src = '/images/floor-'+i+'.gif';
	  if(room != 0){
		  getObj('floor-'+i+'-Room-'+room).className = 'sch-item-select';
		  getObj('roomDescriptionTitle').innerHTML = getObj('floor-'+i+'-Room-'+room).innerHTML;
		  getObj('roomDescriptionText').innerHTML = getObj('floor-'+i+'-Room-'+room+'-txt').innerHTML;
		  getObj('roomDescriptionGalery').innerHTML = '<a href="/complex-view/floor='+fl+'&room='+room+'">Фотогалерея комплекса</a>';
	  }
	}else{ 
	  getObj('floorButton'+i).src = '/images/floor-btn-'+i+'.gif';
	}
  }  
}

function flashFloorBtn(fl, over){
  if(fl == floorCurrent){return}
  var btn = getObj('floorButton'+fl);
  if(over){
    btn.src = '/images/floor-btn-'+fl+'-o.gif'
  }else{
	btn.src = '/images/floor-btn-'+fl+'.gif'
  }
}

function loadFloor(){
  var fl = readCookie('complex-floor');	
  var room = readCookie('complex-room');	
  if((isNaN(fl))&&(isNaN(room))){
    setFloor(fl,room);
  }else{
    setFloor(DEFAULT_FLOOR, '0');
  }
  setCookie('complex-floor','');
  setCookie('complex-room','');
}

// Popups

function showInfoMenu(){
  getObj('popupInfoMenu').className='visible';	
  setImageHaightById('shaddow-right', getObj('shadow-bar-right').clientHeight);
  getObj('select-free').className='visible';	
}

function hideInfoMenu(){
  getObj('select-free').className='unvisible';	
  getObj('popupInfoMenu').className='unvisible';	
}

// Image Viewer

var ImageViewerName = new Array();
var ImageViewerSrc = new Array();
var returnPosition = '';

function showImageViewerSingle(src, rp){
  getObj('imgView-image').src=src;
  getObj('imgView-next').className='hide';
  getObj('imgView-prev').className='hide';
  showImageViewer(rp);
}

function showImageViewer(rp){
	returnPosition = rp;
    var color = readCookie('imgViewColor');
	if(color==''){color='color-1'}
    getObj('imgView').className=color;
}

function colorImageViewer(e){
	getObj('imgView').className=e.className;
	setLongliveCookie('imgViewColor', e.className);
}

function preImageViewer(){
  currentImageInd--;
  if(currentImageInd<0){ currentImageInd = ImageViewIndex.length-1}
  curentIndexImageViewer();
}

function nextImageViewer(){
  currentImageInd++;
  if(currentImageInd>ImageViewIndex.length-1){ currentImageInd = 0}
  curentIndexImageViewer()
}

function curentIndexImageViewer(){
  var id = ImageViewIndex[currentImageInd];
  getObj('imgView-image').src = getObj('src-'+id).innerHTML;
  getObj('imgView-text').innerHTML = getObj('txt-'+id).innerHTML;
  var title = getObj('tit-'+id);
  if(title!=null){ getObj('imgView-title').innerHTML = getObj('tit-'+id).innerHTML }
}

function hideImageViewer(){
	document.location=returnPosition;
}

// COMMON JS FUNCTIONS

function getDocumentHeight() {
  var body = screen.getBody();
  var innerHeight =
  (defined(self.innerHeight)&&!isNaN(self.innerHeight))?self.innerHeight:0;
  if (!document.compatMode || document.compatMode=="CSS1Compat") {
    var topMargin = parseInt(CSS.get(body,'marginTop'),10) || 0;
    var bottomMargin = parseInt(CSS.get(body,'marginBottom'), 10) || 0;
    return Math.max(body.offsetHeight + topMargin + bottomMargin,
    document.documentElement.clientHeight,
    document.documentElement.scrollHeight, screen.zero(self.innerHeight));
  }
  return Math.max(body.scrollHeight, body.clientHeight,
  screen.zero(self.innerHeight));
};

function getObj(id){
	return document.getElementById(id);
}

function readCookie(cookieName) {
  var theCookie=document.cookie;
  var ind=theCookie.indexOf(cookieName);
  if (ind==-1 || cookieName=="") return ""; 
  var ind1=theCookie.indexOf(';',ind);
  if (ind1==-1) ind1=theCookie.length; 
  return unescape(theCookie.substring(ind+cookieName.length+1,ind1));
}

function setCookie(name, value){
  document.cookie = name+"="+escape(value)+"; path=/;";
}
function setLongliveCookie(name, value){
  var today = new Date(); 
  var expire = new Date(); 
  expire.setTime(today.getTime() + 3600000*24*365); 
  document.cookie = name+"="+escape(value)+"; path=/; expires="+expire.toGMTString();
}

function changeElementVisible(e){
	var el = getObj(e);
    if(el==null){exit}
	if(el.className==''){el.className='hide'}else{el.className=''}
}

function changeElementVisible2(e){
	var el = getObj(e);
    if(el==null){exit}
	if(el.className=='visible'){el.className='unvisible'}else{el.className='visible'}
}

// IMAGES
function newImage(path) { 
      var image = new Image(); 
      image.src = path; 
      return image; 
} 

function mousePageXY(e){  
  var x = 0, y = 0;  
  if (!e) e = window.event;  
  if (e.pageX || e.pageY)  
  {  
    x = e.pageX;  
    y = e.pageY;  
  }  
  else if (e.clientX || e.clientY)  
  {  
    x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;  
    y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;  
  }  
  return {"x":x, "y":y};  
}  

function getCahefake(){
	var time = new Date();
	return time.getFullYear()+''+time.getMonth()+''+time.getDay()+''+time.getHours()+''+time.getMinutes()+''+time.getSeconds();
}

String.prototype.md5 = function () {
	string = this;
	function RotateLeft(lValue, iShiftBits) { return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits)) }
	function AddUnsigned(lX,lY) {
		var lX4,lY4,lX8,lY8,lResult;
		lX8 = (lX & 0x80000000);
		lY8 = (lY & 0x80000000);
		lX4 = (lX & 0x40000000);
		lY4 = (lY & 0x40000000);
		lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
		if (lX4 & lY4) {
			return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
		}
		if (lX4 | lY4) {
			if (lResult & 0x40000000) {
				return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
			} else {
				return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
			}
		} else {
			return (lResult ^ lX8 ^ lY8);
		}
 	}
 	function F(x,y,z) { return (x & y) | ((~x) & z); }
 	function G(x,y,z) { return (x & z) | (y & (~z)); }
 	function H(x,y,z) { return (x ^ y ^ z); }
	function I(x,y,z) { return (y ^ (x | (~z))); }
	function FF(a,b,c,d,x,s,ac) {
		a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
		return AddUnsigned(RotateLeft(a, s), b);
	};
	function GG(a,b,c,d,x,s,ac) {
		a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
		return AddUnsigned(RotateLeft(a, s), b);
	};
	function HH(a,b,c,d,x,s,ac) {
		a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
		return AddUnsigned(RotateLeft(a, s), b);
	};
	function II(a,b,c,d,x,s,ac) {
		a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
		return AddUnsigned(RotateLeft(a, s), b);
	};
	function ConvertToWordArray(string) {
		var lWordCount;
		var lMessageLength = string.length;
		var lNumberOfWords_temp1=lMessageLength + 8;
		var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
		var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
		var lWordArray=Array(lNumberOfWords-1);
		var lBytePosition = 0;
		var lByteCount = 0;
		while ( lByteCount < lMessageLength ) {
			lWordCount = (lByteCount-(lByteCount % 4))/4;
			lBytePosition = (lByteCount % 4)*8;
			lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
			lByteCount++;
		}
		lWordCount = (lByteCount-(lByteCount % 4))/4;
		lBytePosition = (lByteCount % 4)*8;
		lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
		lWordArray[lNumberOfWords-2] = lMessageLength<<3;
		lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
		return lWordArray;
	};
	function WordToHex(lValue) {
		var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
		for (lCount = 0;lCount<=3;lCount++) {
			lByte = (lValue>>>(lCount*8)) & 255;
			WordToHexValue_temp = "0" + lByte.toString(16);
			WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
		}
		return WordToHexValue;
	};
	function Utf8Encode(string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
		}
		return utftext;
	};
	var x=Array();
	var k,AA,BB,CC,DD,a,b,c,d;
	var S11=7, S12=12, S13=17, S14=22;
	var S21=5, S22=9 , S23=14, S24=20;
	var S31=4, S32=11, S33=16, S34=23;
	var S41=6, S42=10, S43=15, S44=21;
	string = Utf8Encode(string);
	x = ConvertToWordArray(string);
	a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
	for (k=0;k<x.length;k+=16) {
		AA=a; BB=b; CC=c; DD=d;
		a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
		d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
		c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
		b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
		a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
		d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
		c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
		b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
		a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
		d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
		c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
		b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
		a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
		d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
		c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
		b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
		a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
		d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
		c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
		b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
		a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
		d=GG(d,a,b,c,x[k+10],S22,0x2441453);
		c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
		b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
		a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
		d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
		c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
		b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
		a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
		d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
		c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
		b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
		a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
		d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
		c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
		b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
		a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
		d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
		c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
		b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
		a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
		d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
		c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
		b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
		a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
		d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
		c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
		b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
		a=II(a,b,c,d,x[k+0], S41,0xF4292244);
		d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
		c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
		b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
		a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
		d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
		c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
		b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
		a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
		d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
		c=II(c,d,a,b,x[k+6], S43,0xA3014314);
		b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
		a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
		d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
		c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
		b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
		a=AddUnsigned(a,AA);
		b=AddUnsigned(b,BB);
		c=AddUnsigned(c,CC);
		d=AddUnsigned(d,DD);
	}
	var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
	return temp.toLowerCase();
  }

/* captcha */

function setCaptcha(){
  var elKey = document.getElementById('fbcapkey');
  var elImage = document.getElementById('capImage');
  
  var d = new Date();
  var key = String(d.getTime()).md5();
  if(elKey){ 
    elKey.value = key;
	if(elImage){ elImage.src = '/cgi-bin/captcha.cgi?key='+key }
  }

  var elCode = document.getElementById('fbcapcode');
  if(elCode){
	 elCode.value = '';
  }
  
}

function badCaptcha(f){
	var el = document.getElementById('badCaptcha');
	if(el){ 
	  if(f){ 
	    el.className = '' 
	  }else{
		el.className = 'hide' 
	  }
	}
}

