/***********************************************************************************
                                COMMON FUNCTIONS 
************************************************************************************/

function ShowMessage(control, message, isSuccess)
{
    control.update(message);
    if (isSuccess) 
    {
        control.style.color = 'Green';
    }
    else 
    {
        control.style.color = 'Red';
    }
    control.show();
}

function HideMessage(control)
{
    control.hide();
}

function SelectItem(dropdownlist, selectedValue)
{
    for(i=0; i<dropdownlist.options.length; i++)
    {
       if (dropdownlist.options[i].value == selectedValue)
       {
           dropdownlist.options[i].selected = true;
           break;
       }
    }
}

function PE_Redirect(actionId) 
{
    var url = location.href;
    url = _AddOrReplace(url, '&', 'act', actionId);
    location.href = url;
}

function _AddOrReplace(string, glue, key, value) 
{
    var key_ = key+'=';
    if (string.include(key_)) 
    {
        var first = string.indexOf(key_,0);
        var last = string.indexOf(glue,first);
        var param = string.substring(first, last > 0 ? last : string.length);
        string = string.replace(param, key_+ value);
    }
    else 
    {
        if (string.lastIndexOf(glue) == string.length-1) 
        {
            string = string.slice(0, string.length-1);
        }
        string  = string + glue + key_ + value;
    }
    return string;
}    

var imagePreviewWidth = 100;
var imagePreviewHeight = 100;

function initTooltip(width, height)
{
    if ($('pe_logo').value)
    {        
        if ($('logoPicturePreview'))
        {
            $('logoPicturePreview').remove();
        }
        
        var pictureUrl = $('pe_logo').value;    
        var logoPictureVar = new Image(imagePreviewWidth, imagePreviewHeight);
        logoPictureVar.id = 'logoPicturePreview';
        logoPictureVar.src = pictureUrl;
    
        new Tip(
            'logoPicturePreviewHook',
            logoPictureVar, 
            {
                className: 'peDefault',
                viewport: false
            }
        );
    }
}

function showLogoPreview(e)
{        
    initTooltip(imagePreviewWidth, imagePreviewHeight);
}

function CreateToolTipForEditField(ctrl, maxLength)
    {
        var msgBox = $(ctrl.id + '_msgBox');
        msgBox.innerHTML = ''; 
        ctrl.style.backgroundColor='#afa'; 
        ctrl.style.color='#000'; 
        if((ctrl.value.length) > maxLength*0.9) 
        { 
            ctrl.style.backgroundColor='#ffa'; 
            ctrl.style.color = '#000'; 
            msgBox.innerHTML = 'Advarsel. Du bruger ' + ((ctrl.value.length/maxLength)*100).toString().substr(0, 5) + '% af det maksimale antal.<br /><br />';
        } 
        if ((ctrl.value.length) > maxLength) 
        { 
            ctrl.style.backgroundColor='#faa'; 
            ctrl.style.color = '#f00'; 
            msgBox.innerHTML = 'Fejl. Du har indtastet mere end tilladt.<br /><br />'
        } 
        msgBox.innerHTML += 'Antal: ' + ctrl.value.length + '. Max. Antal: ' + maxLength;
    }

/***********************************************************************************
                            LOGIN FORM
***********************************************************************************/

function PartnerLogin()
{
    HideMessage($('LoginFailureText'));
    $('PE_LoginButton').disabled = true;
    RequestValidation('LoginForm', PartnerLogin_CB);
}
 
 function PartnerLogin_CB()
 {
    if (FieldValidators.isValid == true)
    {
        Forbrugerliv.Partner.Extranet.FrontEnd.Authenticate($('PE_UserName').value, $('PE_Password').value, Authenticate_CB);
    }
    else
    {
        $('PE_LoginButton').disabled = false;
    }
 }
 
 function Authenticate_CB(result)
 {
    $('PE_LoginButton').disabled = false;
    if (result)
    {
             if (result.error == null)
             {
                if (result.value == '0') //--login failure
                {
                    //Username or password is invalid
                    ShowMessage($('LoginFailureText'), 'Bruger navn eller password er forkert', false);
                }
                else  //--logged in successfully
                {
                    PE_Redirect('4');
                }
             }
             else 
             {
                alert(result.error.Message);
             }
     }
 }
 
 function GetNewPassword()
 {
    $('PE_GetNewPassword').disabled = true;
    HideMessage($('GetPasswordResultMessage'));
    RequestValidation('GetNewPassword', GetNewPasswordValidation_CB);
 }

