if (typeof window.addEventListener != 'undefined') window.addEventListener('load', LoadSmsForm, false);
else if (typeof window.attachEvent != 'undefined') window.attachEvent('onload', LoadSmsForm);

var sms_form = null;
var trCode1  = null;
var trCode2  = null;
var outGrCodeImg = null;
var smsWait = null;
var divSmsForm = null;
function LoadSmsForm(){
	sms_form = document.forms['sms_form'];
	trCode1 = document.getElementById('myGrCode');
	trCode2 = document.getElementById('outGrCode');
	outGrCodeImg = document.getElementById('outGrCodeImg');
	smsWait = document.getElementById('smsWait');
	divSmsForm = document.getElementById('divSmsForm');
}

function smsGetAJAXLoader(){
	var req=null;
   	if (typeof(window.XMLHttpRequest)!='undefined') { try { req = new XMLHttpRequest(); } catch (e){ alert("Ошибка при получении AJAX загрузчика"); } }
   	else if (typeof(window.ActiveXObject)!='undefined') {
       	try { req = new ActiveXObject('Msxml2.XMLHTTP');} catch (e){
            try { req = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e){ alert("Ошибка при получении AJAX загрузчика"); }
		}
	}
	else alert("Браузер не поддерживает AJAX");
	return req;
}


function SetSms(obj){
	if(!sms_form) return;
	sms_form.message.value=obj.innerHTML.replace(/<br(\s*\/)?>/ig, '');
	sms_form.sms_id.value=obj.id;
	SetNum();
	sms_form.message.focus();
	return false;
}
function SetNum(){
	if(!sms_form || !sms_form.num)return;
 	sms_form.num.value = sms_form.message.value.length;
}

function SetPhone(phone, operator){
	if(!sms_form) return;
	sms_form.phone.value=phone;
	sms_form.operator.value=operator;
	CheckOperator(sms_form.operator);
}

function CheckSMSForm(){
	var p = sms_form.phone.value;
	var m = smstrim(sms_form.message.value);
	var o = sms_form.operator.value;
	if(p == ''){ alert('Не заполнено поле телефона!'); sms_form.phone.focus(); return false; }
	if(o == ''){ alert('Не выбран сотовый оператор!'); sms_form.operator.focus(); return false; }
	if(o == 'skylink'){
		m = smstrim(m.replace(/[\'\"\%\+\*\=\,\!\?\$\#\&\.\(\)\<\>\-\_\[\]\{\}\^\|\@\/\\\;\`\~]/g, ''));
		sms_form.message.value = m; SetNum();
	}
	if(m == ''){ alert('Не указано сообщение!'); sms_form.message.focus(); return false; }
	if(p.match(/^7\d{10}$/)===null){
		alert('Введите номер в формате 7 xxx xx xx xxx (без пробелов)!')
		sms_form.phone.focus(); return false;
	}
	if(o=='tele2' && p.match(/^79(02|04|08|50|51|52|53)/)===null){
		alert('Для оператора ТЕЛЕ2 номер должен начинаться с 7902, 7904, 7908, 7950, 7951, 7952, 7953');
		sms_form.phone.focus(); return false;
	}
	if(o=='skylink' && p.match(/^7901(250|251|158|958)/)===null){
		alert('Для оператора SkyLink номер должен начинаться с 7901250, 7901251, 7901158, 7901958');
		sms_form.phone.focus(); return false;
	}
	if(o=='megafon' && p.match(/^7922/)===null){
		alert('Для оператора Мегафон номер должен начинаться с 7922');
		sms_form.phone.focus(); return false;
	}
	if(o=='tele2' || o=='skylink'){
		var gc = smstrim(sms_form.code.value);
		if(gc == ''){ alert('Необходимо указать значение графического кода'); sms_form.code.focus(); return false;}
		if(gc.match(/^\d+$/)===null){
			alert('Графический код должен состоят из цифр');
			sms_form.code.focus(); return false;
		}
	}
	else{
		if(typeof sms_form.rKey != 'undefined'){
			var gc = smstrim(sms_form.rNum.value);
			if(gc == ''){ alert('Необходимо указать значение графического кода'); sms_form.rNum.focus(); return false;}
			if(gc.match(/^\d+$/)===null){
				alert('Графический код должен состоят из цифр');
				sms_form.rNum.focus(); return false;
			}
		}
	}
	var post = 'AJAX=1';
	for(var i=0; i<sms_form.elements.length; i++){
		var e = sms_form.elements[i];
		if(typeof e.name != 'undefined' && e.name!='') post += '&'+e.name+'='+encodeURIComponent(e.value);
	}
	smsWait.style.display='block';
	sms_form.submit.disabled = true;
	sms_form.operator.disabled = true;
	loader = smsGetAJAXLoader();
	loader.onreadystatechange = function(){
		if (loader.readyState == 4) {
			if (loader.status == 200) {
				smsWait.style.display='none';
				if(loader.responseText == 'OK'){
					alert('Сообщение успешно отправлено');
					window.location.reload();
					return;
				}
				alert('Ошибка при отправке смс.');
				sms_form.submit.disabled = false;
				sms_form.operator.disabled = false;
			}
		}
	}
	loader.open("POST", '/scripts/sendsms2.php?o='+o+'&r'+Math.random(), true);
	loader.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	loader.send(post);
	return false;
}
function smstrim(str){
	return str.length>0 ? str.replace( /(^\s+|\s+$)/, "" ) : "";
}

/* */
var smsCodes = {};
function CheckOperator(sel){
	if(sel.value == 'tele2' || sel.value == 'skylink'){
		if(trCode1) trCode1.style.display='none';
		if(typeof smsCodes[sel.value] != 'undefined'){
			sms_form.uniqid.value = smsCodes[sel.value].uniqid;
			outGrCodeImg.src    = smsCodes[sel.value].src;
			outGrCodeImg.width  = smsCodes[sel.value].width;
			outGrCodeImg.height = smsCodes[sel.value].height;
			trCode2.style.display='block';
			return;
		}
		sms_form.operator.disabled = true;
		sms_form.submit.disabled = true;
		trCode2.style.display='none';
		smsWait.style.display='block';
		loader = smsGetAJAXLoader();
		loader.onreadystatechange = function(){
			if (loader.readyState == 4) {
				if (loader.status == 200) {
					smsWait.style.display='none';
					var code = 'var grcode = '+loader.responseText+';';
					try{ eval(code); } catch(e) { 
						alert('Ошибки при запросе графического кода. К сожалению оправить смс нельзя.'); 
						sms_form.operator.disabled = false;
						return;
					}
					if(typeof grcode != 'object') {
						alert('Ошибки при запросе графического кода. К сожалению оправить смс нельзя.'); 
						sms_form.operator.disabled = false;
						return;
					}
					smsCodes[sel.value] = grcode;
					sms_form.uniqid.value = grcode.uniqid;
					outGrCodeImg.src    = grcode.src;
					outGrCodeImg.width  = grcode.width;
					outGrCodeImg.height = grcode.height;
					trCode2.style.display='block';
					sms_form.submit.disabled = false;
					sms_form.operator.disabled = false;
				}
			}
		}
		loader.open("GET", '/scripts/getsmsformcodes.php?o='+sel.value+'&r'+Math.random(), true);
		loader.send(null);
	}
	else{
		if(sel.value == 'megafon' && sms_form.phone.value=='') sms_form.phone.value = '7922';
		if(trCode1) trCode1.style.display='block';
		trCode2.style.display='none';
		sms_form.submit.disabled = false;
		sms_form.operator.disabled = false;
	}
}
