function getList(type, obj) {
    var geoReq = new Request({
        url: '/ajax/get_geo_list.php',
        onSuccess: function(txt){
            out = document.getElementById(type);
            for (var i = out.length - 1; i >= 0; i--) {
                out.options[i] = null;
            }
            if(type == 'geo_region') {
                city = document.getElementById('geo_city');
                for (var i = city.length - 1; i >= 0; i--) {
                    city.options[i] = null;
                }
                city.options[0] = new Option('выберите город...','0');
            }
            eval(txt);
        },

        onFailure: function(){
            alert2('request_error', 'error');
        }
    });
    geoReq.send('type=' + type + '&id=' + $(obj).value);
    return geoReq;
}

function toggleWeddingDay(el) {
    if(el.value==1) {
        document.getElementById('wedding_date_show').className = '';
    } else {
        document.getElementById('wedding_date_show').className = 'h';
    }
}

function toggleRole(el) {
    if(el.value=="x" || el.value=="y") {
        document.getElementById('role_z_show').className = 'h';
        document.getElementById('role_xy_show').className = '';
        if(el.value=="x") {
            document.getElementById('pair_title').innerHTML = 'Жених';
        } else {
            document.getElementById('pair_title').innerHTML = 'Невеста';
        }
    } else if(el.value=="z") {
        document.getElementById('role_xy_show').className = 'h';
        document.getElementById('role_z_show').className = '';
    } else {
        document.getElementById('role_xy_show').className = 'h';
        document.getElementById('role_z_show').className = 'h';
    }
}

function addPost(name) {
    if($(name)) {
        var value = escapePost($(name).value);
        return name + '=' + value + '&';
    }
    return '';
}
function escapePost(value) {
    value = value.replace(/\&/g, '%26');
    value = value.replace(/\+/g, '%2B');
    return value;
}
function sendFormXY() {
    var err = false;
    var post = '';
    if($('member_first_name').value=='') {
        err = true;
        alert2('reg_no_first_name', 'error');
    } else {
        post += addPost('member_first_name');
    }
    if($('member_last_name').value=='') {
        err = true;
        alert2('reg_no_last_name', 'error');
    } else {
        post += addPost('member_last_name');
    }
    if(!($('geo_country').value>0)) {
        err = true;
        alert2('reg_no_country', 'error');
    } else {
    }
    if(!($('geo_region').value>0)) {
        err = true;
        alert2('reg_no_region', 'error');
    } else {
    }
    if(!($('geo_city').value>0)) {
        err = true;
        alert2('reg_no_city', 'error');
    } else {
        post += 'geo_city_id=' + $('geo_city').value + '&';
    }
    if($('member_email') && $('member_email').value=='') {
        err = true;
        alert2('reg_no_email', 'error');
    } else {
        post += addPost('member_email');
    }
    if($('member_email_pm') && $('member_email_pm').checked) {
        post += addPost('member_email_pm');
    }
    if($('member_email_sub') && $('member_email_sub').checked) {
        post += addPost('member_email_sub');
    }

    if( ($('bithday_day').value>0 || $('bithday_month').value>0 || $('bithday_year').value>0)
        &&
        ($('bithday_day').value=='' || $('bithday_month').value=='' || $('bithday_year').value=='')
      ) {
        err = true;
        alert2('bithday_no_full', 'error');
    } else if($('bithday_day').value!='' && $('bithday_month').value!='' && $('bithday_year').value!='') {
        post += 'member_bithday=' + $('bithday_year').value + '-' + $('bithday_month').value + '-' + $('bithday_day').value + '&';
    }

    if($('member_pair_first_name')) {
        if(!$('wedding_date_select') || $('wedding_date_select').value=='1') {
            post += addPost('member_wedding_date');
        }
        post += addPost('member_pair_first_name');
        post += addPost('member_pair_last_name');
    }
    post += addPost('member_web');
    post += addPost('member_icq');

    var phones = '';
    phone_tbody.getElements('input').each(function(item){
        if(item.value!='') {
            phones += item.value + '|';
        }
    });
    post += 'member_phone=' + escapePost(phones) + '&';

    if(!err) {
        sendPost(post)
    }
}