function GetNewPasswordValidation_CB()
{
    if (FieldValidators.isValid == true)
    {
        Forbrugerliv.Partner.Extranet.FrontEnd.SetNewPassword($F('PE_Email'), GetNewPassword_CB);
    }
    else 
    {
        $('PE_GetNewPassword').disabled = false;
    }
}

function GetNewPassword_CB(result)
{
    $('PE_GetNewPassword').disabled = false;
    if (result) 
    {        
            if (result.error == null) 
            {
                if (result.value == '0')  
                {
                    //An error occurred
                    ShowMessage($('GetPasswordResultMessage'), 'Der opstod en fejl', false);
                }
                else 
                {
                    //New password was sent to your email address
                    ShowMessage($('GetPasswordResultMessage'), 'Et nyt password er sendt til din e-mail', true);
                }
            }
            else 
            {
                alert(result.error.Message);
            }
    }
}

/***********************************************************************************
                            REGISTRATION FORM
***********************************************************************************/

function SavePartner() 
{
    $('btnAddPartner').disabled = true;
    HideMessage($('RegistrationResultMessage'));
    RequestValidation('Registration', RegistrationValidation_CB);
}

function RegistrationValidation_CB()
{
    if (FieldValidators.isValid == true)
    {
        Forbrugerliv.Partner.Extranet.FrontEnd.CreatePartner($F('tbCompanyName'),$F('tbContactPerson'), $F('tbEmail'),
         $F('tbTelephone'), $F('tbHomepageURL'), $F('tbCVR'), $('tbEmarket').checked, $F('tbZip'), $F('tbAddress'), SavePartner_CB);
    }
    else
    {
        $('btnAddPartner').disabled = false;
    }       
}

function SavePartner_CB(result)
{
    $('btnAddPartner').disabled = false;
    if (result) 
    {        
        if (result.error == null) 
        {
            if (result.value == 0)  
            {
                //There are registration errors. Please try again
                ShowMessage($('RegistrationResultMessage'), 'Der er opstået en fejl, prøv venligst igen', false);
            }
            else if (result.value == -1)
            {
                //Partner with the same email already exist
                ShowMessage($('RegistrationResultMessage'), 'E-mail adresse findes allerede', false);
            }
            else 
            {
                //Registration completed successfully. We will notify you ...
                ShowMessage($('RegistrationResultMessage'), 'Din registrering som ny partner er nu sendt til Forbrugerliv.dk du vil blive kontaktet hurtigst muligt.', true);
                $('PartnerRegistrationTable').hide();
            }
        }
        else 
        {
            alert(result.error.Message);
        }
    }   
}


/***********************************************************************************
                            PARTNER PROFILE
***********************************************************************************/
var SendUpdate = false;

function InitializeProfileValidators()
{
    FieldValidators.validators = new Array();
    //FieldValidators.push(new FieldValidator('pe_shopurl','notempty','country=da-DK;lang=da-DK;','ValidatorShopURL','Profile'));
    //FieldValidators.push(new FieldValidator('pe_shopurl','url','country=da-DK;lang=da-DK;','ValidatorShopURL','Profile'));
    FieldValidators.push(new FieldValidator('pe_shopDescription','notempty','country=da-DK;lang=da-DK;','ValidatorShopDescr','Profile'));
    FieldValidators.push(new FieldValidator('pe_shopDescription','length_max','country=da-DK;lang=da-DK;max=8000','ValidatorShopDescr','Profile'));
    FieldValidators.push(new FieldValidator('pe_discountDescription','length_max','country=da-DK;lang=da-DK;max=8000','ValidatorDiscountDescr','Profile'));
}

function UpdateProfile(sendUpdate)
{
    SendUpdate = sendUpdate;
    $('btnUpdateProfile').disabled = true;
    if (SendUpdate)
    {
        $('btnApproval').disabled = true;
    }
    HideMessage($('ProfileUpdateResultMessage'));
    InitializeProfileValidators();
    RequestValidation('Profile', ProfileValidation_CB);
}

function ProfileValidation_CB()
{
    if (FieldValidators.isValid == true)
    {
        Forbrugerliv.Partner.Extranet.FrontEnd.UpdateProfile($F('h_partnerId'), $F('pe_logo'), $F('pe_shopDescription'), $F('pe_discountDescription'), UpdateProfile_CB);
    }
    else
    {
        $('btnUpdateProfile').disabled = false;
        $('btnApproval').disabled = false;
    }
}

