// Первая колонка в строке таблицы inner
hitchs.add(
	function() {
		var tables = document.getElementsByTagName('table');
		for(var i =0; i < tables.length; i++) {
			if (tables[i].className.indexOf('inner') == -1) {
				continue;
			}

			var skip = 0;
			var rows = tables[i].rows;

			for(var j =0; j < rows.length; j++) {
				if (skip > 0) {
					skip--;
					continue;
				}

				var first = rows[j].cells[0];

				var rowspan = first.getAttribute('rowspan');

				if (rowspan !== null && rowspan > 1) {
					skip = rowspan - 1;
				}

				if (first.tagName.toLowerCase() == 'td') {
					if (first.className.length) {
						first.className += 'first';
					} else {
						first.className = 'first';
					}
				}
			}
		}
	}
);

// Меню
hitchs.add(
	function() {
		var header = document.getElementById('header');

		if (header === null) {
			return;
		}

		var a = header.getElementsByTagName('li');
		for(var i = 0; i < a.length; i++) {
			if (a[i].className != 'active') {
				a[i].onmouseover = function() {
					this.className = 'arrow';
				}

				a[i].onmouseout = function() {
					this.className = '';
				}
			}
		}
	}
);

// Роуминг
hitchs.add(
	function() {
		var roamingData     = document.getElementById('roamingData');
		var roamingCity     = document.getElementById('roamingCity');
		var roamingZone     = document.getElementById('roamingZone');
		var roamingZoneLink = document.getElementById('roamingZoneLink');

		if (roamingZone  != null && roamingZoneLink != null) {
			hash = window.location.hash.replace(/#/, '');

			if (hash !== 'worldzone') {
				roamingZone.style.display = 'none';
			} else {
				roamingZone.scrollIntoView(true);
				roamingZoneLink.parentNode.className = 'hideSpan';
			}

			roamingZoneLink.onclick = function() {
				roamingZone.style.display = (roamingZone.style.display === '') ? 'none'     : '';
				this.parentNode.className = (roamingZone.style.display === '') ? 'hideSpan' : '';
			}
		}

		if (roamingData  != null && roamingCity  != null) {
			function SelectRoamingCity() {
				if (current !== null) {
					current.div.className = '';
					current.parentNode.className = '';
				}

				this.div.className = 'current';
				this.parentNode.className = 'current';

				current = this;
			}

			hash = window.location.hash.replace(/#/, '');

			roamingData.className = 'roamingDataHide';

			divs = ArrayFromCollection(roamingData.getElementsByTagName('div'));
			as   = ArrayFromCollection(roamingCity.getElementsByTagName('a'));

			var current = null;
			var change  = null;

			divsRight = [];
			// filter 
			for(i in divs) {
				if (typeof divs[i] != 'object') {
					continue;
				}

				if (divs[i].parentNode == roamingData) {
					divsRight[divsRight.length] = divs[i];
				}
			}

			for(i in as) {
				if (typeof as[i] != 'object') {
					continue;
				}

				var a = as[i];
				if (a.parentNode.className === 'current') {
					current = a;
				}

				if (hash.length && a.href.indexOf(hash) !== -1) {
					change = a;
				}
				a.div = divsRight[i];

				a.onclick = SelectRoamingCity;
			}

			if (change !== null) {
				SelectRoamingCity.call(change);
			}
		}
	}
);

// Линия народного контроля / шаг 2x
hitchs.add(
	function() {
		var root = document.getElementById('coverageStep2x');

		if (root == null) {
			return;
		}

		var submit = window.parent.document.getElementById('submit');
		if (submit !== null) {
			submit.disabled = false;
		}

		var myframe = window.parent.document.getElementById('search-frame');
		if (myframe !== null) {
			try {
				var changeHeight = window.setInterval(
					function() {
						myframe.style.height = 100 + 'px';

						if (window.navigator.userAgent.search('MSIE 6.0') != -1) {
							myframe.style.height = 250 + 'px';
						}

						scrollH = document.getElementsByTagName('div')[0].scrollHeight * 1;
						clientH = document.getElementsByTagName('div')[0].clientHeight * 1;

						height = scrollH > clientH ? clientH : scrollH;

						if (window.opera) {
							height += 120;
						}

						if (height > 0) {
							myframe.style.height = height + 'px';
							window.clearInterval(changeHeight);
						}
					},
					50
				);

			} catch(e) {
				alert('Carrrrraaaamba!!!');
			}
		}
	}
);

// Линия народного контроля / шаг 2
hitchs.add(
	function() {
		var seltype = document.getElementsByName('seltype');
		if (seltype == null || seltype.length <= 0) {
			return;
		}

		for(var i = 0; i<seltype.length; i++) {
			seltype[i].onclick = function() {
				this.form.lay.disabled = (this.id != 'seltype_actfindext');

				document.getElementById('hint1').style.display = (this.value == 'addr') ? 'none' : 'block';
				document.getElementById('hint2').style.display = (this.value != 'addr') ? 'none' : 'block';
			}
		}

		document.getElementById('defaultAdress').onclick = function() {
			this.parentNode.parentNode.addr.value = this.innerHTML;
		}
	}
);

// Линия народного контроля / шаг 1
hitchs.add(
	function() {
		var crmForm = document.getElementById('crmForm');
		if (crmForm === null) {
			return ;
		}

		var timeabout = document.getElementById('timeabout');
		timeabout.style.display = 'none';


		crmForm.problem.onchange = function() {
			var value = this.options[this.selectedIndex].value;

			hs = this.form.subproblem;
			h  = crmClassificator[value];

			hs.disabled = false;

			for (var i=hs.childNodes.length; i>0; i--) {
				if (typeof hs.childNodes[i] == 'object') {
					hs.removeChild(hs.childNodes[i]);
				}
			}

			for (var i in h) {
				var o = document.createElement('option');
				hs.appendChild(o);
				o.appendChild(document.createTextNode(h[i]));
				o.setAttribute('value', i);
			}

			hs.selectedIndex = 0;

			document.getElementById('mapFields').style.display = (value == 7 || value == 9) ? 'block' : 'none';

			document.getElementById('timeabout').style.display = (value == 7) ? 'block' : 'none';
		}


		crmForm.subproblem.onchange = function() {
			var val = this.options[this.selectedIndex].value;
			f = fields[val];
			var ctype = document.getElementsByTagName('select');

			for(var i = 0; i < ctype.length; i++) {
				var link = ctype[i];

				if (link.className != 'block') {
					continue;
				}

				link.options[0].selected = true;
				link.disabled = false;

				for(var j = 0; j < link.options.length; j++) {
					if (link.options[j].value == f) {
						link.options[j].selected = true;
						link.disabled = true;

						var hidden = document.createElement('input');
						hidden.type = 'hidden';
						hidden.name = link.name;
						hidden.value = link.options[j].value;

						timeabout.appendChild(hidden);
					}
				}
			}
		}

		function createSelect(select, selects) {
			for(var j = 0; j < selects.options.length; j++) {
				select.options[j] = new Option (selects.options[j].text, selects.options[j].value, false, selects.options[j].selected);
			}
			return select;
		}

		var block = document.getElementById('block');
		var tel   = document.getElementById('phonenumber');
		var labels = timeabout.getElementsByTagName('label');
		var selects = timeabout.getElementsByTagName('select');

		block.onclick = function() {
			if (!tel.value.length) {
				return ValidateNotice(tel);
			} else {
				var count = timeabout.getElementsByTagName('input').length;

				var where = document.createElement('div');
				where.className = 'timeabout';

				var lable1 = document.createElement('label');
				var labeltext1 = document.createTextNode(labels[0].childNodes[0].nodeValue);

				var select1 = document.createElement('select');
				select1.name = 'block['+count+'][links]';
				select1.className = 'block';

				var val = crmForm.subproblem.options[crmForm.subproblem.selectedIndex].value;
				f = fields[val];
				createSelect(select1, selects[0]);

				select1.disabled = false;
				for(var j = 0; j < select1.options.length; j++) {
					if (select1.options[j].value == f) {
						select1.options[j].selected = true;
						select1.disabled = true;
						var hidden = document.createElement('input');
						hidden.type = 'hidden';
						hidden.name = select1.name;
						hidden.value = select1.options[j].value;
						timeabout.appendChild(hidden);
					}
				}

				var lable2 = document.createElement('label');
				var labeltext2 = document.createTextNode(labels[1].childNodes[0].nodeValue);
				var input = document.createElement('input');
				input.type = 'text';
				input.name = 'block['+count+'][phone]';
				input.className = 'textfield';
				input.setAttribute('maxlength', '10');

				var notice = document.createElement('p');
				notice.className = 'notice';
				var labeltext3 = document.createTextNode(timeabout.getElementsByTagName('p')[0].childNodes[0].nodeValue);

				var today = new Date();
				var lable3 = document.createElement('label');
				var labeltext4 = document.createTextNode(labels[2].childNodes[0].nodeValue);

				var select2 = document.createElement('select');
				select2.name = 'block['+count+'][date][day]';
				select2.className = 'date-day';
				var option = new Array();
				createSelect(select2, selects[1]);

				var select3 = document.createElement('select');
				select3.name = 'block['+count+'][date][month]';
				select3.className = 'date';
				createSelect(select3, selects[2]);

				var select4 = document.createElement('select');
				select4.name = 'block['+count+'][date][year]';
				select4.className = 'date-year';
				createSelect(select4, selects[3]);

				var select5 = document.createElement('select');
				select5.name = 'block['+count+'][date][hour]';
				select5.className = 'date-day';
				createSelect(select5, selects[4]);

				var span = document.createElement('span');
				span.innerText = ' : ';

				var select6 = document.createElement('select');
				select6.name = 'block['+count+'][date][min]';
				select6.className = 'date-day';
				createSelect(select6, selects[5]);

				var br1 = document.createElement('br');

				where.appendChild(lable1);
				lable1.appendChild(labeltext1);
				where.appendChild(select1);
				where.appendChild(br1);

				where.appendChild(lable2);
				lable2.appendChild(labeltext2);
				where.appendChild(input);
				where.appendChild(notice);
				notice.appendChild(labeltext3);

				where.appendChild(lable3);
				lable3.appendChild(labeltext4);
				where.appendChild(select2);
				where.appendChild(select3);
				where.appendChild(select4);
				where.appendChild(select5);
				where.appendChild(span);
				where.appendChild(select6);
				with(this.parentNode) {
					insertBefore(where,   this);
				}
			}
			return false;
		}

		var place = document.getElementsByName('place');
		for(var i = 0; i<place.length; i++) {
			place[i].onclick = function() {
				this.form.floor.parentNode.disabled = (this.value != 3);
				this.form.floor.disabled            = (this.value != 3);
			}
		}
	}
);


// Поиск дилеров
hitchs.add(
	function() {
		var dealers = document.getElementById('dealers');
		if (dealers === null) {
			return;
		}

		dealers.city.onchange = function() {
			this.form.metro.disabled = !!this.selectedIndex;
		}
	}
);

function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    }
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX +
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY +
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}


