﻿var AccountsInfos = new Object(); // STUB спорное решение, угу
var alreadSavedImageId = null; // STUB КОЛХОЗ!!!

var _dialogStopAndThink; // STUB блаблабла
function dialogStopAndThink()
{
    var jqDialog = $("<div class=\"dialogStopAndThink\"><br />Компьютер задумался, им с Интернетом необходимо кое-что обсудить. <br /><br />Пожалуйста, подождите, это не должно занять много времени :)</div>");
    _dialogStopAndThink = jqDialog;
    jqDialog.dialog({
                                        modal: true,
                                        width:630,
                                        height:200,
                                        position:'center',
                                        title:'Компьютер думает',
                                        buttons:
                                                {
                                                "-- О чем они думают?": function (event, ui)
                                                {
                                                    alert("Компьютер с Интернетом обмениваются специальными Информационными Пакетами. Они так общаются. Это похоже на то, как общаются между собой люди. Но нам не обязательно слушать, о чем именно переговариваются Компьютер с его давним другом Интернетом, поэтому мы кагбэ заходим за ширмочку и не мешаем им разговаривать :)");
                                                }
                                            }
                                    });
    dialogMarkLoading('.dialogStopAndThink');
}
function dialogStopAndThinkClose()
{
    if (_dialogStopAndThink!=null)
    {
        _dialogStopAndThink.dialog("close");
    }
}

function asd()
{
    var saveRequest = objGetXEPRequest();
    var image = objGetImageInst();
    var sXML = image.GetCurrentImage();
    
    saveRequest.AddPart(XEPCreateImage,
    {
        "name": getCurrentImageName(),
        "xml": sXML,
        "overwrite": "true"
    });
    
    saveRequest.Perform(function (saveResponse)
    {
        // WIN
        if (saveResponse.Status == soapStatusOK)
        {
            dialogUnMarkLoading('.dialogAC');
            var theOnlyPart = saveResponse.Parts[0];
            if (theOnlyPart != null)
            {
                if (theOnlyPart.Status == soapStatusOK)
                {
                    var theOnlyResult = theOnlyPart.Results[0];
                    var newImageId = theOnlyResult["imageId"];
                    if (newImageId!=null)
                    {
                        dialogMarkLoading('.dialogAC');
                        runRequest.UpdateAllPartsParam({"imageId": newImageId});
                        runRequest.Perform(function(runResponse)
                        {
                            if (runResponse.Status == soapStatusOK)
                            {
                                var failDetectedTimes = 0;
                                for (x in runResponse.Parts)
                                {
                                    if (runResponse.Parts[x].Status != soapStatusOK)
                                    {
                                        failDetectedTimes++;
                                    }
                                }
                                if (failDetectedTimes>0)
                                {
                                   alert('Сохранено успешно ' + (runResponse.Parts.length-failDetectedTimes) + ' раз из ' + runResponse.Parts.length);
                                }
                                else
                                {
                                    alert('Все кампании успешно сохранены', function(dialogToClose){ dialogToClose.dialog("close"); }, jqDialog);
                                }
                            }
                            else
                            {
                                alert("Ошибка запуска кампании: " + runResponse.StatusMessage);
                            }
                            
                            dialogUnMarkLoading('.dialogAC');
                            
                            jqDialog.dialog("close");
                        },
                        function (obj, msg)
                        {
                            // FAIL
                            alert("Ошибка запуска кампании: " + msg);
                            dialogUnMarkLoading('.dialogAC');
                            jqDialog.dialog("close");
                        });
                    }
                    else
                    {
                        alert("Странная ошибка сохранения шаблона");
                    }
                }
                else
                {
                    if (ProcessTypicalXEPErrors(theOnlyPart) == false)
                    {
                        alert("Ошибка сохранения шаблона: " + theOnlyPart.StatusMessage);
                    }
                }
            }
            else
            {
                alert("Ошибка сохранения шаблона: отсутствует нулевой парт");
            }
        }
        else
        {
            alert ("Ошибка сохранения шаблона: " + response.StatusMessage);
            dialogUnMarkLoading('.dialogAC');
        }
    },
    function (obj, msg)
    {
        // FAIL
        alert('Ошибка сохранения шаблона, процесс запуска РК прерван!');
        dialogUnMarkLoading('.dialogAC');
    });
}

