var fombj = null;
var parr = 0;
var ajax_post = 0;

// Функция которая делаеи соединение со скриптом
function GetXmlHttpObject(){
    var objXMLHttp=null
    if (window.XMLHttpRequest){
        objXMLHttp=new XMLHttpRequest()
    }
    else if (window.ActiveXObject){
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    return objXMLHttp
}

function init_ajax(){
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null){
        alert ("Your browser does not support AJAX.")
        return false
    }
    return true
}

function ajax_send(req){
    xmlHttp.open("GET",req,true);
    xmlHttp.send(null);
}

function ajax_send_post(req,par){
    xmlHttp.open("POST", req, true);
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttp.send(par);
}

function collect_data(){
    parr = new Array();
    if (fombj!=null)    obj = fombj;
    else                obj = document.getElementById("sub_form");
    for (i=0; i<obj.length; i++){
        if (obj.elements[i].type == 'select-one'){
            parr[i] = obj.elements[i].name+'='+obj.elements[i].value;
        };
        if (obj.elements[i].type == 'radio'){
            if (obj.elements[i].checked){
                parr[i] = obj.elements[i].name+'='+obj.elements[i].value;
            };
        };
        if (obj.elements[i].type == 'hidden'){
            parr[i] = obj.elements[i].name+'='+encodeURIComponent(obj.elements[i].value);
        };
        if (obj.elements[i].type == 'text'){
            parr[i] = obj.elements[i].name+'='+encodeURIComponent(obj.elements[i].value);
        };
        if (obj.elements[i].type == 'password'){
            parr[i] = obj.elements[i].name+'='+encodeURIComponent(obj.elements[i].value);
        };
        if (obj.elements[i].type == 'textarea'){
            parr[i] = obj.elements[i].name+'='+encodeURIComponent(obj.elements[i].value);
            //alert(obj.elements[i].value);
            //alert(encodeURIComponent(obj.elements[i].value));
        };
        if (obj.elements[i].type == 'checkbox'){
            if (obj.elements[i].checked){
                parr[i] = obj.elements[i].name+'='+obj.elements[i].value;
            } else {
                parr[i] = obj.elements[i].name+'=off';
            };
        };
    };
    parr = parr.join('&');
    return parr;
}

function update_pic(act){
    rnd = Math.floor(Math.random() * 10000000000);
    document.getElementById("seccode").src='/sources/seccode/genimage.php?id='+rnd;
}

function load_files_popup(mdl) {
    popupWin = window.open('/loadfiles/load.html?mod='+mdl, 
    'loadfiles', 
    'location=0,toolbar=0,directories=0,menubar=0,width=400,height=300,scrollbars=1'); 
    popupWin.focus(); 
    return false;
}

function load_files_changeval(n,c) {
    //alert(1)
    fombj.fstr.value = n;
    //alert(2)
    fombj.vlcount.value = c;
    //alert(3)
}