function UpdateProfile_CB(result)
{
    $('btnUpdateProfile').disabled = false;
    if (result) 
    {        
        if (result.error == null) 
        {
            if (result.value == '0')  
            {
                //An error(s) occured. Profile was not updated.
                ShowMessage($('ProfileUpdateResultMessage'), 'Der opstod en fejl, profilen blev ikke opdateret', false);
            }
            else 
            {
                //Profile was updated successfully.
                ShowMessage($('ProfileUpdateResultMessage'), 'Profilen blev opdateret', true);
                if (SendUpdate) 
                {
                    Approval(result.value);
                }
            }
        }
        else 
        {
            alert(result.error.Message);
        }
    }
}

function Approval(partnerId)
{
    $('btnApproval').disabled = true;
    HideMessage($('ProfileUpdateResultMessage'));
    Forbrugerliv.Partner.Extranet.FrontEnd.ResetApproval(partnerId, Approval_CB);
}

function Approval_CB(response)
{
    SendUpdate = false;
    $('btnApproval').disabled = false;
    if (response.error != null) 
    {
        alert(response.error.Message);
    }
    else 
    {
        if (response.value == '0')
        {
            //An error(s) occured. Update was not sent.
            ShowMessage($('ProfileUpdateResultMessage'), 'Der opstod en fejl, opdateringen blev ikke sendt', false);
        }
        else 
        {
            //Update was sent successfuly.
            ShowMessage($('ProfileUpdateResultMessage'), 'Opdateringen blev sendt', true);
        }
    }
}

function logoUploadReturn(url)
{
    $('pe_logo').value = url;
    setTimeout('initTooltip(imagePreviewWidth, imagePreviewHeight);', 1000);
}

function showHidePasswordBox(mode)
{
    if (mode == 0)
    {
        $('shpb_span').style.display = 'none';
        $('passwordBox').style.display = 'block';
        HideMessage($('PasswordResultMessage'));
    }
    else 
    {
        $('shpb_span').style.display = 'block';
        $('passwordBox').style.display = 'none';
        HideMessage($('PasswordResultMessage'));
    }
}

function SetNewPassword()
{
    HideMessage($('PasswordResultMessage'));
    var pass1 = $F('pe_logonPassword');
    var pass2 = $F('pe_logonPassword_2');
    if (pass1 == '' || pass2 == '')
    {
        //Please fill both password fields
        ShowMessage($('PasswordResultMessage'), 'Udfyld venligst begge e-mail felter', false);
    }
    else if (pass1 != pass2)
    {
        //Passwords don\'t match
        ShowMessage($('PasswordResultMessage'), 'Password matcher ikke', false);
    }
    else 
    {
        Forbrugerliv.Partner.Extranet.FrontEnd.UpdatePassword($F('h_partnerId'), pass1, true, SetNewPassword_CB);
    }
}

function SetNewPassword_CB(response)
{
    if (response.error != null)
    {
        alert(response.error.Message);
    }
    else 
    {
        if (response.value == 0)
        {
            //An error(s) occured. Password was not updated.
            ShowMessage($('PasswordResultMessage'), 'Der opstod en fejl, passwordet blev ikke opdateret', false);
        }
        else 
        {
            //Password updated successfully
            ShowMessage($('PasswordResultMessage'), 'Passwordet blev opdateret', true);
        }
    }
}

function ChangeDiscountDescr(mode)
{
    var pretext = $F('discountDescription_pretext');
    var dd = $('pe_discountDescription');
    if (mode == 0)
    {
        if (dd.value == pretext)
        {
            dd.value = '';
        }
    }
    else 
    {
        if (dd.value == '')
        {
            dd.value = pretext;
        }
    }
}

/***********************************************************************************
                            PARTNER'S ADDRESS
***********************************************************************************/

var loadingHtmlText = "<div style='margin: 4px 0 0 4px;'>henter data...</div>";
var detailsLocked = false;
var currentAddressId;

function addressGet(partnerId)
{
    detailsLocked = false;
    currentAddressId = 0;
    $('addressPanel').innerHTML = loadingHtmlText;
    $('addressAjax').style.display = 'inline';
    $('addressDetailsPanel').style.display = 'none';
    Forbrugerliv.Partner.Extranet.FrontEnd.ProcessAddressOverview(partnerId, addressGet_CB);
}

function addressGet_CB(response)
{
    if(response.error != null)
    {
        alert(response.error.Message);
    }
    else
    {
        $('addressPanel').innerHTML = response.value;
    }
    $('addressAjax').style.display = 'none';
}

function addressShow(partnerId, partnerAddressId)
{
    //partnerId - not uses (only for compatibility with PA)
    if(detailsLocked)
    {
        //Please close current detail box before opening a new
        alert('Luk venligst alle igangværende bokse før du åbner en ny');
    }
    else
    {
        detailsLocked = true;
        currentAddressId = partnerAddressId;
        $('addressAjax').style.display = 'inline';
        $('addressDetailsPanel').style.display = 'block';
        Forbrugerliv.Partner.Extranet.FrontEnd.ProcessAddressDetails(partnerAddressId, addressShow_CB);
    }
}