// Поиск по карте метро
function metroOfficeInit() {
	var metroarea = document.getElementById('metroarea');
	var metromap  = document.getElementById('metromap');

	var areas = metroarea.getElementsByTagName('area');

	var i = 0;
	while(i < areas.length) {
		a = document.createElement('a');
		a.title = areas[i].getAttribute('title');

		var coords = areas[i].getAttribute('coords').split(',');

		a.style.top  = (coords[1]-6)+'px';
		a.style.left = (coords[0]-6)+'px';

		a.href = areas[i].getAttribute('href');

		$(a).bind('click', function(e) {
			coords = getPosition(e);
			url = this.href + '&ajaxbubble=1&x=' + coords.x + '&y=' + coords.y;
			$('#bubble_place').load(url);
			return false;
		});

		metromap.appendChild(a);
		i++;
	}
}

hitchs.add(
	function() {
		var metroarea = document.getElementById('metroarea');
		var metromap  = document.getElementById('metromap');

		if (metroarea === null || metromap === null) {
			return;
		}

		switch(metroarea.getAttribute('searchtype')) {
			case 'office':
				metroOfficeInit();
				break;

			case 'coverage':
				var areas = metroarea.getElementsByTagName('area');

				var i = 0;
				while(i < areas.length) {
					if (areas[i]) {
						var span = document.createElement('span');
						span.title = areas[i].getAttribute('title');

						var coords = areas[i].getAttribute('coords').split(',');

						span.style.top  = (coords[1]-6)+'px';
						span.style.left = (coords[0]-6)+'px';

						metromap.appendChild(span);
						areas[i].onclick = function() {
							return false;
						}
						areas[i].href = '';
					}
					i++;
				}
				break;
		}
	}
);


