// JavaScript Document

var dragapproved = false; 
var x, y, displayShow;
var timeoutLimit = 15000;
var cookieExpireDays = 14;

if(navigator.appName.indexOf("Microsoft Internet Explorer") != -1)
    displayShow = 'block';
else
    displayShow = 'table-row';

function showVoting(article){
    hideVotingForm();
    
    var session = $.cookie('voting');
    var confirmedReg = $.cookie('voting_reg');
    if (session && session.length == 8){
        $.ajax({
            url: '/voting/index.php',
            type: 'POST',
            data: 'op=auth&session=' + escape(session) + '&aid=' + escape(article),
            timeout: timeoutLimit,
            success: function(data) {
                if(data.length == 8){
                    $.cookie('voting', data, { expires: cookieExpireDays, path: '/' });
                    showTextForm('thanks');
                }
                else if (data == '-1') { 
                    showTextForm('not');
                }
                else {
                    showVotingForm(article);
                }
            },
            error: function (xhr, ajaxOptions, thrownError){
                showVotingForm(article);
            }
        });
    }
    else if (confirmedReg && parseInt(confirmedReg) > 0){
        showTextForm('not.confirmed');
    }
    else {
        showVotingForm(article);
    }
    
    return false;
}

function showVotingForm(article){
    $.get('/voting/auth.form.html', function(data) {
        var newDiv = document.createElement('div');
        newDiv.setAttribute('id', 'votingDiv');
        newDiv.innerHTML = data;
        newDiv.style.top = '150px';
        newDiv.style.left = '300px';
        document.body.appendChild(newDiv);
        
        addDragableListener();

        if (article != 0){
            document.getElementById('aid').value = article;

            var el = document.getElementById('form_switcher');
            if (el.addEventListener){  
                el.addEventListener('click', function(){
                    switchRegisterForm(this);
                }, false);   
            } else if (el.attachEvent){
                el.attachEvent('onclick', function(){
                    switchRegisterForm(this);
                });  
            }
        }
        else {
            setDisplay('tr11', 'none');
            setDisplay('tr8', 'none');
            setDisplay('tr2', 'none');
            setDisplay('tr3', 'none');
            setDisplay('tr4', 'none');
            setDisplay('tr5', 'none');
            setDisplay('tr6', 'none');
            setDisplay('tr10', displayShow);
            document.getElementById('intro_text').innerHTML = 'Ievadiet jaunu paroli.';
            document.getElementById('popup_c').style.height = "210px";
            document.getElementById('send_button').value = 'Mainīt';
            var res = new Array();
            res = document.location.href.split('#pass=');
            if (res[1])
                document.getElementById('reminder').value = res[1]
        }
    });
}

function addDragableListener(){
    for(var i = 1; i <= 9; i++){
        addDragableListenerToObject('dragableside' + i);
    }
    
    if (document.addEventListener){
        document.addEventListener('mousemove', function(event){
            if (dragapproved){
                var el = document.getElementById('votingDiv');
                el.style.left = (temp1 + event.clientX - x) + 'px';
                el.style.top = (temp2 + event.clientY - y) + 'px';
                return false;
            }
        }, true);
        document.addEventListener('mouseup', function(){
            dragapproved = false;
        }, false);
    } else if (document.attachEvent){
        document.attachEvent('onmousemove', function(event){
            if (dragapproved){
                var el = document.getElementById('votingDiv');
                el.style.left = (temp1 + event.clientX - x) + 'px';
                el.style.top = (temp2 + event.clientY - y) + 'px';
                return false;
            }
        }, true);
        document.attachEvent('onmouseup', function(){
            dragapproved = false;
        }, false);
    }
}

function addDragableListenerToObject(objectId){
    var el = document.getElementById(objectId);
    if (el) {
        if (el.addEventListener){
            el.addEventListener('mousedown', function(event){
                dragapproved = true;
                var el = document.getElementById('votingDiv');
                temp1 = parseInt(el.style.left);
                temp2 = parseInt(el.style.top);
                x = event.clientX;
                y = event.clientY;
            }, true);
        } else if (el.attachEvent){
            el.attachEvent('onmousedown', function(event){
                dragapproved = true;
                var el = document.getElementById('votingDiv');
                temp1 = parseInt(el.style.pixelLeft);
                temp2 = parseInt(el.style.pixelTop);
                x = event.clientX;
                y = event.clientY;
            });
        }
    }
} 

