var sPlayFonUrl = 'http://viewdemo.playfon.ru/';


//==================== Banner ==============

function cStorage(sURL)
{
	this.sURL = sURL;
}

cStorage.prototype = {

	nWriteBanner: function(aData)
	{
		// default initialisation
		aData = aData || {};
		
		var oDemoBnr = _$$$_('#'+sPfDemoBnrId);
		
		if( typeof(aData.aItems) != 'undefined' ){
			// покажем блок с баннером
			oDemoBnr.css('display', 'block');
			
			// IE 6 отказывался показывать диалог приемлемой высоты
			if (_$$$_.browser.msie && _$$$_.browser.version < 7) {
				// заставим его это сделать
				_$$$_("#pf_msisdn_dialog form").css('height', 100);
			}
			
			// установим ширину баннера
			var aPfBnrCSS = {};
			if( typeof(iPfBnrWidth) != 'undefined' && iPfBnrWidth ){
				aPfBnrCSS.width = ''+iPfBnrWidth+'px';
			}
			if( typeof(iPfBnrHeight) != 'undefined' && iPfBnrHeight ){
				aPfBnrCSS.height = ''+iPfBnrHeight+'px';
			}
			oDemoBnr.find('div.pf-sb-demo').css(aPfBnrCSS);
			
			iPfBnrWidth = parseInt(oDemoBnr.find('div.pf-sb-demo').css('width'));
			iPfBnrHeight = parseInt(oDemoBnr.find('div.pf-sb-demo').css('height'));

			// достаем базовые элементы
			oBaseItem = oDemoBnr.find('div.pf-sb-item');
			oBaseHr = oDemoBnr.find('div.hr');
			oBaseItemPreview = oBaseItem.find('img.pf-sb-preview');
			
			// Грязный хак :(
			// В какой-то из старых версий IE была проблема с вертикальным баннером.
			// Для её фикса в CSS добавили свойство height: 100%;
			// Это привело к тому, что в _обычных_ HTML документах каждый элемент баннера 
			// стал растягиваться на всю высоту баннера.
			// Но этот баг не возникает в XHTML документах.
			// Поэтому сбрасываю этот стиль в auto.
			if( typeof(document.doctype) == 'undefined' 
					|| !document.doctype 
					|| typeof(document.doctype.publicId) == 'undefined' 
					|| document.doctype.publicId.indexOf('XHTML') == -1 ){
					// используется обычный HTML и Браузер не старый IE
					oBaseItem.css('height', 'auto');
			}

			if( typeof(sOrientation) == 'undefined' ){
				sOrientation = 'v';
			}
			if( sOrientation == 'h' ){
				oDemoBnr.find('div.pf-sb-demo').addClass('pf-sb-demo-horiz');
				oDemoBnr.find('div.pf-sb-col').removeClass('pf-sb-col').addClass('pf-sb-row');
				sWidth = '' + Math.floor( (101 - aData.aItems.length)/aData.aItems.length) + '%';

				// проставим размер preview картинки
				if( iPfBnrHeight > 0 && iPfBnrHeight < 102 ){
					iPreviewMaxHeight = iPfBnrHeight - 2;
					iPreviewHeight = parseInt(oBaseItemPreview.css('height'));
					if( iPreviewHeight == 0 || isNaN(iPreviewHeight) || typeof(iPreviewHeight) == 'undefined' || iPreviewHeight > iPreviewMaxHeight ){
						oBaseItemPreview.css('width', ''+iPreviewMaxHeight+'px');
						oBaseItemPreview.css('height', ''+iPreviewMaxHeight+'px');
					}
				}
			}
			else {
				// проставим размер preview картинки
				if( iPfBnrWidth > 0 && iPfBnrWidth < 102 ){
					iPreviewMaxWidth = iPfBnrWidth - 2;
					iPreviewWidth = parseInt(oBaseItemPreview.css('width'));
					if( iPreviewWidth == 0 || isNaN(iPreviewWidth) || typeof(iPreviewWidth) == 'undefined' || iPreviewWidth > iPreviewMaxWidth ){
						oBaseItemPreview.css('width', ''+iPreviewMaxWidth+'px');
						oBaseItemPreview.css('height', ''+iPreviewMaxWidth+'px');
					}
				}
			}
			for (idx in aData.aItems) {
				aItem = aData.aItems[idx];
				if( typeof(aItem.iId) == 'undefined' ){
					continue;
				}
				oItem = oBaseItem.clone().css('display', 'block');
				oItemPreview = oItem.find('img.pf-sb-preview').attr('src', aItem.sPreviewUrl);
				oItem.find('span.pf-sb-item-name').text(aItem.sName);
				oItem.find('span.pf-sb-item-genre').text(aItem.sGenre);
				// запомним ID контента
				oItem.find('.pf-sb-click').data('iItemId', aItem.iId);
				if( sOrientation == 'h' ){
					oItem.css('width', sWidth);
				}
				oBaseItem.parent().append(oItem);
				
				if( (aData.aItems.length - 1) != idx ){
					oHr = oBaseHr.clone().css('display', 'block');
					oBaseItem.parent().append(oHr);
					
				}
			}
			
			// добавляется функция для ввода номера
			_$$$_('.pf-sb-click').click(function() {
				_$$$_('#pf_msisdn_dialog').data('iItemId', _$$$_(this).data('iItemId')).dialog('open');
			});
		}
	},

	nShowResult: function(aData)
	{
		if( aData.error > 0 ){
			_$$$_("#pf_msg_dialog #pf_msg_result_text").text(aData.result_text);
			_$$$_("#pf_msg_dialog").dialog('open');
		}
	},
	
	aGetGeneralData: function()
	{
		if( typeof(sRegion) == 'undefined' ){
			var sRegion = 'RU';
		}
		var aData = {'d': iDSource, 'sRegion': sRegion };
		return aData;
	},
	
	nLoadBanner: function()
	{
		sURL = this.sURL+'demo_json.php?callback=?';
		aGetData = this.aGetGeneralData();
		if( typeof(iBannerLength) !== 'undefined' ){
			aGetData['bl'] = iBannerLength;
		}
		_$$$_.getJSON(sURL, aGetData, this.nWriteBanner);
	},
	
	nSendMsg: function(iItemId, sMSISDN)
	{
		sURL = this.sURL+'demo_send.php?callback=?';
		aGetData = this.aGetGeneralData();
		aGetData['iItemId'] = iItemId;
		aGetData['sMSISDN'] = sMSISDN;
		_$$$_.getJSON(sURL, aGetData, this.nShowResult);
	}
}

