// get mouse pointer position
function pointerX(e) { return e.pageX || (e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) }
function pointerY(e) { return e.pageY || (e.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) }

// get window size
function windowHeight() { return self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0 }
function windowWidth() { return self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0 }

function pageScrollY() { return self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0 }
function pageScrollX() { return self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0 }

// get pixel position of an object
function getY(o){ var y = 0
	if (o.offsetParent) while (o.offsetParent) { y += o.offsetTop; o = o.offsetParent }
	return y
}
function getX(o){ var x = 0
	if (o.offsetParent) while (o.offsetParent) { x += o.offsetLeft; o = o.offsetParent }
	return x
}
function setX(o, n){ o.style.left = n + 'px' }
function setY(o, n){ o.style.top = n + 'px' }

function footer() {
	var h = windowHeight(), footer = $('footer'), bottom = getY($('bottom')), sidebar = $('sidebar')
	var fh = footer.clientHeight || footer.offsetHeight // todo: why does IE report 0 for clientHeight?
	if (bottom != 0) {
		if (bottom < h - fh) footer.style.marginTop = ((h - fh)-bottom-3)+'px'
		else footer.style.marginTop = 0
	}
	footer.parentNode.style.visibility = 'visible'
}

/* Utils */
var Cookie = {
  set: function(name, value, daysToExpire) {
    var expire = '';
    if (daysToExpire != undefined) {
      var d = new Date();
      d.setTime(d.getTime() + (86400000 * parseFloat(daysToExpire)));
      expire = '; expires=' + d.toGMTString();
    }
    return (document.cookie = escape(name) + '=' + escape(value || '') + expire + '; path=/');
  },
  get: function(name) {
    var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + escape(name) + '=([^;\\s]*)'));
    return (cookie ? unescape(cookie[2]) : null);
  },
  erase: function(name) {
    var cookie = Cookie.get(name) || true;
    Cookie.set(name, '', -1);
    return cookie;
  },
  accept: function() {
    if (typeof navigator.cookieEnabled == 'boolean') {
      return navigator.cookieEnabled;
    }
    Cookie.set('_test', '1');
    return (Cookie.erase('_test') = '1');
  }
}

var sectionDigest = new Array();

var CityID = Cookie.get('mycity');
if (!CityID)
{
	CityID = 1448; //Almata
	Cookie.set('mycity', CityID, 365);
}

function SetDigest() {
	// TC
	var TcCookName = 'cnt_tc'+CityID;
	if (!Cookie.get(TcCookName))
	{
		new Ajax.Request('/js/get_cnt_tc.php?CityID='+CityID+'&vtype=count', {
			'method':'get',
			'onSuccess': function (r) {
					$('cnt_tc').innerHTML = r.responseText;
					Cookie.set(TcCookName, r.responseText, 0.2);
				}
			}
		);
	} else {
		$('cnt_tc').innerHTML = Cookie.get(TcCookName);
	}
	// TM
	var TmCookName = 'cnt_tm'+CityID;
	if (!Cookie.get(TmCookName))
	{
		new Ajax.Request('/js/get_cnt_tm.php?CityID='+CityID+'&vtype=count', {
			'method':'get',
			'onSuccess': function (r) {
					$('cnt_tm').innerHTML = r.responseText;
					Cookie.set(TmCookName,r.responseText, 0.2);
				}
			}
		);
	} else {
		$('cnt_tm').innerHTML = Cookie.get(TmCookName);
	}
	// SHOPS
	var ShopsCookName = 'cnt_shops'+CityID;
	if (!Cookie.get(ShopsCookName))
	{
		new Ajax.Request('/js/get_cnt_shops.php?CityID='+CityID+'&vtype=count', {
			'method':'get',
			'onSuccess': function (r) {
					$('cnt_shops').innerHTML = r.responseText;
					Cookie.set(ShopsCookName,r.responseText, 0.2);
				}
			}
		);
	} else {
		$('cnt_shops').innerHTML = Cookie.get(ShopsCookName);
	}
	// ITEMS
	var ItemsCookName = 'cnt_items'+CityID;
	if (!Cookie.get(ItemsCookName))
	{
		new Ajax.Request('/js/get_cnt_items.php?CityID='+CityID+'&vtype=count', {
			'method':'get',
			'onSuccess': function (r) {
					$('cnt_items').innerHTML = r.responseText;
					Cookie.set(ItemsCookName,r.responseText, 0.1);
				}
			}
		);
	} else {
		$('cnt_items').innerHTML = Cookie.get(ItemsCookName);
	}
	sectionDigest = new Array();
}