function showTextForm(name){
    var file;
    if (name == 'thanks') file = 'thanks';
    else if (name == 'not') file = 'not';
    else if (name == 'not.confirmed') file = 'not.confirmed';
    else if (name == 'reg.thanks') file = 'reg.thanks';
    else if (name == 'reminder') file = 'reminder';
    else if (name == 'changed') file = 'changed';
    else if (name == 'changed.ok') file = 'changed.ok';
    
    $.get('/voting/' + file + '.html', function(data) {
        var newDiv = document.createElement('div');
        newDiv.setAttribute('id', 'votingDiv');
        newDiv.innerHTML = data;
        newDiv.style.top = '150px';
        newDiv.style.left = '300px';
        document.body.appendChild(newDiv);

        addDragableListener();
            
        var el = document.getElementById('close_button');
        if (el) {
            if (el.addEventListener){  
                el.addEventListener('click', function(){
                    hideVotingForm();
                }, false);   
            } else if (el.attachEvent){
                el.attachEvent('onclick', function(){
                    hideVotingForm();
                });  
            }
        }
        
        activateConfirmationButton();
        document.getElementById('popup_c').style.height = "220px";
    });
}

function showReminderForm(){
    document.getElementById('intro_text').innerHTML = 'Lai saņemtu saiti paroles atjaunošanas formai, ievadiet savu e-pasta adresi un nospiediet pogu "Pieprasīt"';
    document.getElementById('reminder').value = 1;
    
    for(var i = 1; i <= 9; i++)
        setDisplay('tr' + i, 'none');
    setDisplay('tr10', displayShow);
    setDisplay('error', 'none');
    
    document.getElementById('popup_c').style.height = "170px";
}

function activateConfirmationButton(){
    var el = document.getElementById('send_confirmation');
    if (el){
        if (el.addEventListener){  
            el.addEventListener('click', function(){
                sendConfirmation();
            }, false);   
        } else if (el.attachEvent){
            el.attachEvent('onclick', function(){
                sendConfirmation();
            });  
        }
    }
}

function sendConfirmation(){
     var confirmedReg = $.cookie('voting_confirm');
     var el = document.getElementById('send_confirmation');
     if (el) el.disabled = true;
     document.getElementById('popup_c').style.cursor = 'wait';
     
     $.ajax({
        url: '/voting/index.php',
        type: 'POST',
        data: 'op=send&id=' + escape(confirmedReg),
        timeout: timeoutLimit,
        success: function(data) {
            document.getElementById('popup_c').style.cursor = 'default';
            hideVotingForm()
            showTextForm('reg.thanks');
        },
        error: function (xhr, ajaxOptions, thrownError){
            document.getElementById('popup_c').style.cursor = 'default';
            serverError(ajaxOptions, 240);
            if (el) el.disabled = false;
        }
    });
}

function hideVotingForm(){
    if (document.getElementById('votingDiv'))
        document.body.removeChild(document.getElementById('votingDiv'));
}

function switchRegisterForm(element) {
    if (document.getElementById('form_switcher').checked) {
        setDisplay('tr1', 'none');
        setDisplay('tr2', 'none');
        setDisplay('tr3', 'none');
        setDisplay('tr5', 'none');
        setDisplay('tr7', 'none');
        setDisplay('tr4', displayShow);
        setDisplay('tr6', displayShow);
        
        document.getElementById('popup_c').style.height = "250px";
        setDisplay('error', 'none');
    }
    else {
        setDisplay('tr1', displayShow);
        setDisplay('tr2', displayShow);
        setDisplay('tr3', displayShow);
        setDisplay('tr5', displayShow);
        setDisplay('tr7', displayShow);
        setDisplay('tr4', 'none');
        setDisplay('tr6', 'none');
        
        document.getElementById('popup_c').style.height = "340px";
        setDisplay('error', 'none');
    }
}

function setDisplay(element, value) {
    document.getElementById(element).style.display = value; 
}

function getDocumentUrl(){
    document.getElementById('popup_c').style.cursor = 'wait';
    var url = document.location.href;
    if (url.indexOf('#') > 1) {
        var urlRes = new Array();
        urlRes = url.split('#');
        url = urlRes[0];
    }
    return url;
}