// Стандартная форма подписки
hitchs.add(
	function() {
		var subscribe = document.getElementById('subscribe');

		if (subscribe === null || subscribe.tagName.toLowerCase() !== 'form') {
			return;
		}

		var email = null;
		for(var i =0; i< subscribe.elements.length; i++) {
			if (subscribe.elements[i].type == 'text') {
				email = subscribe.elements[i];
			}
		}

		if (email !== null) {
			try {
				notice = email.getAttribute('notice');

				email.value = notice;

				email.onfocus = function() {
					if (this.value == notice) {
						this.value = '';
					}
				}

				email.onblur = function() {
					if (!this.value.length) {
						this.value = notice;
					}
				}
			} catch(e) {
				// can't find email input
			}
		}
	}
);


// Выбор региона
hitchs.add(
	function() {
		try {
			var veilFrame = window.parent.document.getElementById('veilFrame');

		} catch(e) {
			var veilFrame = null;
		}

		var docId = document.body.getAttribute('id');

		if (veilFrame !== null && (docId == null || docId.length == 0)) {
			// Выбор высоты фрейма
			try {
				var changeHeight = window.setInterval(
					function() {
						height = document.body.offsetHeight + 0;

						if (height > 0) {
							veilFrame.style.height = height + 5 + 'px';
							window.clearInterval(changeHeight);
						}
					},
					50
				);
			} catch(e) {
				alert('не удалось изменить высоту');
			}
		}

		// Создание кнопки "закрыть"
		if (veilFrame !== null && document.body.className.indexOf('popup-regions') !== -1) {
			closeA = document.createElement('img');
			closeA.className = 'close'
			closeA.src = '/i/label/close.gif';
			closeA.onclick = function() {
				try {
					b = window.parent.document.body;
					b.className = b.className.replace(' veil', '');
				} catch(e) {
				}
			}
			document.getElementById('content').appendChild(closeA);
		}

		// Вызов окна выбора региона
		var region =  document.getElementById('region');

		if (region !== null && region.tagName.toLowerCase() == 'div') {

			link = region.getElementsByTagName('a')[0];
			host = 'http://'+link.hostname;

			var layout = document.getElementById('layout');

			var veil = document.createElement('div');
			veil.id = 'veil';

			var veildiv1  = document.createElement('div');
			veildiv1.id = 'inveil';

			var veildiv  = document.createElement('div');
			veildiv.className = "position";
			var veildiv2 = document.createElement('div');

			var bottom = document.createElement('img');
			bottom.src = host+'/i/bg/veil/bottom.png';
			bottom.className = "png";

			var top    = document.createElement('img');
			top.src = host+'/i/bg/veil/top.png';
			top.className = "png";

			var iframe = document.createElement('iframe');
			iframe.src  = '/regions/';
			iframe.id   = 'veilFrame';

			iframe.setAttribute('frameborder', '0');
			iframe.frameBorder = 0;
			iframe.setAttribute('scrolling',   'auto');

			veildiv2.appendChild(iframe);

			veildiv.appendChild(top);
			veildiv.appendChild(veildiv2);
			veildiv.appendChild(bottom);

			veil.appendChild(veildiv1);
			veil.appendChild(veildiv);


			layout.parentNode.insertBefore(veil, layout);

			link.onclick = function() {
				layout.parentNode.className = layout.parentNode.className + ' veil';
				return false;
			}
		}
	}
);


