
var runner = null;
var Els = {};
var LoginOpen = false;

  Ext.onReady(function() {

  Ext.QuickTips.init();
   if(Ext.isIE6){
	 Ext.fly('logo').first('div').first('img').remove();
	 Ext.fly('logo').first('div').insertHtml('afterBegin', "ПОЗИТИК");
   }

   var phoneBackBtn = Ext.get("cm_click");
   if(phoneBackBtn){
     phoneBackBtn.on('click', function(ev) {
       var phoneBack = Ext.get("cm_phone");
       callPhoneAJAX(phoneBack.dom.value);
     })
   }

   checkURLParams();
   
   checkDownloadURL();
   checkDownloadTab();
   
   if(pos_joomla_name)
   moveValueToID(pos_joomla_name, "feedback-name");
   if(pos_joomla_email)
   moveValueToID(pos_joomla_email, "feedback-email");   
  
  
   
   var subscribeSubmit = Ext.get("subscribe-submit");
   if(subscribeSubmit){
     Ext.fly("subscribe-p1").on('click', function(ev) {
       subscribeSubmit.dom.disabled = false;
     });
     subscribeSubmit.on('click', function(ev) {
       var subscribep1 = Ext.get("subscribe-p1");
       
	  Ext.Ajax.request({
	    url: '/scripts/form-subscribe.php',
	    success: function(res){
	      var Result = Ext.decode(res.responseText);
          if(Result.mess){
		      if(subscribep1.dom.checked){
		        alert("Вы успешно подписались на рассылку новостей.");
		      }else{
	  	        alert("Вы отписаны от рассылки новостей.");
		      }
		      subscribeSubmit.dom.disabled = true;
          }
	    },
	    failure: function(){
	    },
	    params: { subscribe: subscribep1.dom.checked?1:0 }
	  });
       
       
     })
   }
   
   
   
  	  doActiveMenu();
  	  
 	  
   Ext.select('.tab-buttons-panel').on('click', function(e, t) {
       Ext.get(t).radioClass('tab-show');
       Ext.get('content' + t.id.slice(-1)).radioClass('tab-content-show');
   }, null, {delegate: 'li'});
   
  	  
//return;  	  
  	  var isFront = fp.initEls();
/*  	  
      new Ext.ux.Menu('id-menuSite', {
          transitionType: 'slide',
          direction: 'horizontal', // default
          delay: 0.2,              // default
          autoWidth: true,         // default
          transitionDuration: 0.3, // default
          animate: true,           // default
          currentClass: 'current'  // default
      });

  	  Els.Overlay = Ext.DomHelper.append(document.body, {
	    id: 'pos-body-overlay'
	  }, true);
	  Els.Overlay.setHeight(Ext.get(document.body).getHeight());
	  Els.Overlay.setWidth(Ext.get(document.body).getWidth());	

      Ext.fly('north').fadeIn();
      
      if(Ext.fly('login'))
	    Ext.fly('login').on('click', function(ev) {
	    	if(LoginOpen) return;
	  		var l = Ext.get('login');
	  		l.fadeOut();

	  		Els.Overlay.fadeIn({
			    endOpacity: 0.7, //can be any value between 0 and 1 (e.g. .5)	
			    easing: 'easeOut',
			    duration: .5
			});

	  		
	  		var lp = Ext.get('form-login').up('div'); //Ext.get('loginpage');
	  		var lpWidth = 300;
	  		lp.setX( (920 /2 )- lpWidth / 2);
	  		lp.setY(l.getY()+50);
	  		lp.fadeIn();
	  		LoginOpen = true;
	  		return(true)
        }, this);
      if(Ext.fly('buttonClose'))
	    Ext.fly('buttonClose').on('click', function(ev) {
	    	if(!LoginOpen) return;
	  		var l = Ext.get('login');
	  		l.fadeIn();
	  		
	  		var lp = Ext.get('form-login').up('div'); //Ext.get('loginpage');
	  		lp.fadeOut();
	  		Els.Overlay.fadeOut();
	  		LoginOpen = false;
	  		return(true)
        }, this);
      
*/   
     
        
      if(Ext.fly('html-example')){
	      new Ext.ux.Carousel('html-example', {
	          itemSelector: 'div.item',
	          interval: 10,
	          autoPlay: true,
	          transitionEasing: 'easeIn'                 
	      });
	      
      }

/*      
      if(isFront){
		  runner = new Ext.util.TaskRunner();
		  Ext.fly('rec1').on('mouseover', function(ev) {
				if(!fp.a1Over){ 
				  fp.a1Over = true;
				  fp.resetState();
			      runner.start(fp);
				}
	        }, this); 
		  Ext.fly('rec1').on('mouseout', function(ev) {
		  		if(fp.a1Over){
		  		  runner.stop(fp);
				  fp.a1Over = false;
				  setTimeout("fp.resetState();", 500);
		  		}
	        }, this);
		  Ext.fly('rec2').on('mouseover', function(ev) {
				if(!fp.a2Over){ 
				  fp.a2Over = true;
				  fp.resetState();
			      runner.start(fp);
				}
	        }, this); 
		  Ext.fly('rec2').on('mouseout', function(ev) {
		  		if(fp.a2Over){
		  		  runner.stop(fp);
				  fp.a2Over = false;
				  setTimeout("fp.resetState();", 500);
		  		}
	        }, this);
		  Ext.fly('rec3').on('mouseover', function(ev) {
				if(!fp.a3Over){ 
				  fp.a3Over = true;
				  fp.resetState();
			      runner.start(fp);
				}
	        }, this); 
		  Ext.fly('rec3').on('mouseout', function(ev) {
		  		if(fp.a3Over){
		  		  runner.stop(fp);
				  fp.a3Over = false;
				  setTimeout("fp.resetState();", 500);
		  		}
	        }, this);
		  Ext.fly('recplus').on('mouseover', function(ev) {
				Ext.fly('recplus').fadeIn();
	        }, this); 

	        
      }
*/      
  });


