
var version='1.0 RC1 (20090106)';var logScroll=null;var alive=true;var cipher=null;var listItems=null;var listCacheGood=false;var types=null;var typesCacheGood=false;var yesNoReturn=null;var deleteItemStore=null;var panes=new Array();panes[0]='login';panes[1]='loading';panes[2]='about';panes[3]='help';panes[4]='item';panes[5]='signup';panes[6]='list';panes[7]='fatal';panes[8]='types';panes[9]='yesNo';panes[10]='type';panes[11]='print';panes[12]='generate';function initialize(){logScroll=new Fx.Scroll('log',{wait:false,transition:Fx.Transitions.Sine.easeIn});s_log(LANG_WELCOME+version+'',2);s_log(LANG_PLEASE_WAIT);s_log(LANG_CREATING_CIPHER_INTERFACE);try{cipher=new Cipher();}
catch(e){fatal(LANG_CIPHER_INTERFACE_FAILED+e);return;}
s_log(LANG_LOADING_CIPHER+"AES");try{cipher.current=new AES();}
catch(e){fatal(LANG_LOADING_CIPHER_FAILED+e);return;}
s_log(LANG_LOADING_CIPHER_SUCCESS,1);if(""!=getURLParam('pane'))
showPane(getURLParam('pane'));else
showPane('login');}
window.onload=initialize;function tosLaunch(){window.open('tos.htm','TermsOfService','menubar=0,resizable=0,status=0,width=400,height=600');}
function s_log(strLog,level,nobr,prebr){switch(level){default:case 0:level='#FFF';break;case 1:level='#0F0';break;case 2:level='#0AE';break;case 3:level='#F60';break;case 4:level='#FF0';break;case 5:level='#F00';break;case 6:level='#F52887';break;case 7:level='#7F00FF';break;case 8:level='#C9BE62';break;}
strLog='<span style="color: '+level+';">'+strLog+'</span>';(nobr==null)?nobr=false:nobr=nobr;if(!nobr)
strLog+='<br/>';(prebr==null)?prebr=false:prebr=prebr;if(prebr)
strLog='<br/>'+strLog;$('log').append(strLog);logScroll.toBottom();}
function padJSON(str){return str.replace(/,(?! )/g,', ');}
function getURLParam(name){name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS="[\\?&]"+name+"=([^&#]*)";var regex=new RegExp(regexS);var results=regex.exec(window.location.href);if(results==null)
return"";else
return results[1];}
function showNotify(color,message,timeout){(timeout==null)?timeout=4000:timeout=timeout;if(timeout==0)
message='<input type="button" value="Ok" onclick="clearNotify();" style="float: right; padding: 0px; font-size: 10px;"/>'+message+'<div style="clear: both;"></div>';switch(color){default:case'r':$('notify').setStyles({background:'#E00',color:'#FFF'}).setHTML(message);break;case'y':$('notify').setStyles({background:'#FF0',color:'#000'}).setHTML(message);break;case'g':$('notify').setStyles({background:'#0F0',color:'#000'}).setHTML(message);break;}
if(timeout!=0)
(function(){clearNotify();}).delay(timeout);}
function clearNotify(){$('notify').setStyles({background:'transparent',color:'#000'}).setHTML('&nbsp;');}
function toggleLog(){if($('log').style.display=='none'){$('logToggle').setHTML(LANG_HIDE_LOG);$('log').show();logScroll.toBottom();}
else{$('logToggle').setHTML(LANG_SHOW_LOG);$('log').hide();}}
function escapeString(str){regex=/\+/gi;return str.replace(regex,"%2B");}
function send(url,params,object){if(!alive)
return showPane('fatal');(object==null)?qstring=LANG_EMPTY_REQUEST:qstring=padJSON(JSON.encode(object));s_log(LANG_SENDING_XHR,3);s_log('&nbsp;&nbsp;- URL: '+url,3);s_log('&nbsp;&nbsp;- Q: '+qstring,3);params.url=url;params.data="data="+qstring;params.async=false;newRequest=new Request(params);newRequest.send();}
function warn(message){s_log(message,4);}
function fatal(message,object){s_log(message,5);alive=false;showPane('fatal');}
function showPane(pane){goodPane=false;for(x=0;x<panes.length&&!goodPane;x++)
if(pane==panes[x])
goodPane=true;if(goodPane){for(x=0;x<panes.length;x++)
$(panes[x]+'Pane').hide();$(pane+'Pane').show();}
else{warn(LANG_BAD_PANE);}}
function menuUpdate(){var menuString='<a href="javascript:loadList();">'+LANG_LIST_ITEMS+'</a> &raquo;'
+' <a href="javascript:createItem();">'+LANG_NEW_ITEM+'</a> &raquo;'
+' <a href="javascript:createType();">'+LANG_NEW_TYPE+'</a> &raquo;'
+' <a href="javascript:cpexport();">'+LANG_EXPORT+'</a> &raquo;'
+' <a href="signout.php">'+LANG_LOG_OUT+'</a> &raquo;';$('contextualMenu').setHTML(menuString);}
function yesNo(aBool){aBool=(aBool==null)?false:aBool;if(aBool){switch(yesNoReturn){case'deleteItem':reallyDeleteItem();break;}}
else{switch(yesNoReturn){default:loadList();break;}}}
function trimws(str){regex=/^ */gi;str=str.replace(regex,"");regex=/ *$/gi;return str.replace(regex,"");}
function getRandomIntInclusive(min,max){var now=new Date();return Math.round(Math.random(now.getSeconds())*(max-min))+min;}
function getRandomChar(symbol,caps,lower,number){if(!symbol&&!caps&&!lower&&!number)
return'x';while(1){switch(getRandomIntInclusive(0,3)){default:case 0:if(!caps)
break;return String.fromCharCode(getRandomIntInclusive(65,90));case 1:if(!lower)
break;return String.fromCharCode(getRandomIntInclusive(97,122));case 2:if(!number)
break;return String.fromCharCode(getRandomIntInclusive(48,57));case 3:if(!symbol)
break;switch(getRandomIntInclusive(0,3)){default:case 0:return String.fromCharCode(getRandomIntInclusive(33,47));case 1:return String.fromCharCode(getRandomIntInclusive(58,64));case 2:return String.fromCharCode(getRandomIntInclusive(91,96));case 3:return String.fromCharCode(getRandomIntInclusive(123,126));}}}}
function getRandomString(length,symbol,caps,lower,number){if(length<=0)
length=8;symbol=(typeof symbol=='undefined')?true:symbol;caps=(typeof caps=='undefined')?true:caps;lower=(typeof lower=='undefined')?true:lower;number=(typeof number=='undefined')?true:number;if(!symbol&&!caps&&!lower&&!number)
return'x';var retval='';for(i=0;i<length;++i)
retval+=getRandomChar(symbol,caps,lower,number);return retval;}
function getPasswordStrength(password){var points=password.length*3;if(points==0)
return 0;var count_all=password.length;var count_caps=0;var count_lower=0;var count_symbol=0;var count_digit=0;var count_wtf=0;for(i=0;i<count_all;++i){var val=password.charCodeAt(i);if(val>=63&&val<=90)
++count_caps;else if(val>=97&&val<=122)
++count_lower;else if(val>=48&&val<=57)
++count_digit;else if
((val>=33&&val<=47)||(val>=58&&val<=64)||(val>=91&&val<=96)||(val>=123&&val<=126))
++count_symbol;else
++count_wtf;}
var high_ratio=count_caps/(count_all-count_wtf);var low_ratio=high_ratio;var temp_ratio=count_lower/(count_all-count_wtf);if(temp_ratio>high_ratio)
high_ratio=temp_ratio;else if(temp_ratio<low_ratio)
low_ratio=temp_ratio;var difference=high_ratio-low_ratio;points+=(1-difference)*((count_all-count_wtf)*2);points+=(count_digit*3);points+=(count_symbol*5);points+=(count_wtf*10);return(points>100)?100:points;}
function greenToRedSlider(pts,max){if(pts==0||pts==NaN)
return"#FFFFFF";if(pts>max)
pts=max;var rgb=hsv2rgb(pts*0.9,80,80);for(i=0;i<3;++i)
rgb[i]=rgb[i].toString(16);var red=(rgb[0].length!=1)?rgb[0]:"0"+rgb[0];var green=(rgb[1].length!=1)?rgb[1]:"0"+rgb[1];var blue=(rgb[2].length!=1)?rgb[2]:"0"+rgb[2];return'#'+red+green+blue;}
function updateStrengthBox(em,strbid){var strength=getPasswordStrength(em.value);$(strbid).innerHTML=(0==strength||strength==NaN)?'<i>'+LANG_ENTER_PASSWORD+'</i>':LANG_STRENGTH+': '+strength;$(strbid).style.background=greenToRedSlider(strength,100);}
function hsv2rgb(hP,sP,vP){var h=null;var s=null;var v=null;if(hP instanceof Array){h=hP[0]||0;s=hP[1]||0;v=hP[2]||0;}
else{h=hP;s=sP;v=vP;}
if(h==360){h=0;}
s/=100;v/=100;var r=null;var g=null;var b=null;if(s==0){r=v;g=v;b=v;}
else{var hTemp=h/60;var i=Math.floor(hTemp);var f=hTemp-i;var p=v*(1-s);var q=v*(1-(s*f));var t=v*(1-(s*(1-f)));switch(i){case 0:r=v;g=t;b=p;break;case 1:r=q;g=v;b=p;break;case 2:r=p;g=v;b=t;break;case 3:r=p;g=q;b=v;break;case 4:r=t;g=p;b=v;break;case 5:r=v;g=p;b=q;break;}}
r=Math.round(r*255);g=Math.round(g*255);b=Math.round(b*255);return[r,g,b];};function login(){if(!alive)
return showPane('fatal');username=$F('username');password=$F('password');params={onFailure:function(){fatal(LANG_COMM_FAILURE);},onSuccess:function(response,responseXML){s_log('&nbsp;&nbsp;- A: '+padJSON(response),3);response=JSON.decode(response);if(response.login){clearNotify();s_log(LANG_LOGIN_SUCCESS,1);showPane('loading');menuUpdate();loadList();}
else{if(!response.error||response.error=='')
response.error='Invalid Credentials';cipher.reset();warn(LANG_LOGIN_FAILED+response.error);clearNotify();showNotify('r',LANG_LOGIN_FAILED+response.error,0);$('password').value='';}}}
s_log(LANG_LOGIN_ATTEMPT+username,0,false,true);if(username.length==0){showNotify('y',LANG_MISSING_USERNAME,0);warn(LANG_MISSING_USERNAME);return;}
try{cipher.setKey(password);}
catch(e){warn(e);return;}
try{checkhash=SHA256(username+":"+password);}
catch(e){s_log(e,4);return;}
try{send('response/login.php',params,{'username':username,'hash':checkhash});}
catch(e){s_log(e,4);return;}}
function loadList(){if(!alive)
return showPane('fatal');showPane('loading');params={onFailure:function(){fatal(LANG_COMM_FAILURE);},onSuccess:function(response,responseXML){s_log('&nbsp;&nbsp;- A: '+padJSON(response),3);s_log(LANG_ITEM_LIST_SUCCESS,1);listCacheGood=true;writeList(JSON.decode(response));}}
s_log(LANG_LOADING_ITEMS,0,false,true);if(!listCacheGood){try{send('response/loadItems.php',params);}
catch(e){s_log(e,4);return;}}
else
s_log(LANG_USING_CACHE,1);showPane('list');}
function writeList(lItems){if(!alive)
return showPane('fatal');if(lItems!=null){listItems=lItems;for(x=0;x<listItems.rows;x++){try{listItems[x].item_name=cipher.decode(listItems[x].item_name);}
catch(e){s_log(e,5);}
try{listItems[x].item_group=cipher.decode(listItems[x].item_group);}
catch(e){s_log(e,5);}}}
var filterValue=trimws($('listFilter').value);for(x=0;x<listItems.rows;++x)
listItems[x].item_show=true;if(""!=filterValue){toReplace=new Array('\\','/','.','+','*','?','(',')','[',']');replaceWith=new Array('\\\\','\\/','\\.','\\+','\\*','\\?','\\(','\\)','\\[','\\]');for(i=0;i<toReplace.length;++i){filterValue=filterValue.replace(toReplace[i],replaceWith[i]);}
regex=new RegExp(".*"+filterValue+".*","gi");for(x=0;x<listItems.rows;++x){listItems[x].item_show=false;if
(listItems[x].item_name.match(regex)||listItems[x].item_group.match(regex))
listItems[x].item_show=true;}}
tbody=$('listTable').getElementsByTagName("tbody")[0];while(tbody.childNodes[1]){tbody.removeChild(tbody.childNodes[1]);}
for(x=0;x<listItems.rows;x++){if(!listItems[x].item_show)
continue;row=document.createElement('tr');if(x%2==0)
row.className='even';else
row.className='odd';tempE=document.createElement('td');tempE.innerHTML=listItems[x].type_name;row.appendChild(tempE);tempE=document.createElement('td');tempE.innerHTML=listItems[x].item_group;row.appendChild(tempE);tempE=document.createElement('td');tempE.innerHTML=listItems[x].item_name;row.appendChild(tempE);tempE=document.createElement('td');tempE.innerHTML=listItems[x].item_added;tempE.className='centered';row.appendChild(tempE);tempE=document.createElement('td');tempE.innerHTML=listItems[x].item_modified;tempE.className='centered';row.appendChild(tempE);tempE=document.createElement('td');tempE.innerHTML='<a href="javascript:openItem('+listItems[x].item_id+')">'+LANG_OPEN+'</a>';tempE.className='centered';row.appendChild(tempE);tempE=document.createElement('td');tempE.innerHTML='<a href="javascript:deleteItem('+listItems[x].item_id+')">'+LANG_DELETE+'</a>';tempE.className='centered';row.appendChild(tempE);tbody.appendChild(row);}}
function sortList(field,order,element){for(x=0;x<listItems.rows;x++){for(y=x+1;y<listItems.rows;y++){string='if(listItems[x].'+field+' '+order+' listItems[y].'+field+') { swapListItems(x,y); }';eval(string);}}
(order=='<')?order='>':order='<';(order=='<')?indicator='^':indicator='v';$(element).addEvent('click',function(){sortList(field,order,element);});spans=$(element).parentNode.getElementsByTagName('span');for(x=0;x<spans.length;x++){spans[x].innerHTML='';}
$(element).getElementsByTagName('span')[0].innerHTML=indicator;writeList();}
function swapListItems(x,y){temp=listItems[x];listItems[x]=listItems[y];listItems[y]=temp;}
function writeTypes(theItem){if(!alive)
return showPane('fatal');clearItem();if(theItem.isNew==null)
$('viewButtons').show();else
$('createButtons').show();$('iType').value=theItem.item_type;if(theItem.type_fieldOne=='')
return;else{$('fieldOne').childNodes[1].innerHTML=theItem.type_fieldOne;$('fieldOne').show();}
if(theItem.type_fieldTwo=='')
return;else{$('fieldTwo').childNodes[1].innerHTML=theItem.type_fieldTwo;$('fieldTwo').show();}
if(theItem.type_fieldThree=='')
return;else{$('fieldThree').childNodes[1].innerHTML=theItem.type_fieldThree;$('fieldThree').show();}
if(theItem.type_fieldFour=='')
return;else{$('fieldFour').childNodes[1].innerHTML=theItem.type_fieldFour;$('fieldFour').show();}
if(theItem.type_fieldFive=='')
return;else{$('fieldFive').childNodes[1].innerHTML=theItem.type_fieldFive;$('fieldFive').show();}}
function clearItem(){$('iType').value='';$('fieldOne').hide();$('fieldTwo').hide();$('fieldThree').hide();$('fieldFour').hide();$('fieldFive').hide();$('iID').value='';$('iName').value='';$('iGroupName').value='';$('iFieldOne').value='';$('iFieldTwo').value='';$('iFieldThree').value='';$('iFieldFour').value='';$('iFieldFive').value='';$('iNotes').value='';$('createButtons').hide();$('viewButtons').hide();}
function saveItem(){if(!alive)
return showPane('fatal');clearNotify();toSend={item_id:$F('iID'),item_type:$F('iType'),item_name:encodeURIComponent(cipher.encode($F('iName'))),item_group:encodeURIComponent(cipher.encode($F('iGroupName'))),item_fieldOne:encodeURIComponent(cipher.encode($F('iFieldOne'))),item_fieldTwo:encodeURIComponent(cipher.encode($F('iFieldTwo'))),item_fieldThree:encodeURIComponent(cipher.encode($F('iFieldThree'))),item_fieldFour:encodeURIComponent(cipher.encode($F('iFieldFour'))),item_fieldFive:encodeURIComponent(cipher.encode($F('iFieldFive'))),item_notes:encodeURIComponent(cipher.encode($F('iNotes')))}
params={onFailure:function(){warn(LANG_COMM_FAILURE);loadList();},onSuccess:function(response,responseXML){s_log('&nbsp;&nbsp;- A: '+padJSON(response),3);response=JSON.decode(response);listCacheGood=false;loadList();}}
s_log(LANG_SAVE_ITEM,0,false,true);try{send('response/saveItem.php',params,toSend);}
catch(e){fatal(LANG_CANT_SAVE+e);}}
function cancelItem(){clearNotify();clearItem();loadList();}
function deleteItem(item_id){if(!alive)
return showPane('fatal');showPane('loading');deleteItemStore=item_id;yesNoReturn='deleteItem';$('question').setHTML(LANG_CONFIRM_DELETE);showPane('yesNo');}
function reallyDeleteItem(){if(!alive)
return showPane('fatal');showPane('loading');params={onFailure:function(){warn(LANG_COMM_FAILURE);loadList();},onSuccess:function(response,responseXML){s_log('&nbsp;&nbsp;- A: '+padJSON(response),3);response=JSON.decode(response);if(response.result){s_log(LANG_ITEM_DELETED,1);listCacheGood=false;}
else
warn(LANG_CANT_DELETE+response.error);loadList();}}
s_log(LANG_DELETING_ITEM,0,false,true);try{send('response/deleteItem.php',params,{'item_id':deleteItemStore});}
catch(e){warn(LANG_CANT_DELETE+e);loadList();}}
function createItem(){if(!alive)
return showPane('fatal');showPane('loading');s_log(LANG_LOADING_TYPES,0,false,true);if(!typesCacheGood){params={onFailure:function(){warn(LANG_COMM_FAILURE);loadList();},onSuccess:function(response,responseXML){s_log('&nbsp;&nbsp;- A: '+padJSON(response),3);typesCacheGood=true;writeTypesSelect(JSON.decode(response));s_log(LANG_TYPES_LOADED,1);showPane('types');}}
try{send('response/getTypes.php',params);}
catch(e){warn(LANG_CANT_GET_TYPES+e);loadList();}}
else{s_log(LANG_USING_CACHE,1);showPane('types');}}
function writeTypesSelect(newTypes){if(newTypes!=null)
types=newTypes;$('typeSelect').innerHTML='';for(x=0;x<types.rows;x++)
$('typeSelect').append('<option value="'+types[x].type_id+'">'+types[x].type_name+'</option>');}
function selectType(){if(!alive)
return showPane('fatal');showPane('loading');newItemType=$F('typeSelect');s_log(LANG_LOADING_TYPES,0,false,true);params={onFailure:function(){warn(LANG_COMM_FAILURE);loadList();},onSuccess:function(response,responseXML){s_log('&nbsp;&nbsp;- A: '+padJSON(response),3);writeTypes(JSON.decode(response));$('iID').value='-1';s_log(LANG_TYPE_INFORMATION_LOADED,1);showPane('item');}}
try{send('response/newItem.php',params,{'type_id':newItemType});}
catch(e){warn(LANG_CANT_GET_TYPE_INFORMATION+e);loadList();}}
function openItem(itemID){if(!alive)
return showPane('fatal');showPane('loading');s_log(LANG_LOADING_ITEM,0,false,true);params={onFailure:function(){fatal(LANG_COMM_FAILURE);loadList();},onSuccess:function(response,responseXML){s_log('&nbsp;&nbsp;- A: '+padJSON(response),3);response=JSON.decode(response);writeTypes(response);writeItem(response);showPane('item');}}
try{send('response/openItem.php',params,{'item_id':itemID});}
catch(e){warn(LANG_CANT_OPEN+e);loadList();}}
function writeItem(theItem){if(!alive)
return showPane('fatal');$('iID').value=theItem.item_id;try{temp=cipher.decode(theItem.item_name);}
catch(e){s_log(LANG_ERROR_WRITING_ITEM,4);s_log(e,4);return;}
$('iName').value=temp;try{temp=cipher.decode(theItem.item_group);}
catch(e){s_log(LANG_ERROR_WRITING_ITEM,4);s_log(e,4);return;}
$('iGroupName').value=temp;try{temp=cipher.decode(theItem.item_notes);}
catch(e){s_log(LANG_ERROR_WRITING_ITEM,4);s_log(e,4);return;}
$('iNotes').value=temp;if(theItem.type_fieldOne=='')
return;else{try{temp=cipher.decode(theItem.item_fieldOne);}
catch(e){s_log(LANG_ERROR_WRITING_ITEM,4);s_log(e,4);return;}
$('iFieldOne').value=temp;}
if(theItem.type_fieldTwo=='')
return;else{try{temp=cipher.decode(theItem.item_fieldTwo);}
catch(e){s_log(LANG_ERROR_WRITING_ITEM,4);s_log(e,4);return;}
$('iFieldTwo').value=temp;}
if(theItem.type_fieldThree=='')
return;else{try{temp=cipher.decode(theItem.item_fieldThree);}
catch(e){s_log(LANG_ERROR_WRITING_ITEM,4);s_log(e,4);return;}
$('iFieldThree').value=temp;}
if(theItem.type_fieldFour=='')
return;else{try{temp=cipher.decode(theItem.item_fieldFour);}
catch(e){s_log(LANG_ERROR_WRITING_ITEM,4);s_log(e,4);return;}
$('iFieldFour').value=temp;}
if(theItem.type_fieldFive=='')
return;else{try{temp=cipher.decode(theItem.item_fieldFive);}
catch(e){s_log(LANG_ERROR_WRITING_ITEM,4);s_log(e,4);return;}
$('iFieldFive').value=temp;}}
function createType(){if(!alive)
return showPane('fatal');showPane('loading');clearType();showNotify('y',LANG_TYPES_NOT_ENCRYPTED,0)
showPane('type');}
function clearType(){$('tName').value='';$('tFieldOne').value='';$('tFieldTwo').value='';$('tFieldThree').value='';$('tFieldFour').value='';$('tFieldFive').value='';}
function saveType(){if(!alive)
return showPane('fatal');clearNotify();showPane('loading');s_log(LANG_SAVING_TYPE,0,false,true);toSend={'type_name':$F('tName'),'type_fieldOne':$F('tFieldOne'),'type_fieldTwo':$F('tFieldTwo'),'type_fieldThree':$F('tFieldThree'),'type_fieldFour':$F('tFieldFour'),'type_fieldFive':$F('tFieldFive')}
params={onFailure:function(){warn(LANG_COMM_FAILURE);loadList();},onSuccess:function(response,responseXML){s_log('&nbsp;&nbsp;- A: '+padJSON(response),3);response=JSON.decode(response);if(response.result){typesCacheGood=false;s_log(LANG_TYPE_SAVED,1);}
else
warn(LANG_CANT_SAVE_TYPE+response.error);loadList();}}
try{send('response/saveType.php',params,toSend);}
catch(e){warn(LANG_CANT_SAVE_TYPE+e);loadList();}}
function cancelType(){clearType();clearNotify();loadList();}
function signUp(){if(!alive)
return showPane('fatal');username=$F('usernameSU');password=$F('passwordSU');clearNotify();if(!$('tosAgree').checked)
return showNotify('y',LANG_MUST_TOS,0);if(username.length==0){showNotify('y',LANG_MISSING_USERNAME,0);warn(LANG_MISSING_USERNAME);return;}
if(password.length==0){showNotify('y',LANG_MISSING_PASSWORD,0);warn(LANG_MISSING_PASSWORD);return;}
showPane('loading');s_log(LANG_CREATING_USER+username,0,false,true);params={onFailure:function(){fatal(LANG_COMM_FAILURE);},onSuccess:function(response,responseXML){s_log('&nbsp;&nbsp;- A: '+padJSON(response),3);response=JSON.decode(response);if(response.result){clearNotify();s_log(LANG_CREATE_USER_SUCCESS,1);menuUpdate();loadList();}
else{cipher.reset();warn(LANG_CREATE_USER_FAILED+response.error);clearNotify();showNotify('r',LANG_CREATE_USER_FAILED+response.error,0);$('passwordSU').value='';$('usernameSU').value='';showPane('signup');}}}
try{cipher.setKey(password);}
catch(e){warn(e);return;}
try{checkhash=SHA256(username+":"+password);}
catch(e){s_log(e,4);return;}
try{send('response/signup.php',params,{'username':username,'hash':checkhash});}
catch(e){s_log(e,4);return;}}
function cpexport(){if(!alive)
return showPane('fatal');params={onFailure:function(){fatal(LANG_COMM_FAILURE);},onSuccess:function(response,responseXML){s_log('&nbsp;&nbsp;- A: '+padJSON(response),3);response=JSON.decode(response);if(response.result){clearNotify();s_log(LANG_PARSING_TO_XML);s_log(LANG_EXPORT_SUCCESS,1);$('printBox').value='<?xml version="1.0" ?>'+"\n<passwords>\n";for(i=0;i<response.rows;i++){tString="  <item>\n";tString+="    <name>"+cipher.decode(response[i].item_name)+"</name>\n";tString+="    <group>"+cipher.decode(response[i].item_group)+"</group>\n";tString+="    <added>"+response[i].item_added+"</added>\n";tString+="    <modified>"+response[i].item_modified+"</modified>\n";tString+="    <type name='"+response[i].type_name+"'>\n";if(response[i].type_fieldOne!=""){tString+="      <field name='"+response[i].type_fieldOne+"'>";tString+=cipher.decode(response[i].item_fieldOne)+"</field>\n";}
if(response[i].type_fieldTwo!=""){tString+="      <field name='"+response[i].type_fieldTwo+"'>";tString+=cipher.decode(response[i].item_fieldTwo)+"</field>\n";}
if(response[i].type_fieldThree!=""){tString+="      <field name='"+response[i].type_fieldThree+"'>";tString+=cipher.decode(response[i].item_fieldThree)+"</field>\n";}
if(response[i].type_fieldFour!=""){tString+="      <field name='"+response[i].type_fieldFour+"'>";tString+=cipher.decode(response[i].item_fieldFour)+"</field>\n";}
if(response[i].type_fieldFive!=""){tString+="      <field name='"+response[i].type_fieldFive+"'>";tString+=cipher.decode(response[i].item_fieldFive)+"</field>\n";}
tString+="    </type>\n";tString+="    <notes>\n";tString+="      <![CDATA[\n      "+cipher.decode(response[i].item_notes);tString+="\n      ]]>\n    </notes>\n";tString+="  </item>\n";$('printBox').value+=tString;}
$('printBox').value+='</passwords>';showPane('print');showNotify('g',LANG_COPY_TO_XML,0);}
else{warn(LANG_EXPORT_FAILED+response.error);clearNotify();showNotify('r',LANG_EXPORT_FAILED+response.error,0);}}}
s_log(LANG_EXPORT_ATTEMPT,0,false,true);showPane('loading');try{send('response/export.php',params,{});}
catch(e){s_log(e,4);return;}}
function generatePassword(){$('gen_password').value=getRandomString($F('gen_length'));updateStrengthBox($('gen_password'),'gen_strengthBox');}