// Исправление "alt" в Gecko  браузерах
hitchs.add(
	function() {
		if (navigator.product && navigator.product == 'Gecko') {
			var i, j, images = Array(document.getElementsByTagName('IMG'), document.getElementsByTagName('INPUT'), document.getElementsByTagName('AREA'));

			for (i = 0; i < images.length; i++) {
				for (j = 0; j < images[i].length; j++) {
					with (images[i][j]) {
						if (getAttribute('alt') && !getAttribute('title')) setAttribute('title', getAttribute('alt'));
					}
				}
			}
		}
	}
);


// Витрина услуг
hitchs.add(
	function() {
		var servicesgroup = document.getElementById('servicesgroup');
		if (servicesgroup === null) {
			return;
		}

		var full    = document.getElementById('servicesgroup_full');
		var content = document.getElementById('content');

		var as = servicesgroup.getElementsByTagName('a');
		var ab = full.getElementsByTagName('a');

		var current = window.location.href.match(/#(.+)$/i);

		for(i in as) {
			if (i !== 'length') {
				as[i].onclick = function() {
					xpn = this.getAttribute('xpathname');

					var tmp = full.getElementsByTagName('li');
					for(i in tmp) {
						if (i !== 'length' && tmp[i].parentNode == full) {
							tmp[i].style.display = (tmp[i].className == xpn) ? 'block' : 'none';
						}
					}
					this.parentNode.parentNode.style.display = 'none';

					window.location.href = this.href.replace(xpn+'.html', '#'+xpn);
					content.scrollIntoView();
					return false;
				}

				if (current !== null && as[i].getAttribute('xpathname') === current[1]) {
					as[i].click();
				}
			}
		}

		for(i in ab) {
			if (i !== 'length' && ab[i].className == 'back') {
				ab[i].onclick = function() {
					var tmp = full.getElementsByTagName('li');
					for(i in tmp) {
						if (i !== 'length' && tmp[i].parentNode == full) {
							tmp[i].style.display = 'none';
						}
					}
					servicesgroup.style.display = 'block';

					window.location.href = this.href+'#servicesgroup';

					content.scrollIntoView();
					return false;
				}
			}
		}
	}
);


// Витрина тарифов
function _tariffGroupChanger(containerId) {
	var container = document.getElementById(containerId)

	if (container === null) {
		return;
	}

	var radios = container.getElementsByTagName('input');
	var link   = container.getElementsByTagName('a');

	container.buy  = [];
	container.more = [];

	for (var i = 0; i < link.length; i++) {
		var ltype = (link[i].className === 'buy') ? 'buy' : 'more';
		container[ltype][container[ltype].length] = link[i];
	}

	for (var i = 0; i < radios.length; i++) {
		if (radios[i].type === 'radio') {
			radios[i].moreA = container.more;
			radios[i].buyA  = container.buy;

			radios[i].onclick = function() {
				var buy  = this.getAttribute('buy');
				var more = this.getAttribute('more');

				for(var i = 0; i < this.buyA.length; i++) {
					this.buyA[i].href = buy;
				}

				for(var i = 0; i < this.moreA.length; i++) {
					this.moreA[i].href = more;
				}
			}
		}
	}
}

hitchs.add(
	function() {
		_tariffGroupChanger('callwindow');
	}
);

hitchs.add(
	function() {
		_tariffGroupChanger('iphonewindow');
	}
);

hitchs.add(
	function() {
		_tariffGroupChanger('svobodawindow');
	}
);

// Конструктор MMS
hitchs.add(
	function() {
		var selectbg     = document.getElementById('selectbg');
		var mmsconst     = document.getElementById('mmsconst');
		var previewImage = document.getElementById('previewImage');

		var RedrawPreview = function () {
			c = 0;
			cs = mmsconst.elements['c'];
			for(k = 0; k < cs.length; k++) {
				if (cs[k].checked) {
					c = cs[k].value;
				}
			}

			s = 0;
			ss = mmsconst.elements['s'];
			for(k = 0; k < ss.length; k++) {
				if (ss[k].checked) {
					s = ss[k].value;
				}
			}

			url = '/ext/mms.image';
			url += '?i='+mmsconst.i.value;
			url += '&s='+s;
			url += '&c='+c;
			url += '&t='+mmsconst.t.value;

			previewImage.src = url;
		}

		if (mmsconst === null || selectbg === null) {
			return;
		}

		bgs = selectbg.getElementsByTagName('a');
		current = null;
		for(var i = 0; i < bgs.length; i++) {
			var a = bgs[i];

			if (a.parentNode.className == 'current') {
				current = a.parentNode;
			}

			a.onclick = function() {
				if (current !== null) {
					current.className = '';
					current = this.parentNode;
				}

				this.parentNode.className = 'current';
				mmsconst.i.value = this.getAttribute('image');

				RedrawPreview();
				return false;
			}
		}

		colors = mmsconst.getElementsByTagName('label');
		var k = 0;
		for(var i = 0; i < colors.length; i++) {
			var col = colors[i];

			if (col.className.indexOf('color') == -1) {
				continue;
			}
			k++;

			var c = '#'+col.className.split(' ')[1].replace('x', '').replace(/\s/, '').toLowerCase();
			img = document.createElement('img');

			img.src = '/i/v.gif';
			img.width = 18;
			img.height = 18;

			img.style.cssText = 'background-color: '+c;
			img.title = c;

			col.innerHTML = '';
			col.appendChild(img);

			if (k == 4) {
				br = document.createElement('br');
				col.parentNode.insertBefore(br, col);
				col.parentNode.insertBefore(col, br);
			}
		}

		imgs = mmsconst.getElementsByTagName('img');
		for(var i = 0; i < imgs.length; i++) {
			var im = imgs[i];

			if (im.parentNode.tagName.toLowerCase() !== 'label') {
				continue;
			}

			im.onclick = function() {
				if (typeof this.parentNode.click == 'object') {
					this.parentNode.click();
				}
			}
		}

		inputs = mmsconst.getElementsByTagName('input');
		for(var k = 0; k < inputs.length; k++) {
			var i = inputs[k];

			if (i.type !== 'radio') {
				continue;
			}

			i.onclick = function() {
				RedrawPreview();
				return true;
			}
		}

		mmsconst.t.onfocus = function() {
			window.writeId = setInterval(
				function() {
					RedrawPreview();
				}, 500
			);
		}

		mmsconst.t.onblur = function() {
			clearInterval(window.writeId);
		}
	}
);

// PhonesComparizon
hitchs.add(
	function() {
		var models = document.getElementById('phoneModels');
		if (models === null) {
			return;
		}

		models.disabled = true;

		vendors = document.getElementById('phoneVendor');

		models.form.onsubmit = function() {
			var model = models.options[models.selectedIndex].value;

			if (model) {
				window.location.search += '&id[]=' + model;
			}

			return false;
		}

		vendors.onchange = function() {
			vendor = this.options[this.selectedIndex].value;
			for(var i = models.childNodes.length; i > 0; i--) {
				if (models.childNodes[i-1].value == '') {
					continue;
				}
				models.removeChild(models.childNodes[i-1]);
			}

			if (vendor > 0) {
				models.disabled = false;
			} else {
				models.disabled = true;
				return;
			}

			var phone = phones[vendor];
			for(var i in phone) {
				var o = document.createElement('option');
				o.appendChild(document.createTextNode(phone[i]))
				o.setAttribute('value', i);

				models.appendChild(o);
			}
		}
	}
);

// Телефоны, Выбор вендора/модели
hitchs.add(
	function() {
		var changePhone = document.getElementById('changePhone');
		if (changePhone === null) {
			return;
		}

		changePhone.go.style.display = 'none';

		changePhone.vendor.onchange = function() {
			vendor = this.options[this.selectedIndex].value;
			this.form.current.value = vendor;

			models = this.form.model;

			models.onchange = function() {
				return false;
			}

			for(var i = models.childNodes.length; i > 0; i--) {
				models.removeChild(models.childNodes[i-1]);
			}

			var phones = window.phones[vendor];

			for(var i in phones) {
				var o = document.createElement('option');

				models.appendChild(o);

				o.appendChild(document.createTextNode(phones[i]))
				o.setAttribute('value', i);
			}

			models.selectedIndex = 0;

			models.onchange = function() {
				this.form.submit();
			}
		}

		changePhone.model.onchange = function() {
			this.form.submit();
		}
	}
);

// Зебра таблицы сравнения телефонов
hitchs.add(
	function() {
		var comparizon = document.getElementById('comparizon');
		if (comparizon == null) {
			return;
		}

		for(var i = 0; i < comparizon.rows.length; i++) {
			if (i%2) {
				comparizon.rows[i].className = 'even';
			}
		}
	}
);

function goodsRecalc() {
	var sum = 0;
	$(".goodsCard").empty();

	$("form#vitrina input:checkbox").each(function(i) {
		if (this.checked) {
			var id    = this.name.substr(this.name.indexOf("["));
			var qnt   = parseInt($("form#vitrina input[name = 'qnt"+id+"']").get(0).value);
			var price = parseInt($("form#vitrina input[name = 'price"+id+"']").get(0).value);
			var title = $("form#vitrina input[name = 'title"+id+"']").get(0).value;

			if (isNaN(qnt)) {
				qnt = 0;
			}

			$(".goodsCard").append("<dt id=\"lastCardItem\"><input type=\"checkbox\" checked=\"checked\" id=\"remove"+id+"\" /><p>"+title+":</p></dt><dd>"+qnt+$("#goodsCardForm input[name = 'txtSht']").get(0).value+"</dd>");
			$(".goodsCard input:checkbox[id = 'remove"+id+"']").click(function() {
				$("form#vitrina input:checkbox[name = 'gds"+id+"']").get(0).checked = false;
				goodsRecalc();
				return false;
			});
			sum += qnt*price;
		}
	});
	$(".goodsCard").append("<dt id=\"goodsCardTotal\">"+$("#goodsCardForm input[name = 'txtTotal']").get(0).value+"</dt><dd id=\"goodsСardTotalNum\">"+sum+$("#goodsCardForm input[name = 'txtRub']").get(0).value+"</dd>");
	if (sum > 0) {
		$("#submitOrder input:image").removeAttr("disabled");
		$("#goodsCardForm input:image").removeAttr("disabled");
	} else {
		$("#submitOrder input:image").attr("disabled", "disabled");
		$("#goodsCardForm input:image").attr("disabled", "disabled");
	}
}

hitchs.add(
	function() {
		var vitrinaForm = document.getElementById('vitrina');
		if (vitrinaForm == null) {
			return;
		}
		$("form#vitrina input:checkbox").click(function() {
			goodsRecalc();
		});
		$("form#vitrina input:text").keyup(function() {
			goodsRecalc();
		});
		$("#goodsCardForm").submit(function() {
			$("form#vitrina").submit();
			return false;
		});

		// initial
		goodsRecalc();
	}
);

function goodsRecalc2() {
	var sum = 0;

	$("form #allready input[name ^= 'qnt']").each(function(i) {
		var id    = this.name.substr(this.name.indexOf("["));
		var qnt   = parseInt(this.value);
		if (isNaN(qnt)) {
			qnt = 0;
		}
		var price = parseInt($("form #allready input[name = 'price"+id+"']").get(0).value);

		sum = sum + qnt*price;
	});
	$("form #all span").html(sum+$("form input[name = 'txtRub']").get(0).value);
}

hitchs.add(
	function() {
		var vitrinaForm = document.getElementById('vitrinaOrder');
		if (vitrinaForm == null) {
			return;
		}
		$("form #allready input:checkbox").click(function() {
			var id = this.id.substr(this.id.indexOf("["));
			$(this).parent().parent().empty();
			goodsRecalc2();
		});
		$("form input#continue").click(function() {
			var cl = window.location.href;
			cl = cl.substring(0, cl.indexOf("/order/")+1) + "?";
			$("form #allready input[name ^= 'qnt']").each(function() {
				var id    = this.name.substring(this.name.indexOf("[")+1, this.name.indexOf("]"));
				var qnt   = parseInt(this.value);
				if (!isNaN(qnt)) {
					cl = cl + id+"="+qnt+"&";
				}
			});
			window.location.href = cl.substring(0, cl.length-1);
			return false;
		});
	}
);

// Params for offices
function getOfficeDisplayParams() {
	var result_str = '';
	$('#filters input:checkbox:checked').each(function() {
		switch(this.id) {
			case 'of-ceo':
				result_str += '&type[]=ceo';
				break;

			case 'of-cmo':
				result_str += '&type[]=cmo';
				break;

			case 'of-coa':
				result_str += '&type[]=coa';
				break;

			case 'of-fsm':
				result_str += '&type[]=fsm';
				break;

			case 'of-func-setup':
				result_str += '&setup=1';
				break;

			case 'of-func-invalid':
				result_str += '&invalid=1';
				break;
		}
	});

	return result_str;
}

// Google Maps
function GMProceed() {
	// TODO: Add compatability check
	this.param_str = '';

	if (typeof this.map == 'undefined' && typeof GMap2 == Object) {
		this.map = new GMap2(document.getElementById('megafonmap'));
		this.map.addControl(new GLargeMapControl());
		this.map.setCenter(new GLatLng(55.752036165478, 37.623435973073356), 10); //Moscow city
	}

	var createMarker = function(point, html) {
		var marker = new GMarker(point);
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(html);
		});
		return marker;
    }

	this.zoom = function(size) {
		this.map.setZoom(size);
	}

	this.init = function() {
		this.map.clearOverlays();
		map = this.map;
		GDownloadUrl('/offices.action' + this.param_str, function(json) {
			var data = eval('(' + json + ')');
			if (data.length == 0) {
				$('#mapresult').html('Ничего не нашли, м.б. изменим критерии поиска?');
			} else {
				$('#mapresult').html('');
				$.each(data, function(i, item) {
					var point = new GLatLng(parseFloat(item.x), parseFloat(item.y));
					var marker = createMarker(point, item.html);
					map.addOverlay(marker);
				});
			}
		});
	}
}