var fp = {
    state: -10,
    stopped: true,
    Els: [],
    doIt: false,
    a1Over : false,
    a2Over : false,
    a3Over : false,
    initEls : function(){
	   this.Els.a1 = Ext.get('rec1_1');
	   this.doIt = this.Els.a1?true:false;
	   if(!this.doIt) return(this.doIt);
	   this.Els.a2 = Ext.get('rec1_2');
	   this.Els.a3 = Ext.get('rec1_3');
	   this.Els.a11 = Ext.get('rec2_1');
	   this.Els.a22 = Ext.get('rec2_2');
	   this.Els.a33 = Ext.get('rec2_3');
	   this.Els.a111 = Ext.get('rec3_1');
	   this.Els.a112 = Ext.get('rec3_2');
	   
	   return(this.doIt);
    },
    doVisibleAll: function(){
    	for(var i in this.Els){
    	  try{
    	    this.Els[i].setVisible(true);
    	  }catch(e){}
    	}
    },
    resetState: function(){
    	this.state = -10;
    	this.doVisibleAll();
    },
    run: function(){
 
	   this.state++;
	   switch(this.state){
	   case 0:
		if(this.a1Over) this.Els.a3.fadeOut();
		if(this.a2Over) this.Els.a33.fadeOut();
		if(this.a3Over) this.Els.a112.fadeIn();
		break;
	   case 3:
		if(this.a1Over)this.Els.a2.fadeOut();
		if(this.a2Over) this.Els.a22.fadeOut();
		break;
	   case 6:
		if(this.a1Over)this.Els.a1.fadeOut();
		if(this.a2Over) this.Els.a11.fadeOut();
		break;
	   case 10:
		if(this.a1Over)this.Els.a1.fadeIn();
		if(this.a2Over) this.Els.a11.fadeIn();
		
		break;
	   case 13:
		if(this.a1Over)this.Els.a2.fadeIn();
		if(this.a2Over) this.Els.a22.fadeIn();
		break;
	   case 16:
		if(this.a1Over)this.Els.a3.fadeIn();
		if(this.a2Over) this.Els.a33.fadeIn();
		break;					
	   case 40:
	     if(this.a3Over) this.Els.a112.fadeOut();
		this.state = -1;
		break;
	   }
    },
    interval: 100 // every 30 seconds
};

function doActiveMenu(){
	var r = document.location.pathname;
	var ans = Ext.select('a[href='+r+']');
	ans.each(function(item) {
	  if(!item.hasClass('contentpagetitle') && !item.hasClass('pathway'))
	    item.toggleClass('aselect');
	});
	r = r.replace(/\/([^\/]+\.)/gi,'.');
	var ans = Ext.select('a[href='+r+']');
	ans.each(function(item) {
	  if(!item.hasClass('pathway'))
	    item.toggleClass('aselect');
	});
	r = r.replace(/\/([^\/]+\.)/gi,'.');
	var ans = Ext.select('a[href='+r+']');
	ans.each(function(item) {
	  if(!item.hasClass('pathway'))
	    item.toggleClass('aselect');
	});

}

var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
function ControlVersion()
{
	var version;
	var axo;
	var e;
	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}
	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";
			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";
			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}
// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];
        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }
  document.write(str);
}
function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    
    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}


function callPhoneAJAX(phoneNo){
  Ext.Ajax.request({
    url: '/scripts/form-phone.php',
    success: function(){
      Ext.DomHelper.overwrite(Ext.get("phone-back"), "Спасибо!<br>Мы перезвоним Вам<br>в ближайшее время<br>по телефону: <b>"+phoneNo+"</b>");
      alert("Мы перезвоним Вам в ближайшее время по телефону: "+phoneNo);
    },
    failure: function(){
    },
    params: { phone: phoneNo }
  });
}

function getURLParams(){
	par = document.location.search.replace("\?","");
	if(par){
		par = Ext.urlDecode(par);
		if(par){
			return(par)
		}
	}
}

function moveParamsToID(paramName, ID){
   var elEdit = Ext.get(ID);
   if(elEdit){
     par = getURLParams();
     if(par){
         elEdit.dom.value = par[paramName];
         if(par[paramName]) return(true)
     }
   }
   return(false)
}

function moveValueToID(value, ID){
   var elEdit = Ext.get(ID);
   if(elEdit){
         elEdit.dom.value = value;
         return(true)
   }
   return(false)
}

function setEventOnID(eventName, ID, doFunc){
   var el = Ext.get(ID);
   if(el){
     el.on(eventName, function(ev) {
       doFunc(ev);
     })
   }
}

//<script type="text/javascript">setHighSlideSettings();</script>

setHighSlideSettings();

function setHighSlideSettings(){

  if(typeof(hs)=="undefined") return;
  hs.lang.creditsText = 'ООО "Позитик"';
  hs.lang.creditsTitle = "";
  hs.lang.number = "Картинка %1 из %2";
  hs.lang.restoreTitle = 'Используйте клавиши "Влево" и "Вправо" для навигации. Кликните на картинку для закрытия.'
  hs.lang.loadingText = 'Загружаем...';
  hs.lang.loadingTitle = 'Загрузка';
  
	hs.lang.focusTitle = 'Кликните, чтобы поместить сверху';
	hs.lang.fullExpandTitle = 'Исходный размер картинки (f)';
	hs.lang.previousText = 'Предыдущая';
	hs.lang.nextText = 'Следующая'; 
	hs.lang.moveText = 'Переместить';
	hs.lang.closeText = 'Закрыть'; 
	hs.lang.closeTitle = 'Закрыть (esc)'; 
	hs.lang.resizeTitle = 'Изменить размер';
	hs.lang.playText = 'Запуск';
	hs.lang.playTitle = 'Запустить слайды (пробел)';
	hs.lang.pauseText = 'Пауза';
	hs.lang.pauseTitle = 'Остановить слайды (пробел)';
	hs.lang.previousTitle = 'Предыдущая (стрелка влево)';
	hs.lang.nextTitle = 'Следующая (стрелка вправо)';
	hs.lang.moveTitle = 'Переместить';
	hs.lang.fullExpandText = '1:1';
  
  
  
  
  hs.creditsHref = "http://www.positic.ru";  
  hs.graphicsDir = "/highslide/graphics/";
  hs.zIndexCounter = 200000;
  
}


/*
lang : {
	cssDirection: 'ltr',
	loadingText : 'Loading...',
	loadingTitle : 'Click to cancel',
	focusTitle : 'Click to bring to front',
	fullExpandTitle : 'Expand to actual size (f)',
	creditsText : 'Powered by <i>Highslide JS</i>',
	creditsTitle : 'Go to the Highslide JS homepage',
	previousText : 'Previous',
	nextText : 'Next', 
	moveText : 'Move',
	closeText : 'Close', 
	closeTitle : 'Close (esc)', 
	resizeTitle : 'Resize',
	playText : 'Play',
	playTitle : 'Play slideshow (spacebar)',
	pauseText : 'Pause',
	pauseTitle : 'Pause slideshow (spacebar)',
	previousTitle : 'Previous (arrow left)',
	nextTitle : 'Next (arrow right)',
	moveTitle : 'Move',
	fullExpandText : '1:1',
	number: 'Image %1 of %2',
	restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.'
}*/


/*

Usage:
string Ext.util.MD5 ( string str [, bool raw_output ][, bool hexcase ][, number charset {8(ASCII):16(UNICODE)} ] )

[code]
var MD5Hash = Ext.util.MD5("testtext"); //returns 0ea2d99c9848117666c38abce16bb43e
var MD5Hash = Ext.util.MD5("testtext",false,true); //returns 0EA2D99C9848117666C38ABCE16BB43E
var MD5Hash = Ext.util.MD5("testtext",true); //returns binary string

*/