function dialogACShow()
{
    dialogStopAndThink();
    var request = objGetXEPRequest();
    request.AddPart(XEPGetAccountsList, {});
    request.Perform(function(response)
                    {
                        // WIN
                        
                        AccountsInfos = new Object();
                        
                        var jqSelects = new Array();
                        if (response.Status == soapStatusOK)
                        {
                            var theOnlyPart = response.Parts[0];
                            if (theOnlyPart != null)
                            {
                                if (theOnlyPart.Status == soapStatusOK)
                                {
                                    var jqDialog = $("<div class=\"dialogAC\"></div>"); // STUB вот эта штука много где копипастом идет, можно как-нить унифицировать
                                    
                                    var campaignsRequest = objGetXEPRequest();
                                    var index = 0; // STUB колхоз пиздец
                                    for (resultIndex in theOnlyPart.Results)
                                    {
                                        var result = theOnlyPart.Results[resultIndex];
                                        var accId = result["accountId"];
                                        var accName = result["accountName"];
                                        var accImgSrc = result["accountImgSrc"];
                                        var minBid = result["minBid"];
                                        var jqAccount = $('<p class="rs-name">'
                                                        + '<input type="checkbox" id="ac-checkbox-' + accId + '" class="checkradio" value="' + accId + '" checked="checked" />'
                                                        + ' <label for="rs-direct-' + accId + '" class="forcheckradio">'
                                                        + ' <img src="' + accImgSrc + '" /> '
                                                        + '</label>'
                                                        + accName
                                                        + '</p>'
                                                        + '<dl class="rks">'
                                                        + '    <dt>'
                                                        + '        <input checked="checked" type="radio" class="checkradio" name="ac-' + accId + '" id="ac-' + accId + '-new" /> '
                                                        + '        <label for="ac-' + accId + '" class="forcheckradio">Создать новую рекламную кампанию</label>'
                                                        + '    </dt>'
                                                        + '    <dd>'
                                                        + '        <input id="campaignNameText-' + accId + '" type="text" class="text-field" value="' + getCurrentImageName() + '"/>' // STUB getCurrentImageName как-нить переоформить, чтобы не к глобальной переменной напрямую обращаться
                                                        + '    </dd>'
                                                        + '    <dt>'
                                                        + '        <input type="radio" class="checkradio" name="ac-' + accId + '" id="ac-' + accId + '-existing" /> '
                                                        + '        <label for="ac-' + accId + '">Добавить объявления в существующую кампанию</label>'
                                                        + '    </dt>'
                                                        + '    <dd>'
                                                        + '        <select>'
                                                        + '        </select>'
                                                        + '    </dd>'
                                                        + '    <dd>'
                                                        + '        <label for="campaignMinimumBid-' + accId + '" class="forcheckradio">Минимальная ставка</label>'
                                                        + '        <input id="campaignMinimumBid-' + accId + '" type="text" class="text-field" value="' + minBid + '"/>'
                                                        + '    </dd>'
                                                        + '</dl>'
                                                        );
                                        
                                        AccountsInfos[index] = new Object();
                                        AccountsInfos[index]["id"] = accId;
                                        AccountsInfos[index]["jqCheckBox"] = $('#ac-checkbox-' + accId, jqAccount);
                                        AccountsInfos[index]["jqNameTextBox"] = $('#campaignNameText-' + accId, jqAccount);
                                        AccountsInfos[index]["jqNewCampaignRadio"] = $('#ac-' + accId + '-new', jqAccount);
                                        AccountsInfos[index]["jqExistingCampaignRadio"] = $('#ac-' + accId + '-existing', jqAccount);
                                        AccountsInfos[index]["jqExistingCampaignSelect"] = $('select', jqAccount);
                                        //AccountsInfos[index]["jqMinBidTextBox"] = $('#campaignMinimumBid-' + accId, jqAccount);
                                        
                                           
                                        jqAccount.appendTo(jqDialog);
                                        
                                        var jqAccSelect = $('select', jqAccount);
                                        jqSelects[jqSelects.length] = jqAccSelect;

                                        campaignsRequest.AddPart(XEPGetCampaignsList, {"accountId" : accId});
                                        
                                        index++;
                                    }
                                    
                                    var googleDisabled = $('<p class="rs-name"><input disabled="disabled" type="checkbox" id="rs-direct-gug" class="checkradio" /> <label for="rs-direct-gug" class="forcheckradio" style="opacity:.5;filter:alpha(opacity=50)"><img src="css/img/google.png" /> Аккаунт от eLama для Google</label></p><dl class="rks">    <dt>        <input type="radio" id="rs-direct-gug2" name="ac-1877_" class="checkradio"  disabled="disabled"/>         <label class="forcheckradio" for="rs-direct-gug2">Создать новую рекламную кампанию</label>    </dt>    <dd>        <input disabled="disabled" type="text" value="' + defaultCampaignName + '" class="text-field" id="campaignNameText-1877_"/>    </dd>    <dt>        <input disabled="disabled" type="radio" id="ac-1877-existing_" name="ac-1877__" class="checkradio"/>         <label for="ac-1877__">Добавить объявления в существующую кампанию</label></dt><dd><select disabled="disabled"><option name="3353">...</option></select>    </dd></dl>');
                                        
                                    googleDisabled.appendTo(jqDialog);
                                    
                                    campaignsRequest.Perform(function(campaignsResponse)
                                        {
                                            // WIN
                                            if (campaignsResponse.Status == soapStatusOK)
                                            {
                                                var selectIndex = 0;
                                                for (campaignPartIndex in campaignsResponse.Parts)
                                                {
                                                    var campaignPart = campaignsResponse.Parts[campaignPartIndex];
                                                    if (campaignPart.Status == soapStatusOK)
                                                    {
                                                        for (campaignResultIndex in campaignPart.Results)
                                                        {
                                                            var campaignResult = campaignPart.Results[campaignResultIndex];
                                                            var jqFieldCampaign = $('<option name="' + campaignResult["campaignId"] + '">' + campaignResult["campaignName"] + '</option>');
                                                            jqFieldCampaign.appendTo(jqSelects[selectIndex]);
                                                        }
                                                    }
                                                    else
                                                    {
                                                        if (ProcessTypicalXEPErrors(campaignPart) == false)
                                                        {
                                                            alert('Ошибка загрузки списка кампаний: ' + campaignPart.StatusMessage);
                                                        }
                                                    }
                                                    selectIndex++;
                                                }
                                            }
                                            else
                                            {
                                                alert('Ошибка загрузки списка кампаний: ' + campaignsResponse.StatusMessage);
                                            }
                                            dialogUnMarkLoading('.dialogAC');
                                        },
                                        function (obj, msg)
                                        {
                                            // FAIL
                                            alert('Ошибка загрузки списка кампаний');
                                        }
                                        );
                                                        
                                    dialogStopAndThinkClose();
                                    jqDialog.dialog({
                                        modal: true,
                                        width:630,
                                        height:'auto',
                                        position:'center',
                                        title:'Запуск РК',
                                        buttons:
                                                {
                                                "Да": function(event)
                                                {
                                                    dialogMarkLoading('.dialogAC');
                                                    
                                                    
                                                    var runRequest = objGetXEPRequest();
                                                    for (x in AccountsInfos)
                                                    {
                                                        var accountInfo = AccountsInfos[x];
        
                                                        var accId = accountInfo["id"];
                                                        var jqCheckBox = accountInfo["jqCheckBox"];
                                                        var jqNameTextBox = accountInfo["jqNameTextBox"];
                                                        var jqNewCampaignRadio = accountInfo["jqNewCampaignRadio"];
                                                        var jqExistingCampaignRadio = accountInfo["jqExistingCampaignRadio"];
                                                        var jqExistingCampaignSelect = accountInfo["jqExistingCampaignSelect"];
                                                        //var jqMinBidTextBox = accountInfo["jqMinBidTextBox"];
                                                        
                                                            if (jqCheckBox.attr('checked') == true)
                                                            {
                                                                if (jqNewCampaignRadio.attr("checked") == false)
                                                                {
                                                                    // STUB копипаста asdasdasfaffxcwq3
                                                                    var existingCampaignId = $("option:selected", jqExistingCampaignSelect).attr('name');
                                                                    
                                                                    runRequest.AddPart(XEPRunCampaign, {
                                                                                                            "imageId": null, // STUB дальше это поле апдейтится по получению инфы от сервака
                                                                                                            //"campaignName" : jqNameTextBox.attr('value'),
                                                                                                            "accountId" : accId,
                                                                                                            //minBid xep spec 1.5
                                                                                                            "campaignId" : existingCampaignId
                                                                                                        }); // STUB не совпадают имена параметров со спецификацией XEP'а
                                                                }
                                                                else
                                                                {
                                                                    // STUB копипаста asdasdasfaffxcwq3
                                                                    runRequest.AddPart(XEPRunCampaign, {
                                                                                                            "imageId": null, // STUB дальше это поле апдейтится по получению инфы от сервака
                                                                                                            "campaignName" : jqNameTextBox.attr('value'),
                                                                                                            "accountId" : accId
                                                                                                            //minBid xep spec 1.5
                                                                                                            //"campaignId" : 
                                                                                                        }); // STUB не совпадают имена параметров со спецификацией XEP'а
                                                                }
                                                            }
                                                        }

                                                    
                                                },
                                                "Нет": function (event, ui)
                                                {
                                                    jqDialog.dialog("close");
                                                },
                                                "Не знаю": function (event, ui)
                                                {
                                                    alert('Отметьте галочкой аккаунты, под которыми хотите запустить РК, укажите название создаваемых кампаний, или выберите из уже существующих для присоединения к ним текущей РК.');
                                                }
                                            }
                                    });
                                    
                                    dialogMarkLoading('.dialogAC');
                                /*
        $('<form action="">
                                    <?
                                    $oUser = new eUser();
                                    $oAdAccounts = $oUser->getAdAccountList();
                                    if ($oAdAccounts !== false) {
                                        foreach ($oAdAccounts as $key => $oAdAccount) {
                                                ?>
                                                <p class="rs-name">
                                                        <input type="checkbox" id="rs-direct-<?php echo $key; ?>" class="checkradio" value="<?=$oAdAccount->getId()?>" />
                                                        <label for="rs-direct-<?php echo $key; ?>" class="forcheckradio">
                                                            <img src="<?=$oAdAccount->getAdSystem()->image_url?>" />
                                                        </label>
                                                        <?=$oAdAccount->getName()?>
                                                </p>
                                                    <dl class="rks">
                                                        <dt><!--<input checked="checked" type="radio" class="checkradio" name="rk1" id="rk1" />-->
                                                        <label for="rk1" class="forcheckradio">Создать новую рекламную кампанию</label></dt>
                                                        <dd><input type="text" class="text-field" /></dd>
                                                        <!--<dt><input type="radio" class="checkradio" name="rk1" id="rk2" />
                                                        <label for="rk2">Добавить объявления в существующую кампанию</label></dt>
                                                        <dd>
                                                                <select>
                                                                        <?
                                                                        $oAdCampaigns = $oAdAccount->getAdCampaignList();
                                                                        if ($oAdCampaigns !== false) {
                                                                                foreach ($oAdCampaigns as $oAdCampaign) {
                                                                                        ?><option value="<?=$oAdCampaign->getId()?>"><?=$oAdCampaign->getName()?></option><?
                                                                                }
                                                                        }
                                                                        ?>
                                                            </select>
                                                        </dd>
                                                        -->
                                                    </dl>
                                                <?
                                        
                                    }
                                    else
                                    {
                                        echo("Здесь мы не забыли обработать исключение</br>");
                                    }
                                    ?>
                                    <!--
                                    <p class="rs-name"><input type="checkbox" id="rs-google" class="checkradio" /> <label for="rs-google" class="forcheckradio"><img src="css/img/google.png" /></label></p>
                                    <dl class="rks rs-google">
                                        <dt><a href="#"><img src="css/img/xls.png" class="icco" /> <span>Скачать CSV для подгрузки в Google AdWords</span></a></dt>
                                        <dd>Этот файл можно импортировать в Google AdWords для автоматического создания рекламных объявлений с выбранными настройками. В ближайшее время будет доступна возможность запуска рекламных кампаний непосредственно из интерфейса eLama.ru.</dd>
                                    </dl>
                                    <div class="regions-chosen">Регионы: <a href="#">Выбрать</a>
                                        <div class="regions-chosen-list">Москва, Санкт-Петербург</div>
                                        <p>-->
                                                <input type="button" value="Запустить" class="button submit-button" onclick="SaveImageRoutine(ACRunImageSave);"/>
                                                <input type="button" onclick="$('#tree-above-shadow').dialog('close')" value="Отмена" class="button reset-button"/>
                                        <!--</p>
                                    </div>
                                    -->
                                    </form>');
        */
                                
                                
                                
                                
                                
                                    }
                                    else
                                    {
                                        if (ProcessTypicalXEPErrors(theOnlyPart) == false)
                                        {
                                            alert('Ошибка загрузки списка РК: ' + theOnlyPart.StatusMessage);
                                        }
                                    }
                                }
                                else
                                {
                                    alert('Ошибка загрузки списка РК: отсутствует нулевой парт.');
                                }
                        }
                        else
                        {
                            alert('Ошибка загрузки списка РК: ' + response.StatusMessage);
                        }

                     }, function (obj, msg)
                     {
                        // FAIL
                        alert("Ошибка загрузки списка аккаунтов");
                     }
                     );




}
function ACRunImageSave(imageId, PassByParams) // STUB ссылку на alreadSavedImageId удалить как только так сразу, переделать STUB huis22
{
    if (imageId == null)
    {
        // ошибка сохранения
        alert('Ошибка сохранения шаблона');
    }
    else
    {
        var cmdXML = GetCommandXML("RunCampaign", {
                                                    "imageId" : imageId,
                                                    "campaignName" : PassByParams["campaignName"],
                                                    "accountId" : PassByParams["accountId"]
                                                 });
        BeginSendCommand(function(xml)
        {
            // WIN
            var info = GetPacketInfo(xml);
            if (info["status"] == soapStatusOK)
            {
                var fields = GetPacketFields(xml);
                alert('РК успешно сохранена, id == ' + fields["campaignId"]);
                alreadSavedImageId = fields["campaignId"];
            }
            else
            {
                alert('Ошибка сохранения РК: ' + info["text"]);
            }
        },
        function(obj, msg)
        {
            // FAIL
            alert('Ошибка сохранения РК');
        }, cmdXML);
    }
}