function GMAction(search) {
	// init
	if (typeof gm == 'undefined') {
		var gm = new GMProceed();
	}

	if (search == null) return;

	gm.param_str = '?ajax=1';

	// get filters params
	gm.param_str += getOfficeDisplayParams();

	// zoom check
	if ($('#of-cmo:checked').length > 0) {
		gm.zoom(7); // Zoom of map some more smaller
	} else {
		gm.zoom(10); // Not province, restore default value
	}
	gm.init(); //Reload the map with new params

	$(window).bind("unload", function() {
		GUnload(); //unload the Google Maps for memory leaks prevention
	});
}

function isMapIsset() {
	var isMap = document.getElementById('megafonmap');
	return (isMap == null) ? false : true;
}

hitchs.add(
	function() {
		/*if (isMapIsset()) {
			return;
		}*/

		GMAction();
		$('#of-getval').click(function() {
			GMAction(true);
		});
	}
);


// init the ajax show offices
function loadOfficeData(tpl) {
	switch(tpl) {
		case 'map':
			mapurl = '/buy/porting/express/?initmap=1'; // FIXME: Hardcoded url
			break;

		case 'metro':
			if (isMapIsset()) {
				GUnload();
				$('#megafonmap').empty;
			}
			mapurl = '/buy/porting/express/metro-find-office/?initmap=1';
			mapurl += getOfficeDisplayParams();
			break;

		case 'list':
			mapurl = '/buy/porting/express/?initlist=1'; // FIXME: Hardcoded url
			mapurl += getOfficeDisplayParams();
			break;
	}

	$.ajax({
		async: false,
		url: mapurl,
		cache: false,
		dataType: "html",
		success: function(data) {
			$('#of-content-placement').html(data);
		}
	});
	
}

