var allAlphabet = 'абвгдеёжзиклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
var rusRegex = /[а-яА-Я]/;
var maxLenEn = 160;
var maxLenRu = 70;
A = new Array();
A['Ё'] = 'YO'; A['Й'] = 'I'; A['Ц'] = 'TS'; A['У'] = 'U'; A['К'] = 'K'; A['Е'] = 'E'; A['Н'] = 'N'; A['Г'] = 'G'; A['Ш'] = 'SH'; A['Щ'] = 'SCH'; A['З'] = 'Z'; A['Х'] = 'H'; A['Ъ'] = "'";
A['ё'] = 'yo'; A['й'] = 'i'; A['ц'] = 'ts'; A['у'] = 'u'; A['к'] = 'k'; A['е'] = 'e'; A['н'] = 'n'; A['г'] = 'g'; A['ш'] = 'sh'; A['щ'] = 'sch'; A['з'] = 'z'; A['х'] = 'h'; A['ъ'] = "'";
A['Ф'] = 'F'; A['Ы'] = 'I'; A['В'] = 'V'; A['А'] = 'A'; A['П'] = 'P'; A['Р'] = 'R'; A['О'] = 'O'; A['Л'] = 'L'; A['Д'] = 'D'; A['Ж'] = 'ZH'; A['Э'] = 'E';
A['ф'] = 'f'; A['ы'] = 'i'; A['в'] = 'v'; A['а'] = 'a'; A['п'] = 'p'; A['р'] = 'r'; A['о'] = 'o'; A['л'] = 'l'; A['д'] = 'd'; A['ж'] = 'zh'; A['э'] = 'e';
A['Я'] = 'YA'; A['Ч'] = 'CH'; A['С'] = 'S'; A['М'] = 'M'; A['И'] = 'I'; A['Т'] = 'T'; A['Ь'] = "'"; A['Б'] = 'B'; A['Ю'] = 'YU';
A['я'] = 'ya'; A['ч'] = 'ch'; A['с'] = 's'; A['м'] = 'm'; A['и'] = 'i'; A['т'] = 't'; A['ь'] = "'"; A['б'] = 'b'; A['ю'] = 'yu';

var old_txt = '&&!@##', old_translit = 3;
var old_len_label = 'Длина';

