/**
 * Перед отправкой данных проверяем корректность номера
 * @param oForm
 * @param sWarningText
 * @return false- возвращаем всегда false, нам не нужно, чтобы форма сработала
 */
function bPfBeforeSubmit(oForm, sWarningText)
{
	if( oPfUtils.bGoodAbonentNumber(oForm.sMSISDN.value, sWarningText) ){
		var sUrl = oForm.action+'?d='+oForm.d.value+'&iItemId='+oForm.iItemId.value+'&sMSISDN='+oForm.sMSISDN.value;
		oPfUtils.nAjax(sUrl, nPfAfterSubmit);
	}
	return false;

}
/**
 * После отправки данных смотрим результат.
 * Или покажем ошибку, или закроем форму.
 * @param aData
 * @return
 */
function nPfAfterSubmit(aData)
{
	if( aData.error){
		alert(aData.result_text);
	}
	else{
		window.close();
	}
}

/**
 * набор сервисных функций и данных
 */
var oPfUtils = new function()
{
	// ID скрипта отсылающего данные
	this.sAjaxScriptId = 'pf_ajax_script';
	// функция, которая обработает результат запроса
	this.fAjaxCallback = null;
	
	/**
	 * Номер абонента должен быть +7xxxxxxxxxx
	 */
	this.bGoodAbonentNumber = function(sNumber, sWarningText)
	{
		regexp = /^\+7\d{10}$/i;
		if ( !( regexp.test( sNumber.replace(/[^+\d]/g, '') ) ) ) {
			alert(sWarningText);
			return false;
		} else {
			return true;
		}
	}
	/**
	 * Дернем sUrl.
	 * В ответ ожидаются JSON данные, которые передадим в fCallback
	 */
	this.nAjax = function(sUrl, fCallback)
	{
		if( document.getElementById(this.sAjaxScriptId) == null ){
			sUrl += '&callback=oPfUtils.jcb';
			this.fAjaxCallback = fCallback;
			var oScript = document.createElement('script');
			oScript.setAttribute("type", "text/javascript");
			oScript.setAttribute("src", sUrl);
			oScript.setAttribute("id", this.sAjaxScriptId);
			document.getElementsByTagName('head')[0].appendChild(oScript);
		}
	}
	/**
	 * Удаляем сервисный тег script и вызываем CallBack функцию
	 */
	this.nJsonCallback = function(aData){
		this.fAjaxCallback(aData);
		this.fAjaxCallback = null;
		// удаляю oScript после того, как выполнится CallBack функция, чтобы не было параллельных процессов
		var oScript = document.getElementById(this.sAjaxScriptId);
		if( oScript != null ){
			document.getElementsByTagName('head')[0].removeChild(oScript);
		}
	}
	// короткое имя
	this.jcb = this.nJsonCallback;
}