function sendFormCommon() {
    var err = false;
    var post = '';
    if($('member_first_name').value=='') {
        err = true;
        alert2('reg_no_first_name', 'error');
    } else {
        post += addPost('member_first_name');
    }
    if($('member_last_name').value=='') {
        err = true;
        alert2('reg_no_last_name', 'error');
    } else {
        post += addPost('member_last_name');
    }
    if(!($('geo_country').value>0)) {
        err = true;
        alert2('reg_no_country', 'error');
    } else {
    }
    if(!($('geo_region').value>0)) {
        err = true;
        alert2('reg_no_region', 'error');
    } else {
    }
    if(!($('geo_city').value>0)) {
        err = true;
        alert2('reg_no_city', 'error');
    } else {
        post += 'geo_city_id=' + $('geo_city').value + '&';
    }
    if($('member_email') && $('member_email').value=='') {
        err = true;
        alert2('reg_no_email', 'error');
    } else {
        post += addPost('member_email');
    }
    if($('member_email_pm') && $('member_email_pm').checked) {
        post += addPost('member_email_pm');
    }
    if($('member_email_sub') && $('member_email_sub').checked) {
        post += addPost('member_email_sub');
    }

    if( ($('bithday_day').value>0 || $('bithday_month').value>0 || $('bithday_year').value>0)
        &&
        ($('bithday_day').value=='' || $('bithday_month').value=='' || $('bithday_year').value=='')
      ) {
        err = true;
        alert2('bithday_no_full', 'error');
    } else {
        post += 'member_bithday=' + $('bithday_year').value + '-' + $('bithday_month').value + '-' + $('bithday_day').value + '&';
    }
    post += addPost('member_web');
    post += addPost('member_icq');

    var phones = '';
    phone_tbody.getElements('input').each(function(item){
        if(item.value!='') {
            phones += item.value + '|';
        }
    });
    post += 'member_phone=' + escapePost(phones) + '&';

    if(!err) {
        sendPost(post);
    }
}

function sendFormZ() {
    var err = false;
    var post = '';
    if($('member_first_name').value=='') {
        err = true;
        alert2('reg_no_first_name', 'error');
    } else {
        post += addPost('member_first_name');
    }
    if($('member_last_name').value=='') {
        err = true;
        alert2('reg_no_last_name', 'error');
    } else {
        post += addPost('member_last_name');
    }
    if(!($('geo_country').value>0)) {
        err = true;
        alert2('reg_no_country', 'error');
    } else {
    }
    if(!($('geo_region').value>0)) {
        err = true;
        alert2('reg_no_region', 'error');
    } else {
    }
    if(!($('geo_city').value>0)) {
        err = true;
        alert2('reg_no_city', 'error');
    } else {
        post += 'geo_city_id=' + $('geo_city').value + '&';
    }
    if($('member_email') && $('member_email').value=='') {
        err = true;
        alert2('reg_no_email', 'error');
    } else {
        post += addPost('member_email');
    }
    if($('member_email_pm') && $('member_email_pm').checked) {
        post += addPost('member_email_pm');
    }
    if($('member_email_sub') && $('member_email_sub').checked) {
        post += addPost('member_email_sub');
    }

    if(!($('role_id').value>0)) {
        err = true;
        alert2('reg_no_role2', 'error');
    } else {
        post += addPost('role_id');
    }

    if(!$('member_sex_1').checked && !$('member_sex_2').checked) {
        err = true;
        alert2('reg_no_sex', 'error');
    } else {
        if($('member_sex_1').checked) {
            post += 'member_sex=1' + '&';
        } else if($('member_sex_2').checked) {
            post += 'member_sex=2' + '&';
        }
    }

    if( ($('bithday_day').value>0 || $('bithday_month').value>0 || $('bithday_year').value>0)
        &&
        ($('bithday_day').value=='' || $('bithday_month').value=='' || $('bithday_year').value=='')
      ) {
        err = true;
        alert2('bithday_no_full', 'error');
    } else if( ($('bithday_day').value>0 && $('bithday_month').value>0 && $('bithday_year').value>0)
                &&
                ($('bithday_day').value!='' && $('bithday_month').value!='' && $('bithday_year').value!='')
              ) {
        post += 'member_bithday=' + $('bithday_year').value + '-' + $('bithday_month').value + '-' + $('bithday_day').value + '&';
    }
    post += addPost('member_icq');
    post += addPost('member_address');
    post += addPost('member_metro');
    post += addPost('member_orientir');


    var phones = '';
    phone_tbody.getElements('input').each(function(item){
        if(item.value!='') {
            phones += item.value + '|';
        }
    });
    post += 'member_phone=' + escapePost(phones) + '&';

    var web = '';
    web_tbody.getElements('input').each(function(item){
        if(item.value!='') {
            web += item.value + '|';
        }
    });
    post += 'member_web=' + escapePost(web) + '&';

    if(!err) {
        sendPost(post);
    }
}