function addressShow_CB(response)
{
    if(response.error != null)
    {
        alert(response.error.Message);
    }
    else
    {
        $('addressDetailsPanel').innerHTML = response.value;
        InitializeAddressValidators(); //validators init
        GetCity($F('pe_countries'), $F('pe_addressZip')); //show city
        SelectItem($('pe_AddressType'), $F('pe_AddressTypeId'));
        SelectItem($('pe_countries'), $F('pe_addressCountry'));

        var isShopPhysical = $F('h_shopType') == 'P' || $F('h_shopType') == 'B';
        
        //$('OpeningHoursTD').style.display = isShopPhysical ? 'table-cell' : 'none';
        $('OpeningHoursTD').style.visibility = isShopPhysical ? 'visible' : 'hidden';

        if (isShopPhysical)
        {
            var openHours = $F('pe_addressOpeningHours');
            if (openHours.length == 70) 
            {
                SelectItem($('mn_open'), openHours.substr(0,5));
                SelectItem($('mn_close'), openHours.substr(5,5));
                SelectItem($('tu_open'), openHours.substr(10,5));
                SelectItem($('tu_close'), openHours.substr(15,5));
                SelectItem($('wd_open'), openHours.substr(20,5));
                SelectItem($('wd_close'), openHours.substr(25,5));
                SelectItem($('th_open'), openHours.substr(30,5));
                SelectItem($('th_close'), openHours.substr(35,5));
                SelectItem($('fr_open'), openHours.substr(40,5));
                SelectItem($('fr_close'), openHours.substr(45,5));
                SelectItem($('sa_open'), openHours.substr(50,5));
                SelectItem($('sa_close'), openHours.substr(55,5));
                SelectItem($('su_open'), openHours.substr(60,5));
                SelectItem($('su_close'), openHours.substr(65,5));
            }
        }
        
        if ($F('pe_AddressTypeId') == '1')//if address is invoice
        {
            SetAddressReadOnly();
        }
    }
    $('addressAjax').style.display = 'none';
}

function SetAddressReadOnly()
{
    $('mn_open').disabled = true;
    $('mn_close').disabled = true;
    $('tu_open').disabled = true;
    $('tu_close').disabled = true;
    $('wd_open').disabled = true;
    $('wd_close').disabled = true;
    $('th_open').disabled = true;
    $('th_close').disabled = true;
    $('fr_open').disabled = true;
    $('fr_close').disabled = true;
    $('sa_open').disabled = true;
    $('sa_close').disabled = true;
    $('su_open').disabled = true;
    $('su_close').disabled = true;
    $('pe_addressName').disabled = true;
    $('pe_addressTitle').disabled = true;
    $('pe_addressAttention').disabled = true;
    $('pe_address').disabled = true;
    $('pe_address2').disabled = true;
    $('pe_addressZip').disabled = true;
    $('pe_countries').disabled = true;
    $('pe_AddressHomepage').disabled = true;
    $('pe_AddressEmail').disabled = true;
    $('pe_AddressTelephone').disabled = true;
    $('pe_AddressTelephone2').disabled = true;
    $('pe_addressRemark').disabled = true;
    $('pe_AddressType').disabled = true;
    $('btn_addressSave').disabled = true;
}

function addressNew(partnerId)
{
    Forbrugerliv.Partner.Extranet.FrontEnd.CreateAddress(partnerId, addressNew_CB);
}

function addressNew_CB(response)
{
    if (response.error != null || response.value == '0')
    {
                                                                            //An error(s) occured. Address was not created.
        alert(response.error ? response.error.Message : 'Der opstod en fejl, Adressen blev ikke oprettet');
    }
    else 
    {
        addressShow(0, response.value);
    }
}

function addressSave()
{
    if ($F('pe_AddressType') == '1')
    {
        alert('Invoice address is readonly. Please chose another address type.');
    }
    else 
    {
        HideMessage($('AddressResultMessage'));
        RequestValidation('Address', AddressValidation_CB);
    }
}