function MD5(s,raw,hexcase,chrsz) {
	raw = raw || false;	
	hexcase = hexcase || false;
	chrsz = chrsz || 8;

	function safe_add(x, y){
		var lsw = (x & 0xFFFF) + (y & 0xFFFF);
		var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
		return (msw << 16) | (lsw & 0xFFFF);
	}
	function bit_rol(num, cnt){
		return (num << cnt) | (num >>> (32 - cnt));
	}
	function md5_cmn(q, a, b, x, s, t){
		return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
	}
	function md5_ff(a, b, c, d, x, s, t){
		return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
	}
	function md5_gg(a, b, c, d, x, s, t){
		return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
	}
	function md5_hh(a, b, c, d, x, s, t){
		return md5_cmn(b ^ c ^ d, a, b, x, s, t);
	}
	function md5_ii(a, b, c, d, x, s, t){
		return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
	}

	function core_md5(x, len){
		x[len >> 5] |= 0x80 << ((len) % 32);
		x[(((len + 64) >>> 9) << 4) + 14] = len;
		var a =  1732584193;
		var b = -271733879;
		var c = -1732584194;
		var d =  271733878;
		for(var i = 0; i < x.length; i += 16){
			var olda = a;
			var oldb = b;
			var oldc = c;
			var oldd = d;
			a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
			d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
			c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
			b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
			a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
			d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
			c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
			b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
			a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
			d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
			c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
			b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
			a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
			d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
			c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
			b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
			a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
			d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
			c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
			b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
			a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
			d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
			c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
			b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
			a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
			d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
			c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
			b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
			a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
			d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
			c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
			b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
			a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
			d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
			c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
			b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
			a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
			d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
			c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
			b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
			a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
			d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
			c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
			b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
			a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
			d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
			c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
			b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
			a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
			d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
			c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
			b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
			a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
			d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
			c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
			b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
			a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
			d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
			c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
			b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
			a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
			d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
			c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
			b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
			a = safe_add(a, olda);
			b = safe_add(b, oldb);
			c = safe_add(c, oldc);
			d = safe_add(d, oldd);
		}
		return [a, b, c, d];
	}
	function str2binl(str){
		var bin = [];
		var mask = (1 << chrsz) - 1;
		for(var i = 0; i < str.length * chrsz; i += chrsz) {
			bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
		}
		return bin;
	}
	function binl2str(bin){
		var str = "";
		var mask = (1 << chrsz) - 1;
		for(var i = 0; i < bin.length * 32; i += chrsz) {
			str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
		}
		return str;
	}
	
	function binl2hex(binarray){
		var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
		var str = "";
		for(var i = 0; i < binarray.length * 4; i++) {
			str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
		}
		return str;
	}
	return (raw ? binl2str(core_md5(str2binl(s), s.length * chrsz)) : binl2hex(core_md5(str2binl(s), s.length * chrsz))	);
};


/*

var myencodedstring = Ext.util.base64.encode("Testtext"); //returns VGVzdHRleHQ=
var mydecodedstring = Ext.util.base64.decode("VGVzdHRleHQ="); //returns Testtext 

*/

Ext.util.base64 = {

    base64s : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
    
    encode: function(decStr){
        if (typeof btoa === 'function') {
             return btoa(decStr);            
        }
        var base64s = this.base64s;
        var bits;
        var dual;
        var i = 0;
        var encOut = "";
        while(decStr.length >= i + 3){
            bits = (decStr.charCodeAt(i++) & 0xff) <<16 | (decStr.charCodeAt(i++) & 0xff) <<8 | decStr.charCodeAt(i++) & 0xff;
            encOut += base64s.charAt((bits & 0x00fc0000) >>18) + base64s.charAt((bits & 0x0003f000) >>12) + base64s.charAt((bits & 0x00000fc0) >> 6) + base64s.charAt((bits & 0x0000003f));
        }
        if(decStr.length -i > 0 && decStr.length -i < 3){
            dual = Boolean(decStr.length -i -1);
            bits = ((decStr.charCodeAt(i++) & 0xff) <<16) |    (dual ? (decStr.charCodeAt(i) & 0xff) <<8 : 0);
            encOut += base64s.charAt((bits & 0x00fc0000) >>18) + base64s.charAt((bits & 0x0003f000) >>12) + (dual ? base64s.charAt((bits & 0x00000fc0) >>6) : '=') + '=';
        }
        return(encOut);
    },
    
    decode: function(encStr){
        if (typeof atob === 'function') {
            return atob(encStr); 
        }
        var base64s = this.base64s;        
        var bits;
        var decOut = "";
        var i = 0;
        for(; i<encStr.length; i += 4){
            bits = (base64s.indexOf(encStr.charAt(i)) & 0xff) <<18 | (base64s.indexOf(encStr.charAt(i +1)) & 0xff) <<12 | (base64s.indexOf(encStr.charAt(i +2)) & 0xff) << 6 | base64s.indexOf(encStr.charAt(i +3)) & 0xff;
            decOut += String.fromCharCode((bits & 0xff0000) >>16, (bits & 0xff00) >>8, bits & 0xff);
        }
        if(encStr.charCodeAt(i -2) == 61){
            return(decOut.substring(0, decOut.length -2));
        }
        else if(encStr.charCodeAt(i -1) == 61){
            return(decOut.substring(0, decOut.length -1));
        }
        else {
            return(decOut);
        }
    }

}; 


