var gCompanyInfo, gEditVacancy, gProlog, gCreatedBusiness, gSelectType, gBtnNextStep; 

$(function(){
		gCompanyInfo     = $("#company-info").hide();
		gEditVacancy     = $("#editVacancy"); 
		gProlog          = $("#prolog-add-vacancy");
		gCreatedBusiness = $("#created-business");
    gSelectType      = $("input[name=business-select-type]");
    gBtnNextStep     = $("#btn-next-step");

    showRegistrationStep();

    $("#add-vacancy-form input[type!=submit]").keypress(function(e){return (e.which != 13); });

    $(gSelectType).bind("click", 
            function()
            {
                showRegistrationStep();
            });

         
    var sel = new businessSelect(
        $("#businessesFilter"), $("#results"), $("#selectedBusinesses"), "business_id", new Array()
    );
    sel.maxSelected = 1;
    sel.newSearch();

    gBtnNextStep.bind("click", 
              function()
              {
                 var selectType = getSelectType();

                 switch(selectType)
                 {
                	   case('register-new'):
                    	   registerNewHandler();
                    	   break;
                	   case('select-created'):
                    	   selectCreatedHandler();
                    	   break;
                 }
              });

    function registerNewHandler()
    {
        if( !checkForm() )
        {
            return;
        }
        gBusinessId = -1;
        showRegistrationStep();

        var oEmpName  = $("input[name='employer_name']");
        var oEmpEmail = $("input[name='contact_email']");
        if( !oEmpName || !oEmpEmail )
        {
                return;
        }
        oEmpName.val($("input[name=name]").val());
        oEmpEmail.val($("input[name=email]").val());
        scroll(0, 0);        
    }

    function checkForm()
    {
        var oReqFields = $("input, textarea").filter(
                "[name=name], [name=keywords], [name=legalName], [name=description], #city, #index,\
                #street, [name=house], [name=phone1]"
                );

        var i;
        var isValid = true;
        for(i = 0; i < oReqFields.size() && isValid; i ++)
        {
            isValid = isNonEmpty(oReqFields.get(i));
        }

        if( !isValid )
        {
            showAlert('', 'Пожалуйста, заполните все обязательные поля формы.');
            return false;
        }

        if( !isInt(oReqFields.filter("#index").get(0)) )
        {
            showAlert('', 'Индекс должен быть числовым значением');
            return false;
        }
        if( !isInt(oReqFields.filter("[name=house]").get(0)) )
        {
            showAlert('', 'Номер дома должен быть числовым значением');
            return false;
        }
        if( !isInt(oReqFields.filter("[name=house]").get(0)) )
        {
            showAlert('', 'Номер дома должен быть числовым значением');
            return false;
        }

        var curInt = $("input[name=building]").get(0); 
        if( isNonEmpty(curInt) && !isInt(curInt) )
        {
            showAlert('', 'Корпус должен быть числовым значением');
            return false;
        }
        curInt = $("input[name=office]").get(0); 
        if( isNonEmpty(curInt) && !isInt(curInt) )
        {
            showAlert('', 'Офис должен быть числовым значением');
            return false;
        }

        var phones = $("input").filter("[name=phone1], [name=phone2], [name=fax]"); 
        
        for(i = 0; i < phones.size() && isValid; i ++)
        {
            isValid = !isNonEmpty(phones.get(i)) || isValidPhone(phones.get(i));
        }

        if(!isValid)
        {
            showAlert('', 'Номера телефонов и факс могут содержать только символы 0-9, "-" и "+"');
            return false;
        }

        var oEmail = $("input[name=email]").get(0);
        if(isNonEmpty(oEmail) && !isValidEmail(oEmail))
        {
            showAlert('', 'Некорректный email');
            return false;
        }
        return isValid;
    }
    
    function selectCreatedHandler()
    {
        if(sel.getAddedCount() > 0)
        {
            var items = sel.getSelectedItems();
            var itemData  = $(items[0]).data("item");
            gBusinessId   = itemData.id;
            $("input[name='business_id[]']").val(gBusinessId);
            showRegistrationStep();
            var oEmpName  = $("input[name='employer_name']");
            var oEmpEmail = $("input[name='contact_email']");
            if(!itemData || !oEmpName || !oEmpEmail)
            {
                    return;
            }
            oEmpName.val(itemData.name);
            oEmpEmail.val(itemData.email);
            scroll(0, 0);        
         }
         else
         {
            showAlert("", "Выберите предприятие, для которого создается вакансия");
         }
    }

});

    function showRegistrationStep()
	{
    	hideRegistrationStep();

	    if( gBusinessId )
	    {
	        gEditVacancy.show();
	    }
	    else
	    {
	         gProlog.show();
	         var selectType = getSelectType();
             switch( selectType )
             {
            	  case('select-created'):
            		    gCreatedBusiness.show();
            	        gBtnNextStep.show();
            	  	  break;
            	  case('register-new'):
            		    gCompanyInfo.show();
                        gBtnNextStep.show();
	            	  break;
             }
	    }
	}

    function hideRegistrationStep()
    {
    	gCompanyInfo.hide();
    	gEditVacancy.hide();
    	gProlog.hide();
    	gCreatedBusiness.hide();
    	gBtnNextStep.hide();
    }

    function getSelectType()
    {
    	var oBusinessSelectType = gSelectType.filter(":checked");
    	var result = 'none';

        if( oBusinessSelectType.size() > 0 )
        {
        	result = oBusinessSelectType[0].value;
        }

        return result;   
    }