function submitRegisterForm(){
    var errors = false;
    // reminder
    if (document.getElementById('reminder').value == 1){
        if (document.getElementById('email').value.length < 6 ||  /^.+@.+\..{2,4}$/.test(document.getElementById('email').value) == false){
            setDisplay('error', 'block');
            document.getElementById('error').innerHTML = 'Nav aizpildīti visi obligātie lauki, vai tie ir aizpildīti nekorekti.';
            document.getElementById('popup_c').style.height = "190px";
            return false;
        }
        $.ajax({
            url: '/voting/index.php',
            type: 'POST',
            data: 'op=reminder&user=' + escape(document.getElementById('email').value) + 
                  '&url=' + escape(getDocumentUrl()),
            timeout: timeoutLimit,
            success: function(data) {
                document.getElementById('popup_c').style.cursor = 'default';
                if (data == '0') {
                    document.getElementById('error').style.display = 'block';
                    document.getElementById('popup_c').style.height = "190px";
                    document.getElementById('error').innerHTML = 'Lietotājs ar tādu e-pasta adresi neeksistē.';
                } 
                else if(data == '1'){
                    data = data.substr(1);
                    hideVotingForm();
                    showTextForm('reminder');
                }
            },
            error: function (xhr, ajaxOptions, thrownError){
                serverError(ajaxOptions, 190);
            }
        });
    }
    // change password
    else if (document.getElementById('reminder').value.length > 1){
        if (document.getElementById('pass1').value.length < 8 || document.getElementById('pass1').value != document.getElementById('pass2').value){
            setDisplay('error', 'block');
            document.getElementById('error').innerHTML = 'Nav aizpildīti visi obligātie lauki, vai tie ir aizpildīti nekorekti.';
            document.getElementById('popup_c').style.height = "230px";
            return false;
        }
        document.getElementById('popup_c').style.cursor = 'wait';
        $.ajax({
            url: '/voting/index.php',
            type: 'POST',
            data: 'op=change&pass=' + escape(document.getElementById('pass1').value) + 
                  '&code=' + escape(document.getElementById('reminder').value),
            timeout: timeoutLimit,
            success: function(data) {
                document.getElementById('popup_c').style.cursor = 'default';
                if (data == '0') {
                    document.location.href = 'http://piesledzieslatvija.lv/';
                    return false;
                } 
                else if(data == '1'){
                    hideVotingForm();
                    showTextForm('changed.ok');
                }
            },
            error: function (xhr, ajaxOptions, thrownError){
                serverError(ajaxOptions, 270);
            } 
        });
    }
    // login 
    else if (document.getElementById('form_switcher').checked) {
        if (document.getElementById('email').value.length < 6 ||  /^.+@.+\..{2,4}$/.test(document.getElementById('email').value) == false)
            errors = true;
        if (document.getElementById('pass1').value.length < 1)
            errors = true;
        if (errors){
            setDisplay('error', 'block');
            document.getElementById('error').innerHTML = 'Nav aizpildīti visi obligātie lauki, vai tie ir aizpildīti nekorekti.';
            document.getElementById('popup_c').style.height = "270px";
            return false;
        }
        document.getElementById('popup_c').style.cursor = 'wait';
        $.ajax({
            url: '/voting/index.php',
            type: 'POST',
            data: 'op=login&user=' + escape(document.getElementById('email').value) + 
                  '&code=' + escape(document.getElementById('pass1').value) + 
                  '&aid=' + escape(document.getElementById('aid').value),
            timeout: timeoutLimit,
            success: function(data) {
                document.getElementById('popup_c').style.cursor = 'default';
                if (data == '0') {
                    document.getElementById('error').style.display = 'block';
                    document.getElementById('popup_c').style.height = "270px";
                    document.getElementById('error').innerHTML = 'Ievadītā e-pasta adrese vai parole nav pareizas';
                } 
                else if(data.indexOf('-') == 0 && data.length == 9){
                    data = data.substr(1);
                    hideVotingForm();
                    $.cookie('voting', data, { expires: cookieExpireDays, path: '/' });
                    showTextForm('not');
                }
                else if(data.indexOf('n') == 0 && data.length > 1){
                    data = data.substr(1);
                    $.cookie('voting_reg', 1, { expires: 2, path: '/' });
                    $.cookie('voting_confirm', data, { expires: 2, path: '/' });
                    setDisplay('error', 'block');
                    document.getElementById('popup_c').style.height = "290px";
                    document.getElementById('error').innerHTML = 'Jūs neesiet pabeidzis reģistrāciju. Lūdzu nospiediet uz apstiprināšanas linka, kurš tika nosūtīts Jums uz e-pastu, vai spiediet uz <a href="javascript:sendConfirmation();" class="vot_link">Nosūtīt atkārtoti apstiprinājumu</a>.';
                }
                else if(data.length == 8){
                    hideVotingForm();
                    $.cookie('voting', data, { expires: cookieExpireDays, path: '/' });
                    showTextForm('thanks');
                }
            },
            error: function (xhr, ajaxOptions, thrownError){
                serverError(ajaxOptions, 270);
            } 
        });
    }
    // register
    else {
        if (document.getElementById('email').value.length < 6 ||  /^.+@.+\..{2,4}$/.test(document.getElementById('email').value) == false)
            errors = 'Nav ievadīta e-pasta adrese vai tā ir ievadīta nepareizi.';
        else if (document.getElementById('pass1').value.length < 8)
            errors = 'Paroles garumam ir jābūt vismaz 8 simboli.';
        else if (document.getElementById('pass1').value != document.getElementById('pass2').value)
            errors = 'Ir ievadītas dažādas paroles.'
        else if (document.getElementById('agrea').checked == false)
            errors = 'Jūs neesiet piekrītuši noteikumiem.'; 
        if (errors){
            setDisplay('error', 'block');
            document.getElementById('error').innerHTML = errors;
            document.getElementById('popup_c').style.height = "360px";
            return false;
        }
        document.getElementById('popup_c').style.cursor = 'wait';
        $.ajax({
            url: '/voting/index.php',
            type: 'POST',
            data: 'op=register&user=' + escape(document.getElementById('email').value) + 
                  '&code=' + escape(document.getElementById('pass1').value) + 
                  '&name=' + escape(document.getElementById('name').value) + 
                  '&aid=' + escape(document.getElementById('aid').value) + 
                  '&url=' + escape(getDocumentUrl()),
            timeout: timeoutLimit,
            success: function(data) {
                document.getElementById('popup_c').style.cursor = 'default';
                if (data == '0') {
                    setDisplay('error', 'block');
                    document.getElementById('popup_c').style.height = "360px";
                    document.getElementById('error').innerHTML = 'Ievadītā e-pasta adrese jau ir reģistrēta.';
                }
                else if(data.indexOf('n') == 0 && data.length > 1){
                    data = data.substr(1);
                    $.cookie('voting_reg', 1, { expires: 2, path: '/' });
                    $.cookie('voting_confirm', data, { expires: 2, path: '/' });
                    setDisplay('error', 'block');
                    document.getElementById('popup_c').style.height = "380px";
                    document.getElementById('error').innerHTML = 'Šāds e-pasts jau ir reģistrēts, bet reģistrācija nav pabeigta. Lūdzu nopiediet uz apstiprināšanas linka, kurš tika nosūtīts Jums uz e-pastu, vai spiediet uz <a href="javascript:sendConfirmation();" class="vot_link">Nosūtīt atkārtoti apstiprinājumu</a>.';
                } 
                else if(data.indexOf('o') == 0 && data.length > 1){
                    data = data.substr(1);
                    hideVotingForm();
                    $.cookie('voting_reg', 1, { expires: 2, path: '/' });
                    $.cookie('voting_confirm', data, { expires: 2, path: '/' });
                    showTextForm('reg.thanks');
                }
            },
            error: function (xhr, ajaxOptions, thrownError){
                serverError(ajaxOptions, 240);
            } 
        });
    }
    
    return false;
}

