// ==UserScript==
// @name          logins by UnStoppable
// @description	  Скрипт сохраняющий логины в Local Storage
// @author        UnStoppable ( http://vkontakte.ru/neosvet )
// @download http://files.myopera.com/unstoppableman/files/logins_by_us.js
// @last_update 11.09.2010
// ==/UserScript==

(function() {
document.addEventListener('DOMContentLoaded', usloadlogins, false);
})();

function usloadlogins() {
  var objField=getFieldUS(false);
  if(objField)
    objField.setAttribute('onKeyPress', 'javascript: setTimeout(usaddlogins,100);');
}

function getFieldUS(bIndex) {
  var mFields=document.getElementsByTagName('input');
  for(var i=0;i<mFields.length;i++)
    if(mFields[i].outerHTML.match('type="password"')) {
	  do {
	    i--;
  	  } while(!mFields[i].outerHTML.match('type="text"'));
	  if(bIndex)
	    return i;	  
	  else
	    return mFields[i];
    }
  return null;	
}

function getPositionUS(e) {
    var left=0;
    var top=0;
    while(e.offsetParent) {
        left+=e.offsetLeft;
        top+=e.offsetTop;
        e=e.offsetParent;
    }
    left+=e.offsetLeft;
    top+=e.offsetTop;	
    return [left,top];
}

function usaddlogins() {
  var objField;
  if(!document.getElementById('uslogins'))
    objField=getFieldUS(false);
  else
    objField=document.getElementsByTagName('input')[uslogins.className];
  if(objField.value!='') {
  if(!document.getElementById('uslogins')) {
  var dl=document.createElement('div');
  var coords=getPositionUS(objField);
  dl.setAttribute('style','border:1px solid black!important;display:block;z-index:1000;position:absolute;left:'
  +coords[0]+'px;top:'+(coords[1]+objField.clientHeight)+'px;overflow:hidden;width:'
  +objField.clientWidth+'px;background-color:white;font-family:Arial;font-size:10pt;color:black;');
 dl.setAttribute('id','uslogins');
 dl.setAttribute('onMouseOver','document.getElementById("usfocus").className="true"');
 dl.setAttribute('onMouseOut','document.getElementById("usfocus").className="false"');
  document.body.insertBefore(dl, document.body.firstChild);
  } else {
    document.getElementById('uslogins').innerHTML='';
  }
  var n=0;
  var str=localStorage.getItem('logins_by_us');
  with(document.getElementById('uslogins')) {
    className=getFieldUS(true);  
    if(str) {
	  var sf=objField.value.toLowerCase();
      var mlog=str.split('|');
      for(var i=0;i<mlog.length;i++) {
	    if(mlog[i].toLowerCase().indexOf(sf)==0)
		  innerHTML+=uscrelogin(mlog[i],n++);
      } 	
    }
	innerHTML+='<div id="usfocus" onClick="usaddlogin(document.getElementsByTagName(\'input\')['+className+'].value);" onMouseOver="this.style.backgroundColor=\'#afdcfc\'" onMouseOut="this.style.backgroundColor=\'white\'" title="Добавить '+objField.value+'" style="cursor:pointer;text-align:center;">Добавить</div>'; 
  }	
  setTimeout(ushidelogins,3000);
  if(uslogins.style.display=='none')
    uslogins.style.display='block';
  } else if(document.getElementById('uslogins')) {
    uslogins.style.display='none';
  }
}

function ushidelogins() {
  if(uslogins.style.display!='none')
  if(document.getElementById('usfocus').className=='true')
    setTimeout(ushidelogins,3000);
  else
    uslogins.style.display='none';
}

function usaddlogin(login) {
  var str=localStorage.getItem('logins_by_us');
  var k=0;
  if(str) {
    k=str.split('|').length;
    str+='|'+login;
  } else
    str=login;
  localStorage.setItem('logins_by_us', str);
  usaddlogins();
}

function usdellogin(login) {
  var str=localStorage.getItem('logins_by_us');
  var mlog=str.split('|');
  str='';
    for(var i=0;i<mlog.length;i++)
      if(mlog[i]!=login) str+=mlog[i]+((i!=mlog.length-1) ? '|' : '');
  localStorage.setItem('logins_by_us',str);
  usaddlogins();
}

function uscrelogin(login,index) {
  return '<div onClick="document.getElementsByTagName(\'input\')['+uslogins.className+'].value=\''+login+'\'; uslogins.style.display=\'none\';" onMouseOver="this.style.backgroundColor=\'#afdcfc\'" onMouseOut="this.style.backgroundColor=\'white\'" title="Вставить '+login+'" style="width:500px;cursor:pointer;">'+login+
  '</div><div onClick="usdellogin(\''+login+'\');" onMouseOver="this.style.backgroundColor=\'#fa2d2d\'" onMouseOut="this.style.backgroundColor=\'white\'" title="Удалить '+login+'" style="position:absolute;top:'+((index==0) ? -1 : index*16)+'px;left:'+(parseInt(uslogins.style.width)-12)+'px;background-color:white;cursor:pointer;border:1px solid;padding-top:-5px;padding-left:2px;padding-right:2px;">x</div>';
}