var phone_i = 1;
var phone_c = 1;
var phone_tbody;
if(typeof phones_count != 'undefined') {
    phone_i = phone_i + phones_count.toInt();
    phone_c = phone_c + phones_count.toInt();
    phone_tbody = $('phone_table').getElements('tbody')[0];
}
function delPhoneRow(el) {
    tr = el.parentNode.parentNode;
    tr.parentNode.removeChild(tr);
    phone_c--;
    moveAddPhoneLink();
}
function addPhoneRow() {
    if(phone_c>3) {
      alert2('no_more_phones', 'error');
      return '';
    }
    var tr = document.createElement("tr");
    phone_tbody.appendChild(tr);

    var td1 = document.createElement("td");
    var td2 = document.createElement("td");

    tr.appendChild(td1);
    tr.appendChild(td2);

    td1.className = 'register_td1';
    td2.className = 'register_td2';
    td1.innerHTML = 'Телефон';
    td2.innerHTML = '<input type="text" class="w240" name="member_phone_'+phone_i+'" id="member_phone'+phone_i+'" value="" /><span class="ucp_del_link" onclick="delPhoneRow(this)"><span>Удалить</span></span>';

    phone_i++;
    phone_c++;
    if(phone_c>3) {
        removeAddPhoneLink();
    } else {
        moveAddPhoneLink();
    }
}
function moveAddPhoneLink() {
    removeAddPhoneLink();
    var link = new Element('span', {
        'class': 'ucp_add_link',
        'id': 'add_phone_link',
        'html': '<span>Добавить</span>',
        'events': {
            'click': function(){
                addPhoneRow();
            }
        }
    });
    link.inject(phone_tbody.getLast('tr').getLast('td').getLast('input'), 'after');
}
function removeAddPhoneLink() {
    var add_phone_link = document.getElementById('add_phone_link');
    if(add_phone_link) {
        add_phone_link.parentNode.removeChild(add_phone_link);
    }
}

var web_i = 1;
var web_c = 1;
var web_tbody;
if(typeof web_count != 'undefined') {
    web_i = web_i + web_count.toInt();
    web_c = web_c + web_count.toInt();
    web_tbody = $('web_table').getElements('tbody')[0];
}
function delWebRow(el) {
    tr = el.parentNode.parentNode;
    tr.parentNode.removeChild(tr);
    web_c--;
    moveAddWebLink();
}
function addWebRow() {
    if(web_c>3) {
      alert2('no_more_web', 'error');
      return '';
    }
    var tr = document.createElement("tr");
    web_tbody.appendChild(tr);

    var td1 = document.createElement("td");
    var td2 = document.createElement("td");

    tr.appendChild(td1);
    tr.appendChild(td2);

    td1.className = 'register_td1';
    td2.className = 'register_td2';
    td1.innerHTML = 'Сайт';
    td2.innerHTML = '<input type="text" class="w240" name="member_web_'+web_i+'" id="member_web'+web_i+'" value="" /><span class="ucp_del_link" onclick="delWebRow(this)"><span>Удалить</span></span>';

    web_i++;
    web_c++;
    if(web_c>3) {
        removeAddWebLink();
    } else {
        moveAddWebLink();
    }
}
function moveAddWebLink() {
    removeAddWebLink();
    var link = new Element('span', {
        'class': 'ucp_add_link',
        'id': 'add_web_link',
        'html': '<span>Добавить</span>',
        'events': {
            'click': function(){
                addWebRow();
            }
        }
    });
    link.inject(web_tbody.getLast('tr').getLast('td').getLast('input'), 'after');
}
function removeAddWebLink() {
    var add_web_link = document.getElementById('add_web_link');
    if(add_web_link) {
        add_web_link.parentNode.removeChild(add_web_link);
    }
}