if( typeof(sPfDemoBnrId) == 'undefined' ){
	var sPfDemoBnrId = 'pf_demo_bnr';
}


oStorage = new cStorage(sPlayFonUrl);
oStorage.nLoadBanner();





// ==================== Dialog ==============

_$$$_(function() {
	
	var sMSISDN = _$$$_("#pf_msisdn"),
		allFields = _$$$_([]).add(sMSISDN),
		tips = _$$$_("#pf_validate_tips"),
		default_tips_text = tips.text();

	function updateTips(t)
	{
		tips.text(t);
	}

	function checkAbonentNumber(o)
	{
		regexp = /^\+?\d{11}$/i;
		if ( !( regexp.test( o.val().replace(/[^+\d]/g, '') ) ) ) {
			o.addClass('ui-state-error');
			updateTips('Не верный формат номера. Пример: +7 xxx xxx xxxx');
			return false;
		} else {
			return true;
		}

	}
	
	_$$$_("#pf_msisdn_dialog").dialog({
		bgiframe: true,
		autoOpen: false,
		height: 'auto',
		modal: true,
		buttons: {
			'Отмена': function() {
				_$$$_(this).dialog('close');
			},
			'OK': function() {
				var bValid = true;
				allFields.removeClass('ui-state-error');

				bValid = bValid && checkAbonentNumber(sMSISDN);
				
				if (bValid) {
					oStorage.nSendMsg(_$$$_(this).data('iItemId'), sMSISDN.val());
					_$$$_(this).dialog('close');
				}
			}
		},
		close: function() {
			allFields.val('').removeClass('ui-state-error');
			tips.text(default_tips_text);
		}
	});
	
	
	_$$$_("#pf_msg_dialog").dialog({
		bgiframe: true,
		autoOpen: false,
		modal: true,
		buttons: {
			Ok: function() {
				_$$$_(this).dialog('close');
			}
		}
	});
});

