/* B.H. */
var FormsClass = new Class.create();
FormsClass.prototype = {

    initialize: function(main_div_id, content_div_id) {
        this.main_div = $(main_div_id);
        this.content_div = $(content_div_id);
        this.content = "";
        this.redirect_url = "";
        this.must_redirect_onclose = false;
        this.must_redirect_after_register = false;
        this.redirect_url_onclose = "index.php";
        this.send_to_friend_id = -1;
    },
    
    OpenWindow: function(delta_y) {
        var h_pos = screen.availHeight/2-delta_y;
        if(h_pos < 10) h_pos = 10;
        var pp = document.viewport.getScrollOffsets()[1]+h_pos+'px';
        this.content_div.style.top = pp;
        this.main_div.style.height = screen.availHeight + document.viewport.getScrollOffsets()[1]+'px';
        this.main_div.style.display = "";
        document.body.style.overflow = 'hidden';
        /*new Draggable(this.content_div);*/
    },

    CloseForm: function() {
        document.body.style.overflow = 'auto';
        this.main_div.style.display = "none";
        this.content_div.innerHTML = "";
        if(this.must_redirect_onclose) {
            location.replace(this.redirect_url_onclose);
        }
    },
    
    OpenSendToFriendForm: function (id, type) {
        this.GetFormsContent('send_to_friend&type='+type+'&id='+id);
        this.OpenWindow(306);
        this.send_to_friend_id = id;
    },
    
    OpenSendInfoAboutBadMessage: function (id) {
        this.GetFormsContent('send_info_about_bad_message&id='+id);
        this.OpenWindow(306);
        this.send_to_friend_id = id;
    },
    
    // access_type: LIMITED_ACCESS | READONLY
    OpenRequestAccesToForumForm: function (access_type, forum_id) { 
        this.GetFormsContent('request_access_to_forum&access_type='+access_type+"&forum_id="+forum_id);
        this.OpenWindow(300);
    },

    RequestAccesToForumFormSubmit: function() {
        var frm = document.forms['AddRequestAccessMessage'];
        var message = frm.elements['message'].value;
        var operation = frm.elements['operation'].value;
        var forum_id = frm.elements['forum_id'].value;
        var access_type = frm.elements['access_type'].value;
        
        if(message.length == 0) {
            alert("נא תמלא הערות");
            frm.elements['message'].focus();
            return false;
        }
        this.main_div.style.cursor = 'progress';
        
        var SendArray = {};
        SendArray['message'] = message;
        SendArray['operation'] = operation;
        SendArray['forum_id'] = forum_id;
        SendArray['access_type'] = access_type;

        var obj = this;
        new Ajax.Request("ajax_forms_requester.php?form_type=request_access_to_forum&access_type="+access_type, {
            method: 'post',
            parameters: SendArray, 
            onComplete: function(transport) 
            {
                obj.main_div.style.cursor = 'default';
                obj.content_div.innerHTML = transport.responseText;
            }
        });

        return false;
    },
    
    SendInfoAboutBadMessageFormSubmit: function() {
        var frm = document.forms['send_to_moder_bad_message_info'];
        var message = frm.elements['message'].value;
        
        if(message.length == 0) {
            $("ajax_form_element_error").innerHTML = "נא תמלא הערות";
            frm.elements['message'].focus();
            return false;
        }
                      
        this.main_div.style.cursor = 'progress';
        
        var SendArray = {};
        SendArray['cause'] = frm.elements['cause'].value;
        SendArray['phone'] = frm.elements['phone'].value;
        SendArray['phone_code'] = frm.elements['phone_code'].value;
        SendArray['message'] = frm.elements['message'].value;
        SendArray['id'] = this.send_to_friend_id; 
        SendArray['operation'] = 'send'; 
        
        var obj = this;
        new Ajax.Request("ajax_forms_requester.php?form_type=send_info_about_bad_message", {
            method: 'post',
            parameters: SendArray, 
            onComplete: function(transport) 
            {
                obj.main_div.style.cursor = 'default';
                obj.content_div.innerHTML = transport.responseText;
            }
        });

        return false;
    },
    
    SendToFriendFormSubmit: function(type) {
        var frm = document.forms['send_to_friend'];
        var r_email = frm.elements['recipient_email'].value;
        var s_email = frm.elements['sender_email'].value;
        var s_name  = frm.elements['sender_name'].value;
        
        if(r_email.length == 0) {
            $("ajax_form_element_error").innerHTML = "נא תמלא אי-מייל של חבר";
            frm.elements['recipient_email'].focus();
            return false;
        }
        if(!validateEmailv2(r_email)) {
            $("ajax_form_element_error").innerHTML = "כתובת אי-מייל לא נכונה";
            frm.elements['recipient_email'].focus();
            return false;
        }
        if(s_email.length == 0) {
            $("ajax_form_element_error").innerHTML = "נא תמלא אי-מייל שלי";
            frm.elements['sender_email'].focus();
            return false;
        }
        if(!validateEmailv2(s_email)) {
            $("ajax_form_element_error").innerHTML = "כתובת אי-מייל לא נכונה";
            frm.elements['sender_email'].focus();
            return false;
        }
        if(s_name.length == 0) {
            $("ajax_form_element_error").innerHTML = "נא תמלא שם שלי";
            frm.elements['sender_name'].focus();
            return false;
        }
        
        this.main_div.style.cursor = 'progress';
        
        var SendArray = {};
        SendArray['recipient_email'] = r_email; 
        SendArray['sender_email'] = s_email; 
        SendArray['sender_name'] = s_name; 
        SendArray['operation'] = 'send'; 
        SendArray['own_message'] = frm.elements['own_message'].value;
        SendArray['id'] = this.send_to_friend_id; 
        
        var obj = this;
        new Ajax.Request("ajax_forms_requester.php?form_type=send_to_friend&type="+type, {
            method: 'post',
            parameters: SendArray, 
            onComplete: function(transport) 
            {
                obj.main_div.style.cursor = 'default';
                obj.content_div.innerHTML = transport.responseText;
            }
        });
        
        return false;
    },

    OpenCommentsNeedSignupForm: function() {
        this.GetFormsContent('comments_need_signup');
        this.OpenWindow(300);
    },
    
    OpenContactUsForm: function() {
        this.GetFormsContent('contact_us')
        this.OpenWindow(500);
    },
    
    ContactUsFormSubmit: function() {
        var frm = document.forms['contact_us_form'];
        var first_name = frm.elements['first_name'].value;
        var phone = frm.elements['phone'].value;
        //var phone_code = frm.elements['phone_code'].value;
        var email = frm.elements['email'].value;
        var message = frm.elements['message'].value;

        if(email.length == 0) {
            $("ajax_form_element_error").innerHTML = 'נא למלא כתובת דוא"ל';
            frm.elements['email'].focus();
            return false;
        }
        if(message.length == 0) {
            $("ajax_form_element_error").innerHTML = "נא למלא תוכן";
            frm.elements['message'].focus();
            return false;
        }

        params = {
        	first_name: first_name, phone: phone, email: email, message: message,
        	operation: frm.elements['operation'].value
        };
        
        new Ajax.Request('ajax_forms_requester.php?form_type=contact_us', {
            method: 'post',
            parameters: params, 
            onSuccess: (function(transport) { 
                this.content_div.innerHTML = transport.responseText;
            }).bind(this),
            onFailure: function(tr) {
        		alert(tr.responseText);
        	}
        });
        
        return false;
    },
    
    OpenLoginForm: function() {
        this.GetFormsContent('login')
        this.OpenWindow(300);

        var obj = this;
        new Ajax.Request('ajax_forms_requester.php?get_login_redirect_url', {
            onSuccess: function(transport) { 
                obj.redirect_url = transport.responseText;
            }
        });
    },

    LoginFormSubmit: function () {
        frm = document.forms['sign_in'];
        name = $F('login_username');
        pass = $F('login_password');
        sign_auto = ($F('login_auto')==1)?1:0;
        
        if(name.length == 0) {
        	jQuery("#ajax_form_element_error").slideUp('slow').
        		html("שם משתמש ריק").slideDown('slow');
            frm.elements['username'].focus();
            return false;
        }
        if(pass.length == 0) {
        	jQuery("#ajax_form_element_error").slideUp('slow').
        		html("אין סיסמה").slideDown('slow');
            frm.elements['password'].focus();
            return false;
        }
        
        this.main_div.style.cursor = 'progress';
        
        new Ajax.Request('mk_ajax_server.php', {
            method: 'get',
            parameters: { op: 'process_login', u: name, p: pass, a: sign_auto }, 
            onComplete: (function(transport) {
                this.main_div.style.cursor = 'default';
                frm = document.forms['sign_in'];
                resp = transport.responseText;
                if (resp == 'sign_in_user_not_found') {
                    jQuery("#ajax_form_element_error").slideUp('slow').
                    	html("משתמש לא נמצא או סיסמה שגויה").slideDown('slow');
                    frm.elements['username'].focus();
                    return false;
                } else if(resp == 'user_not_approved') {
                    this.OpenResendActivationEmailForm();
                    return false;
                } else if(resp == 'ok') {
                	//document.location = (this.redirect_url)?this.redirect_url:document.location;
                	document.location = document.location;
                } else {
                	alert('אירעה שגיאה, אנא נסה שוב!\n\n'+resp);
                	document.location = document.location;
                }
            }).bind(this),
            onFailure: (function (tr) {
            	alert('אירעה שגיאה, אנא נסה שוב!\n'+tr.responseText);
            	document.location = document.location;
            }).bind(this)
        });
        
        return false;
    },
    
    ActivateEmailFormSubmit: function () {
        var frm = document.forms['activate_email'];
        var email = frm.elements['email'].value;
        
        if(email.length == 0) {
            alert("נא תמלא אי-מייל");
            frm.elements['email'].focus();
            return false;
        }
        if(!validateEmailv2(email)) {
            alert("האי-מייל לא תקין. נא תמלא כתובת אי-מייל תקינה");
            frm.elements['email'].focus();
            return false;
        }
        
        SendArray = {};
        SendArray['email'] = email; 
        SendArray['operation'] = 'send_activate_email'; 
        
        this.main_div.style.cursor = 'progress';
        var obj = this;
        new Ajax.Request("ajax_forms_requester.php?form_type=resend_activation_email_form", {
            method: 'post',
            parameters: SendArray, 
            onComplete: function(transport) 
            {
                obj.content_div.innerHTML = transport.responseText;
            }
        });
        
        return false;
    },
    
    OpenResendActivationEmailForm: function () {
        this.GetFormsContent('resend_activation_email_form')
        this.OpenWindow(300);
    },
    
    OpenRegisterForm: function () {
        this.GetFormsContent('register')
        this.OpenWindow(500);
    },
    
    TestUsername: function (text_test_ok, text_test_wrong) {
        var frm = document.forms['register_form'];
        var username = frm.elements['username'].value;
        new Ajax.Request('ajax_forms_requester.php?test_username='+username, {
            method: 'get',
            onSuccess: function(transport) {
                if(transport.responseText == 'ok') {
                    $('test_username_result').innerHTML = text_test_ok;
                    $('test_username_result').style.color = '#00FF00';
                }
                else {
                    $('test_username_result').innerHTML = text_test_wrong;
                    $('test_username_result').style.color = '#FF0000';
                }
            }
        });
    },

    RegisterFormSubmit: function (oper) {
        var frm = document.forms['register_form'];
        var name = frm.elements['username'].value;
        var pass = frm.elements['password'].value;
        var pass1 = frm.elements['password1'].value;
        var email = frm.elements['email'].value;
        
        if(name.length == 0) {
            alert("נא תמלא שם משתמש");
            frm.elements['username'].focus();
            return false;
        }
        if(name.length < 2) {
            alert("בין 2 ל-20 תווים");
            frm.elements['username'].focus();
            return false;
        }
        if(oper=='insert' && pass.length == 0) {
            alert("נא תמלא סיסמה");
            frm.elements['password'].focus();
            return false;
        }
        if(pass.length > 0 && pass.length < 6) {
            alert("בין 6 ל-20 אותיות ו/ או מספרים בלבד");
            frm.elements['password'].focus();
            return false;
        }
        if(pass != pass1) {
            alert("שוב סיסמה");
            frm.elements['password1'].focus();
            return false;
        }
        if(email.length == 0) {
            alert("נא תמלא אי-מייל");
            frm.elements['email'].focus();
            return false;
        }
        if(!validateEmailv2(email)) {
            alert("האי-מייל לא תקין. נא תמלא כתובת אי-מייל תקינה");
            frm.elements['email'].focus();
            return false;
        }
        if(!frm.elements['apply_rules'].checked) {
            alert("אתה חייב להסכים לתנאיים על מנת לסיים את ההרשמה");
            frm.elements['apply_rules'].focus();
            return false;
        }
        
        this.main_div.style.cursor = 'progress';
        
        var SendArray = {};
        SendArray['username'] = name; 
        SendArray['password'] = pass; 
        SendArray['email'] = email; 
        if(oper=='insert'){
            if(frm.elements['sex'][0].checked)
                SendArray['sex'] = 'male'; 
            else
                SendArray['sex'] = 'female'; 
        }
        else {
            SendArray['sex'] = frm.elements['sex'].value; 
        }
        SendArray['birthday_year'] = frm.elements['birthday_year'].value; 
        SendArray['birthday_month'] = frm.elements['birthday_month'].value; 
        SendArray['birthday_day'] = frm.elements['birthday_day'].value; 
        SendArray['birthday_place'] = frm.elements['birthday_place'].value; 
        SendArray['sms'] = frm.elements['sms'].checked; 
        SendArray['phone'] = frm.elements['phone'].value; 
        SendArray['phone_code'] = frm.elements['phone_code'].value; 
        SendArray['subscribe_discount'] = frm.elements['subscribe_discount'].checked; 
        if(frm.elements['country_region'])
            SendArray['country_region'] = frm.elements['country_region'].value; 
        if(frm.elements['about_me'])
            SendArray['about_me'] = frm.elements['about_me'].value; 
        if(frm.elements['my_personal_text'])
            SendArray['my_personal_text'] = frm.elements['my_personal_text'].value; 
        
        var obj = this;
        new Ajax.Request("ajax_forms_requester.php?operation=register", {
            method: 'post',
            parameters: SendArray, 
            onComplete: function(transport) 
            {
                obj.main_div.style.cursor = 'default';
                if(transport.responseText != 'update_ok' && transport.responseText != 'insert_ok') {
                    obj.content_div.innerHTML = transport.responseText;
                    return false;
                }
                else
                    if(transport.responseText == 'insert_ok')
                        obj.ShowMessageAfterRegister();
                    else {
                        if(oper=='update') {
                            location.reload();
                        }
                        else {
                            if(this.must_redirect_after_register)
                                location.replace(this.redirect_url_onclose);
                            else
                                obj.CloseForm();
                        }
                    }
            }
        });

        return false;
    },
    
    ShowMessageAfterRegister: function () {
        this.GetFormsContent('message_after_register')
        this.OpenWindow(450);
    },
    
    ForgotPasswordForm: function () {
        this.GetFormsContent('forgot_pass')
        this.OpenWindow(180);
    },

    ForgotPassFormSubmit: function () {
    },
    
    OpenRedMailForm: function () {
        this.GetFormsContent('red_mail')
        this.OpenWindow(450);
    },
    
    // deprecated
    RedMailFormSubmit: function () {
        var frm = document.forms['red_mail_form'];
        var email = frm.elements['email'].value;
        var title = frm.elements['title'].value;
        var apply_rules = frm.elements['apply_rules'].checked;
        if(email.length == 0) {
            $("ajax_form_element_error").innerHTML = "נא תמלא אי-מייל";
            frm.elements['email'].focus();
            return false;
        }
        if(!validateEmailv2(email)) {
            $("ajax_form_element_error").innerHTML = "האי-מייל לא תקין. נא תמלא כתובת אי-מייל תקינה";
            frm.elements['email'].focus();
            return false;
        }
        if(title.length == 0) {
            $("ajax_form_element_error").innerHTML = "נא תמלא כותרת";
            frm.elements['title'].focus();
            return false;
        }
        if(!apply_rules) {
            $("ajax_form_element_error").innerHTML = "אתה חייב להסכים לתנאיים על מנת לסיים את ההרשמה";
            frm.elements['apply_rules'].focus();
            return false;
        }

        frm.target = "file_upload_target";
        frm.action = "ajax_forms_requester.php?operation=add_red_mail";
        return true;
    },

    RedMailFormSubmit_new: function () {
        frm = document.forms['red_mail_form'];
        error_elm = $('redmail_form_element_error');
        op_mode = frm.elements['op_mode'].value;
        email = frm.elements['email'].value;
        title = frm.elements['title'].value;
        apply_rules = frm.elements['apply_rules'].checked;
        if (op_mode!='user') {
        	if(email.length == 0) {
        		error_elm.innerHTML = "נא למלא אי-מייל";
        		frm.elements['email'].focus();
        		return false;
        	}
        	if(!validateEmailv2(email)) {
        		error_elm.innerHTML = "האי-מייל לא תקין. נא למלא כתובת אי-מייל תקינה";
        		frm.elements['email'].focus();
        		return false;
        	}
        }
        if(title.length == 0) {
        	error_elm.innerHTML = "נא למלא כותרת";
            frm.elements['title'].focus();
            return false;
        }
        if(!apply_rules) {
        	error_elm.innerHTML = "יש להסכים עם התנאים לפני שליחת הפניה";
            frm.elements['apply_rules'].focus();
            return false;
        }
        return true;
    },

    RedMailFormSubmit_uc: function () {
        frm = document.forms['red_mail_form_uc'];
        error_elm = $('redmail_uc_form_element_error');
        title = frm.elements['title'].value;
        desc = frm.elements['desc'].value;
        body = frm.elements['body'].value;
        apply_rules = frm.elements['apply_rules'].checked;
        if(title.length == 0) {
        	error_elm.innerHTML = "נא למלא כותרת";
            frm.elements['title'].focus();
            return false;
        }
        if(desc.length == 0) {
        	error_elm.innerHTML = "נא למלא כותרת משנה";
            frm.elements['desc'].focus();
            return false;
        }
        if(body.length == 0) {
        	error_elm.innerHTML = "נא למלא תוכן";
            frm.elements['body'].focus();
            return false;
        }
        if(!apply_rules) {
        	error_elm.innerHTML = "יש להסכים עם התנאים לפני שליחת הכתבה";
            frm.elements['apply_rules'].focus();
            return false;
        }
        return true;
    },

    
    RedMailFormSubmitOk: function() {
        this.CloseForm();
    },
    
    RedMailFormSubmitFileError: function() {
        $("ajax_form_element_error").innerHTML = "";
    },
    
    GetFormsContent: function(type) {
        var obj = this;
        new Ajax.Request('ajax_forms_requester.php?form_type='+type, {
            onSuccess: function(transport) { 
                obj.content_div.innerHTML = transport.responseText;
            }
        });
    },
    
    AddUserToFriend: function(id) {
    	if (!window.site_user_json.id) {
    		this.OpenLoginForm(); return;
    	}
        new Ajax.Request('mk_ajax_server.php', {
            method: 'get',
            parameters: { op: 'add_friend', user_id: id }, 
            onSuccess: function(transport) {
            	resp = transport.responseText;
            	if (resp.length>0) alert(resp);
            },
            onFailure: function(tr) {
            	alert('בעיה בתקשורת. אנא נסה שוב!')
            }
        });
    },
    
    OpenDeleteFriendForm: function(friend_name, user_id) {
        this.GetFormsContent('del_friend&del_friend_name='+friend_name+"&user_id="+user_id);
        this.OpenWindow(300);
    },
    
    DelFriendApply: function(user_id) {
        location.replace('my_account.php?type=my_friends&operation=del_friend&friend_id='+user_id);
    },
    
    AddNewPrivateMessage: function(user_id, url) {
        var SendArray = {};
        SendArray['url'] = url; 
        
        var obj = this;
        new Ajax.Request("ajax_forms_requester.php?operation=add_new_private_message_callback_path", {
            method: 'post',
            parameters: SendArray, 
            onComplete: function(transport) 
            {
                location.replace('my_account.php?type=new_message&user_id='+user_id);
            }
        });
    }
}