/* Expertika funcitons */
var CityElemClass = Class.create();
CityElemClass.prototype =
{
	id: null,
	elem: null,
	initialize:  function(id)
	{
		this.id = id;
		this.elem = $(this.id);
		this.bindOverFunction = this.CityElemOver.bindAsEventListener(this);
		this.bindOutFunction = this.CityElemOut.bindAsEventListener(this);
		this.bindClickFunction = this.CityElemClick.bindAsEventListener(this);
		Event.observe(this.elem, 'mouseover', this.bindOverFunction);
		Event.observe(this.elem, 'mouseout', this.bindOutFunction);
		Event.observe(this.elem, 'click', this.bindClickFunction);
	},
	CityElemOver: function(e)
	{
		this.elem.className = 'cityInListOn';
	},
	CityElemOut: function(e)
	{
		this.elem.className = 'cityInList';
	},
	CityElemClick: function(e)
	{
		try {
			CityObj.HideSelector();
		}
		catch(e)
		{
			;
		}
		Cookie.set('mycity', this.id.replace(/City/gi,''), 365);
		CityID = Cookie.get('mycity');
		$('curr_city').innerHTML = $(this.id).innerHTML;
		SetDigest();
	}
}

var CityClass = Class.create();
CityClass.prototype =
{
	cityDiv: null,
	citySelector: null,
	cityListJSON: '',
	cityList: new Array(),
	selectorHide: true,

	initialize: function()
	{
		this.cityDiv = $('city_select');
		this.citySelector = $('city_selector');
		this.bindOverFunction = this.CityOver.bindAsEventListener(this);
		this.bindOutFunction = this.CityOut.bindAsEventListener(this);
		this.bindClickFunction = this.CityClick.bindAsEventListener(this);
		//Event.observe(this.cityDiv, 'mouseover', this.bindOverFunction);
		//Event.observe(this.cityDiv, 'mouseout', this.bindOutFunction);
		Event.observe('city_select', 'click', this.bindClickFunction);

		new Ajax.Request('/js/city_list.php', {
			'method':'get',
			'onSuccess': this.SetTxt.bindAsEventListener(this)
			});
	},
	SetTxt: function(transport)
	{
		this.citySelector.innerHTML = transport.responseText;
		var list = document.getElementsByClassName('cityInList');
		for (var i = 0; i < list.length; i++) {
			this.cityList.push(new CityElemClass(list[i].id));
		}
		$('curr_city').innerHTML = $('City'+CityID).innerHTML;
	},
	CityOver: function(e)
	{
		this.citySelector.show();
	},
	CityOut: function(e)
	{
		this.citySelector.hide();
	},
	HideSelector: function()
	{
		this.selectorHide = true;
		this.citySelector.hide();
	},
	ShowSelector: function()
	{
		this.selectorHide = false;
		this.citySelector.show();
	},
	CityClick: function(e)
	{
		if (this.selectorHide)
			this.ShowSelector();
		else
			this.HideSelector();
	}

}

/*******TESTING*********************/
var noveltyLastId = 0;  //начальный индекс массива новинок
function changeNovelty(){
    new Ajax.Request('/js/novelty_list.php?lastId='+noveltyLastId+'&CityID='+CityID, {
         'method':'get',
         'onSuccess': function(tr) {
            if (tr.responseText!="") {
			  $('ftxt1').innerHTML = $('ftxt2').innerHTML;
			  $('ftxt2').innerHTML = $('ftxt3').innerHTML;
			  $('ftxt3').innerHTML =  tr.responseText;

			  pStart = tr.responseText.indexOf("<!--")+4;
			  pEnd = tr.responseText.lastIndexOf("-->");
			  noveltyLastId = tr.responseText.substring(pStart, pEnd);
	      	  //noveltyLastId++;
            }
         }
    });
}