function sendFormReg() {
    var err = false;
    var post = '';
    if($('fio1').value=='') {
        err = true;
        alert2('reg_no_first_name', 'error');
    } else {
        post += addPost('fio1');
    }
    if($('fio2').value=='') {
        err = true;
        alert2('reg_no_last_name', 'error');
    } else {
        post += addPost('fio2');
    }
    if(!($('geo_country').value>0)) {
        err = true;
        alert2('reg_no_country', 'error');
    } else {
        post += addPost('geo_country');
    }
    if(!($('geo_region').value>0)) {
        err = true;
        alert2('reg_no_region', 'error');
    } else {
        post += addPost('geo_region');
    }
    if(!($('geo_city').value>0)) {
        err = true;
        alert2('reg_no_city', 'error');
    } else {
        post += addPost('geo_city');
    }

    if($('role').value=='') {
        err = true;
        alert2('reg_no_role', 'error');
    } else if($('role').value=='z' && $('role2').value=='') {
        err = true;
        alert2('reg_no_role2', 'error');
    } else {
        if($('role').value=='z') {
            post += addPost('role');
            post += addPost('role2');
        } else if ($('role').value=='x' || $('role').value=='y') {
            post += addPost('role');
            if($('wedding_date_select').value=='1') {
                post += addPost('wedding_date');
            }
            if($('pair1').value!='') {
                post += addPost('pair1');
            }
            if($('pair2').value!='') {
                post += addPost('pair2');
            }
        } else {
            post += addPost('role');
        }
    }

    if($('login') && $('login').value=='') {
        err = true;
        alert2('reg_no_login', 'error');
    } else {
        post += addPost('login');
    }
    if($('email') && $('email').value=='') {
        err = true;
        alert2('reg_no_email', 'error');
    } else {
        post += addPost('email');
    }
    if($('kalyaka_3') && $('kalyaka_3c')) {
        if($('kalyaka_3').value=='') {
            err = true;
            alert2('reg_no_pass', 'error');
        } else if($('kalyaka_3c').value=='') {
            err = true;
            alert2('reg_no_pass2', 'error');
        } else if($('kalyaka_3c').value!=$('kalyaka_3').value) {
            err = true;
            alert2('reg_pass_nm', 'error');
        } else {
            post += addPost('kalyaka_3');
            post += addPost('kalyaka_3c');
        }
    }

    if($('vk_photo')) {
        post += addPost('vk_photo');
    }

    if(!err) {
        var now = new Date();
        var regReq = new Request({
            url: '/ajax/register.php?time=' + now.getTime(),
            onSuccess: function(txt){
                if(txt!='') {
                    eval(txt);
                    if(txt=='alert2("reg_success", "message"); ') {
                        window.location = goto;
                    }
                } else {
                    alert2('request_error_null', 'error');
                }
            },

            onFailure: function(){
                alert2('request_error', 'error');
            }
        });
        regReq.send(post);
    }
}

function sendPost(post) {
    var regReq = new Request({
        url: '/ajax/profile_edit.php',
        onSuccess: function(txt){
            if(txt!='') {
                eval(txt);
            } else {
                alert2('request_error_null', 'error');
            }
        },

        onFailure: function(){
            alert2('request_error', 'error');
        }
    });
    regReq.send(post);
}