function AddressValidation_CB()
{
    if (FieldValidators.isValid == true)
    {
        var addressId = $F('pe_AddressId');
        var partnerId = $F('h_partnerId');
        
        var openingHours = $F('pe_addressOpeningHours');
        if ($F('h_shopType') == 'P' || $F('h_shopType') == 'B')
        {
            openingHours = $F('mn_open') + $F('mn_close') + $F('tu_open') + $F('tu_close')
            + $F('wd_open') + $F('wd_close') + $F('th_open') + $F('th_close') + $F('fr_open') 
            + $F('fr_close') + $F('sa_open') + $F('sa_close') + $F('su_open') + $F('su_close');
        }
        
        Forbrugerliv.Partner.Extranet.FrontEnd.UpdateAddress(addressId, partnerId, $F('pe_addressName'), 
            $F('pe_addressTitle'), $F('pe_addressAttention'), $F('pe_address'), $F('pe_address2'), 
            $F('pe_addressZip'), $F('pe_countries'), openingHours, $F('pe_AddressHomepage'), $F('pe_AddressEmail'),
            $F('pe_AddressTelephone'), $F('pe_AddressTelephone2'), $F('pe_addressRemark'), $F('pe_AddressType'), addressSave_CB); 
    }
}

function addressSave_CB(response)
{
    if(response.error != null)
    {
        alert(response.error.Message);
    }
    else
    {
        if (response.value == '0')
        {
            //An error(s) occured. Address was not updated.
            ShowMessage($('AddressResultMessage'), 'Der opstod en fejl, Adressen blev ikke opdateret', false);
        }
        else 
        {
            addressGet(response.value);
        }

    }
}

function addressCopy(partnerAddressId)
{
    Forbrugerliv.Partner.Extranet.FrontEnd.CopyAddress(partnerAddressId, addressCopy_CB);
}

function addressCopy_CB(response)
{
    if (response.error != null || response.value == '0')
    {
                              //An error(s) occured. Address was not copied.
        alert(response.error ? response.error.Message : 'Der opstod en fejl, adressen blev ikke kopieret');
    }
    else 
    {
        addressShow(0, response.value);
    }
}

function addressDelete(partnerId, partnerAddressId, addressTypeId)
{
    if (addressTypeId == 1)
    {
        alert('You can\'t delete invoice address');
    }
    else 
    {
        Forbrugerliv.Web.CustomModules.FlivPartner.Detail.addressDelete(partnerId, partnerAddressId, addressDelete_CB);
    }
}

function addressDelete_CB(response)
{
    if(response.error != null || response.value == '0')
    {
        alert(response.error.Message);
    }
    else
    {
        addressGet(response.value);
    }
}


function GetCity(country, zip)
{
    Forbrugerliv.Support.FrontEnd.SupportGetCityFromPostalCode(country, zip, GetCity_CB);
}

function GetCity_CB(response)
{
    if (response.error == null) 
    {
        $('pe_addressCity').innerHTML = response.value;
    }
    else 
    {
        alert(response.error.Message);
    }
}

function InitializeAddressValidators()
{
    FieldValidators.validators = new Array();

    FieldValidators.push(new FieldValidator('pe_addressName','notempty','country=da-DK;lang=da-DK;','ValidatorAddressName','Address'));
    FieldValidators.push(new FieldValidator('pe_addressName','length_max','country=da-DK;lang=da-DK;max=50;','ValidatorAddressName','Address'));
    FieldValidators.push(new FieldValidator('pe_addressTitle','length_max','country=da-DK;lang=da-DK;max=50;','ValidatorAddressTitle','Address'));
    //FieldValidators.push(new FieldValidator('pe_addressAttention','notempty','country=da-DK;lang=da-DK;','ValidatorAddressAttention','Address'));
    FieldValidators.push(new FieldValidator('pe_addressAttention','length_max','country=da-DK;lang=da-DK;max=50;','ValidatorAddressAttention','Address'));
    FieldValidators.push(new FieldValidator('pe_address','notempty','country=da-DK;lang=da-DK;','ValidatorAddress','Address'));
    FieldValidators.push(new FieldValidator('pe_address','length_max','country=da-DK;lang=da-DK;max=8000','ValidatorAddress','Address'));
    FieldValidators.push(new FieldValidator('pe_address2','length_max','country=da-DK;lang=da-DK;max=8000','ValidatorAddress2','Address'));
    FieldValidators.push(new FieldValidator('pe_addressZip','notempty','country=da-DK;lang=da-DK;','ValidatorAddressZIP','Address'));
    FieldValidators.push(new FieldValidator('pe_addressZip','zipCode','country=da-DK;lang=da-DK;','ValidatorAddressZIP','Address'));
    //FieldValidators.push(new FieldValidator('pe_AddressTelephone','notempty','country=da-DK;lang=da-DK;','ValidatorAddressTelephone','Address'));
    FieldValidators.push(new FieldValidator('pe_AddressTelephone','length_max','country=da-DK;lang=da-DK;max=20;','ValidatorAddressTelephone','Address'));
    FieldValidators.push(new FieldValidator('pe_AddressTelephone','phone','country=da-DK;lang=da-DK;','ValidatorAddressTelephone','Address'));
    FieldValidators.push(new FieldValidator('pe_AddressTelephone2','length_max','country=da-DK;lang=da-DK;max=20;','ValidatorAddressTelephone2','Address'));
    FieldValidators.push(new FieldValidator('pe_AddressTelephone2','phone','country=da-DK;lang=da-DK;','ValidatorAddressTelephone2','Address'));
    //FieldValidators.push(new FieldValidator('pe_AddressEmail','notempty','country=da-DK;lang=da-DK;','ValidatorAddressEmail_','Address'));
    FieldValidators.push(new FieldValidator('pe_AddressEmail','email','country=da-DK;lang=da-DK;','ValidatorAddressEmail_','Address'));
    FieldValidators.push(new FieldValidator('pe_AddressEmail','length_max','country=da-DK;lang=da-DK;max=100;','ValidatorAddressEmail_','Address'));
    FieldValidators.push(new FieldValidator('pe_AddressHomepage','length_max','country=da-DK;lang=da-DK;max=100;','ValidatorAddressHomepage','Address'));
    FieldValidators.push(new FieldValidator('pe_AddressHomepage','url','country=da-DK;lang=da-DK;','ValidatorAddressHomepage','Address'));
}    