hitchs.add(
	function() {
		var ofLinkContainer = document.getElementById('of-navigate');

		if (ofLinkContainer === null) {
			return;
		}

		$('#offices-gm-link').click(function() {
			if (!isMapIsset())
				loadOfficeData('map'); // load template
			GMAction(true);            // reinit the map
			return false;
		});

		$('#offices-metro-link').click(function() {
			loadOfficeData('metro');
			metroOfficeInit();
			return false;
		});

		$('#offices-list-link').click(function() {
			loadOfficeData('list');
			return false;
		});
	}
);

$(function() {
	var prefix = "", phone = "";
	$(document.cookie.split(';')).each(function(k, v){
		var pair = v.split('=')
		switch($.trim(pair[0])){
			case "sms_service[phone]" :
				phone = $.trim(pair[1] || "")
				break;
			case "sms_service[prefix]" :
				prefix = $.trim(pair[1] || "")
				break;
		}
		if(prefix.length && phone.length)
			return false;
	});
	$("div.service_lite_sms_form .close").click(function(){
		$(this).parent().hide();
	});
	$(".service_lite_sms_form_open").click(function(){
		$("div.service_lite_sms_form .close").click();
		$(this).next("div.service_lite_sms_form").show();
	});
	$("div.service_lite_sms_form, div.service_sms_form")
		.children('form')
		.find("select option[value=" + prefix + "]").attr("selected", "selected")
		.end()
		.find("input:text").val(phone)
		.end()
		.append('<input type="hidden" name="ajax" value="1" />')
		.submit(function(){
			var _form = $(this)
			_form.children('input:image').attr("disabled","disabled").addClass('transparent')
			$.post(_form.attr('action'), _form.serialize(), function(data){
				if(data.result == 'OK'){
					_form.replaceWith($('<p class="notice success">' + data.notice + '</p>').hide().fadeIn('normal'))
				} else if(data.result == 'ERROR'){
					_form.children('p.notice:first').hide().addClass('error').text(data.notice).fadeIn('normal')
					setTimeout(function(){
						_form.children('input:image').removeAttr("disabled").removeClass('transparent')
					}, 500)
				}
			}, "json")
			return false
		})
});