function checkURLParams(){

   moveParamsToID("email", "email");
   var par = getURLParams();
   if(par){
     if(par.linf){
       var linf = Ext.util.base64.decode(par.linf);
       if(linf){
         var ml = linf.split("|");
         if(ml.length>1){
           moveValueToID(ml[0], "modlgn_username");
           moveValueToID(ml[1], "modlgn_passwd");
		   if(Ext.fly("modlgn_passwd")){
		     btn = Ext.fly("modlgn_submit");
		     if(btn) btn.dom.click();
		   }           
         }
       }
     }
   }   
}

function checkDownloadURL(){
  var dnlEls = Ext.query('a.download');
  dnlEls.each(function(item) {
    item.onclick = clickDownload;
  });
}

var winDownload = false;

function clickDownload(p1, force){

  if(force){
    return (true);
  }
  if(winDownload){
    return(false);
  }
  var refDownload = this;
  
  var formPan = new Ext.FormPanel({
                	formId: 'formInfo',
			        labelWidth: 200, // label settings here cascade unless overridden
			        frame:true,
			        defaults: {width: 200},
			        defaultType: 'textfield',
			        monitorValid: true,
			        defaults: {
			            anchor: '95%',
			            allowBlank: false,
			            selectOnFocus: true,
			            msgTarget: 'side'
			        },
                    listeners: {
                        clientvalidation: function(FormPanel, valid) {
                            Ext.getCmp("okButton").setDisabled(!valid);
                        }
                    },
			        
			        items: [
										{
							                fieldLabel: 'Ваше имя (имя компании)',
							                name: 'name',
							                blankText: 'Пожалуйста, введите свое имя или имя компании.'
							            },{
							                fieldLabel: 'Электронная почта (EMail)',
							                name: 'email',
							                vtype:'email',
							                blankText: 'Пожалуйста, введите адрес электронной почты.'
							            }
			        		]
                });
  
  var win = new Ext.Window({
//                applyTo:'hello-win',
				title: 'Введите информацию для скачивания файла',
                layout:'fit',
                resizable: false,
                width:500,
                height:145,
//                closeAction:'hide',
//                modal: true,
//                plain: true,

                items: formPan,
                
        buttons: [{
        	id: 'okButton',
            text:'<b>Скачать файл</b>',
            disabled:false,
            height:30,
            handler: function(){
                sendPositicEvent(refDownload.id, formPan.getForm().getFieldValues());
                win.close();                
                document.location.href = refDownload.href;
            }
        },{
            text: 'Отмена (Esc)',
            height:30,
            handler: function(){
                win.close();
            }
        }],
        listeners:{
        	close: function(w){
        		winDownload = false;
        	}
        }
        
    });
  winDownload = true;
  win.show(this);


  return false;
}

function sendPositicEvent(eventName, data){

   pageTracker._trackPageview('event-'+eventName);

	Ext.Ajax.request({
		url: '/scripts/send-event.php',
		success: function(res){
		},
		failure: function(){
		},
		params: {
				eventname: eventName,
				data: Ext.util.JSON.encode(data)
		}
	});

}

function checkDownloadTab(){
return;
	if(!Ext.fly('order-tabs')) return;
	
    var tabs = new Ext.TabPanel({
        renderTo: 'order-tabs',
        width:650,
//        autoWidth: true,
        activeTab: 0,
        frame:true,
        plain:true,
        defaults:{autoHeight: true},
        items:[
            {contentEl:'order-site', title: 'Создание сайта'},
/*            {contentEl:'order-support', title: 'Поддержка сайта'},
            {contentEl:'order-adv', title: 'Продвижение и реклама сайта'},*/
            {contentEl:'order-soft', title: 'Заказ программного обеспечения'}
        ]
    });
}