function setCookie (name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function getCookie(name) {
    var cookie = " " + document.cookie;
    var search = " " + name + "=";
    var setStr = null;
    var offset = 0;
    var end = 0;
    if (cookie.length > 0) {
        offset = cookie.indexOf(search);
        if (offset != -1) {
            offset += search.length;
            end = cookie.indexOf(";", offset)
            if (end == -1) {
                end = cookie.length;
            }
            setStr = unescape(cookie.substring(offset, end));
        }
    }
    return(setStr);
}

function str_replace(search, replace, subject) {
    return subject.split(search).join(replace);
}

function f_clientWidth() {
    return f_filterResults (
        window.innerWidth ? window.innerWidth : 0,
        document.documentElement ? document.documentElement.clientWidth : 0,
        document.body ? document.body.clientWidth : 0
    );
}

function f_clientHeight() {
    return f_filterResults (
        window.innerHeight ? window.innerHeight : 0,
        document.documentElement ? document.documentElement.clientHeight : 0,
        document.body ? document.body.clientHeight : 0
    );
}

function getClientWidth()
{
  return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
}

function getDocumentHeight(){
return (document.body.scrollHeight > document.body.offsetHeight)? document.body.scrollHeight: document.body.offsetHeight;
}

function getImageX(imgElem) {
  xPos = eval(imgElem).offsetLeft;
  tempEl = eval(imgElem).offsetParent;
    while (tempEl != null) {
     xPos += tempEl.offsetLeft;
     tempEl = tempEl.offsetParent;
    }
  return xPos;
}

/*
Функция для вставки HTML-кода, содержащего javascript
el - элемент DOM, в который нужно вставить HTML
html - собственно, сам HTML, который надо вставить
*/
function InsertHTML(el, html)
{
    el.innerHTML=html;
    scripts = el.getElementsByTagName("script");
    head = document.getElementsByTagName('head')[0];
    for(i=0 ; i<scripts.length ; i++)
    {
        eval (scripts[i].innerHTML);
        var script = document.createElement('script');
        script.src = scripts[i].src;
        head.appendChild(script);
    }
}

function HighLight(obj){
    var len = 800;
    var bg = '#656248';
    //var obj = 'input:text[name='+el+']';
    var bg_save = $(obj).css('background-color');
    $(obj).css({'background-color':bg});
    $(obj).animate({
        'backgroundColor': bg_save,
    }, len );
}

function ajax_form_hide(){
    $('#ajax_popup').hide('fast');
}

function ajax_form_show(){
    var element=document.getElementById('ajax_popup');
    if(!element) { create_ajaxfrom(); }

    var t = document.body.scrollTop + 150;
    t = t + 'px';
    $('#ajax_popup .popup').css('top',t);
    
    t = getDocumentHeight()+'px';
    $('#wrapper').css('height',t);
    $('#ajax_popup').show('fast');//'fast'
    //$('#ajax_popup .popup').css({'top':'160px'});
}


function formatPhone(pole) {
    var out_str = $('#'+pole).val().replace(new RegExp('\\D+', 'g'), '');
    var p1 = out_str.substr(1, 3);
    var p2 = out_str.substr(4, 3);
    var p3 = out_str.substr(7, 2);
    var p4 = out_str.substr(9, 2);
    if (p4.length > 0) {
        out_str = '+7 (' + p1 + ') ' + p2 + '-' + p3 + '-' + p4;
    } else if (p3.length > 0) {
        out_str = '+7 (' + p1 + ') ' + p2 + '-' + p3;
    } else if (p2.length > 0) {
        out_str = '+7 (' + p1 + ') ' + p2;
    } else if (p1.length > 0) {
        out_str = '+7 (' + p1;
    } else {
        out_str = '+7';
    }
    //alert(5);
    $('#'+pole).val(out_str);
    //alert(6);
}

function geo_city_sel(){
    var url="/sources/geo/geo_ajax.php";
    $('#ajax_popup_in').html( $('#ajax_loader').html() );
    ajax_form_show();
    $.ajax({
        type: 'POST',
        url: url,
        data: {act:'city_form'},
        dataType: 'html',
        success: function(msg){
            $('#ajax_popup_in').html(msg);
            geo_city_click();
        }
    });
}
function geo_city_click(event){
    $("div.fa_ajax_city span a").click(function(){
        event.preventDefault();
        //alert(1)
        var Id = $(this).parent().parent().attr('id');
        //alert(Id);
        $('#'+Id+' ul').toggle('fast');
    })
    $("div.fa_ajax_city li a").click(function(){
        var id = $(this).attr('rel');
        $('#id_city').val(id);
        $('#id_city_name').text($(this).text());
        ajax_form_hide();
    })
}

function cms_ajax_post(ident){
    var url = '/sources/'+ident+'/'+ident+'_ajax.php';
    if (init_ajax()==false) return;
    // Адрес скрипта обрабатывающего запросы
    fombj = document.getElementById( ident+'_form' );
    var parr = collect_data();
    $('#'+ident+'_add_result').slideUp('fast',function(){
        $('#'+ident+'_dbut').fadeOut('fast',function(){
            $('#'+ident+'_loader').fadeIn('slow',function(){
                var geturl;
                geturl = $.ajax({
                    type: 'POST',
                    url: url,
                    data: parr,
                    dataType: 'html',
                    success: function(msg){
                        var status = geturl.getResponseHeader('status');
                        // Заполняем подчиненый селект
                        if (status=='success'){
                            $('#'+ident+'_div_add').html(msg);
                        }
                        else{
                            cms_ajax_post_resshow(ident,msg);
                        }
                    },
                    error: function(msg){
                            //alertObject(msg)
                            //alert(msg.statustext)
                            cms_ajax_post_resshow(ident,'Error while sending AJAX request / Во время AJAX запроса произошла ошибка');
                    }
                });
            });
        });
    });
    return
}


 // Alert javascript object in alert box
function alertObject(obj){      
    for(var key in obj) {
        alert('key: ' + key + '\n' + 'value: ' + obj[key]);
        if( typeof obj[key] === 'object' ) {
            alertObject(obj[key]);
        }
    }
}
    
function cms_ajax_post_resshow(ident,msg){
    $('#'+ident+'_add_result').html(msg);
    $('#'+ident+'_add_result').slideDown('slow',function(){
        $('#'+ident+'_loader').fadeOut('fast',function(){
            $('#'+ident+'_dbut').fadeIn('fast');
        });
    });
}

function cms_golnk(dom,mod,wwl,out){
    if (typeof out == 'undefined') out = 0;
    wwl = urldecode(wwl);
    if (mod){
        wwl = '/' + mod + wwl; 
    }
    if (dom){
        wwl = 'http://' + dom + wwl; 
    }
    if (out){
        window.open(wwl);    
    }
    else{
        document.location.href = wwl;    
    }
    return false;
}

function cms_click(mod,pt,html,same){
    if (typeof same == 'undefined') same = 0;
    url = '/'+mod+'/'+pt;
    if (html) url = url + '.html';
    if (same){
        document.location.href = url;    
    }
    else{
        window.open(url);    
    }
    return false;
}

function cms_ext_click(dmn,link,same){
    if (typeof same == 'undefined') same = 0;
    url = 'http://'+dmn+'/'+urldecode(link);
    if (same){
        document.location.href = url;    
    }
    else{
        window.open(url);    
    }
    return false;
}

function urldecode(str) {
   return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}

function b64_to_utf8( str ){
    return decodeURIComponent(escape(Base64.decode( str )));
}

function create_ajaxfrom(){
    var element=document.getElementById('ajax_popup');
    if(!element) {
        var parentElem = document.body;
        var AjP = document.createElement('div');
        AjP.id = 'ajax_popup';
        AjP.id.className='pops';
        AjP.style.display = "none"
        AjP.innerHTML = '<div id="ajax_wrapper"></div><div class="popup"><div class="popup-in" id="ajax_popup_in"></div><a class="exit" href="#" onclick="ajax_form_hide(); return false;"></a></div>';
        parentElem.appendChild(AjP);
        var AL = document.createElement('div');
        AL.id = 'ajax_loader';
        AL.style.display = "none"
        AL.innerHTML = '<div class="com_loader"><center><img alt="load" title="load" src="/tpl/main/images/work/ajax_loader.gif" width="32" height="32" /><br />подождите....</center></div>';
        parentElem.appendChild(AL);
    }
}


function applyZOOM($ident){
    $($ident).elevateZoom({
        zoomType: "window",
        cursor: "crosshair",
        zoomWindowFadeIn: 200,
        zoomWindowFadeOut: 200,
        scrollZoom : true,
        zoomWindowWidth: 500,
        zoomWindowHeight: 500
   }); 
}

function modal_create(src,st){
    st = typeof st !== 'undefined' ? st : 'mdl_def';
    var can_close = true;
    if (st!==''){
        if (st=='mdl_nob'){
            can_close = false;
        }
        st = ' '+st;
    }
    src= '<div id="mdl_generate" class="zoom-anim-dialog">'+src+'</div>';
    $.magnificPopup.open({
        items: {
            src: src,
            type: 'inline',
        },
        fixedContentPos: false,
        fixedBgPos: true,
        overflowY: 'auto',
        closeBtnInside: true,
        preloader: false,
        midClick: true,
        removalDelay: 0,
        mainClass: st,
        callbacks: {
            open: function() {
                // Will fire when this exact popup is opened
                // this - is Magnific Popup object
                
            },
            close: function() {
                $('body').removeClass('body_stat');
                //$('#mdl_generate .res_ph').html('');
                //$('#mdl_generate form[name="ust_'+pole+'"] input:text').each(function() {
                //    $(this).attr('value',$(this).val());
                //});
                //$('#mdl_'+pole+'').html($('#mdl_generate').html());
                // Will fire when popup is closed
            }
        // e.t.c.
        }
    });
}


function create_loader(){
    var loader = '';
    loader = '<img src="images/spin.gif">'; 
    return loader;
}

$(document).ready(function() { 
    $('span.foto-search-form').on({
        click: function(){
            $('#pic_upload_form #imgfile').click();
        }
    });
    
    $("input.parner_link").focus(function(){
        if(this.value == this.defaultValue){
            this.select();
        }
    });

    $(document).on('change', '#pic_upload_form input[type="file"]', function () {
        ext=$(this).val();
        if(!ext.match(/.jpg|.jpeg$/)) {
            alert("Допустимые форматы файлов: .jpg");
            return;
        }
        var modal = create_loader();
        modal_create(modal,'mdl_nob');
        //return tao_load_pic('TB1J9tlQFXXXXbrXpXXXXXXXXXX');
        
        var data = new FormData($('#pic_upload_form')[0]);
        $.ajax({
            url: 'https://s.taobao.com/image',
            data: data,
            cache: false,
            processData: false,
            contentType: false,
            dataType: 'json',
            type: 'POST',
            success: function (data) {
                var name = data['name'];
                name = typeof name !== 'undefined' ? name : '';
                if (name==''){
                    alert('Возникла ошибка (1), попробуйте повторить заново.')
                }
                else{
                    tao_load_pic(name)
                }
            },
            error: function (){
                alert('Возникла ошибка (2), попробуйте повторить заново.')
                $('#pic_upload_form input[type="file"]').val('');
                $.magnificPopup.close();    
            }
        });
    });
})

function tao_load_pic(name){
    var url = 'https://redmall.ru/taobao/ims/';
    //var url = 'http://redmall.my/taobao/ims/';
    $('#pic_upload_form').append('<input type="hidden" name="tn" value="'+name+'">');
    //$.magnificPopup.close();
    //return;
    //alert(name)
    var data = new FormData($('#pic_upload_form')[0]);
    $.ajax({
        url: url,
        data: data,
        cache: false,
        processData: false,
        contentType: false,
        dataType: 'json',
        type: 'POST',
        success: function (data) {
            //alert(data)
            var good = data['good'];
            //alert(data['bad']);
            if (good==1){
                window.location.href = 'https://redmall.ru/taobao/image/'+name+'/';
            }
            else{
                alert('Возникла ошибка (3), попробуйте повторить заново.')
                $('#pic_upload_form input[type="file"]').val('');
                $.magnificPopup.close();    
            }
        },
        error: function (){
            alert('Возникла ошибка (4), попробуйте повторить заново.')
            $.magnificPopup.close();    
            $('#pic_upload_form input[type="file"]').val('');
        }
    });
}

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
/*  Base64 class: Base 64 encoding / decoding (c) Chris Veness 2002-2011                          */
/*    note: depends on Utf8 class                                                                 */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */

var Base64 = {};  // Base64 namespace

Base64.code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

/**
 * Encode string into Base64, as defined by RFC 4648 [http://tools.ietf.org/html/rfc4648]
 * (instance method extending String object). As per RFC 4648, no newlines are added.
 *
 * @param {String} str The string to be encoded as base-64
 * @param {Boolean} [utf8encode=false] Flag to indicate whether str is Unicode string to be encoded 
 *   to UTF8 before conversion to base64; otherwise string is assumed to be 8-bit characters
 * @returns {String} Base64-encoded string
 */ 
Base64.encode = function(str, utf8encode) {  // http://tools.ietf.org/html/rfc4648
  utf8encode =  (typeof utf8encode == 'undefined') ? false : utf8encode;
  var o1, o2, o3, bits, h1, h2, h3, h4, e=[], pad = '', c, plain, coded;
  var b64 = Base64.code;
   
  plain = utf8encode ? Utf8.encode(str) : str;
  
  c = plain.length % 3;  // pad string to length of multiple of 3
  if (c > 0) { while (c++ < 3) { pad += '='; plain += '\0'; } }
  // note: doing padding here saves us doing special-case packing for trailing 1 or 2 chars
   
  for (c=0; c<plain.length; c+=3) {  // pack three octets into four hexets
    o1 = plain.charCodeAt(c);
    o2 = plain.charCodeAt(c+1);
    o3 = plain.charCodeAt(c+2);
      
    bits = o1<<16 | o2<<8 | o3;
      
    h1 = bits>>18 & 0x3f;
    h2 = bits>>12 & 0x3f;
    h3 = bits>>6 & 0x3f;
    h4 = bits & 0x3f;

    // use hextets to index into code string
    e[c/3] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
  }
  coded = e.join('');  // join() is far faster than repeated string concatenation in IE
  
  // replace 'A's from padded nulls with '='s
  coded = coded.slice(0, coded.length-pad.length) + pad;
   
  return coded;
}

/**
 * Decode string from Base64, as defined by RFC 4648 [http://tools.ietf.org/html/rfc4648]
 * (instance method extending String object). As per RFC 4648, newlines are not catered for.
 *
 * @param {String} str The string to be decoded from base-64
 * @param {Boolean} [utf8decode=false] Flag to indicate whether str is Unicode string to be decoded 
 *   from UTF8 after conversion from base64
 * @returns {String} decoded string
 */ 
Base64.decode = function(str, utf8decode) {
  utf8decode =  (typeof utf8decode == 'undefined') ? false : utf8decode;
  var o1, o2, o3, h1, h2, h3, h4, bits, d=[], plain, coded;
  var b64 = Base64.code;

  coded = utf8decode ? Utf8.decode(str) : str;
  
  for (var c=0; c<coded.length; c+=4) {  // unpack four hexets into three octets
    h1 = b64.indexOf(coded.charAt(c));
    h2 = b64.indexOf(coded.charAt(c+1));
    h3 = b64.indexOf(coded.charAt(c+2));
    h4 = b64.indexOf(coded.charAt(c+3));
      
    bits = h1<<18 | h2<<12 | h3<<6 | h4;
      
    o1 = bits>>>16 & 0xff;
    o2 = bits>>>8 & 0xff;
    o3 = bits & 0xff;
    
    d[c/4] = String.fromCharCode(o1, o2, o3);
    // check for padding
    if (h4 == 0x40) d[c/4] = String.fromCharCode(o1, o2);
    if (h3 == 0x40) d[c/4] = String.fromCharCode(o1);
  }
  plain = d.join('');  // join() is far faster than repeated string concatenation in IE
  
  return utf8decode ? Utf8.decode(plain) : plain; 
}

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */