

var coreEscape = window.escape;

window.escape = function ( str ) {

  var chars = [];
  for (var i = 0x410; i <= 0x44F; i++) { chars[i] = i - 0x350; }
  chars[0x401] = 0xA8;
  chars[0x451] = 0xB8;
  var res = [];
  
  str = new String(str); // for mozilla 
  
  for (var i = 0; i < str.length; i++)  {
    var ch = str.charCodeAt(i);
    if (typeof chars[ch] != 'undefined') { ch = chars[ch]; }
    if (ch <= 0xFF) { res.push(ch); }
  }
  return coreEscape( String.fromCharCode.apply(null, res) );
}


function back () { window.history.back(); }

function sendemail( i ) {
	window.open('/sendemail/?email='+i,'sendemailwindow','top=3000,left=3000,width=10,height=10');
}
		
function sendemail_root(i, subject) { 
	window.open('/sendemail/?email='+i+'&subject='+subject,'sendemailwindow','top=3000,left=3000,width=10,height=10'); 
}
function rightsfalse (rightsstatus) {
    
    if (rightsstatus !== undefined && rigtsstatus !== null) {
        var url = '/rightsfalse.php?new=1&rightsstatus=' + 
			rightsstatus + 
			'';
		window.open(url,'rightsfalsewindow','width=340,height=240');
    } else {
        window.open('/rightsfalse/','rightsfalsewindow','width=340,height=240'); 
    }
}
function scroll_banner () {
	
	var a = 1500;
	var b = document.getElementById('skyscraper');
	
	var c = 0;
	
	try {
		c = document.documentElement.scrollTop;
	} catch (e) {
		c = document.body.scrollTop + 7;
	}

	if ( c < a ) {
		b.style.posTop = c;
		b.style.top = '' + c + 'px';
	}
}
var ctrl_enter = {
	attached : false,	
	attach : function () {
		var ctrl_enter = this;
		document.onkeypress = function (key_press) {
			if( ctrl_enter.attached ){
				var kC, cK, kM;
				if(	window.event ) { 
					kC = window.event.keyCode;
					cK = window.event.ctrlKey;
					kM = 2;
				} else if( parent && parent.event ) {
					kC = parent.event.keyCode;
					cK = parent.event.ctrlKey;
					kM = 2;
				} else {
					kC = key_press.keyCode;
					cK = key_press.ctrlKey;
					if( key_press.modifiers != undefined ) {
						kM = key_press.modifiers;
						cK = 2;
						kC = key_press.which;
					} else { kM = 2; }
				}
				if( cK && kM == 2 && ( kC == 13 || kC == 10 ) ) { 
					// send_error();
					ctrl_enter.drawback();
				}
			}
		}
		if ( parent ) { parent.document.onkeypress=document.onkeypress; }
		this.attached = true;
	}, 
	drawback : function () {
		var wnd = window, sel_text = null, err_text;
		if( wnd.getSelection ) { err_text=wnd.getSelection();}
		else if( wnd.document.getSelection ) { err_text=wnd.document.getSelection(); } 
		else { sel_text = wnd.document.selection; }
		if( sel_text ) {
			err_text   = sel_text.createRange().text;
			var b_text = sel_text.createRange();
			var a_text = sel_text.createRange();
			sel_text   = err_text;
			b_text.moveStart( "word",-10 );
			b_text.moveEnd( "character", -err_text.length );
			a_text.moveStart( "character", err_text.length );
			a_text.moveEnd( "word", 10 );
			sel_text = b_text.text + err_text + a_text.text;
		} else {
			if ( window.document.body != undefined ) {
				if ( wnd.document.body.innerText != undefined ) {
					sel_text=wnd.document.body.innerText;
				} else { sel_text=wnd.document.body.innerHTML; }
				var nn = sel_text.indexOf( err_text );
				if ( nn != -1 ){
					var tmp_str = err_text + "";
					sel_text = sel_text.substring( nn - 70, nn ) + err_text + 
							   sel_text.substring( nn + tmp_str.length, nn + tmp_str.length + 70 );
				} else { sel_text = err_text; }
			} else { sel_text = err_text; }
		}
		document.charset='windows-1251';
		if( err_text.length == 0 || err_text == " " ) { return; }
		//alert('[' + err_text + ']' + err_text.length);
		var senderror = window.open(
			"/drawback/?uri=" + escape( wnd.document.URL ) + "&err_text=" + escape(err_text), "senderror", 
			"width=870,height=450,addressbar=0,resizable=1,scrollbars=1,toolbar=1, menubar=1,status=1"
		);
	}
};