//Set countryId from dropdownlist to params of the ZipValidator
function SetZipValidatorParams() 
{
   var validator = FieldValidators.getElementByFieldName('pe_addressZip');
   if (validator)
   {
        validator.params = _AddOrReplace(validator.params, ';', 'countryId', $F('pe_countries')); 
   }
}

/***********************************************************************************
                            DISCOUNT CATEGORIES
***********************************************************************************/
var selectedCats;
function ChangeCategoryList(cbx)
{
    cbx.parentNode.style.display = "block";
    cbx.parentNode.style.backgroundColor = (cbx.checked ? "#AAFFAA" : "#FFAAAA");
    
    var doc = document.getElementsByTagName('input');
    for (var i = 0; i < doc.length; i++)
    {
        var cbx_ = doc[i];
        if(cbx_.type == 'checkbox')
        {
            if(cbx_.value == cbx.value)
            {
                cbx_.parentNode.style.display = "block";
                cbx_.parentNode.style.backgroundColor = (cbx.checked ? "#AAFFAA" : "#FFAAAA");
                cbx_.checked = cbx.checked;
            }
        }
    }
    
    $('btnSendCategoriesRequest').style.visibility = 'visible';
}

function SendCategoriesRequest(pid)
{
    selectedCats = new Ajax.Web.NameValueCollection([]);
    HideMessage($('SendRequestResultMessage'));
    var inputs = document.getElementsByTagName('input');
    for(var i=0; i<inputs.length; i++)
    {
        var elem = inputs[i];
        if(elem.id.indexOf('dcat_')==0 & elem.checked)
        {
            selectedCats.add(elem.value, '');
        }
    }
    Forbrugerliv.Partner.Extranet.FrontEnd.MakeCategoriesRequest(selectedCats, pid, SendCategoriesRequest_CB);
}

function SendCategoriesRequest_CB(response)
{
    if(response.error != null)
    {
        alert(response.error.Message);
    }
    else 
    {
        if (response.value == '0')
        {
            //Request was not sent
            ShowMessage($('SendRequestResultMessage'), 'Forespørgsel blev ikke sendt', false);
        }
        else 
        {
            //Request was sent successfully
            ShowMessage($('SendRequestResultMessage'), 'Forespørgsel blev sendt', true);
            $('btnSendCategoriesRequest').style.visibility = 'hidden';
        }
        
    }
}

function HighLitePartnerCategires()
{
    var inputs = document.getElementsByTagName('input');
    for(var i=0; i<inputs.length; i++)
    {
        var elem = inputs[i];
        if(elem.id.indexOf('dcat_')==0 & elem.checked)
        {
            elem.parentNode.style.display = "block";
            elem.parentNode.style.backgroundColor = "#FFFFAA";
        }
    }
}

/***********************************************************************************
                            PARTNER'S OFFERS
***********************************************************************************/

var loadingHtmlText = "<div style='margin: 4px 0 0 4px;'>henter data...</div>";
var detailsLocked = false;
var currentOfferId;
var SaveAndStay = false;
var IsOfferNew = false;

function offersGet(partnerId)
{
    detailsLocked = false;
    IsOfferNew = false;
    currentOfferId = 0;
    $('offersPanel').innerHTML = loadingHtmlText;
    $('offersAjax').style.display = 'inline';
    $('offerDetailsPanel').style.display = 'none';
    Forbrugerliv.Partner.Extranet.FrontEnd.ProcessOffersOverview(partnerId, offersGet_CB);
}

