
(function (w) {
  'use strict';
  
  var xhr = new XMLHttpRequest();
  if( document.readyState && document.readyState == 'complete'){
    __get();
  }else{
    if( w.addEventListener ){
      w.addEventListener('load', __get);
    }else if(w.attachEvent){
      w.attachEvent('onload', __get);
    }
  }

  function __get() {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'https://panda.kasika.io/contact_conversion/c.js';
    document.getElementsByTagName('head')[0].appendChild(script);
    var body = document.getElementsByTagName('body')[0].innerHTML;
    var params = [];
    xhr.open('POST','https://panda.kasika.io/contact_conversion/get.php', true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    params.push(
      'pid='+encodeURIComponent('9706D6BB6C6FD35305CF1A7912C5D7AE')+
      '&url='+encodeURIComponent(location.href)+
      '&body='+encodeURIComponent(body)+
      '&stamp='+encodeURIComponent(document.cookie)
    );
    xhr.send(params);
  }

  xhr.onload = function () {
    var expire = new Date();
    if (xhr.readyState == 4 && xhr.status == 200){
      if(xhr.responseText){
        var json = JSON.parse(xhr.responseText);
        if( json && json.response && json.response.status){
          if( json.response.action == 'input' ){
            if( json.response.query ){
              var result = {};
              var keys = [];
              var posts = [];
              if(json.response.query.delay_target != ''){
                //console.log('delay taeget:',json.response.query.delay_target);
                var count = 0;
                var countup = function(){
                  //console.log('delay count:',count);
                  count++;
                };
                var timer = setInterval(function(){
                  if(!document.querySelector(json.response.query.delay_target)){
                    countup();
                    if(count > 10){　
                      clearInterval(timer);
                      console.log(json);
                      __main(json);
                    }
                  }else{
                    clearInterval(timer);
                    console.log(json);
                    __main(json);
                  }
                }, 1000);
              }else{
                console.log(json);
                __main(json);
              }
              function __main(){
                for(var key in json.response.query){
                  if( json.response.query[key] != ''){
                    keys.push(json.response.query[key]);
                    posts.push(key);
                    if (key != 'complete_match_text' && !document.querySelector(json.response.query[key])) {
                      console.log('not found element:', json.response.query[key]);
                    }else{
                      var sel = document.querySelectorAll((json.response.query[key]));
                      sel = Array.prototype.slice.call(sel, 0);
                      sel.forEach(function(ee){
                        ee.setAttribute('data-kasika', key);
                        result[key] = '';
                      });
                    }
                  }
                }
                try { 
                  posts = Array.prototype.slice.call(posts, 0);
                  var elm = document.querySelectorAll(keys.join(','));
                  elm = Array.prototype.slice.call(elm,0); 
                  elm.forEach(function(ee){
                    if(ee.getAttribute('data-kasika') === 'button_pattern'){
                      ee.addEventListener('click', function (event) {
                        var count = 0;
                        var countup = function(){
                          count++;
                        };
                        var timer = setInterval(function(){
                          countup();
                          var text = document.getElementsByTagName('body')[0].innerHTML;
                          if( text.indexOf(json.response.query.complete_match_text) !== -1 ){
                            var body = document.getElementsByTagName('body')[0].innerHTML;
                            var xhr2 = new XMLHttpRequest();
                            xhr2.open('POST','https://panda.kasika.io/contact_conversion/get.php', true);
                            var params = [];
                            xhr2.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                            params.push(
                              'pid='+encodeURIComponent('9706D6BB6C6FD35305CF1A7912C5D7AE')+
                              '&url='+encodeURIComponent(location.href+'/submit_on_ajax_form')+
                              '&body='+encodeURIComponent(body)+
                              '&stamp='+encodeURIComponent(document.cookie)
                            );
                            xhr2.send(params);
                            xhr2.onload = function () {
                              if (xhr2.readyState == 4 && xhr2.status == 200){
                                if(xhr2.responseText){
                                  var json = JSON.parse(xhr2.responseText);
                                  expire.setTime( expire.getTime() + 1000 * 3600 * 24 * 365 * 10 );
                                  document.cookie = '_coco_cid='+json.response.cid+'; path=/; expires='+ expire.toUTCString();
                                }
                              }
                              var script = document.createElement('script');
                              script.type = 'text/javascript';
                              script.src = 'https://panda.kasika.io/tracking_s/?pid=9706D6BB6C6FD35305CF1A7912C5D7AE';
                              document.getElementsByTagName('head')[0].appendChild(script);
                            };
                            clearInterval(timer);
                          }
                          if(count > 10){　
                            //clearInterval(timer);
                          }
                        }, 1000);
                      })
                    };
                    ee.addEventListener('blur',function(event){
                      var c = 0;
                      posts.forEach(function(kk){
                        if(result[kk]){
                          result[kk] = '';
                        }
                      });
                      elm.forEach(function(eee){
                        if( eee.getAttribute('data-kasika') ){
                          if( eee.value != undefined ){
                            result[eee.getAttribute('data-kasika')] += eee.value;
                          }else if( eee.innerHTML != undefined ){
                            result[eee.getAttribute('data-kasika')] += eee.innerHTML;
                          }
                          result['setting'] = json.response.setting;
                          c++;
                        }
                      });
                      console.log(result);
                      if( c > 0 ){
                        var strJson = JSON.stringify(result);
                        var salt = CryptoJS.lib.WordArray.random(256);
                        var iv = CryptoJS.lib.WordArray.random(16);
                        var passphrase = 'e9cba182bb97c46eceb627254fab217dff02bac6';
                        var key = CryptoJS.PBKDF2(passphrase, salt, { 
                          hasher: CryptoJS.algo.SHA512, 
                          keySize: 64/8, 
                          iterations: 10 
                        });
                        var encrypted = CryptoJS.AES.encrypt(strJson, key, {iv: iv});
                        var data = {
                            ciphertext : CryptoJS.enc.Base64.stringify(encrypted.ciphertext),
                            salt : CryptoJS.enc.Hex.stringify(salt),
                            iv : CryptoJS.enc.Hex.stringify(iv)    
                        };
                        var encrypted = data.ciphertext+'__'+data.salt+'__'+data.iv;
                        expire.setTime( expire.getTime() + 1000 * 3600 );
                        document.cookie = 'stamp_en='+encodeURIComponent(encrypted)+';path=/;expires='+expire.toUTCString();
                      }
                    }, true);
                  });
                }
                catch (e) {
                  console.log(e);
                }
              }
            }
          }else if( json.response.action == 'confirm' ){
            expire.setTime( expire.getTime() + 1000 * 3600 );
            document.cookie = 'stamp='+encodeURIComponent(json.response.stamp)+';path=/;expires='+expire.toUTCString();
            console.log(json);
          }else if( json.response.action == 'complete' ){
            document.cookie = 'stamp=;path=/;expires=0';
            document.cookie = 'stamp_en=;path=/;expires=0';
            if( json.response.cid ){
              expire.setTime( expire.getTime() + 1000 * 3600 * 24 * 365 * 10 );
              document.cookie = '_coco_cid='+json.response.cid+'; path=/; expires='+ expire.toUTCString();
            }
            console.log(json);
          }
        }
      }
    }
  };
})(window);