ctrl_enter.attach();


function __current_time_string () {
	
	var time_s = '';
	var now = new Date();
	var month = 1 + now.getMonth();
	time_s = '<div style="float:left;width:160px; text-align:center;font-size:12px;">' 
	            + 
			( now.getHours() >= 10 ? now.getHours() : '0' + now.getHours() ) + 
			':' + ( now.getMinutes() >= 10 ? now.getMinutes() : '0' + now.getMinutes() ) + 
			':' + ( now.getSeconds() >= 10 ? now.getSeconds() : '0' + now.getSeconds() ) + '</div>'
	;
	return time_s;
}


function show_time ( target_id, milliseconds ) {
	milliseconds = parseInt(milliseconds);	
	var timer;
	var time_s = __current_time_string();
	var id_input = document.getElementById('time')
	if ( !id_input || milliseconds <= 0 ) { return; }
	id_input.innerHTML = time_s;
	
	timer = setTimeout( function () { show_time( target_id, milliseconds ); }, milliseconds );
}

var lizard = (function($){

  return function(config, httpfail) {
      
      if (!config.url || config.url.length <= 0) {
          throw new Error("You must define Lizard URL at config parameter");
      }
      
      return {

          url: config.url,

          queue: [],

          push: function(item) {

              if (!item.component || item.component.length <= 0) {
                  throw new Error("You should define component name for queue item");
              }

              if (!item.params || item.params.length <= 0) {
                  throw new Error("You should define component parameters for queue item");
              }

              for (var idx = 0; idx < this.queue.length; idx++) {
                  if (this.queue[idx].component == item.component) {
                      if (!item.id && !this.queue[idx].id) {
                          throw new Error("Duplicate item found. Define please unique id for item");
                      }
                      if (this.queue[idx].id && item.id && item.id == this.queue[idx].id) {
                          throw new Error("Duplicate item found. Id should be unique for queue");
                      }
                      item.id = 0 + parseInt(item.id);
                      if (item.id <= 0) {
                          throw new Error("Id should have positive interger value");
                      }
                  }
              }
              this.queue.push(item);
          },

          run: function(finalize) {
              
              var post = {};
              for (var idx = 0; idx < this.queue.length; idx++) {
                  
                  var item = this.queue[idx];
                  for (var param in item.params) {
                      
                      var name = item.component + '_';
                      if (item.id) {
                          name += '' + item.id + '_';
                      }
                      name += param;
                      post[name] = item.params[param];
                  }
              }
              var lz = this;
			  console.log('Lizard url: ' + this.url);
			  console.log(post);
              $.ajax({
                  type: 'POST',
                  url:  this.url,
                  data: post, 
                  success: function(data, status, xhr) {
                     
                     if (status != 'success') {
						 console.log('Lizard fail!')
                         if (typeof(httpfail) != 'function') {
                             throw new Error('Failed post ' + lz.url + ' ' + status);
                         }
                         return httpfail(xhr, status, lz.url); 
                     }
                     if (!data) { 
                         console.log('Lizard data is empty');
			 console.log('Data' + data);
                         return false;
                     }
                     if (typeof(data) === 'string') {
						 console.log('Lizard success');
						 console.log(data);
                         var combined_json = $.parseJSON(data);
                         if (combined_json === undefined || 
                             combined_json === null || 
                             combined_json === false) 
                         { 
                             console.log('Lizard data is not a json:');
                             console.log(data);
                             return false;
                         }
                     } else {
						 console.log('Lizard combined json');
                         combined_json = data;
                     }
                     for (var idx = 0; idx < combined_json.length; idx++) {

                         var json_element = combined_json[idx];
                         if (!json_element.component) {
                             console.log("Unknown json");
                             continue;
                         }
                         
                         var component_found = false;
                         for (var i = 0; i < lz.queue.length; i++) {
                             
                             var item = lz.queue[i];
                             if (item.component == json_element.component) {
                                 
                                 if ((!item.id && !json_element.id) || 
                                     item.id == json_element.id) 
                                 {
                                     if (item.target) {
                                         
                                         var element = $('#' + item.target)[0];
                                         if (element) {
                                             element.innerHTML = json_element.json;
                                         }
                                     } else if (item.success) {
                                         item.success(json_element.json, item.id);
                                     }
                                     component_found = true;
                                     break;
                                 }
                             }
                         }
                         if (!component_found) {
                            console.log("Unknown component: " + json_element.component);
                         }
                     }
                     if (typeof(finalize) == 'function') {
						 console.log('Lizard function');
                         return finalize(config);
                     }
					 console.log('Lizard true');
                     return true;
                  }
              });
          }
      };
  }
})(jQuery);