function offersGet_CB(response)
{
    if(response.error != null)
    {
        alert(response.error.Message);
    }
    else
    {
        $('offersPanel').innerHTML = response.value;
    }
    $('offersAjax').style.display = 'none';
}

function showOffer(offerId)
{
    if(detailsLocked)
    {
        //Please close current detail box before opening a new
        alert('Luk venligst alle igangværende bokse før du åbner en ny');
    }
    else
    {
        detailsLocked = true;
        currentOfferId = offerId;
        $('offersAjax').style.display = 'inline';
        Forbrugerliv.Partner.Extranet.FrontEnd.ProcessOfferDetails(offerId, showOffer_CB);
    }
}

function showOffer_CB(response)
{
    if(response.error != null)
    {
        alert(response.error.Message);
    }
    else
    {
        $('offerDetailsPanel').innerHTML = response.value;
        $('offerDetailsPanel').style.display = 'block';
        $('SortOrderTD').style.visibility = IsOfferNew ? 'hidden' : 'visible';
        InitCalendars();
        InitializeOfferValidators(); //validators init
	  
	  var discountDescrTip = new Tip(
          $("tooltipLogo"),    // the id of your element
          $("tooltipLogoContent").innerHTML,                 // a string or an element
          {
            closeButton: false,    // or true
            className : 'peTitle',
            effect: false,         // false, 'appear' or 'blind'
            fixed: true,          // follow the mouse if false
            hideAfter: false,      // hides after seconds of inactivity,
                                   // not hovering the element or the tooltip
            hideOn: 'mouseout',     // any other event, false or:
                                   // { element: 'element|target|tip|closeButton|.close',
                                   //   event: 'click|mouseover|mousemove' }
            hook: false,
            offset: {x:-200, y:30},
            showOn: 'mousemove',
            title: false,
            viewport: true         // keep within viewport, false when fixed or hooked
          }
	   );

	  var discountDescrTip1 = new Tip(
          $("tooltipProductUrl"),    // the id of your element
          $("tooltipProductUrlContent").innerHTML,                 // a string or an element
          {
            closeButton: false,    // or true
            className : 'peTitle',
            effect: false,         // false, 'appear' or 'blind'
            fixed: true,          // follow the mouse if false
            hideAfter: false,      // hides after seconds of inactivity,
                                   // not hovering the element or the tooltip
            hideOn: 'mouseout',     // any other event, false or:
                                   // { element: 'element|target|tip|closeButton|.close',
                                   //   event: 'click|mouseover|mousemove' }
            hook: false,
            offset: {x:-200, y:30},
            showOn: 'mousemove',
            title: false,
            viewport: true         // keep within viewport, false when fixed or hooked
          }
	);
        
        imagePreviewWidth = 100;
        imagePreviewHeight = 100;
        if ($('logoPicturePreviewHook'))
        {            
            $('logoPicturePreviewHook').observe("mouseover", showLogoPreview);
        }
    }
    $('offersAjax').style.display = 'none';
}

function offerNew(partnerId)
{
    if(detailsLocked)
    {
        //Please close current detail box before creating a new
        alert('Luk venligst alle igangværende bokse før du åbner en ny');
    }
    else 
    {
        Forbrugerliv.Partner.Extranet.FrontEnd.CreateOffer(partnerId, offerNew_CB);
    }
    
}

function offerNew_CB(response)
{
    if (response.error != null || response.value == '0')
    {
                                                                            //An error(s) occured. Offer was not created.
        alert(response.error ? response.error.Message : 'Der opstod en fejl, tilbud blev ikke oprettet');
    }
    else 
    {
        IsOfferNew = true;
        showOffer(response.value);
    }
}

