$.ajaxSetup({async: false});
var controlKeys = new Array(8,9,16,17,35,36,37,38,39,40,45,46);
var winText = '';
var sendStatus = 0;
var tracking = true;
var codeId = 0;

function in_array(needle, haystack, argStrict) {

    var found = false, key, strict = !!argStrict;

    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }

    return found;
}

function getSelectionStart(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveEnd('character', o.value.length)
		if (r.text == '') return o.value.length
		return o.value.lastIndexOf(r.text)
	} else return o.selectionStart
}

function getRadioValue(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 checkEmail(email)
{
	var checked = 0;
	$.getJSON('/ajax/send', {cmd: 'emailCheck', email: email},function(data){checked = data.checked;});
	return checked;
}

function checkCoverage(reciever)
{
	var checked = 0;
	$.getJSON('/ajax/send', {cmd: 'coverageCheck', reciever: reciever},function(data){checked = data.checked;});
	return checked;	
}

function checkBanSender(sender)
{
    var checked = 0;
    var path    = '/ajax/send/';
    var params  = {
        cmd: 'senderCheck',
        sender: sender
    }
    func = function(answer)
    {
        checked = answer.checked;
    }
    $.getJSON(path, params, func);
    return checked;
}

function checkInput(e,o,numOnly)
{
    var keyNum  = e.keyCode ? e.keyCode : e.which;
    var keyChar = String.fromCharCode(keyNum);
    var curPosition = getSelectionStart(o);
    
    if(numOnly)
    {
    	
    	var numCheck = /\d/;
    	//плюс возможен только в первой позиции
    	if(keyNum == 43 && curPosition == 0)
    		return true;

    }
    else
    {
        if(keyNum == 43 && curPosition == 0)
    		return true;
            
        var numCheck = /[\da-zA-Z]/;
        setTimeout("$('#sender').html('<span>' + $('#field_sender').val() + '</span>')",100);
    }


    if(in_array(keyNum,controlKeys))
        return true;

    return numCheck.test(keyChar);
}
var CHECKED = null;
function checkForm()
{
	var sendForm = document.getElementById('sendForm');
	var errors = false;
	var checkSender = /^[\+?\da-zA-Z]+$/;
	var checkReciever = /^\+?\d+$/;
	var sendData = {
			sender:    sendForm.sender.value,
			reciever:  sendForm.reciever.value,
			email:	   sendForm.email.value,
			id:  	   sendForm.id.value,
			sendOn:    parseInt(getRadioValue(sendForm.sendTime)),
			ref:       sendForm.ref.value,
			cmd:       'getCode'
	};

	$('#sendBtn').attr('disabled','disabled');



	if(!sendData.reciever || !checkReciever.test(sendData.reciever) || sendForm.reciever.value.length < 10)
	{
		$('#errorReciever').text('Введите верный номер телефона').show();
		errors = true;				
	}
	else if(!checkCoverage(sendData.reciever))
	{
		$('#errorReciever').text('Отправка смс на данный номер временно недоступна.').show();
		errors = true;
	}
	else
	    $('#errorReciever').hide();


	if(!sendData.sender)// || !checkSender.test(sendData.sender))
	{
		$('#errorSender').text('Здесь могут быть только цифры или латинские буквы').show();
		errors = true;
	}
        else
	    $('#errorSender').hide();

        if (!checkBanSender(sendData.sender))
        {
            $('#errorSender').text('Данное имя запрещено').show();
            errors = true;
        }

	
	
/*	if(!sendData.email || !checkEmail(sendData.email))
	{
		$('#errorEmail').show();
		errors = true;
	}
	else
	    $('#errorEmail').hide();
*/

	if(sendData.sendOn)
	{
		var year   = "20" + sendForm.year.value;
		var month  = sendForm.month.value;
		var day    = sendForm.day.value;
		var hour   = sendForm.hour.value;
		var minute = sendForm.minute.value;

		var curDate = new Date();
		var enteredDate = new Date(year,month - 1,day,hour,minute);
                var more3monthDate = new Date();
                var d1Y = enteredDate.getFullYear();
                var d2Y = more3monthDate.getFullYear();
                var d1M = enteredDate.getMonth();
                var d2M = more3monthDate.getMonth();

                d2M = (d2M+12*d2Y)-(d1M+12*d1Y);
		if(enteredDate.getTime() <= curDate.getTime())
		{
                    $("#errorDate").html('Введите правильную дату');
                    $("#errorDate").show();
                    errors = true;
		}
		else
		{
                    if(Math.abs(d2M) > 3)
                    {
                        $("#errorDate").html('Введите правильную дату.');
                        $("#errorDate").show();
                        errors = true;
                    }
                    else
                    {
                        $("#errorDate").hide();
                        sendData.sendOn = year + "-" + month + "-" + day + " " + hour + ":" + minute;
                    }
		}


	}

	if(!errors)
		$.getJSON('/ajax/send', sendData,showCode);
	else
		$('#sendBtn').attr('disabled','');
}

function showCode(data)
{
	$('#sendBtn').attr('disabled','');
	$('.code-container').show();
	$('.send_info').show();
	if(winText)
		$('.codeDesc').html(winText);

	if(data.error)
	{
		sendStatus = 0;
		$('.code-container').hide();
		$('.send_info').hide();
		winText = $('.codeDesc').html();
		$('.codeDesc').text('Произошла ошибка при обработке запроса. Пожалуйста, обратитесь в службу поддержки или попробуйте снова');
	}
	else
	{
                $('#form3').show();
                $('#form1').hide();
                try {ya_hit('gencode');} catch(e){}
                
		$('.code').text(data.code);
		codeId = data.codeId;
		$('.recieverPhone').text($('#field_reciever').val());
		$('.recieverOperator').text(data.recieverOperator);
		if(data.sendTime != 0)
			$('.recieverTime').text(data.sendTime);
		else
			$('.recieverTime').text('незамедлительно');

		sendStatus = 1;
		tracking = true;
		setTimeout('trackStatus()',5000);
	}

	$('#blocker').show();
	$('#win').show();

}

function blkClick()
{
	$('#blocker').hide();
	$('.win').hide();

	if(sendStatus)
		changeStep(2)
}

function changeStep(step)
{
	switch(step)
	{
		case 1:
			$('#form2').hide();
			$('#form3').hide();
			$('#form1').show();
		break;
		case 2:
			$('#form1').hide();
			$('#form3').hide();
			$('#form2').show();
		break;
		case 3:
			$('#form1').hide();
			$('#form2').hide();
			$('#form3').show();
		break;
	}
}

function trackStatus()
{
	$.getJSON('/ajax/send', {cmd: 'checkPayStatus', codeId: codeId},
			function(data)
			{
				if(!data.error && parseInt(data.payed) && tracking)
				{
					blkClick();
					tracking = false;

                                        try {ya_hit('gensms');} catch(e){}
					changeStep(3);
				}

			}
	);

	if(tracking)
		setTimeout('trackStatus()',5000);
}

// пагинатор
// передвигаем ползунок
function mv(d)
{
    //d - направление движения
    cur = parseInt($(v1).attr('innerHTML'));
    // считаем ускорение
    m = 0;
    //if (iter > 40) m = 30;
    //else if (iter > 20) m = 7;
   // else if (iter > 10) m = 2;
    //проверки в зависимости от направляения
    if (d == 1)
    {
        if (cur + 12 > maxPage) return;
        if (cur + m >= maxPage) m = 0;
    }
    else if (cur <= 1) return;
    else if ((cur - m) <= 1) m = 0;
    if (d == 1)
        $(moveBack).css('visibility', 'visible');
    else
        $(moveForw).css('visibility', 'visible');
    cur += d * (m + 1);
    // перебираем все элементы пагинатора и меняем их
    for (i = 0; i < 12; i += 1)
    {
        obj = $('#v'+(i+1)).attr('innerHTML', cur + i ).attr('href',urlB + (cur + i) +  urlA)
        if (cur + i == act)
            $(obj).addClass('act')
        else
            $(obj).removeClass('act')
        if (cur + i == 1)// тоесть у нас нарисовался первый элемент - убираем в начало
        {
            rmv()
            $(moveBack).css('visibility', 'hidden');
        }
        else if (cur + i == maxPage)
        {
            rmv()
            $(moveForw).css('visibility', 'hidden');
        }
    }
    iter += 1;
    tid = window.setTimeout('mv('+d+')', 100);
    return false;
}
// убираем счетчик
function rmv()
{
    iter = 0;
    if (tid)
        window.clearTimeout(tid);
}

function rate(type,id)
{
	$.getJSON('/ajax/rating',{id: id,type: type},
		function(data)  {

			if(data.error)
				data.reply = 'Ошибка';
			else
				$('#rate' + data.id).text(data.rating);

			$('#good' + data.id).hide();
			$('#bad' + data.id).hide();
			$('#vote' + data.id).text(data.reply).show();
	});

}

function checkReminder()
{

	if(reminderData)
	{
		changeStep(2);
		$('.code').text(reminderData.code);
		codeId = reminderData.codeId;
		$('.recieverPhone').text(reminderData.to);
		$('.recieverOperator').text(reminderData.operator);

		if(reminderData.sendOn != '0')
			$('.recieverTime').text(reminderData.sendOn);
		else
			$('.recieverTime').text('незамедлительно');

		sendStatus = 1;
		tracking = true;
		setTimeout('trackStatus()',5000);

		$('#blocker').show();
		$('#win').show();
	}
}
function setWindowState(state)
{
    $('#blocker').hide();//блокер
    $('#code').hide();//окно с кодом
    switch(state)
    {
        case 11:
            $('#blocker').show();//блокер
            $('#code').show();//окно с кодом
            $('#form3').show();//окно с кодом
            $('#form1').hide();
            $('#price').show();
            $('#price > .win-bg > .win-close').unbind('click');
            $('#price > .win-bg > .win-close').click(function(){$('#price').hide();});
            $("#price").css("margin","-110px 0 0 -234px");
        break;
    }
    return false;
}