var MegasoftOpenads = (function($){

    return function(config) {

        if (!config.files || !config.adimage || !config.adclick) {
            return false;
        }

        return {

            canPlayFlash: function() {

                var nav  = navigator;
                var mime = 'application/x-shockwave-flash';
                var plugin = ((nav.mimeTypes && nav.mimeTypes[mime]) 
                    ? nav.mimeTypes[mime].enabledPlugin : 0);

                if (plugin) 
                {
                    return true;
                }
                else if (nav.userAgent && 
                     nav.userAgent.indexOf("MSIE") >= 0 && 
                    (nav.appVersion.indexOf("Win") != -1))
                {
                     var flashObj = null;
                     try
                     {
                        flashObj = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); 
                        return true;
                     } 
                     catch (ex)
                     {
                        return false;
                     }
                }
                return false;
            },

            showBanner: function(banner, target) {

                if (!banner) {
                    return false;
                }

                if (!target || target.length <= 0) {
                    return false;
                }

				if(banner.content == 'html')
				{
					if(this.showHtmlBanner(banner, target))
					{
						return true;
                    } 
					else if (banner.stub.length > 0) 
					{
                        banner.storage = '';
                        return this.showFlashBannerStub(banner, target);
                    }

                    return true;
				}

                if (banner.content == 'swf')
                {
                    if (this.canPlayFlash()) {
                        return this.showFlashBanner(banner, target);
                    } else if (banner.stub.length > 0) {
                        banner.storage = '';
                        return this.showFlashBannerStub(banner, target);
                    } else {
                        return true;
                    }
                } 
                else if (banner.content == 'html5') 
                {
                    if (1) { // global variable from swiffy api
                        return this.showHtml5Banner(banner, target);
                    } else if (banner.stub.length > 0) {
                        banner.storage = '';
                        return this.showFlashBannerStub(banner, target);
                    } else {
                        return true;
                    }
                } 
                else if (banner.content == 'html5gwd') 
                {
                    if (1) { // global variable from swiffy api
                        return this.showHtml5gwdBanner(banner, target);
                    } else if (banner.stub.length > 0) {
                        banner.storage = '';
                        return this.showFlashBannerStub(banner, target);
                    } else {
                        return true;
                    }
                }
                else if ( banner.content == 'gif' || 
                            banner.content == 'jpeg' || 
                            banner.content == 'png') 
                {
                    return this.showImageBanner(banner, target);
                } 
                else 
                {
                    return false;
                }
            },

            showHtmlBanner: function(banner, target) {				
                var adclick = config.adclick + '?bannerid=' + banner.id + 
                    '&zoneid=' + banner.zone + '&source=&dest=' + 
                    escape(banner.url);

                var container = $('<div></div>');
                container.css({width:banner.width, height: banner.height});
				ob = $(banner.htmltemplate);
				container.append(ob);
				target.append(container);
                return true;
            },

            showHtml5Banner: function(banner, target) {

                var adclick = config.adclick + '?bannerid=' + banner.id + 
                    '&zoneid=' + banner.zone + '&source=&dest=' + 
                    escape(banner.url);
				console.log('banner:');
				console.log(banner);
				console.log('htmlTemplate: '+banner.htmltemplate)	
                var json = $.parseJSON(banner.htmltemplate);
				console.log('Parsed json: ' + json);
                var a = $('<a></a>').attr({href: adclick}).attr({target: banner.target});
                var container = $('<div></div>');
                container.css({width:banner.width, height: banner.height});
                a.append(container);
                target.append(a);
                var stage = new swiffy.Stage(container[0], json, {});
                stage.start();
                return true;
            },

          showHtml5gwdBanner: function(banner, target) {
                var adclick = config.adclick + '?bannerid=' + banner.id + 
                    '&zoneid=' + banner.zone + '&source=&dest=' + 
                    escape(banner.url);

				console.log('banner:');
				console.log(banner);

                var container = $('<div></div>');
                var container_frame = $(banner.htmlcache);
                //var a = $('<a></a>').attr({href: adclick}).attr({target: banner.target}).css({width:banner.width, height: banner.height, position:'absolute', display:'inline-block', left:0 });

                container.append(container_frame);
                //container.append(a);

                target.append(container);

                return true;
            },

            showFlashBanner: function (banner, target) {

                var click = config.adclick + '?bannerid=' + banner.id + 
                    '&zoneid=' + banner.zone + '&source=&dest=' + banner.url + 
                    '&atar1=' + banner.target;
                var url = ((banner.storage == 'sql') 
                    ? config.adimage + '?filename=' + banner.file + '&contenttype=' + 
                      banner.content + '&alink1=' + escape(click)
                    : config.files + banner.file + '?alink1=' + escape(click));
				var object = $('<object></object>')
                    .attr({classid: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'})
                    .attr({codebase: 'http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'})
                    .attr({width: banner.width})
                    .attr({height: banner.height})
                    .append($('<param>').attr({name: 'movie'}).attr({value: url}))
                    .append($('<param>').attr({name: 'quality'}).attr({value: 'high'}))
                    .append($('<param>').attr({name: 'allowScriptAccess'}).attr({value: 'always'}));
				var embed = $('<embed></embed>')
                        .attr({src: url})
                        .attr({quality: 'high'})
                        .attr({width: banner.width})
                        .attr({height: banner.height})
                        .attr({type: 'application/x-shockwave-flash'})
                        .attr({pluginspace: 'http://www.adobe.com/go/getflashplayer'})
                        .attr({allowScriptAccess: 'always'});
				if (window.navigator.userAgent.indexOf('MSIE ')!=-1){
					target.append(embed);
				}else{
					object.append(embed);
					target.append(object);
				}
                
				
                if (banner.append.length > 0) {
                    target.append($(banner.append));
                }
                return true;
            },

            showFlashBannerStub: function (banner, target) {

                banner.file = banner.stub; 
                return this.showImageBanner(banner, target);
            },

            showImageBanner: function (banner, target) {
				if (!banner.htmlcache) {
					var url = ((banner.storage == 'sql') 
						? config.adimage + '?filename=' + banner.file + 
						  '&contenttype=' + banner.content
						: config.files + banner.file);
					var adclick = config.adclick + '?bannerid=' + banner.id + 
						'&zoneid=' + banner.zone + '&source=&dest=' + 
						escape(banner.url);

					target.append(
						$('<a></a>')
						.attr({href: adclick})
						.attr({target: banner.target})
						.append(
							$('<img>')
							.attr({src: url})
							.attr({width: banner.width})
							.attr({height: banner.height})
							.attr({alt: banner.alt})
							.attr({title: banner.alt})
							.attr({border: 0})
						)
					);
					if (banner.append.length > 0) {
						target.append($(banner.append));
					}
					return true;
				}
				
				target[0].innerHTML = banner.htmlcache;
				try {
					let re = /<script>(.+)<\/script>/is;
					let found = banner.htmlcache.match(re);
					if ( found[1] ) {
                        let js = found[1].replace('<script>', '');
                        js = js.replace('</script>', '')
                        //console.log(js);
						let script = document.createElement('script');
						script.innerHTML = js;
						document.body.appendChild(script);
					}
				} catch(err) {
					console.error(err);
				}
				
                return true;

				/*
                var url = ((banner.storage == 'sql') 
                    ? config.adimage + '?filename=' + banner.file + 
                      '&contenttype=' + banner.content
                    : config.files + banner.file);
                var adclick = config.adclick + '?bannerid=' + banner.id + 
                    '&zoneid=' + banner.zone + '&source=&dest=' + 
                    escape(banner.url);

                target.append(
                    $('<a></a>')
                    .attr({href: adclick})
                    .attr({target: banner.target})
                    .append(
                        $('<img>')
                        .attr({src: url})
                        .attr({width: banner.width})
                        .attr({height: banner.height})
                        .attr({alt: banner.alt})
                        .attr({title: banner.alt})
                        .attr({border: 0})
                    )
                );
                if (banner.append.length > 0) {
                    target.append($(banner.append));
                }
                return true;
				*/
            }
        }
    }
})(jQuery);


var LizardBanners = (function($){

    return function(config) {
        
        if (!config.mops) {
            // "mops" is MegasoftOpenads object. See showbanner.js
            return false;
        }
        
        return {
            
            views: [],
            
            processJsonError: function(json, id) {
                if (json.error) {
                    console.log('Ошибка при загрузке баннера для зоны ' + id + ' ' + json.error);
                } else {
                    console.log('Ошибка в структуре JSON при загрузке баннера для зоны' + id);
                    console.log(json);
                }
            },
            
            renderRegularBanner: function(json, id, name) {

                if (!json.banner) {
                    this.processJsonError(json, id);
                } else {
                    console.log('Баннер для зоны ' + id + ' загружен');
                    if(!config.mops.showBanner(json.banner, $('#regular_banner_' + name))) {						
                        console.log('Ошибка в структуре баннера для зоны ' + id);
                    } else {
                        this.views.push({id: json.banner.id, zone: id});
                    }
                }
            },
            
            renderTargetedBannersAtBoardListPage: function(json, id, size) {
                
                var i, target, pos, banner, tr, trAfter;
                if (!json.banners) {
                    this.processJsonError(json, id);
                } else {

                    for (i = 0; i < size; i++ ) {

                        pos = i - size;
                        banner = json.banners[pos];
                        if (banner) {
                            target = $('#targeted_banner_' + i);
                            if (target) {
                                if (!config.mops.showBanner(banner, target)) {
                                    console.log('Ошибка в структуре баннера');
                                    console.log(banner);
                                } else {
                                    this.views.push({id: banner.id, zone: id});
                                    tr = $('#targeted_banner_tr_' + i);
                                    trAfter = $('#targeted_banner_tr_after_' + i);
                                    if (tr) { tr.css({'display':''}); }
                                    if (trAfter) { trAfter.css({'display':''}); }
                                }
                            }
                        }
                    }
                }
            },
            
            renderSmallTargetedBannersAtBoardListPage: function(json, id, size) {

                var target, i, pos, banner, container, row;
                if (!json.banners) {
                    this.processJsonError(json, id);
                } else {
                    
                    container = $('<table></table>');
                    container.attr({align: 'center'});
                    container.attr({border: '0'});
                    container.attr({cellspacing: '0'});
                    container.attr({cellpadding: '2'});
                    
                    row = $('<tr></tr>');
                    for (i = 0; i < size; i++ ) {

                        pos = i - size;
                        banner = json.banners[pos];
                        if (banner) {

                            target = $('<td></td>');
                            if (config.mops.showBanner(banner, target)) {
                                row.append(target);
                                this.views.push({id: banner.id, zone: id});
                            } else {
                                console.log('Ошибка в структуре баннера');
                                console.log(banner);
                            }
                        }
                    }
                    container.append(row);
                    $('#small_targeted_banners').append(container);
                }
            },
            
            renderSmallTargetedBannersAtBoardOnePage: function(json, id, size) {
                
                var target, i, pos, banner, container, row;
                if (!json.banners) {
                    this.processJsonError(json, id);
                } else {
                    
                    container = $('<table></table>');
                    container.attr({align: 'center'});
                    container.attr({border: '0'});
                    container.attr({cellspacing: '0'});
                    container.attr({cellpadding: '2'});

                    for (i = 0; i < size; i++ ) {

                        pos = i - size;
                        banner = json.banners[pos];
                        if (banner) {

                            target = $('<td></td>');
                            if (config.mops.showBanner(banner, target)) {
                                row = $('<tr></tr>');
                                row.append(target);
                                container.append(row);
                                this.views.push({id: banner.id, zone: id});
                            } else {
                                console.log('Ошибка в структуре баннера');
                                console.log(banner);
                            }
                        }
                    }
                    $('#small_targeted_banners').append(container);
                }
            },
            
            renderTargetedBannersAtBoardOnePage: function(json, id, size) {
                
                var i, target, pos, banner, j, that;
                if (!json.banners) {
                    this.processJsonError(json, id);
                } else {
                    
                    i = 0;
                    that = this;
                    $('*[name=targeted_banner]').each(function(idx, target) {
                        
                        var banner;
                        pos = i - size;
                        banner = json.banners[pos];
                        i++;
                        if (banner) {
                            if (!config.mops.showBanner(banner, $(target))) {
                                console.log('Ошибка в структуре баннера');
                                console.log(banner);
                            } else {
                                that.views.push({id: banner.id, zone: id});
                            }
                        }
                    });

                    target = $('#targeted_banners');
                    for (j = i; j < size; j++ ) {
                        pos = j - size;
                        banner = json.banners[pos];
                        if (banner) {
                            if (!config.mops.showBanner(banner, target)) {
                                console.log('Ошибка в структуре баннера');
                                console.log(banner);
                            } else {
                                this.views.push({id: banner.id, zone: id});
                            }
                        }
                    }
                }
            }
            
        };
    }
})(jQuery);

