
WebsiteEditor = function()
{
    this.form = $("websiteEditForm");  
        
    this.counter = new TextLengthCounter();

    this.counter.appendToField(this.form.description,
                               setting.siteDescriptionMaxLength,
                               'siteDescrCharsLeftField',
                               setting.minSiteDescriptionLength);

    var keys = new KeywordSelector();
    keys.form = this.form;
    keys.duplicateMsg = setting.lang['You have already added this keyword. Select another one.'];
    keys.maxCount = setting.maxKeywordsCountPerSite;  
    keys.init();

    this.keywordSelector = keys;

    this.form.addEvent("submit", this.onSubmit.handler(this));

    if(setting.siteId)
    {
        ajax.addParam("siteId", setting.siteId)
        .set("onSuccess", this.onSuccessEditData.handler(this))                                  
        .post(setting.websiteDataUrl);
    }
    else
    {
        this.form.show();
    }

    if(setting.metaDataUrl)
    {
        $("metaTagButton").addEvent("click", this.onMetaTagButtonClick.handler(this));
    }
    
    if(this.form.countryCode)
    {
        $(this.form.countryCode).addEvent("change", this.onCountryCodeChange.handler(this));
    }
    
    if(setting.backLinkCodeDataUrl && this.form.backLinkCode2)
    {
        $(this.form.categoryId).addEvent("change", this.onCategoryIdChange.handler(this));
        this.onCategoryIdChange();
    }

};

WebsiteEditor.prototype =
{ 
    form: null,
    counter: null,
    keywordSelector: null,
    validator: null,

    onMetaDataSuccess: function(ajaxObj)
    { 
        var metaData = ajaxObj.parseJSON(); 
  
        this.form.description.value = metaData.description;
        this.form.siteTitle.value = metaData.title;
        this.counter.updateStringLength();
    },
    
    onBackLinkCodeDataSuccess: function(ajaxObj)
    {
       var resp = ajaxObj.parseJSON();
       this.form.backLinkCode2.value =  resp.categoryBackLinkCode;
    },
    
    onCategoryIdChange: function()
    {
        var categoryId = this.form.categoryId.value;
        
        if(categoryId)
        {
            var ajax = new AjaxClient();
            ajax.set("onSuccess", this.onBackLinkCodeDataSuccess.handler(this));
            ajax.addParam("categoryId", categoryId);
            ajax.post(setting.backLinkCodeDataUrl);
        }
        else
        {
            this.form.backLinkCode2.value = "";            
        }
    },
    
    onCountryCodeChange: function()
    {
        var countryCode = this.form.countryCode.value;
        var countryFlagImage = $("countryFlagImage");
        
        if(countryCode)
        {
            countryFlagImage.show();
            countryFlagImage.src = setting.siteRootUrl + "/templates/arfooo/images/flags/" + countryCode + ".png";
        }
        else
        {
            countryFlagImage.hide();
        }
           
    },
    
    onMetaDataLoading: function()
    {
        this.form.siteTitle.value = setting.lang['loading...'];
    },
    
    onMetaTagButtonClick: function()
    {    
        ajax.set("onSuccess", this.onMetaDataSuccess.handler(this));
        ajax.set("onLoading", this.onMetaDataLoading.handler(this));
        ajax.addParam("url", this.form.url.value);
        ajax.post(setting.metaDataUrl);
    },
    
    onSuccessEditData: function(ajaxObj)
    {
        var site = ajaxObj.parseJSON();
        ajax.fillForm(this.form, site);
        this.counter.updateStringLength();
        this.keywordSelector.loadKeywords(site.keywordIds);
        
        if(this.form.countryCode)
        {
            this.onCountryCodeChange();
        }
        
        if(this.form.backLinkCode2)
        {
            this.onCategoryIdChange();
        }
        
        this.form.show();
    },
    
    onSubmit: function(event)
    {
        if(!this.validator || this.validator.validate())
        {
            if(!setting.websiteFormNormalPost)
            {
                ajax.set("onSuccess", this.onSubmitSuccess.handler(this));
                ajax.set("onLoading", this.onLoading.handler(this));
                ajax.sendForm(this.form);
                
                if(event)
                {
                    event.preventDefault();
                }
            }
        }
        else
        {
            if(event)
            {
                event.preventDefault();
            }
        }
        
    },
    
    onLoading: function(ajaxObj)
    {
        $('siteLoader').show();
    },
    
    onSubmitSuccess: function(ajaxObj)
    {
        $('siteLoader').hide();
        var response = ajaxObj.parseJSON(); 

        switch(response.status)
        {
            case "ok":
                alert(response.message);
                if(response.refresh)
                {
                    window.location.reload(false);
                }
                
                if(response.redirectUrl)
                {
                    window.location = response.redirectUrl;
                }
                 
                break;
            
            case "sendFile":
                this.form.submit();
                break;
            
            case "error":
                alert(response.message);
                break;
                
            case "confirm":
            
                if(confirm(response.message))
                {
                    this.form[response.what].value = "1";
                    this.onSubmit(false);
                }
                
                break;
        } 
    }
      
}
  