function serverError(text, height){
    setDisplay('error', 'block');
    document.getElementById('popup_c').style.height = height + "px";
    if (text == 'timeout')
        document.getElementById('error').innerHTML = 'Atvainojamies! Pašlaik Apollo serviss nav pieejams. Mēģiniet vēlāk.';
    else
        document.getElementById('error').innerHTML = 'Sistēmas kļūda. Mēģiniet vēlāk.';
    document.getElementById('popup_c').style.cursor = 'default';
}

function checkURL(){
    var urlString = document.location.href;
    if (urlString.indexOf('#confirm=') > 1){
        var res = new Array();
        res = urlString.split('#confirm=');
        if (res[1] && res[1].length == 8) {
            $.cookie('voting', res[1], { expires: cookieExpireDays, path: '/' });
            $.cookie('voting_reg', 0, { expires: cookieExpireDays, path: '/' });
            $.cookie('voting_confirm', 0, { expires: cookieExpireDays, path: '/' });
            showTextForm('thanks');
            //alert($.cookie('voting_confirm'));
        }
        else
            document.location.href = res[0];
    }
    if (urlString.indexOf('#pass=') > 1){
        var res = new Array();
        res = urlString.split('#pass=');
        if (res[1] && res[1].length > 1) {
            showVotingForm(0);
        }
        else
            document.location.href = res[0];
    }
}

checkURL();