function checkLen() 
{
	var el_msg = document.getElementById('msg'); // original text
	var el_translit = document.getElementById('translit');// translit checkbox

	var txt = el_msg.value; // orig
	var translit = el_translit.checked; // 
	
	if ((txt == old_txt) && (translit == old_translit)) {
		return;
	} else {
		old_txt = txt;
		old_translit = translit;
	}
	
//	var el_msg = document.getElementById('msg'); // send text
	var el_a_len = document.getElementById('a_len');
	var el_msg = document.getElementById('msg'); // original text
	var el_preview_text = document.getElementById('preview_text');
	var el_preview = document.getElementById('preview');
	var el_len = document.getElementById('msg_len');
	var el_max = document.getElementById('msg_max');
	var el_slen = document.getElementById('sLength');
	var el_smax = document.getElementById('sMax');
	// values
	var txt2 = el_preview_text.value;
	var cur_len = txt.length;
	var old_max_len = el_max.value;
		
	var hasRussians = false;
	var i = 0;
	while (ch = txt.substr(i, 1))  {
		if (allAlphabet.indexOf(ch) > -1)  {
			hasRussians = true;
			break;
		} 
		i += 1;
	}
	var e = false;
	var parts = 0;
	if (translit) {
	   
		max_len = maxLenEn;
		
		//Transliterate and then calculate
		var txt2 = txt.replace(/([\u0410-\u0451])/g,
		function(str, p1, offset, s) {
			if (A[str] != 'undefined') { return A[str]; }
		});
	   
		if (txt2.length > maxLenEn) {
			e = true;
			//txt2 = txt2;//.substr(0, maxLenEn);
			parts = Math.ceil(txt2.length / 153);
		}
   } else {
	   if (hasRussians) {
		   max_len = maxLenRu;
		   if (txt.length > maxLenRu) {
			   e = true;
				parts = Math.ceil(txt.length / 67);
		   }
	   } else {
		   max_len = maxLenEn;
		   if (txt.length > maxLenEn) {
			   e = true;
	   			parts = Math.ceil(txt.length / 153);
		   }
	   }
	   txt2 = txt;
   }
   if (parts > 0) {
	   	n = parts;
	 	f = (n%10==1 && n%100!=11 ? 0 : (n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2))
		s = (f == 0) ? 'часть' : ( (f==1) ? 'части' : 'частей' );
		if (n >= 10)
			s += ' (10 максимум)';
		
		el_a_len.innerHTML = n + ' ' + s;
   } else {
   	 el_a_len.innerHTML = 'Длина';
   }
//	el_a_len.onclick = function() { dialogSMSLength(); return false; }
   	
   el_slen.style.color = (e) ? 'red' : '';
   
   	if (old_max_len != max_len)
		el_smax.innerHTML = el_max.value = max_len;
	
//	window.console.debug( txt2 );
	if (el_preview_text.value != txt2)
		el_preview_text.value = el_preview.innerHTML = txt2;

	if (el_len.value != cur_len)
		el_slen.innerHTML = cur_len;

}
function round( n ) {
	return Math.round(n*100)/100;
}
function checkRec() {
	// check receivers
	var el_rec = document.getElementById('receivers');
	var el_rcount = document.getElementById('sRCount');
	var el_price = document.getElementById('price');
	var s = ' '+el_rec.value+' ';
	var len = 0;
	if (a = s.match(/[^\d]\d{10,15}[^\d]/g)) {
		el_rcount.innerHTML = len = a.length;
	}
	for( cur in curRate)
		if (document.getElementById('cur'+cur).checked)
			el_price.innerHTML = (round(len * curRate[ cur ],2 )) + ' ' + cur;
}
function cleanRec() {
	var el_rec = document.getElementById('receivers');
	var el_rcount = document.getElementById('sRCount');
	var s = el_rec.value+' ';
	var re = /(\d+)\D/g;
    var matches, a = [], i=j=0, found = false;
    while (matches = re.exec(s)) {
		p = matches[1];
		if (p.length < 10 || p.length>15) continue;
		
		if (p.substr(0,1) == '8')
			p = '7'+p.substr(1);
		found = false;
		for (j=0;j<a.length;j++)
			if (p==a[j]) {found = true; break};
		if (!found) {
	        a[i] = p;
			i++;
		}
    }
//	a = array_unique( a );
	s = a.join("\n");
	el_rec.value = s;
	el_rcount.innerHTML = a.length;
}
function array_unique (inputArr) {
    var key = '', tmp_arr2 = [], val = ''; 
    var __array_search = function (needle, haystack) {
        var fkey = '';
        for (fkey in haystack) {
            if (haystack.hasOwnProperty) {                if ((haystack[fkey] + '') === (needle + '')) {
                    return fkey;
                }
            }
        }        return false;
    };
 
    for (key in inputArr) {
        if (inputArr.hasOwnProperty) {            val = inputArr[key];
            if (false === __array_search(val, tmp_arr2)) {
                tmp_arr2[key] = val;
            }
        }    }
 
    return tmp_arr2;
}
function recalcAmount() {
	var el_price = document.getElementById('price');
	var el_msg = document.getElementById('msg');
	var el_translit = document.getElementById('translit');
	var el_rec = document.getElementById('receivers');
//	var el_cur = document.getElementById('currency');
//	var el_rcount = document.getElementById('sRCount');
	$.post('index.php', {
		calc: true,
		msg: el_msg.value,
		translit: el_translit.checked ? 1 : 0,
		receivers: el_rec.value,
		currency: getCheckedValue( document.forms['frm'].elements['currency'] ),
	}, _recalcAmount,'json');
	el_price.innerHTML = '<img src="/style/progress_small.gif" alt="рассчитывается" />';
}
function _recalcAmount( data ) {
	var el_rec = document.getElementById('receivers');
//	var el_rcount = document.getElementById('sRCount');
	var el_price = document.getElementById('price');
	var s = data.phones.replace(/,/g,"\n");
	el_rec.value = s;
	el_price.innerHTML = data.amount;
//	el_rcount.innerHTML = data.cnt;
/*
	for( cur in curRate)
		if (document.getElementById('cur'+cur).checked)
			el_price.innerHTML = (round(data.credits * curRate[ cur ],2 )) + ' ' + cur;
		*/
}
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}
function getCur() {
	for( cur in curRate)
		if (document.getElementById('cur'+cur).checked)
			return cur;
//			el_price.innerHTML = (round(data.credits * curRate[ cur ],2 )) + ' ' + cur;	
}
var dif,diu,dil;
function dialogImportFile() {
	dif = new Boxy('<form action="/import.php" method="post" enctype="multipart/form-data" target="ifImport">Укажите текстовый файл с номерами телефонов<div style="padding:10px 0"><input type="file" name="import_file" size="40" /><input type="submit" value="Импорт" /></div></form>', {
title: 'SMS Пилот',
closeable: true,
closeText: 'закрыть',
modal: true
});
	
}
function dialogImportURL() {
	diu = new Boxy('<form action="/import.php" method="post" target="ifImport">Укажите URL страницы с номерами телефонов<div style="padding:10px 0"><input type="text" name="import_url" size="40" /><input type="submit" value="Импорт" /></div></form>', {
title: 'SMS Пилот',
closeable: true,
closeText: 'закрыть',
modal: true
});
	
}
function dialogSenderID() {
	dif = new Boxy('<div>В качестве отправителя можно указать номер телефона в международном формате, например: <i>79087964781</i></i><br/> или строка идентификатор с допустимыми символами (a-z,A-Z,0-9, точка, дефис), максимальной длиной в 11 символов, например <i>smspilot.ru</i></div>', {
title: 'SMS Пилот',
closeable: true,
closeText: 'закрыть',
modal: true
});
	
}
function dialogSMSLength() {
	dil = new Boxy('<div><ol><li>Длина одного SMS сообщения составляет 70 символов кириллицей либо 160 символов латиницей.</li><li>Если количество символов превышает максимально допустимое, то SMS разбивается на кусочки.</li><li>Длина отдельных частей «большой» SMS составляет 67 символов для сообщения кириллицей и по 153 символа для латиницы</li><li>Нельзя отправить «большую» SMS которая состоит больше чем из 10 частей.</li><li>На телефоне абонента «большая» SMS отображается как одно сообщение.</li><li>Каждая часть &laquo;большой&raquo; SMS оплачивается отдельно.</li></ol></div>', {
title: 'SMS Пилот',
closeable: true,
closeText: 'закрыть',
modal: true
});
	
}
function iframeCallback( iframe ) {
	var el_res = iframe.contentWindow.document.getElementById('result');
	if (!el_res) return;
	
	var phones = el_res.innerHTML;
	phones = phones.replace(/,/g,"\n");
	var el_rec = document.getElementById('receivers');
	if (el_rec.value.length > 0) {
		el_rec.value = el_rec.value + "\n" + phones;
	} else
		el_rec.value = phones;
	
	if (dif) dif.hide();
	if (diu) diu.hide();

//	cleanRec();
}