function getNoveltyElem(e){
    new Ajax.Request('/js/novelty_list.php?lastId='+noveltyLastId+'&CityID='+CityID, {
         'method':'get',
         'asynchronous': false,
         'onSuccess': function(tr) {
           $(e).innerHTML = tr.responseText;
           pStart = tr.responseText.indexOf("<!--")+4;
           pEnd = tr.responseText.lastIndexOf("-->");
           noveltyLastId = tr.responseText.substring(pStart, pEnd);
           //alert(noveltyLastId);
         }
    });
    //alert(noveltyLastId);
    //noveltyLastId++;
}

function loadRightNow()
{
	if ($('now_sales').style.display != 'none')
	{
		new Ajax.Updater('now_sales_ctx', '/js/get_now_sales.php?CityID='+CityID);
	}
}
function loadTopNews()
{
	if ($('top_news').style.display != 'none')
	{
		new Ajax.Updater('top_news_ctx', '/js/get_top_news.php?CityID='+CityID);
	}
}

function showSectionDigest(e)
{
	var x = Event.pointerX(e);
	var y = Event.pointerY(e);
	var elem = $('miniDigest');
	var id = Event.element(e).id.substr(1);
	elem.style.left = (x+7)+'px';
	elem.style.top = (y+3)+'px';
	elem.style.display = 'block';
	if (sectionDigest[id] == undefined)
	{
		new Ajax.Request('/js/section_digest.php?CityID='+CityID+'&SECTION_ID='+id,
			{
				'method':'get',
				'onSuccess':function(r) {
					var id = r.responseText.substr(0, r.responseText.indexOf(':'));
					sectionDigest[id] = r.responseText;
					var str = sectionDigest[id].substr(sectionDigest[id].indexOf(':')+1);
					var cnt = str.split(',');
					var elem = $('miniDigest');
					elem.innerHTML = 'Товаров: '+cnt[2];
					//elem.innerHTML = 'Магазинов: '+cnt[0]+'<br/>Торговых центров: '+cnt[1]+'<br/>Товаров: '+cnt[2];
				}
			}
		);
		sectionDigest[id] = 'loading';
	} else {
		if (sectionDigest[id] == 'loading')
			elem.innerHTML = ' Загрузка...';
		else
		{
			var str = sectionDigest[id].substr(sectionDigest[id].indexOf(':')+1);
			var cnt = str.split(',');
			//elem.innerHTML = 'Магазинов: '+cnt[0]+'<br/>Торговых центров: '+cnt[1]+'<br/>Товаров: '+cnt[2];
			elem.innerHTML = 'Товаров: '+cnt[2];
		}
	}

}
function hideSectionDigest(e)
{
	var elem = $('miniDigest');
	elem.style.display = 'none';
}

/*use for open image scheme-drive on pages shop or tcenter**/
function OpenImagePopup(imgPath, title, alt) {
    var win = window.open('','preview',
    'width=50,height=50,left=0,top=0,screenX=0,screenY=0,resizable=1,scrollbar=0,status=0');

    var winDoc = win.document;
    if (title == undefined) title = 'My Image, Click to Close';
    if (alt   == undefined) alt   = 'My Image, Click to Close';
    var content = '<html><head><title>' + title + '</title>' +
    			  '<style>body{overflow: hidden;margin:0;}img{border:0;}</style>' +
    			  '</head><body><a href="javascript:self.close()">' +
    			  '<img alt="' + alt + '" id="image" src="' + imgPath + '" /></a></body></html>'
    win.document.write(content);

    winDoc.body.onload = function() {
    	var obj = winDoc.getElementById('image');
    	var w = obj.width, h = obj.height;
    	var iHeight= document.body.clientHeight, iWidth = self.innerWidth;

    	var left = (self.opera ? iWidth : screen.availWidth)/2 - w/2;
    	var top =  (self.opera ? iHeight : screen.availHeight)/2 - h/2;
    	win.resizeTo(w+12, h+82);
    	win.moveTo(left, top);
    }

    win.onload = winDoc.body.onload; // special for Mozilla

    // !!! Very important statement: popup onload won't execute without it!
    win.document.close();
    win.focus();
}