function InitializeOfferValidators()
{
    FieldValidators.validators = new Array();
    FieldValidators.push(new FieldValidator('pe_offerTitle','notempty','country=da-DK;lang=da-DK;','ValidatorTitle','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerTitle','length_both','country=da-DK;lang=da-DK;min=2;max=50;','ValidatorTitle','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerDescription','notempty','country=da-DK;lang=da-DK;','ValidatorDescription','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerDescription','length_both','country=da-DK;lang=da-DK;min=5;max=300;','ValidatorDescription','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerProductUrl','notempty','country=da-DK;lang=da-DK;','ValidatorProductUrl','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerProductUrl','length_max','country=da-DK;lang=da-DK;max=200;','ValidatorProductUrl','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerProductUrl','url','country=da-DK;lang=da-DK;','ValidatorProductUrl','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerDiscountPrice','notempty','country=da-DK;lang=da-DK;','ValidatorPrice','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerDiscountPrice','money2','country=da-DK;lang=da-DK;','ValidatorPrice','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerDiscountPrice','greater_than','country=da-DK;lang=da-DK;min=0','ValidatorPrice','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerActiveFrom','notempty','country=da-DK;lang=da-DK;','ValidatorActiveFrom','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerActiveFrom','date','country=da-DK;lang=da-DK;','ValidatorActiveFrom','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerActiveTo','notempty','country=da-DK;lang=da-DK;','ValidatorActiveTo','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerActiveTo','date','country=da-DK;lang=da-DK;','ValidatorActiveTo','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerSortOrder','notempty','country=da-DK;lang=da-DK;','ValidatorSortOrder','Offer'));
    FieldValidators.push(new FieldValidator('pe_offerSortOrder','number','country=da-DK;lang=da-DK;','ValidatorSortOrder','Offer'));
}    

function offerSave(offerId, partnerId, saveAndStay)
{
        SaveAndStay = saveAndStay;
        HideMessage($('OfferResultMessage'));
        RequestValidation('Offer', OfferValidation_CB);
}

function OfferValidation_CB()
{
    if (FieldValidators.isValid == true)
    {
        Forbrugerliv.Partner.Extranet.FrontEnd.UpdateOffer($F('pe_OfferId'), $F('hid_pe_partnerId'), $F('hid_levelId'),  $F('pe_logo'),
            $F('pe_offerTitle'), $F('pe_offerProductUrl'), $F('pe_offerDescription'),  
            $F('pe_offerDiscountPrice'), $F('pe_offerSortOrder'), $F('pe_offerActiveFrom'), 
            $F('pe_offerActiveTo'), $('pe_offerActive').checked, $F('hid_pictureUrl'), offerSave_CB); 
    }
}

function offerSave_CB(response)
{
    if(response.error != null)
    {
        alert(response.error.Message);
    }
    else
    {
        if (response.value == '0')
        {
            //An error(s) occured. Offer was not updated.
            ShowMessage($('OfferResultMessage'), 'Der opstod en fejl, tilbud blev ikke opdateret', false);
        }
        else if (response.value == '-1')
        {
            
            //You already have n active offers in the same time interval. Please choose another interval (Active From & Active To)
            ShowMessage($('OfferResultMessage'), 'Du har allerede ' + $F('hid_mnac') + ' aktive tilbud i det samme interval. Vælg venligst et andet interval.', false);
        }
        else 
        {
            if (!SaveAndStay) 
            {
                offersGet(response.value);
            }        
            else 
            {
                //Offer was updated successfully
                ShowMessage($('OfferResultMessage'), 'Tilbud blev opdateret', true);
            }
        }

    }
}

function changeOfferOrder(offerId, direction)
{
    if (direction == 'up')
    {
        Forbrugerliv.Partner.Extranet.FrontEnd.MoveOfferUp(offerId, changeOfferOrder_CB);
    }
    else if (direction == 'down') 
    {
        Forbrugerliv.Partner.Extranet.FrontEnd.MoveOfferDown(offerId, changeOfferOrder_CB);
    }
}

function changeOfferOrder_CB(response)
{
    if(response.error != null)
    {
        alert(response.error.Message);
    }
    else
    {
        if (response.value == '0')
        {
            //An error(s) occured. Sort order was not changed
            alert('Der opstod en fejl, sortering blev ikke ændret');
        }
        else 
        {
            offersGet(response.value);
        }
   }
}

function deleteOffer(offerId, addressId)
{
   Forbrugerliv.Partner.Extranet.FrontEnd.DeleteOffer(offerId, addressId, deleteOffer_CB);
}

function deleteOffer_CB(response)
{
    if(response.error != null || response.value == '0')
    {
        alert(response.error.Message);
    }
    else
    {
        offersGet(response.value);
    }
}

function InitCalendars()
{
    Calendar.setup(
        {
            inputField    : "pe_offerActiveFrom",         // ID of the input field
            ifFormat      : "%Y-%m-%d",    // the date format
            button        : "btn_offerActiveFrom",       // ID of the button
            showsTime     : false,
            range         : [2000, 2999]
        }
    );
    
    Calendar.setup(
        {
            inputField    : "pe_offerActiveTo",         // ID of the input field
            ifFormat      : "%Y-%m-%d",    // the date format
            button        : "btn_offerActiveTo",       // ID of the button
            showsTime     : false,
            range         : [2000, 2999]
        }
    );
}

function  RedirectToPartnerRegistrationForm()
{
    location.href = 'Default.aspx?ID=385&act=3';
}