function fillFromVk() {
    if(!VK) {
        setTimeout(fillFromVk, 100);
        return;
    }
    if(!(VK._session && VK._session.mid)) {
        return;
    }
    VK.Api.call('getProfiles', {uids: VK._session.mid, fields: 'first_name,last_name,city,photo_big'}, function(r) {
      if(r.response) {
        $('fio1').value = r.response[0].first_name;
        $('fio2').value = r.response[0].last_name;
        $('vk_photo').value = r.response[0].photo_big;
        var cityName = VK.Api.call('places.getCityById', {cids: r.response[0].city}, function(r) {
            if(r.response) {
                var geoReq = new Request({
                    url: '/ajax/get_geo_list.php',
                    onSuccess: function(txt){
                        if(txt) {
                            var geo = JSON.decode(txt);
                            $('geo_country').value = geo.country_id;
                            var reqCountry = getList('geo_region', 'geo_country');
                            reqCountry.onSuccess = function(txtCountry){
                                var type = 'geo_region';
                                out = document.getElementById(type);
                                for (var i = out.length - 1; i >= 0; i--) {
                                    out.options[i] = null;
                                }
                                city = document.getElementById('geo_city');
                                for (var i = city.length - 1; i >= 0; i--) {
                                    city.options[i] = null;
                                }
                                city.options[0] = new Option('выберите город...','0');
                                eval(txtCountry);
                                $('geo_region').value = geo.region_id;
                                var reqRegion = getList('geo_city', 'geo_region');
                                reqRegion.onSuccess = function(txtRegion){
                                    var type = 'geo_city';
                                    out = document.getElementById(type);
                                    for (var i = out.length - 1; i >= 0; i--) {
                                        out.options[i] = null;
                                    }
                                    eval(txtRegion);
                                    $('geo_city').value = geo.city_id;
                                }
                            }
                        }
                    },

                    onFailure: function(){
                        alert2('request_error', 'error');
                    }
                });
                geoReq.send('type=geo_full&city_name=' + r.response[0].name);
                }
        });
      }
    });
}

function vkConnect(act) {
    if(!VK) {
        return false;
    }

    var regReq = new Request({
        url: '/ajax/vk_connect.php',
        onSuccess: function(txt){
            if(txt!='') {
                if(txt==1) {
                    window.location = '';
                } else {
                    alert2('reg_error_vk_taken', 'error');
                }
            } else {
                alert2('request_error_null', 'error');
            }
        },

        onFailure: function(){
            alert2('request_error', 'error');
        }
    });
    if(act=='link') {
        VK.Auth.login(function(response) {
          if (response.session) {
            regReq.send('act='+act);
          } else {
            return false;
          }
        }, 2055);
    } else {
        regReq.send('act='+act);
    }
}

function initPhotoUploader() {
    var link = $('profile_edit_photo_uploader');
    var linkIdle = link.get('html');

    function linkUpdate() {
            if (!swf.uploading) return;
            var size = Swiff.Uploader.formatUnit(swf.size, 'b');
            link.set('html', '<span class="small">' + swf.percentLoaded + '% of ' + size + '</span>');
    }

    // Uploader instance
    var swf = new Swiff.Uploader({
            path: '/js/FancyUpload/Swiff.Uploader.swf',
            url: '/ajax/profile_upload_photo.php',
            fieldName: 'upload_image',
            verbose: true,
            queued: false,
            multiple: false,
            target: link,
            instantStart: true,
            data: {'act':'photoAdd','member_id':$('member_id').value,'pass_hash':$('pass_hash').value},
            typeFilter: {
                    'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'
            },
            fileSizeMax: 2 * 1024 * 1024,
            onSelectSuccess: function(files) {
                    //if (Browser.Platform.linux) window.alert('Warning: Due to a misbehaviour of Adobe Flash Player on Linux,\nthe browser will probably freeze during the upload process.\nSince you are prepared now, the upload will start right away ...');
                    this.setEnabled(false);
            },
            onSelectFail: function(files) {
            },
            appendCookieData: false,
            onQueue: linkUpdate,
            onFileComplete: function(file) {

                    // We *don't* save the uploaded images, we only take the md5 value and create a monsterid ;)
                    if (file.response.error) {
                    } else {
                            var src = JSON.decode(file.response.text, true).src;

                            var img = $('profile_edit_photo_img');
                            img.setProperty('src', src + '?x=200&y=200&s=2');
                            img.highlight();
                    }

                    file.remove();
                    this.setEnabled(true);
            },
            onComplete: function() {
                    link.set('html', linkIdle);
            }
    });

    // Button state
    link.addEvents({
            click: function() {
                    return false;
            },
            mouseenter: function() {
                    this.addClass('hover');
                    swf.reposition();
            },
            mouseleave: function() {
                    this.removeClass('hover');
                    this.blur();
            },
            mousedown: function() {
                    this.focus();
            }
    });
}

window.onload = function() {
    if($('profile_edit_photo_uploader')) {
        initPhotoUploader();
    }
}
