var Form_Err = "השגיאות הבאות אירעו:";
var REQUIRED_TEXT = "שדה %1 הוא חובה";


site = {
	init:function () {
		site.bubbles();
		site.overlay();
		site.sliders();
		site.application.init();
        site.forms.init();

		$(".prevent-default").click(
			function(e){
				e.preventDefault();
			}
		);

        $(".content-footer li.splitter:last").hide();
        $(".faq li.splitter:last").hide();
	},
	
    formatNumber: function(nStr) {
	    nStr += '';
	    x = nStr.split('.');
	    x1 = x[0];
	    x2 = x.length > 1 ? '.' + x[1] : '';
	    var rgx = /(\d+)(\d{3})/;
	    while (rgx.test(x1)) {
		    x1 = x1.replace(rgx, '$1' + ',' + '$2');
	    }
	    return x1 + x2;
    },

	slider_options: function(el, object) {
		$.each(object, function(key, value){
				el.slider( "option", key, value );
			}
		);
	},

	sliders: function() {
		$(".slider").each(
			function (i) {

				var el = $(this);
				
				el.slider({
					slide: function( event, ui ) {
						$( "#" + el.attr("for_input") ).val( ui.value );
					}
				});

				switch(el.attr("for_input")){
					case "obligation_months":
						site.slider_options(el, {"value": 1,  "min": 1, "max": 36, "step": 1, "disabled": true});
						break;

					case "monthly_payments":
						site.slider_options(el, {"value": 0,  "min": 0, "max": 5000, "step": 10});
						break;

					case "monthly_minutes":
						site.slider_options(el, {"value": 0,  "min": 0, "max": 5000, "step": 50});
						break;

					case "monthly_sms":
						site.slider_options(el, {"value": 0,  "min": 0, "max": 5000, "step": 50});
						break;

				}

				if(el.slider( "option", "disabled" )) $( "#" + $(this).attr("for_input") ).attr("disabled", "disabled");

				var min = el.slider( "option", "min" );
				var max = el.slider( "option", "max" );

				$( "#" + $(this).attr("for_input") ).attr("maxlength", max.toString().length);

				$( "#" + $(this).attr("for_input") ).val( el.slider( "option", "value" ) );

				$( "#" + $(this).attr("for_input") ).change( 
					function(){


						value = $(this).val();

						value = value < min || value == "" ? min : value;
						value = value > max ? max : value;

						$(this).val(value);

						el.slider( "option", "value", value);

					}
				);
			}
		)
	},

	overlay: function() {
		$("a[rel]").overlay({
			mask: {
				color: '#909090',
				loadSpeed: 200,
				opacity: 0.3
			},

			top: '15%',
			closeOnClick: true
		});
	},

	bubbles: function() {
		$("h2.bubble").append($("<span />"));
	},

	application: {
		init: function() {
			if($("#wakeup-form").length) { $("#wakeup-form").get(0).reset() };

			$("#wakeup-form :text:not(.free-value-text)").live('blur', function () {
				$(this).val($(this).val().replace(/[^0-9\.]/g, ''));
			});

			$('#contact_phone').blur(function () {
				$(this).val($(this).val().replace(/\-/g, ''));
			});

			$("#invoice_yes").click(
				function(){
					$("li.monthly_minutes, li.monthly_sms, li.sectors").fadeIn("slow");
				}
			)

            $("#orginizations").click(
                function(e){
                    $(this).is(":checked") ? $("#orginization").removeAttr("disabled") : $("#orginization").attr("disabled", "disabled");
                    
                }
            )

			$("#invoice_no").click(
				function() {
					$("li.monthly_minutes, li.monthly_sms, li.sectors").fadeOut();
					
				}
			).overlay({
					mask: {
						color: '#909090',
						loadSpeed: 200,
						opacity: 0.3
					},

					top: '15%',
					closeOnClick: true,

					onLoad: function(e){
						$("#invoice_no").attr("checked", "checked");
					}
				});

			$("#plan_details_yes").click(
				function() {
					$("div.plan_packages").fadeIn("slow");
				}
			)

			$("#plan_details_no").click(
				function() {
					$("div.plan_packages").fadeOut();
				}
			)

			$("#plan_package_fix").click(
				function() {
					$("div.plan_package_ppm").hide();
					$("div.plan_package_fix").show();
				}
			)

			$("#plan_package_ppm").click(
				function() {
					$("div.plan_package_fix").hide();
					$("div.plan_package_ppm").show();
				}
			)

			$("li.obligation input").each(
				function(i){
					switch($(this).attr("id")){
						case "obligation_no":
							$(this).click(
								function(){
									var el = $(this).parent().find(".slider");
									el.slider("option", "disabled", true);

									$( "#" + el.attr("for_input") ).attr("disabled", "disabled");
								}
							)

							break;
						case "obligation_yes":
							$(this).click(
								function(){
									var el = $(this).parent().find(".slider");
									el.slider("option", "disabled", false);

									$( "#" + el.attr("for_input") ).removeAttr("disabled");
								}
							)

							break;
					}
				}
			)

			//swap obligation
			var ob_yes_label = $('li.obligation > label[for=obligation_yes]');
			var ob_yes_cb = $('li.obligation > input#obligation_yes');

			$('input#obligation_no').after(ob_yes_cb);
			$('input#obligation_no').after(ob_yes_label);

            $('input#obligation_no').css("margin-left", "10px");

			$('input#obligation_no').attr('checked', true);
			$('input#plan_details_no').attr('checked', true);
			$('input#plan_package_ppm').attr('checked', true);

			site.application.tabs();
			site.application.terms.init();
			site.application.fields.init();
		},

		terms:{
			init:function () {
                if(!$('form.agreement').get(0)) return;

				$('form.agreement a.add_field').live('click', function () { site.application.terms.add('remove'); });
				$('form.agreement a.remove_field').live('click', function (e) { site.application.terms.remove(e.target); });

                $("#agree_type").change(
                    function(){
                        if($(this).val() == 309){
				            site.application.terms.add('add'); 
                            
                        }else{
                            $('div.agree_row').html("");

                        }
                    }
                )

                $('form.agreement').submit(
                    function(e){
                        e.preventDefault();
                    }
                )

                $('form.agreement').get(0).reset();

                $("button.btn-agreement-send").click(
                    function(e){
                        if(site.forms.check($('form.agreement').get(0))){
                            var url = $('form.agreement').attr("action");

                            $.post(url, $('form.agreement').serialize(), function (data) {
                                $("div.agreement_wrapper").html('<p>' + data + '</p>');
                             })
                        };
                    }
                )
			},

			add:function (type) {
				var html = [];

				html.push('<div class="agree-row" type="'+type+'">');
					html.push('<label>מספר מנוי:</label>');
					html.push('<input class="margin-right input phone_numbers_phone" type="text" name="agree_phone_numbers[] title="" required="1" validation="None" error="" " />');
					html.push('<a class="' + type + '_field"></a>');
				html.push('</div>');

				$('div.agree_row').append($(html.join('')));
                $("div.agree_row' .phone_numbers_phone").attr("title", "מספר מנוי");
			},

			remove:function (el) {
				$(el).closest('div.agree-row').remove();
			}
		},

		fields:{
			index:0,

			init:function () {
				$('div.plan_packages a.add_field').live('click', function () { site.application.fields.add('remove'); });
				$('div.plan_packages a.remove_field').live('click', function (e) { site.application.fields.remove(e.target); });

				site.application.fields.add('add'); 
			},

			add:function (type) {
				var html = [];

				if (this.index < 10) {

					html.push('<div class="free-text-row" type="'+type+'">');
						html.push('<input type="text" value="טקסט חופשי" name="package_cost_free_'+(this.index + 1)+'" class="big-input free-text-input free-value-text" onfocus="if (this.value==\'טקסט חופשי\') this.value=\'\';" onblur="if (this.value==\'\') this.value=\'טקסט חופשי\'" />');

						html.push('<label>עלות: </label>');

						html.push('<input type="text" class="margin-right" name="package_cost_value_'+(this.index + 1)+'" />');

						html.push('<a class="' + type + '_field"></a>');
					html.push('</div>');

					$('div.plan_packages').append($(html.join('')));

					this.index ++ ;
				}
			},

			remove:function (el) {
				$(el).closest('div.free-text-row').remove();

				this.index -- ;

			}
		},
			
		tabs: function() {
			$(".application-tabs").tabs(".application-steps > div.application-form", {
				effect: 'fade',
				fadeOutSpeed: 0,
				rotate: false,
				onBeforeClick: function(event, tabIndex){
					if(tabIndex == 0) {
						$(".application-buttons .backward").addClass("disabled");
						$(".application-buttons .forward").removeClass("disabled");
					}

					if(tabIndex > 0 && tabIndex < this.getTabs().length - 1){
						$(".application-buttons .backward").removeClass("disabled");
						$(".application-buttons .forward").removeClass("disabled");
					}

					if(tabIndex == 1){
						$(".application-buttons .backward").addClass("disabled");
						$(".application-buttons .forward").addClass("disabled");
					}

					if(tabIndex == this.getTabs().length - 1){
						$(".application-buttons .forward").addClass("disabled");
					}
				},

				onClick: function(event, tabIndex){ 
					if(tabIndex == 1){
						site.application.post_calc_form();
						site.application.sequence(this, 0);
					}

					if(tabIndex == 3){
						site.application.inital_post = true;
						site.application.post_contact_form();
					}
				}
			});

			var api = $(".application-tabs").data("tabs");

			// "next tab" button
			$(".application-buttons .forward").click(function() {
				switch(api.getIndex()){
					case 0:
						if(site.application.validate_form(api.getIndex())) api.next();
						break;
					case 1:
						
						break;
					case 2:
						if(site.application.validate_contact()) {
							api.next();
						}
						break;
					case 3:
						api.next();
						break;
				}

			});

			// "previous tab" button
			$(".application-buttons .backward").click(function() {
				if(api.getIndex() == 2) {
					api.click(0);
				}else{
					api.prev();
				}
			});

			$("a.setp-4-recalc").click(
				function(){
					$('#wakeup-form').get(0).reset();

					$("#contact_name").val(site.application.contact_data.contact_name);
					// $("#contact_phone").val(site.application.contact_data.contact_phone);
					$("#contact_email").val(site.application.contact_data.contact_email);

					$("li.monthly_minutes, li.monthly_sms, li.sectors").css('display');

					api.click(0);
				}
			)

		},

		sequence:function (tab, index) {
			if (index == 3) {
				if (site.application.data) {
					site.application.fill();
					site.application.inital_post ? tab.click(3) : tab.next();
				}
				else setTimeout(function () { site.application.sequence(tab, index); }, 3000);
				
				return;
			}

			$(".step-2-content ul li:eq(" + index + ")").addClass("proccess");

			setTimeout(function () {
				$(".step-2-content ul li:eq(" + index + ")").removeClass("proccess");

				site.application.sequence(tab, ++index);
			}, 1000);
		},

		fill:function () {
			var company = $('input[name=cell_company]:checked').attr('name_en'),
				monthly_payment = (site.application.data.monthly_payment * 1).toFixed(2),
				best_pack = site.application.data.best_pack = site.application.data.packages.sort(function (a, b) {
					if (a.cost>b.cost) return 1;
					if (b.cost>a.cost) return -1;
					return 0;
				})[0];

			$("#invoice").addClass(company);
			$("#total_price").html("₪" + site.formatNumber(best_pack.cost));

			if (monthly_payment - best_pack.cost <= 0) {
				$('div.saving').addClass('hidden');
				$('div.no-saving').removeClass('hidden');
			}
			else {
				$('div.saving').removeClass('hidden');
				$('div.no-saving').addClass('hidden');

				best_pack.cost > 0 ? $("#monthly_save").html(site.formatNumber(monthly_payment - best_pack.cost)) : 0;
				best_pack.cost > 0 ? $("#annual_save").html(site.formatNumber(Math.round((monthly_payment - best_pack.cost) * 12))) : 0;
			}

			site.application.data.best_pack.save = monthly_payment - best_pack.cost;
		},

		post_calc_form:function () {
			var package_cost_free = [],
				package_cost_values = [],
				data;

			if ($('#plan_details_no').prop('checked')) {
				$('div.plan_details :input').val('');
			}

			$('div.free-text-row').each(function (i, div) {
				var cost_free = $(div).find('input[name^=package_cost_free]').val(),
					cost_values = $(div).find('input[name^=package_cost_value]').val();

				if(cost_values.length) {
					 package_cost_free.push(cost_free);
					 package_cost_values.push(cost_values);
				}
			});

			$('#package_cost_free_values').val(package_cost_free.join('||'));
			$('#package_cost_values').val(package_cost_values.join('||'));

			data = $('#wakeup-form').serializeArray();

			site.application.calc_data = data;

			$.post('/calc.php', $.toJSON(data), function (response) {
				site.application.data = $.parseJSON(response);
			});
		},

		post_contact_form:function () {
			var data = [
					{"name":"best_pack_id", "value":site.application.data.best_pack.id},
					{"name":"best_pack_cost", "value":site.application.data.best_pack.cost},
					{"name":"best_pack_save", "value":site.application.data.best_pack.save},
					{"name":"avg_unit_cost", "value":site.application.data.best_pack.avg_unit_cost},
					{"name":"full_name", "value":$("#contact_name").val()},
					{"name":"phone", "value":$("#contact_phone").val()},
					{"name":"email", "value":$("#contact_email").val()},
					{"name":"minutes_orange", "value":site.application.data.minutes_orange},
					{"name":"minutes_cellcom", "value":site.application.data.minutes_cellcom},
					{"name":"minutes_pelephone", "value":site.application.data.minutes_pelephone}
				].concat(site.application.calc_data);

			site.application.contact_data = {
				'contact_name':$("#contact_name").val(),
				'contact_phone':$("#contact_phone").val(),
				'contact_email':$("#contact_email").val()
			}

			$.post('/save.php', $.toJSON(data), function (response) {
				//site.application.data = $.parseJSON(response);
			});
		},

		validate_form:function (index) {
			var err = [];

			switch (index) {
				case 0:
					if (!$('input[name=cell_company]:checked').length) err.push('לאיזו חברה אתה מנוי כיום ?');
					
					// if (!$('input[name=monthly_payments]').value > 0) err.push('כמה אתה משלם בחודש ?');
					
					if (!$('#invoice_yes:checked').length) err.push('לא ניתן להתקדם ללא חשבונית');

					if (err.length) {
						site.application.error(err);
						return false;
					}
					else return true;
					break;
			}
		},

		validate_contact:function () {
			var err = [];

			if (!$('#contact_name').val()) err.push('נא להזין שם');

			if (!$('#contact_phone').val()) err.push('נא להזין טלפון');
			if ($('#contact_phone').val() && !site.application.validate.ILPhone($('#contact_phone').val())) err.push('נא להזין טלפון תקני');

			if (!$('#contact_email').val()) err.push('נא להזין אימייל');
			if ($('#contact_email').val() && !site.application.validate.Email($('#contact_email').val())) err.push('נא להזין אימייל תקין');
	
			if (err.length) {
				site.application.error(err);
				return false;
			}
			else return true;
		},

		validate: {
			Email: function (s) {
				var re = /^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$/i;
				return re.test(s);
			},
			ILPhone: function (s) {
				var re = /^0(?:77|72|52|54|50|57|3|4|8|9)-?\d{7}$/;
				return re.test(s);
			}
		},

		error:function (arr) {
			alert(arr.join('\n'));
		}
	},

    forms: {
        init: function () {
            $('div.cms-forms button').click(function (e) {
                e.preventDefault();
                var form = $(this).parents('div.cms-forms').find('form').get(0);
                if (site.forms.check(form)) site.forms.ajax(form, this);
            });
        },

        check: function (frm) {
            var str = Form_Err + "\n\n",
			err = false;

            for (var i = 0; i < frm.elements.length; i++) {
                var type = frm.elements[i].type;

                if (type != "hidden" && type != "button") {
                    var value = frm.elements[i].value;
                    var required = frm.elements[i].getAttribute("required") * 1;
                    var validation = frm.elements[i].getAttribute("validation");
                    var title = frm.elements[i].title;
                    var checked = frm.elements[i].checked;
                    var error = frm.elements[i].getAttribute("error");

                    if (required === 1) {
                        if ((type === "text" || type === "textarea") && value === "") {
                            err = true;
                            str += REQUIRED_TEXT.replace("%1", title) + "!\n";
                        }

                        if (type === "checkbox" && !checked) {
                            err = true;
                            str += REQUIRED_TEXT.replace("%1", title) + "!\n";
                        }
                    }

                    if (validation != "None" && value != "") {
                        if (!site.forms.validate[validation](value)) {
                            err = true;
                            str += error + "!\n";
                        }
                    }
                }
            }

            if (err) {
                alert("\u202e" + str);
                return false;
            } else {
                return true;
            }
        },

        validate: {
            Email: function (s) {
                var re = /^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$/i;
                return re.test(s);
            },
            ILPhone: function (s) {
                var re = /^0(?:77|72|52|54|50|57|3|4|8|9)-?\d{7}$/;
                return re.test(s);
            },
            ILDate: function (s) {
                var re = /^((29\/0?2(?=\/(\d{2}(0[48]|[13579][26]|[2468][048])|([13579][26]|[2468][048])00))|([01]?\d|2[0-8])\/(0?\d|1[0-2])|(29|30)\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/\d{4})$/;
                return re.test(s);
            },
            ILSocialID: function (s) {
                var tot = 0;
                for (i = 0; i < 8; i++) {
                    x = (((i % 2) + 1) * s.charAt(i));
                    if (x > 9) {
                        x = x.toString();
                        x = parseInt(x.charAt(0)) + parseInt(x.charAt(1))
                    }

                    tot += x;
                }

                if ((tot + parseInt(s.charAt(8))) % 10 == 0) {
                    return true;
                } else {
                    return false;
                }
            }
        },

        ajax: function (form, btn) {
            var html = "",
			url = $(form).attr("action");

            $("input:text", $(form)).each(
				function (i) {
				    html += "<strong>" + $(this).prev("label").text() + "</strong> " + $(this).val() + "<br />";
				}
			)

            $("textarea", $(form)).each(
				function (i) {
				    html += "<strong>" + $(this).prev("label").text() + "</strong> " + $(this).val() + "<br />";
				}
			)

            html += "<p>";

            $(":checked", $(form)).each(
				function (i) {
				    html += $(this).next("label").text() + "<br />";
				}
			)

            html += "</p>";

            $(form).attr({ method: "post" });

            var formData = "SubmitContact=True&html=" +  encodeURI(html);

            $(btn).attr("disabled", true);

            var wrapper = $(form).closest("div.cms-forms");

            $.post(url, formData, function (data) {
                wrapper.html('<p class="frm-success">' + data + '</p>');
             })
        }
    }
}
